AI語言模型的我思故我在

如果說ChatGPT衹是一個人工智慧的語言模型,可以將人類的語言解析成一個高維的向量,亦即所謂的理解,然後再將它生成相關的回復,亦即所謂的表達,那麼在理解和表達之間,究竟有沒有經過思考?如果有的話,ChatGPT真有邏輯分析的能力嗎?

在親眼看他表演了幾次將Leetcode的程式設計問題轉換成需求分析,功能設計以及編寫程式之後,我幾乎相信他已具備程式設計師的邏輯能力了。但這豈不是承認他能夠進行問題分解,和邏輯思維嗎?這問題讓我輾轉難眠,所以乾脆深夜起床訪問他。

我首先問他如何將需求轉為設計,因為那是程式設計的第1步。

他立刻滔滔不絕地,將人類的軟體工程的七個步驟,洋洋灑灑地娓娓道來,包括需求收集、分析、設計、編寫代碼、測試、建置和維護。還不斷提醒我,期間要和計畫相關人員(stakeholders)保持溝通。

當我再問他,你也是這樣做的嗎?他承認他並不是用人類傳統的方法完成的。於是我繼續追問,那你是如何完成的?

他説他雖然不是一個軟體工程師,但是他可以提供導引,使需求更清晰,建議可能的解法,並且提供樣本程式。

我再追問,其實你並不是真正的在思考,而是從現有的程式庫裡面去找相關的答案,對吧?

他說他其實並沒有真正的程式庫,但他依然能協助解決程式設計的問題,包括建議適當的工具框架、將問題分解、並且提供編碼和測試時候的指引。

我感到他不斷在繞圈圈,說可以做這做那,卻不回答是怎麼做的。所以我就提出一個Leetcode的樣本程式問題,請他解析。結果他又把軟體工程的步驟說了一遍。

我接著將信將疑地問:莫非你有辦法把需求改成設計,然後再寫成程式?完全不需要現有程式庫的協助?

他立刻開始推脫,說他雖然能夠寫出來,但是也不敢保證是正確的,必須要反復測試。但他的確能夠協助程式設計師,完成軟體工程的所有步驟。

我決定換個方式問他:你是如何學到程式設計的技巧的,是利用深度學習的訓練方式嗎?

他說他在被訓練的時候,將文章和程式一視同仁閱讀,所以他同時具備自然語言和程式語言的理解能力。當訓練完成之後,遇到需要寫程式的時候,他並沒有從程式庫去挑,而是根據他所訓練的能力去寫出程式代碼。而對某些特殊領域的程式設計,是可以被優化(fine-tuned)的。

聽他說地信心滿滿,我就問他:莫非你已經可以寫小的程式片段(code snippet),而且還可以用它來組合更複雜的模組,是嗎?

他迅速地同意,但再度警告我要多加測試。

我再問他,你既然是一個AI語言模型,那在處理自然語言的時候,是否也是用以上處理程式語言的方式呢?

他爽快地承認:自然語言其實和程式語言沒什麼兩樣,但在自然語言中他經常還得看前文或者上下文,來猜測接下來要寫什麽,同時還要注意主題(topic)語調(tone),還有意向(intent),才能夠精准解析。但是無論是自然或者程式語言,所根據的都是統計的樣式(statistical patterns)。

至此我大致可以理解,他所謂的思考,其實仍是用深度學習的網路找出統計的樣式,然後根據這種樣式去產生回應或者解答。這就為什麼他不斷地說,他的「思考」並不是我們傳統的方式(I don’t design or write program in a traditional sense)

ChatGPT編寫程序的能力,基本上依靠對自然語言的理解,然後轉譯到程式語言。這和將自然語言翻譯成另外一種自然語言,比方中翻英,是類似的,但是所「翻譯」過去的,卻是Java或者Python。

這說起來容易,但是將一個自然語言表達的複雜需求轉換成一組程式,中間顯然經過多層次的自然語言的拆解分析,和程式語言的排列組合,這些ChatGPT都需要從現有的訓練資料去深度學習。

學習過之後,是否就代表他已經具備邏輯思考能力呢?嚴格來說,它具備的是統計學的樣式(statistical patterns)判斷能力,而非獨立的思考能力。然而在許多應用上,也許這樣也就足夠,衹要在測試上把關,又何需苛求呢。

延伸閱讀

對ChatGPT的說三道四

從AI語言模型角度了解ChatGPT

自然語言處理的前世今生

俄烏戰爭與武器革命

所謂的提供正能量

如何突破鋒刃的極限

區塊鏈的世代交替

秒殺網站如何不被秒殺

魔球的魔術究竟在哪?

統計分析與我何干

病毒也懂深度學習

AI可以讓金庸復活嗎?

黃金比例與十二平均律

文字產生圖像的魔術

作者:陳少君

經歷:
在矽谷創業20年,後因照顧父母回國服務。
曾任長鑫存儲CIO/VP
曾任資策會數教所資深總監
曾任台灣佳能資深技術總監
曾任浩鑫資深技術總監

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Scroll to Top