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