程序員眼中的 ChatGPT
作者 | Bright Liao
作為一個一直對AI 技術很感興趣的軟件開發工程師,早在深度學習開始火起來的2015、2016年,我就開始了相關技術的學習。當時還組織了公司內部同樣有興趣的同學一起研究,最終的成果匯集成幾次社區中的分享以及幾篇學習文章(見這里:https://brightliao.com/tags/ai/)。
從去年OpenAI 發布ChatGPT 以來,AI的能力再次驚艷了世人。在這樣的一個時間節點,重新去學習相關技術顯得很有必要。
什么是ChatGPT
網絡上已經有鋪天蓋地的內容介紹ChatGPT 是什么了。總結起來,有以下幾個關于ChatGPT 的認知:
- ChatGPT 是由OpenAI 開發的一個用于對話生成的AI 模型。
- GPT 是"Generative Pre-trained Transformer" 的縮寫,表示它是一個經過預訓練的生成式Transformer 模型。
- ChatGPT 學習了大規模的文本內容,如互聯網上的網頁、書籍和對話等,能夠準確理解輸入的自然語言,并生成自然而連貫的回復。
- ChatGPT 可用于構建智能聊天機器人、虛擬助手、虛擬客服等應用,可以幫助我們寫文章、寫劇本、做設計,甚至還能輔助編寫和調試程序。
- ChatGPT 的計算過程非常復雜,包含了超過千億的參數,需要用大量的顯卡并行計算。
那么,對于開發人員而言,ChatGPT 有哪些不一樣的特征呢?如何與我們所熟悉的東西對比進行理解呢?下面主要從這個角度來分享一下我的觀點。
確定性與非確定性
從普通開發人員的視角來看,ChatGPT 與普通的程序會有什么不同呢?我覺得最大的不同在于確定性與非確定性。
我們編寫的大部分可運行的軟件程序以一種確定性的方式在工作。比如,這篇文章以Markdown 格式編寫,有一個程序,可以以一種確定的方式解析Markdown 格式,并以一種確定的方式展示它。
ChatGPT 模型就很不一樣,它更多是以一種概率性的非確定的方式在工作。我們都知道自然語言本身就是充滿不確定性的。比如,同樣一句話“他這個人誰都看不上”,可能表示“他”很挑剔,看不上別人;也可能表示“他”能力比較差,大家都看不起他。到底表示什么意義?這就要根據不同的上下文、情境來確定。
ChatGPT 模型可以較為準確地理解自然語言的含義,這說明它可以綜合分析輸入給它的文本,然后選擇一個概率最高的理解。
同時,ChatGPT 模型可以生成不同的回復,這也是由概率控制的。ChatGPT 模型在工作時會根據給定的文本生成下一個詞。如何選定下一個詞?程序會根據配置隨機選擇一個較高概率的詞,由于這里的隨機性,就產生了AI 回復的多樣性。如果我們在生成下一個詞時始終選擇概率最高的那個詞,那ChatGPT 模型就會變成一個確定性的程序。
自動優化得來的一個復雜函數
從開發人員的視角來看,ChatGPT 其實也可以看做一個普通的函數,根據輸入的文本,輸出另一些文本。只不過,這個函數能實現的功能比較強大,并且是基于概率去實現的而已。
在這個函數的實現上,它與其他的主要通過開發人員編寫代碼去實現的方式也不一樣。ChatGPT 模型與其他的AI 模型一樣,它是通過訓練來實現的。
簡單來說,它的實現流程是這樣。為了實現這個函數,我們隨機初始化了一堆參數,然后準備好大量的我們認為這個函數應該具有的輸入輸出對(即訓練數據集),用這些數據去訓練它。訓練的過程其實就是調整我們之前隨機初始化的參數的過程。當這些參數經過長時間的大量的調整之后,我們發現這個函數大概率能針對我們提供的輸入返回我們預期的輸出了。此時,實際上這個函數就被以一種概率的方式實現了。
調整參數的過程,也可以類比高中數學中的方程組求解過程。比如,給一個包含兩個未知數的方程ax + by = c,只要我們知道兩組a b c的值,我們就可以求解出x和y。這里的訓練就相當于找到了大量的這樣的a b c值對,然后用這些值去求解x和y。不過,這里的求解過程實際上用到了一些基于向量的微積分的技術。
難以理解的黑盒
有了前面的理解,相信大家也不會覺得ChatGPT 是什么神秘的技術了。它只是與我們平常的函數的實現機制稍微有些區別而已。
或許我們會覺得用這種參數優化的方式去實現復雜函數的機制很有趣,也很有啟發意義。但其實這種實現方式也有其問題。
最大的問題或許在于,我們難以理解這個函數為什么可以工作。
這一方面是因為函數包含了大規模的參數,特別是ChatGPT 這種大模型,比如ChatGPT3.5版本,就包含了1750億個參數。這么多的參數顯然無法依靠人為的去分析每一個參數的作用。
另一方面,我們也不知道這些參數是如何計算來的。因為參數的調整過程同樣是經過了超長的時間,有超大規模的輸入輸出對給到它。我們只能從數學原理上說明,這些參數可以最終收斂到某一個靠近最優值的點。但是我們無法去分析每一次的優化具體產生了什么影響。
可以說,這樣的AI 模型,或者說智能函數,本身就是一個難以理解的黑盒。
既然難以理解,我們在使用上就需要小心,因為它很可能一直表現很好,但是某一個場景下就出現無法預料的很差的效果。這也是目前的人工智能技術讓人覺得很炫酷,但在真正落地應用時,總是有這樣那樣的問題的一個重要原因。
實際上,如果我們問ChatGPT,ChatGPT 模型在應用上有哪些挑戰,它就會回復:
ChatGPT 具有令人振奮的潛力,但也面臨著一些挑戰和限制。例如,它可能會生成不準確或不符合預期的回復,以及對偏見和敏感話題的處理問題。
總結
有了上面的理解,大家再來看ChatGPT,我相信大家也不會覺得它很神秘了。
自ChatGPT 發布以來,很多人認為這是一個人類走向通用人工智能的突破,也有一些人認為它其實沒什么本質的改進。有很多人對自己的職業發展產生了很深的焦慮感,也有很多人感覺觸碰到了科幻世界中的未來,還有很多人覺得又是一個可以好好撈一把的機會。
也許每個人都有必要去了解一下機器學習技術的原理,這樣才能形成對它的理性的認知。