ChatGPT 使用到的機器學習技術
作者 | Bright Liao
在《程序員眼中的 ChatGPT》一文中,我們聊到了開發人員對于ChatGPT的認知。本文來聊一聊ChatGPT用到的機器學習技術。
機器學習技術的發展
要聊ChatGPT用到的機器學習技術,我們不得不回顧一下機器學習技術的發展。因為,ChatGPT用到的技術不是完全從零的發明,它也是站在巨人的肩膀上發展起來的。
1.機器學習技術的分類
實際上機器學習技術可以追溯到上個世紀三四十年代,一開始就與統計學分不開。早在1936年,著名的統計學家Fisher發明了線性判別分析方法(LDA)。LDA利用方差分析的思想,試圖將高維數據分開。這后來演化為一類基礎的機器學習技術要解決的問題,即分類問題。
在計算機出現之后,大量的基于計算機的機器學習算法出現,比如決策樹、SVM、隨機森林、樸素貝葉斯、邏輯回歸等。它們也都可以用于解決分類問題。
分類問題是指我們事先知道要分為哪幾類,這些類通常是人為定義的。比如人分為男性和女性,編程語言分為C/C++/Java等。
還有一類問題是我們無法預先知道要分為幾類的,比如給定一系列的新聞,按照主題進行分組,而我們可能無法事先人為確定有幾個主題。此時可以利用機器學習算法自動去發現新聞中有幾個類,然后再把不同的新聞放到不同的分類。這種問題是聚類問題。
有時,這個分類可能是連續的,比如,我們要用一個機器學習模型去預測某個人的身高,此時可以認為結果是在某一個范圍內連續變化的值。這類問題,我們把它叫做回歸問題。與分類的問題的區別僅僅在于我們希望輸出一個連續的值。
除此之外,一些典型的機器學習問題還包括:降維、強化學習(通過智能體與環境的交互來學習最佳行動策略)等。
除了根據問題不同進行分類,還可以從機器學習技術使用數據的方式進行分類。從這個角度可以將機器學習技術分為有監督學習、無監督學習、半監督學習等。有監督學習要求我們為模型準備好標簽值。無監督學習則無需我們準備標簽值,只需數據即可開始訓練。半監督學習是指需要一部分有標簽值的數據。
從解決的問題上來看,ChatGPT可以認為是一個分類模型,它根據輸入的文本預測下一個要輸出的詞是什么,而詞的范圍是確定的,即模型的輸出是一個確定的分類。
從ChatGPT使用數據的方式來看,可以認為是使用了大量的無監督數據,加上少量的有監督的數據。所以,可以認為ChatGPT是一個半監督的機器學習技術。
2.傳統的機器學習算法與基于人工神經網絡的機器學習算法
上面提到的決策樹、SVM、隨機森林、樸素貝葉斯、邏輯回歸等算法,多是基于可驗證的可理解的統計學知識設計的算法。它們的局限性主要在于效果比較有限,即便使用海量數據也無法繼續提升,這要歸因于這些模型都是相對簡單的模型。由于這些算法都是很早就被開發出來了,并且一直很穩定,沒有什么更新,我們一般稱這些算法為傳統的機器學習算法。
另一類機器學習算法是基于人工神經網絡的機器學習算法。這一類算法試圖模擬人類的神經網絡結構。其起源也很早,要追溯到1943年,W. S. McCulloch和W. Pitts提出的M-P模型。該模型根據生物神經元的結構和工作機理構造了一個簡化的數學模型,如下圖。
其中,xi代表神經元的第i個輸入,權值wi為輸入xi對神經元不同突觸強度的表征,θ代表神經元的興奮閥值,y表示神經元的輸出,其值的正和負,分別代表神經元的興奮和抑制。
該模型的數學公式可以表示為:??=∑????*??????? ,如果所有輸入之和大于閥值θ則y值為正,神經元激活,否則神經元抑制。該模型作為人工神經網絡研究的最簡模型,一直沿用至今。
雖然這個模型看起來很簡單,但是由于其可擴展可堆疊的特性,實際上可以用于構造一個非常復雜的網絡。至于如何擴展和堆疊,其實就是人工神經網絡數十年的發展要解決的問題。
這個模型如何優化呢?這里的優化其實就是修改wi的值,依靠一種名為反向傳播的優化方式可以優化它。其計算過程,相當于對wi求偏導數,然后和學習率相乘再加回到原來的wi值上。
人工神經網絡模型的算法思想非常簡單,其效果只有在網絡規模達到一定程度之后才會體現出來。但是一旦網絡形成規模之后,對算力和數據的要求就非常高了。這也是為什么在21世紀之前這樣的算法無法獲得發展的原因。
從2000年開始,互聯網進入了爆發式發展的階段,大量的數據被累積起來,并且計算機算力也經歷了數十個摩爾周期得到了長足的發展。于是基于人工神經網絡的機器學習算法得到爆發式的發展。
各個研究領域都紛紛開始嘗試利用人工神經網絡來提升機器學習模型效果。
卷積神經網絡(一種基于M-P模型的變種結構)在計算機視覺領域表現突出,逐漸演變為計算機視覺領域的基礎結構。循環神經網絡和長短期記憶網絡(另一種基于M-P模型的變種結構)在自然語言處理領域表現突出,逐漸演變為自然語言處理領域的基礎結構。
這兩類網絡結構曾經風靡一時,即便到現在也有很多問題是基于這兩類結構的網絡算法去解決的。它們在很大程度上促進了人工神經網絡的機器學習算法的發展。
但是,研究人員從未停止對于網絡結構的探索。在2017年的時候,Google的研究團隊提出了一個名為Transformer的網絡結構,強調了注意力機制在網絡結構中的表示和應用。Transformer模型結構簡單而一致,卻表現出了非常好的效果。
ChatGPT的故事可以認為從這里開始了。在Transformer模型結構發布之后,后續有大量的研究基于Transformer開展起來,都取得了很好的效果,這里面就包括各類GPT模型。
最初的Transformer模型主要是應用在自然語言處理領域。近兩年的研究發現,這一結構也可以被用到計算機視覺認為上,當前流行的Vision Transformer模型就是它在計算機視覺領域的應用成果。從這個趨勢來看,Transformer有著要統一所有模型結構的勢頭。
ChatGPT技術概覽
有了前面的了解,終于輪到ChatGPT出場了。
ChatGPT用到了哪些技術呢?可以簡要列舉如下:
- 基礎模型結構:基于注意力機制的Transformer模型
- 超大規模的模型堆疊:GPT3堆疊了96層網絡,參數數量高達1750億
- 超大的訓練數據:采用了45TB的原始數據進行訓練
- 超大的計算資源:基于微軟專門設計的包含數千塊GPU的超級計算機完成訓練
- 大規模并行訓練:將模型分布到多個實例,多塊GPU上并行計算完成訓練
- 基于人類反饋數據進行調優:采用了大量的基于人類反饋的數據進行優化,使得對話更加自然、流暢而具有邏輯性
由于OpenAI并未公布太多的ChatGPT的訓練細節,所以,上述有一些模糊的估計數據。
值得注意的是,ChatGPT用到的核心技術其實并非原創,其核心模型結構Transformer來自于Google的研究成果。
總結
自ChatGPT發布以來,很多人認為這是一個人類走向通用人工智能的突破,也有一些人認為它其實沒什么本質的改進。有很多人對自己的職業發展產生了很深的焦慮感,也有很多人感覺觸碰到了科幻世界中的未來,還有很多人覺得又是一個可以好好撈一把的機會。
也許每個人都有必要去了解一下機器學習技術的原理,這樣才能形成對它的理性的認知。
參考
- wikipedia詞條羅納德·艾爾默·費希爾在 Wikipedia 的詞條。
- 人工智能與神經網絡發展研究。
- OpenAI開發的ChatGPT資料(Training language models to follow instructions with human feedback)
- OpenAI開放的GPT-3資料(Language Models are Few-Shot Learners)
- OpenAI開放的GPT-2資料(Language Models are Unsupervised Multitask Learners)
- OpenAI開放的GPT資料(Improving Language Understanding by Generative Pre-Training)