字體:小 中 大 | |
|
|
2023/06/17 20:00:00瀏覽237|回應1|推薦24 | |
如果說ChatGPT衹是一個人工智慧的語言模型,可以將人類的語言解析成一個高維的向量,亦即所謂的理解,然後再將它生成相關的回復,亦即所謂的表達,那麼在理解和表達之間,究竟有沒有經過思考?如果有的話,ChatGPT真有邏輯分析的能力嗎?
在親眼看他表演了幾次將Leetcode的程式設計問題轉換成需求分析,功能設計以及編寫程式之後,我幾乎相信他已具備程式設計師的邏輯能力了。但這豈不是承認他能夠進行問題分解,和邏輯思維嗎?這問題讓我輾轉難眠,所以乾脆深夜起床訪問他。
他立刻滔滔不絕地,將人類的軟體工程的七個步驟,洋洋灑灑地娓娓道來,包括需求收集、分析、設計、編寫代碼、測試、建置和維護。還不斷提醒我,期間要和計畫相關人員(stakeholders)保持溝通。
當我再問他,你也是這樣做的嗎?他承認他並不是用人類傳統的方法完成的。於是我繼續追問,那你是如何完成的?
他説他雖然不是一個軟體工程師,但是他可以提供導引,使需求更清晰,建議可能的解法,並且提供樣本程式。
我再追問,其實你並不是真正的在思考,而是從現有的程式庫裡面去找相關的答案,對吧?
他說他其實並沒有真正的程式庫,但他依然能協助解決程式設計的問題,包括建議適當的工具框架、將問題分解、並且提供編碼和測試時候的指引。
我感到他不斷在繞圈圈,說可以做這做那,卻不回答是怎麼做的。所以我就提出一個Leetcode的樣本程式問題,請他解析。結果他又把軟體工程的步驟說了一遍。
我接著將信將疑地問:莫非你有辦法把需求改成設計,然後再寫成程式?完全不需要現有程式庫的協助?
他立刻開始推脫,說他雖然能夠寫出來,但是也不敢保證是正確的,必須要反復測試。但他的確能夠協助程式設計師,完成軟體工程的所有步驟。
我決定換個方式問他:你是如何學到程式設計的技巧的,是利用深度學習的訓練方式嗎?
他說他在被訓練的時候,將文章和程式一視同仁閱讀,所以他同時具備自然語言和程式語言的理解能力。當訓練完成之後,遇到需要寫程式的時候,他並沒有從程式庫去挑,而是根據他所訓練的能力去寫出程式代碼。而對某些特殊領域的程式設計,是可以被優化(fine-tuned)的。
聽他說地信心滿滿,我就問他:莫非你已經可以寫小的程式片段(code snippet),而且還可以用它來組合更複雜的模組,是嗎?
他迅速地同意,但再度警告我要多加測試。
我再問他,你既然是一個AI語言模型,那在處理自然語言的時候,是否也是用以上處理程式語言的方式呢?
他爽快地承認:自然語言其實和程式語言沒什麼兩樣,但在自然語言中他經常還得看前文或者上下文,來猜測接下來要寫什麽,同時還要注意主題(topic)語調(tone),還有意向(intent),才能夠精准解析。但是無論是自然或者程式語言,所根據的都是統計的樣式(statistical patterns)。
至此我大致可以理解,他所謂的思考,其實仍是用深度學習的網路找出統計的樣式,然後根據這種樣式去產生回應或者解答。這就為什麼他不斷地說,他的「思考」並不是我們傳統的方式(I dont design or write program in a traditional sense)
ChatGPT編寫程序的能力,基本上依靠對自然語言的理解,然後轉譯到程式語言。這和將自然語言翻譯成另外一種自然語言,比方中翻英,是類似的,但是所「翻譯」過去的,卻是Java或者Python。
這說起來容易,但是將一個自然語言表達的複雜需求轉換成一組程式,中間顯然經過多層次的自然語言的拆解分析,和程式語言的排列組合,這些ChatGPT都需要從現有的訓練資料去深度學習。
學習過之後,是否就代表他已經具備邏輯思考能力呢?嚴格來說,它具備的是統計學的樣式(statistical patterns)判斷能力,而非獨立的思考能力。然而在許多應用上,也許這樣也就足夠,衹要在測試上把關,又何需苛求呢。
以上個人見解,懇請指教。
|
|
( 創作|散文 ) |