本文從基本概念出發(fā),介紹和解釋ChatGPT用到的一系列關(guān)鍵技術(shù),如機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、大模型、預(yù)訓(xùn)練+微調(diào)范式、Scaling Law……希望幫助讀者更為深入地了解和使用以ChatGPT為代表的相關(guān)工具,助力讀者成為人工智能時(shí)代的弄潮兒。
2022年11月30日,一家名不見經(jīng)傳的公司(OpenAI)悄悄上線了一個產(chǎn)品ChatGPT。彼時(shí),誰也沒有想到這款產(chǎn)品會在短短幾個月內(nèi)風(fēng)靡全球;而2023年3月14日GPT-4的發(fā)布更是激起了一場屬于生成式人工智能(artificial intelligence generated content, AIGC)的科技革命。對于普通人來說,面對這個正在給生產(chǎn)和生活帶來巨大改變的人工智能產(chǎn)品,不禁會產(chǎn)生無數(shù)的疑問:●ChatGPT為什么引起如此大的重視?
●它的原理是什么?
●它真的具備人類的智慧嗎?
●它將給人類社會帶來哪些變化?
……
ChatGPT原理概覽:文字接龍游戲
ChatGPT最令人印象深刻的能力是它能夠通過對話的方式回答用戶的問題,那么ChatGPT回答問題的原理是什么呢?傳統(tǒng)的問答系統(tǒng)本質(zhì)上是基于數(shù)據(jù)庫和搜索引擎,即通過搜索引擎在網(wǎng)絡(luò)與數(shù)據(jù)庫中搜索相關(guān)信息,然后把結(jié)果直接返回給用戶。比如我們使用百度搜索“機(jī)器學(xué)習(xí)的原理是什么”,百度會跳轉(zhuǎn)出各式各樣的網(wǎng)站。這些網(wǎng)站是由各個企業(yè)早就開發(fā)好的,百度僅僅是根據(jù)相關(guān)度做了一個排序。
不同于傳統(tǒng)問答系統(tǒng)中答案來源于現(xiàn)成的網(wǎng)絡(luò)或者數(shù)據(jù)庫,ChatGPT的回答是隨著提問的進(jìn)行自動生成的。這一點(diǎn)有點(diǎn)像文字接龍游戲,ChatGPT會基于前面的話不斷地生成下一個合適的詞匯,直到覺得不必繼續(xù)生成為止。
比如我們問ChatGPT:“蘋果是一種水果嗎”,ChatGPT會基于這句話進(jìn)行文字接龍,大概流程如下:
(1)考慮下一個可能的詞匯及其對應(yīng)的概率,如右表(為了方便理解只寫了3個可能的形式)所示。
(2)基于上述概率分布,ChatGPT會選擇概率最大的答案,即“是的”(因?yàn)槠涓怕?.8明顯大于其他選項(xiàng))。
(3)此時(shí)這句話的內(nèi)容變成 “蘋果是一種水果么?是的”,ChatGPT會看下一個可能的詞和對應(yīng)概率是什么。
不斷重復(fù)這個步驟,直到得到一個完整的回答。
從上面例子可以看出:
(1)不同于傳統(tǒng)問答基于數(shù)據(jù)庫或搜索引擎,ChatGPT的答案是在用戶輸入問題以后,隨著問題自動生成的。
(2)這種生成本質(zhì)上是在做文字接龍,簡單來說是不斷在所有可能詞匯中選擇概率最大的詞匯來生成。
有些聰明的讀者會有一個疑問,ChatGPT是怎么知道該選擇什么詞匯,又是如何給出各個可能詞匯的概率呢?這正是機(jī)器學(xué)習(xí)技術(shù)的神奇之處。
機(jī)器學(xué)習(xí)的核心:模仿人類進(jìn)行學(xué)習(xí)
ChatGPT是機(jī)器學(xué)習(xí)的一個非常典型的應(yīng)用,那么什么是機(jī)器學(xué)習(xí)呢?
機(jī)器學(xué)習(xí)整體思想是借鑒人類學(xué)習(xí)的過程。人類觀察、歸納客觀世界的實(shí)際情況,并從中學(xué)到相關(guān)的規(guī)律,當(dāng)面對某一未知情況的時(shí)候,會使用已經(jīng)學(xué)到的規(guī)律來解決未知的問題。同理,我們希望計(jì)算機(jī)能夠自動地從海量數(shù)據(jù)中發(fā)現(xiàn)某種“規(guī)律”,并將這種規(guī)律應(yīng)用于一些新的問題。這種規(guī)律在機(jī)器學(xué)習(xí)領(lǐng)域就被稱為“模型”,學(xué)習(xí)的過程被稱為對模型進(jìn)行訓(xùn)練。
機(jī)器學(xué)習(xí)和模型訓(xùn)練卡通示意圖
關(guān)于模型訓(xùn)練,實(shí)際上所有機(jī)器學(xué)習(xí)模型背后都有一個假設(shè):學(xué)習(xí)的規(guī)律是能夠通過數(shù)學(xué)表示的。機(jī)器學(xué)習(xí)的核心就是想辦法找到一個數(shù)學(xué)函數(shù),讓這個函數(shù)盡可能接近真實(shí)世界的數(shù)學(xué)表達(dá)式。然而很多時(shí)候人類并不知道真實(shí)的數(shù)學(xué)表示是什么形式,也無法通過傳統(tǒng)數(shù)學(xué)推導(dǎo)的方式獲得;人類唯一擁有的是一堆來源于真實(shí)情境的數(shù)據(jù)。機(jī)器學(xué)習(xí)的方法就是使用這些數(shù)據(jù)(訓(xùn)練數(shù)據(jù))去訓(xùn)練我們的模型,讓模型自動找到一個較好的近似結(jié)果。比如人臉識別的應(yīng)用,就是想找到一個函數(shù),這個函數(shù)的輸入是人臉照片,輸出是判定這張照片對應(yīng)哪個人。然而人類不知道人臉識別函數(shù)是什么形式,于是就拿來一大堆人臉的照片并且標(biāo)記好每個臉對應(yīng)的人,交給模型去訓(xùn)練,讓模型自動找到一個較好的人臉識別函數(shù)。這就是機(jī)器學(xué)習(xí)在做的事情。
神經(jīng)網(wǎng)絡(luò)與神經(jīng)元:可擴(kuò)展的數(shù)學(xué)表達(dá)能力
理解了機(jī)器學(xué)習(xí)是什么,另一個概念是機(jī)器學(xué)習(xí)模型的數(shù)學(xué)表達(dá)能力。機(jī)器學(xué)習(xí)模型本質(zhì)上是想要盡可能接近真實(shí)世界對應(yīng)的那個函數(shù)。然而正如我們不能指望僅僅通過幾條直線就畫出精美絕倫的美術(shù)作品,如果機(jī)器學(xué)習(xí)模型本身比較簡單,比如高中學(xué)到的線性函數(shù)
Y=kx+b
那么它無論如何也不可能學(xué)習(xí)出一個復(fù)雜的函數(shù)。因此機(jī)器學(xué)習(xí)模型的一個重要考慮點(diǎn)就是模型的數(shù)學(xué)表達(dá)能力,當(dāng)面對一個復(fù)雜問題的時(shí)候,我們希望模型數(shù)學(xué)表達(dá)能力盡可能強(qiáng),這樣模型才有可能學(xué)好。
過去幾十年科學(xué)家發(fā)明了非常多不同的機(jī)器學(xué)習(xí)模型,而其中最具影響力的是一種叫作“神經(jīng)網(wǎng)絡(luò)”的模型。神經(jīng)網(wǎng)絡(luò)模型最初基于生物學(xué)的一個現(xiàn)象:人類神經(jīng)元的基礎(chǔ)架構(gòu)非常簡單,只能做一些基礎(chǔ)的信號處理工作,但最終通過大腦能夠完成復(fù)雜的思考。受此啟發(fā),科學(xué)家們開始思考是否可以構(gòu)建一些簡單的“神經(jīng)元”,并通過神經(jīng)元的連接形成網(wǎng)絡(luò),從而產(chǎn)生處理復(fù)雜信息的能力。
基于此,神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)單元是一個神經(jīng)元的模型,其只能進(jìn)行簡單的計(jì)算。假設(shè)輸入數(shù)據(jù)有2個維度(x1, x2),那么這個神經(jīng)網(wǎng)絡(luò)可以寫成
y=σ(w1x1+w2x2+b)
從神經(jīng)元到神經(jīng)網(wǎng)絡(luò) (a)神經(jīng)元架構(gòu)(生物);(b)基礎(chǔ)神經(jīng)元架構(gòu)(人工智能);(c)簡單多層感知機(jī)。
上述神經(jīng)元的數(shù)學(xué)表達(dá)能力非常弱,只是一個簡單的線性函數(shù)和一個激活函數(shù)的組合;但是我們可以很輕松地把模型變得強(qiáng)大起來,方案就是增加更多的“隱藏節(jié)點(diǎn)”。在這個時(shí)候雖然每個節(jié)點(diǎn)依然進(jìn)行非常簡單的計(jì)算,但組合起來其數(shù)學(xué)表達(dá)能力就會變得很強(qiáng)。感興趣的讀者可以嘗試類比上述公式寫出下圖中簡單多層感知機(jī)對應(yīng)的公式,將會得到一個非常復(fù)雜的公式。這個模型也是日后深度學(xué)習(xí)的基礎(chǔ)模型,即多層感知機(jī)[1]。
多層感知機(jī)的原理非常簡單,但是透過它可以很好地了解神經(jīng)網(wǎng)絡(luò)的原理:雖然單個神經(jīng)元非常簡單,但是通過大量節(jié)點(diǎn)的組合就可以讓模型具備非常強(qiáng)大的數(shù)學(xué)表達(dá)能力。而之后整個深度學(xué)習(xí)的技術(shù)路線,某種程度上就是沿著開發(fā)并訓(xùn)練更大更深的網(wǎng)絡(luò)的路線前進(jìn)的。
深度學(xué)習(xí)新范式:預(yù)訓(xùn)練+微調(diào)范式與Scaling Law
深度學(xué)習(xí)領(lǐng)域從2012年開始蓬勃發(fā)展,更大更深且效果更好的模型不斷出現(xiàn)。然而隨著模型越來越復(fù)雜,從頭訓(xùn)練模型的成本越來越高。于是有人提出,能否不從頭訓(xùn)練,而是在別人訓(xùn)練好的模型基礎(chǔ)上訓(xùn)練,從而用更低的成本達(dá)到更好的效果呢?
例如,科學(xué)家對一個圖像分類模型進(jìn)行拆分,希望研究深度學(xué)習(xí)模型里的那么多層都學(xué)到了什么東西[2]。結(jié)果發(fā)現(xiàn),越接近輸入層,模型學(xué)到的是越基礎(chǔ)的信息,比如邊、角、紋理等;越接近輸出層,模型學(xué)到的是越接近高級組合的信息,比如公雞的形狀、船的形狀等。不僅僅在圖像領(lǐng)域如此,在自然語言、語音等很多領(lǐng)域也存在這個特征。
深度神經(jīng)網(wǎng)絡(luò)中不同層的輸出 接近輸入層(左側(cè))一般是基礎(chǔ)信息,接近輸出層(右側(cè))一般是某個具體的物體等信息[2]。
基礎(chǔ)信息往往是領(lǐng)域通用的信息,比如圖像領(lǐng)域的邊、角、紋理等,在各類圖像識別中都會用到;而高級組合信息往往是領(lǐng)域?qū)S眯畔,比如貓的形狀只有在動物識別任務(wù)中才有用,在人臉識別的任務(wù)就沒用。因此一個自然而然的邏輯是,通過領(lǐng)域常見數(shù)據(jù)訓(xùn)練出一個通用的模型,主要是學(xué)好領(lǐng)域通用信息;在面對某個具體場景時(shí),只需要使用該場景數(shù)據(jù)做個小規(guī)模訓(xùn)練(微調(diào))就可以了。這就是著名的預(yù)訓(xùn)練+微調(diào)的范式。
預(yù)訓(xùn)練+微調(diào)這一范式的出現(xiàn)與普及對領(lǐng)域產(chǎn)生了兩個重大影響。一方面,在已有模型基礎(chǔ)上微調(diào)大大降低了成本;另一方面,一個好的預(yù)訓(xùn)練模型的重要性也更加凸顯,因此各大公司、科研機(jī)構(gòu)更加愿意花大量成本來訓(xùn)練更加昂貴的基礎(chǔ)模型。那么大模型的效果到底與什么因素有關(guān)呢?OpenAI在2020年提出了著名的Scaling Law,即當(dāng)模型規(guī)模變大以后,模型的效果主要受到模型參數(shù)規(guī)模、訓(xùn)練數(shù)據(jù)規(guī)模和使用算力規(guī)模影響[3]。
Scaling Law積極的一面是為提升模型效果指明了方向,只要把模型和數(shù)據(jù)規(guī)模做得更大就可以,這也是為什么近年來大模型的規(guī)模在以指數(shù)級增長,以及基礎(chǔ)算力資源圖形處理器(graphics processing unit, GPU)總是供不應(yīng)求;但Scaling Law也揭示了一個讓很多科學(xué)家絕望的事實(shí):即模型的每一步提升都需要人類用極為夸張的算力和數(shù)據(jù)成本來“交換”。大模型的成本門檻變得非常之高,從頭訓(xùn)練大模型成了學(xué)界的奢望,以O(shè)penAI、谷歌、Meta、百度、智譜AI等企業(yè)為代表的業(yè)界開始發(fā)揮引領(lǐng)作用。
GPT的野心:上下文學(xué)習(xí)與提示詞工程
除了希望通過訓(xùn)練規(guī)模巨大的模型來提升效果以外,GPT模型在發(fā)展過程中還有一個非常雄大的野心:上下文學(xué)習(xí)(in-context learning)。
正如前文所述,在過去如果想要模型“學(xué)”到什么內(nèi)容,需要用一大堆數(shù)據(jù)來訓(xùn)練我們的模型;哪怕是前文講到的預(yù)訓(xùn)練+微調(diào)的范式,依然需要在已訓(xùn)練好的模型基礎(chǔ)上,用一個小批量數(shù)據(jù)做訓(xùn)練(即微調(diào))。因此在過去,“訓(xùn)練”一直是機(jī)器學(xué)習(xí)中最核心的概念。但OpenAI提出,訓(xùn)練本身既有成本又有門檻,希望模型面對新任務(wù)的時(shí)候不用額外訓(xùn)練,只需要在對話窗口里給模型一些例子,模型就自動學(xué)會了。這種模式就叫作上下文學(xué)習(xí)。
舉一個中英文翻譯的例子。過去做中英文翻譯,需要使用海量的中英文數(shù)據(jù)集訓(xùn)練一個機(jī)器學(xué)習(xí)模型;而在上下文學(xué)習(xí)中,想要完成同樣的任務(wù),只需要給模型一些例子,比如告訴模型下面的話:
下面是一些中文翻譯成英文的例子:我愛中國 → I love China我喜歡寫代碼 → I love coding人工智能很重要 → AI is important現(xiàn)在我有一句中文,請翻譯成英文。這句話是:“我今天想吃蘋果”。這時(shí)候原本“傻傻的”模型就突然具備了翻譯的能力,能夠自動翻譯了。
有過ChatGPT使用經(jīng)歷的讀者會發(fā)現(xiàn),這個輸入就是提示詞(prompt)。在ChatGPT使用已相當(dāng)普及的今天,很多人意識不到這件事有多神奇。這就如同找一個沒學(xué)過英語的孩子,給他看幾個中英文翻譯的句子,這個孩子就可以流暢地進(jìn)行中英文翻譯了。要知道這個模型可從來沒有專門在中英文翻譯的數(shù)據(jù)集上訓(xùn)練過,也就是說模型本身并沒有中英文翻譯的能力,但它竟然通過對話里的一些例子就突然脫胎換骨“頓悟”了中英文翻譯,這真的非常神奇!
上下文學(xué)習(xí)的相關(guān)機(jī)制到今天依然是學(xué)界討論的熱點(diǎn),而恰恰因?yàn)镚PT模型具有上下文學(xué)習(xí)的能力,一個好的提示詞非常重要。提示詞工程逐步成為一個熱門的領(lǐng)域,甚至出現(xiàn)了一種新的職業(yè)叫作“提示詞工程師”(prompt engineer),就是通過寫出更好的提示詞讓ChatGPT發(fā)揮更大的作用。
ChatGPT原理總結(jié)如下:
(1) ChatGPT本質(zhì)是在做文字接龍的游戲,在游戲中它會根據(jù)候選詞匯的概率來挑選下一個詞。
(2) ChatGPT背后是一個非常龐大的神經(jīng)網(wǎng)絡(luò),比如GPT-3有1700億個參數(shù)(訓(xùn)練成本在100萬美元以上)。
(3)基于龐大的神經(jīng)網(wǎng)絡(luò),面對一句話時(shí),模型可以準(zhǔn)確給出候選詞匯的概率,從而完成文字接龍的操作。
(4)這種有巨大規(guī)模進(jìn)行語言處理的模型,也叫作大語言模型(large language model)。
(5)以GPT為代表的大語言模型具備上下文學(xué)習(xí)的能力,因此一個好的提示詞至關(guān)重要。
參考文獻(xiàn):[1] Rumelhart D E, Hinton E G, Williams R J. Learning representations by back-propagating errors. Nature, 1986, 323(6088): 533536.
[2] Wei D L, Zhou B L, Torralba A,et al. mNeuron: A matlab plugin to visualize neurons from deep models. (2015)[2024-07-05]. https://donglaiw.github.io/proj/mneuron/index.html.
[3] Kaplan J, McCandlish S, Henighan T, et al. Scaling laws for neural language models. arXiv preprint arXiv: 2001.08361, 2020.
[4] Zhao W X, Zhou K, Li J, et al. A survey of large language models. arXiv preprint arXiv: 2303.18223, 2023.
[5] Boiko D A, MacKnight R, Kline B, et al. Autonomous chemical research with large language models. Nature, 2023, 624(7992): 570-578.
關(guān)鍵詞:ChatGPT 機(jī)器學(xué)習(xí) 神經(jīng)網(wǎng)絡(luò) 大模型 多模態(tài)智能體
來源:科學(xué)雜志1915
編輯:未