作者 | 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表示神經元的輸出,其值的正和負,分別代表神經元的興奮和抑制。
該模型的數學公式可以表示為: