OneFlow編譯
當(dāng)ChatGPT在去年秋天推出時(shí),在科技行業(yè)乃至世界范圍內(nèi)引起了轟動(dòng)。當(dāng)時(shí),機(jī)器學(xué)習(xí)研究人員嘗試研發(fā)了多年的語(yǔ)言大模型(LLM),但普通大眾并未十分關(guān)注,也沒(méi)有意識(shí)到它們變得多強(qiáng)大。
如今,幾乎每個(gè)人都聽(tīng)說(shuō)過(guò)LLM,并有數(shù)千萬(wàn)人用過(guò)它們,但是,了解工作原理的人并不多。你可能聽(tīng)說(shuō)過(guò),訓(xùn)練LLM是用于“預(yù)測(cè)下一個(gè)詞”,而且它們需要大量的文本來(lái)實(shí)現(xiàn)這一點(diǎn)。但是,解釋通常就止步于此。它們?nèi)绾晤A(yù)測(cè)下一個(gè)詞的細(xì)節(jié)往往被視為一個(gè)深?yuàn)W的謎題。
其中一個(gè)原因是,這些系統(tǒng)的開(kāi)發(fā)方式與眾不同。一般的軟件是由人類工程師編寫,他們?yōu)橛?jì)算機(jī)提供明確的、逐步的指令。相比之下,ChatGPT是建立在一個(gè)使用數(shù)十億個(gè)語(yǔ)言詞匯進(jìn)行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)之上。
因此,地球上沒(méi)有人完全理解LLM的內(nèi)部工作原理。研究人員正在努力嘗試?yán)斫膺@些模型,但這是一個(gè)需要數(shù)年甚至幾十年才能完成的緩慢過(guò)程。
然而,專家們確實(shí)對(duì)這些系統(tǒng)的工作原理已有不少了解。本文的目標(biāo)是將這些知識(shí)開(kāi)放給廣大受眾。我們將努力解釋關(guān)于這些模型內(nèi)部工作原理的已知內(nèi)容,而不涉及技術(shù)術(shù)語(yǔ)或高級(jí)數(shù)學(xué)。
我們將從解釋詞向量(word vector)開(kāi)始,它是語(yǔ)言模型表示和推理語(yǔ)言的一種令人驚訝的方式。然后,我們將深入探討構(gòu)建ChatGPT等模型的基石Transformer。最后,我們將解釋這些模型是如何訓(xùn)練的,并探討為什么要使用龐大的數(shù)據(jù)量才能獲得良好的性能。
1
詞向量
要了解語(yǔ)言模型的工作原理,首先需要了解它們?nèi)绾伪硎締卧~。人類用字母序列來(lái)表示英文單詞,比如C-A-T表示貓。語(yǔ)言模型使用的是一個(gè)叫做詞向量的長(zhǎng)串?dāng)?shù)字列表。例如,這是一種將貓表示為向量的方式:
[0.0074, 0.0030, -0.0105, 0.0742, 0.0765, -0.0011, 0.0265, 0.0106, 0.0191, 0.0038, -0.0468, -0.0212, 0.0091, 0.0030, -0.0563, -0.0396, -0.0998, -0.0796, …, 0.0002]
(注:完整的向量長(zhǎng)度實(shí)際上有300個(gè)數(shù)字)
為什么要使用如此復(fù)雜的表示法?這里有個(gè)類比,華盛頓特區(qū)位于北緯38.9度,西經(jīng)77度,我們可以用向量表示法來(lái)表示:
? 華盛頓特區(qū)的坐標(biāo)是[38.9,77]
? 紐約的坐標(biāo)是[40.7,74]
? 倫敦的坐標(biāo)是[51.5,0.1]
? 巴黎的坐標(biāo)是[48.9,-2.4]
這對(duì)于推理空間關(guān)系很有用。你可以看出,紐約離華盛頓特區(qū)很近,因?yàn)樽鴺?biāo)中38.9接近40.7,77接近74。同樣,巴黎離倫敦也很近。但巴黎離華盛頓特區(qū)很遠(yuǎn)。
語(yǔ)言模型采用類似的方法:每個(gè)詞向量代表了“詞空間(word space)”中的一個(gè)點(diǎn),具有相似含義的詞的位置會(huì)更接近彼此。例如,在向量空間中與貓最接近的詞包括狗、小貓和寵物。用實(shí)數(shù)向量表示單詞(相對(duì)于“C-A-T”這樣的字母串)的一個(gè)主要優(yōu)點(diǎn)是,數(shù)字能夠進(jìn)行字母無(wú)法進(jìn)行的運(yùn)算。
單詞太復(fù)雜,無(wú)法僅用二維表示,因此語(yǔ)言模型使用具有數(shù)百甚至數(shù)千維度的向量空間。人類無(wú)法想象具有如此高維度的空間,但計(jì)算機(jī)完全可以對(duì)其進(jìn)行推理并產(chǎn)生有用的結(jié)果。
幾十年來(lái),研究人員一直在研究詞向量,但這個(gè)概念真正引起關(guān)注是在2013年,那時(shí)Google公布了word2vec項(xiàng)目。Google分析了從Google新聞中收集的數(shù)百萬(wàn)篇文檔,以找出哪些單詞傾向于出現(xiàn)在相似的句子中。隨著時(shí)間的推移,一個(gè)經(jīng)訓(xùn)練過(guò)的神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)了將相似類別的單詞(如狗和貓)放置在向量空間中的相鄰位置。
Google的詞向量還具有另一個(gè)有趣的特點(diǎn):你可以使用向量運(yùn)算“推理”單詞。例如,Google研究人員取出最大的(biggest)向量,減去大的(big)向量,再加上小的(small)向量。與結(jié)果向量最接近的詞就是最小的(smallest)向量。
你可以使用向量運(yùn)算來(lái)做類比!在這個(gè)例子中,大(big)與最大的(biggest)的關(guān)系,類似于?。╯mall)與最小的(smallest)的關(guān)系。Google的詞向量捕捉到了許多其他的關(guān)系:
? 瑞士人與瑞士類似于柬埔寨人與柬埔寨。(國(guó)籍)
? 巴黎與法國(guó)類似于柏林與德國(guó)。(首都)
? 不道德的與道德的類似于可能的與不可能的。(反義詞)
? Mouse(老鼠)與mice(老鼠的復(fù)數(shù))類似于dollar(美元)與dollars(美元的復(fù)數(shù))。(復(fù)數(shù)形式)
? 男人與女人類似于國(guó)王與女王。(性別角色)
因?yàn)檫@些向量是從人們使用語(yǔ)言的方式中構(gòu)建的,它們反映了許多存在于人類語(yǔ)言中的偏見(jiàn)。例如,在某些詞向量模型中,(醫(yī)生)減去(男人)再加上(女人)等于(護(hù)士)。減少這種偏見(jiàn)是一個(gè)很新穎的研究領(lǐng)域。
盡管如此,詞向量是語(yǔ)言模型的一個(gè)有用的基礎(chǔ),它們編碼了詞之間微妙但重要的關(guān)系信息。如果一個(gè)語(yǔ)言模型學(xué)到了關(guān)于貓的一些知識(shí)(例如,它有時(shí)會(huì)去看獸醫(yī)),那同樣的事情很可能也適用于小貓或狗。如果模型學(xué)到了關(guān)于巴黎和法國(guó)之間的關(guān)系(例如,它們共用一種語(yǔ)言),那么柏林和德國(guó)以及羅馬和意大利的關(guān)系很可能是一樣的。
2
詞的意義取決于上下文
像這樣簡(jiǎn)單的詞向量方案并沒(méi)有捕獲到自然語(yǔ)言的一個(gè)重要事實(shí):詞通常有多重含義。
例如,單詞“bank”可以指金融機(jī)構(gòu)或河岸?;蛘呖紤]以下句子:
?John picks up amagazine(約翰拿起一本雜志)。
?Susan works for amagazine(蘇珊為一家雜志工作)。
這些句子中,“magazine”的含義相關(guān)但又有不同。約翰拿起的是一本實(shí)體雜志,而蘇珊為一家出版實(shí)體雜志的機(jī)構(gòu)工作。
當(dāng)一個(gè)詞有兩個(gè)無(wú)關(guān)的含義時(shí),語(yǔ)言學(xué)家稱之為同音異義詞(homonyms)。當(dāng)一個(gè)詞有兩個(gè)緊密相關(guān)的意義時(shí),如“magazine”,語(yǔ)言學(xué)家稱之為多義詞(polysemy)。
像ChatGPT這樣的語(yǔ)言模型能夠根據(jù)單詞出現(xiàn)的上下文以不同的向量表示同一個(gè)詞。有一個(gè)針對(duì)“bank(金融機(jī)構(gòu))”的向量,還有一個(gè)針對(duì)“bank(河岸)”的向量。有一個(gè)針對(duì)“magazine(實(shí)體出版物)”的向量,還有一個(gè)針對(duì)“magazine(出版機(jī)構(gòu))”的向量。正如你預(yù)想的那樣,對(duì)于多義詞的含義,語(yǔ)言模型使用的向量更相似,而對(duì)于同音異義詞的含義,使用的向量則不太相似。
到目前為止,我們還沒(méi)有解釋語(yǔ)言模型是如何做到這一點(diǎn)——很快會(huì)進(jìn)入這個(gè)話題。不過(guò),我們正在詳細(xì)說(shuō)明這些向量表示,這對(duì)理解語(yǔ)言模型的工作原理非常重要。
傳統(tǒng)軟件的設(shè)計(jì)被用于處理明確的數(shù)據(jù)。如果你讓計(jì)算機(jī)計(jì)算“2+3”,關(guān)于2、+或3的含義不存在歧義問(wèn)題。但自然語(yǔ)言中的歧義遠(yuǎn)不止同音異義詞和多義詞:
? 在“the customer asked the mechanic to fixhiscar(顧客請(qǐng)修理工修理他的車)”中,“his”是指顧客還是修理工?
? 在“the professor urged the student to doherhomework(教授催促學(xué)生完成她的家庭作業(yè))”中,“her”是指教授還是學(xué)生?
? 在“fruitflieslike a banana”中,“flies”是一個(gè)動(dòng)詞(指在天空中飛的水果像一只香蕉)還是一個(gè)名詞(指喜歡香蕉的果蠅)?
人們根據(jù)上下文來(lái)解決這類歧義,但并沒(méi)有簡(jiǎn)單或明確的規(guī)則。相反,這需要理解關(guān)于這個(gè)世界的實(shí)際情況。你需要知道修理工通常會(huì)修理顧客的汽車,學(xué)生通常完成自己的家庭作業(yè),水果通常不會(huì)飛。
詞向量為語(yǔ)言模型提供了一種靈活的方式,以在特定段落的上下文中表示每個(gè)詞的準(zhǔn)確含義。現(xiàn)在讓我們看看它們是如何做到這一點(diǎn)的。
3
將詞向量轉(zhuǎn)化為詞預(yù)測(cè)
ChatGPT原始版本背后的GPT-3模型,由數(shù)十個(gè)神經(jīng)網(wǎng)絡(luò)層組成。每一層接受一系列向量作為輸入——輸入文本中的每個(gè)詞對(duì)應(yīng)一個(gè)向量——并添加信息以幫助澄清該詞的含義,并且更好地預(yù)測(cè)接下來(lái)可能出現(xiàn)的詞。
讓我們從一個(gè)簡(jiǎn)單的事例說(shuō)起。
LLM的每個(gè)層都是一個(gè)Transformer,2017年,Google在一篇里程碑的論文中首次介紹了這一神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
在圖表底部,模型的輸入文本是“John wants his bank to cash the(約翰想讓他的銀行兌現(xiàn))”, 這些單詞被表示為word2vec風(fēng)格的向量,并傳送至第一個(gè)Transformer。這個(gè)Transformer確定了wants和cash都是動(dòng)詞(這兩個(gè)詞也可以是名詞)。我們用小括號(hào)中的紅色文本表示這一附加的上下文,但實(shí)際上模型會(huì)通過(guò)修改詞向量的方式來(lái)存儲(chǔ)這一信息,這種方式對(duì)人類來(lái)說(shuō)很難解釋。這些新的向量被稱為隱藏狀態(tài)(hidden state),并傳遞給下一個(gè)Transformer。
第二個(gè)Transformer添加了另外兩個(gè)上下文信息:它澄清了bank是指金融機(jī)構(gòu)(financial institution)而不是河岸,并且his是指John的代詞。第二個(gè)Transformer產(chǎn)生了另一組隱藏狀態(tài)向量,這一向量反映的是該模型之前所學(xué)習(xí)的所有信息。
上述圖表描繪的是一個(gè)純假設(shè)的LLM,所以不要對(duì)細(xì)節(jié)過(guò)于較真。真實(shí)的LLM往往有更多層。例如,最強(qiáng)大的GPT-3版本有96層。
研究表明(https://arxiv.org/abs/1905.05950),前幾層專注于理解句子的語(yǔ)法并解決上面所示的歧義。后面的層(為保持圖表大小的可控性上述圖標(biāo)沒(méi)有顯示)則致力于對(duì)整個(gè)段落的高層次理解。
例如,當(dāng)LLM“閱讀”一篇短篇小說(shuō)時(shí),它似乎會(huì)記住關(guān)于故事角色的各種信息:性別和年齡、與其他角色的關(guān)系、過(guò)去和當(dāng)前的位置、個(gè)性和目標(biāo)等等。
研究人員并不完全了解LLM是如何跟蹤這些信息的,但從邏輯上講,模型在各層之間傳遞時(shí)信息時(shí)必須通過(guò)修改隱藏狀態(tài)向量來(lái)實(shí)現(xiàn)?,F(xiàn)代LLM中的向量維度極為龐大,這有利于表達(dá)更豐富的語(yǔ)義信息。
例如,GPT-3最強(qiáng)大的版本使用有12288個(gè)維度的詞向量,也就是說(shuō),每個(gè)詞由一個(gè)包含12288個(gè)的數(shù)字列表表示。這比Google在2013年提出的word2vec方案要大20倍。你可以把所有這些額外的維度看作是GPT-3可以用來(lái)記錄每個(gè)詞的上下文的一種“暫存空間(scratch space)”。較早層所做的信息筆記可以被后來(lái)的層讀取和修改,使模型逐漸加深對(duì)整篇文章的理解。
因此,假設(shè)我們將上面的圖表改為,描述一個(gè)96層的語(yǔ)言模型來(lái)解讀一個(gè)1000字的故事。第60層可能包括一個(gè)用于約翰(John)的向量,帶有一個(gè)表示為“(主角,男性,嫁給謝麗爾,唐納德的表弟,來(lái)自明尼蘇達(dá)州,目前在博伊西,試圖找到他丟失的錢包)”的括號(hào)注釋。同樣,所有這些事實(shí)(可能還有更多)都會(huì)以一個(gè)包含12288個(gè)數(shù)字列表的形式編碼,這些數(shù)字對(duì)應(yīng)于詞John?;蛘?,該故事中的某些信息可能會(huì)編碼在12288維的向量中,用于謝麗爾、唐納德、博伊西、錢包或其他詞。
這樣做的目標(biāo)是,讓網(wǎng)絡(luò)的第96層和最后一層輸出一個(gè)包含所有必要信息的隱藏狀態(tài),以預(yù)測(cè)下一個(gè)單詞。
4
注意力機(jī)制
現(xiàn)在讓我們談?wù)劽總€(gè)Transformer內(nèi)部發(fā)生的情況。Transformer在更新輸入段落的每個(gè)單詞的隱藏狀態(tài)時(shí)有兩個(gè)處理過(guò)程:
1. 在注意力步驟中,詞匯會(huì)“觀察周圍”以查找具有相關(guān)背景并彼此共享信息的其他詞。
2. 在前饋步驟中,每個(gè)詞會(huì)“思考”之前注意力步驟中收集到的信息,并嘗試預(yù)測(cè)下一個(gè)單詞。
當(dāng)然,執(zhí)行這些步驟的是網(wǎng)絡(luò),而不是個(gè)別的單詞。但我們用這種方式表述是為了強(qiáng)調(diào)Transformer是以單詞作為這一分析的基本單元,而不是整個(gè)句子或段落。這種方法使得LLM能夠充分利用現(xiàn)代GPU芯片的大規(guī)模并行處理能力。它還幫助LLM擴(kuò)展到包含成千上萬(wàn)個(gè)詞的長(zhǎng)段落。而這兩個(gè)方面都是早期語(yǔ)言模型面臨的挑戰(zhàn)。
你可以將注意力機(jī)制看作是單詞之間的一個(gè)撮合服務(wù)。每個(gè)單詞都會(huì)制作一個(gè)檢查表(稱為查詢向量),描述它尋找的詞的特征。每個(gè)詞還會(huì)制作一個(gè)檢查表(稱為關(guān)鍵向量),描述它自己的特征。神經(jīng)網(wǎng)絡(luò)通過(guò)將每個(gè)關(guān)鍵向量與每個(gè)查詢向量進(jìn)行比較(通過(guò)計(jì)算點(diǎn)積)來(lái)找到最佳匹配的單詞。一旦找到匹配項(xiàng),它將從產(chǎn)生關(guān)鍵向量的單詞傳遞相關(guān)信息到產(chǎn)生查詢向量的單詞。
例如,在前面的部分中,我們展示了一個(gè)假設(shè)的Transformer模型,它發(fā)現(xiàn)在部分句子“John wants his bank to cash the”中,“his(他的)”指的是“John(約翰)”。在系統(tǒng)內(nèi)部,過(guò)程可能是這樣的:“his”的查詢向量可能會(huì)有效地表示為“我正在尋找:描述男性的名詞”。“John”的關(guān)鍵向量可能會(huì)有效地表示為“我是一個(gè)描述男性的名詞”。網(wǎng)絡(luò)會(huì)檢測(cè)到這兩個(gè)向量匹配,并將關(guān)于"John"的向量信息轉(zhuǎn)移給“his”的向量。
每個(gè)注意力層都有幾個(gè)“注意力頭”,這意味著,這個(gè)信息交換過(guò)程在每一層上會(huì)多次進(jìn)行(并行)。每個(gè)注意頭都專注于不同的任務(wù):
? 一個(gè)注意頭可能會(huì)將代詞與名詞進(jìn)行匹配,就像我們之前討論的那樣。
? 另一個(gè)注意頭可能會(huì)處理解析類似"bank"這樣的一詞多義的含義。
? 第三個(gè)注意力頭可能會(huì)將“Joe Biden”這樣的兩個(gè)單詞短語(yǔ)鏈接在一起。
諸如此類的注意力頭經(jīng)常按順序操作,一個(gè)注意力層中的注意力操作結(jié)果成為下一層中一個(gè)注意力頭的輸入。事實(shí)上,我們剛才列舉的每個(gè)任務(wù)可能都需要多個(gè)注意力頭,而不僅僅是一個(gè)。
GPT-3的最大版本有96個(gè)層,每個(gè)層有96個(gè)注意力頭,因此,每次預(yù)測(cè)一個(gè)新詞時(shí),GPT-3將執(zhí)行9216個(gè)注意力操作。
5
一個(gè)真實(shí)世界的例子
在上述兩節(jié)內(nèi)容中,我們展示了注意力頭的工作方式的理想化版本?,F(xiàn)在讓我們來(lái)看一下關(guān)于真實(shí)語(yǔ)言模型內(nèi)部運(yùn)作的研究。
去年,研究人員在Redwood Research研究了GPT-2,即ChatGPT的前身,對(duì)于段落“When Mary and John went to the store, John gave a drink to(當(dāng)瑪麗和約翰去商店,約翰把一杯飲料給了)”預(yù)測(cè)下一個(gè)單詞的過(guò)程。
GPT-2預(yù)測(cè)下一個(gè)單詞是Mary(瑪麗)。研究人員發(fā)現(xiàn)有三種類型的注意力頭對(duì)這個(gè)預(yù)測(cè)做出了貢獻(xiàn):
? 他們稱之為名稱移動(dòng)頭(Name Mover Head)的三個(gè)注意力頭將信息從Mary向量復(fù)制到最后的輸入向量(to這個(gè)詞對(duì)應(yīng)的向量)。GPT-2使用此最右向量中的信息來(lái)預(yù)測(cè)下一個(gè)單詞。
? 神經(jīng)網(wǎng)絡(luò)是如何決定Mary是正確的復(fù)制詞?通過(guò)GPT-2的計(jì)算過(guò)程進(jìn)行逆向推導(dǎo),科學(xué)家們發(fā)現(xiàn)了一組他們稱之為主語(yǔ)抑制頭(Subject Inhibition Head)的四個(gè)注意頭,它們標(biāo)記了第二個(gè)John向量,阻止名稱移動(dòng)頭復(fù)制John這個(gè)名字。
? 主語(yǔ)抑制頭是如何知道不應(yīng)該復(fù)制John?團(tuán)隊(duì)進(jìn)一步向后推導(dǎo),發(fā)現(xiàn)了他們稱為重復(fù)標(biāo)記頭(Duplicate Token Heads)的兩個(gè)注意力頭。他們將第二個(gè)John向量標(biāo)記為第一個(gè)John向量的重復(fù)副本,這幫助主語(yǔ)抑制頭決定不應(yīng)該復(fù)制John。
簡(jiǎn)而言之,這九個(gè)注意力頭使得GPT-2能夠理解“John gave a drink to John(約翰給了約翰一杯飲料”沒(méi)有意義,而是選擇了“John gave a drink to Mary(約翰給了瑪麗一杯飲料)”。
這個(gè)例子側(cè)面說(shuō)明了要完全理解LLM會(huì)有多么困難。由五位研究人員組成的Redwood團(tuán)隊(duì)曾發(fā)表了一篇25頁(yè)的論文,解釋了他們是如何識(shí)別和驗(yàn)證這些注意力頭。然而,即使他們完成了所有這些工作,我們離對(duì)于為什么GPT-2決定預(yù)測(cè)“Mary”作為下一個(gè)單詞的全面解釋還有很長(zhǎng)的路要走。
例如,模型是如何知道下一個(gè)單詞應(yīng)該是某個(gè)人的名字而不是其他類型的單詞?很容易想到,在類似的句子中,Mary不會(huì)是一個(gè)好的下一個(gè)預(yù)測(cè)詞。例如,在句子“when Mary and John went to the restaurant, John gave his keys to(當(dāng)瑪麗和約翰去餐廳時(shí),約翰把鑰匙給了)”中,邏輯上,下一個(gè)詞應(yīng)該是“the valet(代客停車員)”。
假設(shè)計(jì)算機(jī)科學(xué)家們進(jìn)行充足的研究,他們可以揭示和解釋GPT-2推理過(guò)程中的其他步驟。最終,他們可能能夠全面理解GPT-2是如何決定“Mary”是該句子最可能的下一個(gè)單詞。但這可能需要數(shù)月甚至數(shù)年的額外努力才能理解一個(gè)單詞的預(yù)測(cè)情況。
ChatGPT背后的語(yǔ)言模型——GPT-3和GPT-4——比GPT-2更龐大和復(fù)雜,相比Redwood團(tuán)隊(duì)研究的簡(jiǎn)單句子,它們能夠完成更復(fù)雜的推理任務(wù)。因此,完全解釋這些系統(tǒng)的工作將是一個(gè)巨大的項(xiàng)目,人類不太可能在短時(shí)間內(nèi)完成。
6
前饋步驟
在注意力頭在詞向量之間傳輸信息后,前饋網(wǎng)絡(luò)會(huì)“思考”每個(gè)詞向量并嘗試預(yù)測(cè)下一個(gè)詞。在這個(gè)階段,單詞之間沒(méi)有交換信息,前饋層會(huì)獨(dú)立地分析每個(gè)單詞。然而,前饋層可以訪問(wèn)之前由注意力頭復(fù)制的任何信息。以下是GPT-3最大版本的前饋層結(jié)構(gòu)。
綠色和紫色的圓圈表示神經(jīng)元:它們是計(jì)算其輸入加權(quán)和的數(shù)學(xué)函數(shù)。
前饋層之所以強(qiáng)大,是因?yàn)樗写罅康倪B接。我們使用三個(gè)神經(jīng)元作為輸出層,六個(gè)神經(jīng)元作為隱藏層來(lái)繪制這個(gè)網(wǎng)絡(luò),但是GPT-3的前饋層要大得多:輸出層有12288個(gè)神經(jīng)元(對(duì)應(yīng)模型的12288維詞向量),隱藏層有49152個(gè)神經(jīng)元。
所以在最大版本的GPT-3中,隱藏層有49152個(gè)神經(jīng)元,每個(gè)神經(jīng)元有12288個(gè)輸入值(因此每個(gè)神經(jīng)元有12288個(gè)權(quán)重參數(shù)),并且還有12288輸出神經(jīng)元,每個(gè)神經(jīng)元有49152個(gè)輸入值(因此每個(gè)神經(jīng)元有49152個(gè)權(quán)重參數(shù))。這意味著,每個(gè)前饋層有49152*12288+12288*49152=12億個(gè)權(quán)重參數(shù)。并且有96個(gè)前饋層,總共有12億*96=1160億個(gè)參數(shù)!這相當(dāng)于具有1750億參數(shù)的GPT-3近三分之二的參數(shù)量。
來(lái)自特拉維夫大學(xué)的研究人員發(fā)現(xiàn),前饋層通過(guò)模式匹配進(jìn)行工作:隱藏層中的每個(gè)神經(jīng)元都能匹配輸入文本中的特定模式。下面是一個(gè)16層版本的GPT-2中的一些神經(jīng)元匹配的模式:
? 第1層的神經(jīng)元匹配以“substitutes”結(jié)尾的詞序列。
? 第6層的神經(jīng)元匹配與軍事有關(guān)并以“base”或“bases”結(jié)尾的詞序列。
? 第13層的神經(jīng)元匹配以時(shí)間范圍結(jié)尾的序列,比如“在下午3點(diǎn)到7點(diǎn)之間”或者“從周五晚上7點(diǎn)到”。
? 第16層的神經(jīng)元匹配與電視節(jié)目相關(guān)的序列,例如“原始的NBC日間版本,已存檔”或者“時(shí)間延遲使該集的觀眾增加了57%?!?/p>
正如你所看到的,在后面的層中,模式變得更抽象。早期的層傾向于匹配特定的單詞,而后期的層則匹配屬于更廣泛語(yǔ)義類別的短語(yǔ),例如電視節(jié)目或時(shí)間間隔。
這很有趣,因?yàn)槿缜八?,前饋層每次只能檢查一個(gè)單詞。因此,當(dāng)將序列“原始的NBC日間版本,已存檔”分類為“與電視相關(guān)”時(shí),它只能訪問(wèn)“已存檔”這個(gè)詞的向量,而不是NBC或日間等詞匯??梢酝茢?,前饋層之所以可以判斷“已存檔”是電視相關(guān)序列的一部分,是因?yàn)樽⒁饬︻^先前將上下文信息移到了“已存檔”的向量中。
當(dāng)一個(gè)神經(jīng)元與其中一個(gè)模式匹配時(shí),它會(huì)向詞向量中添加信息。雖然這些信息并不總是容易解釋,但在許多情況下,你可以將其視為對(duì)下一個(gè)詞的臨時(shí)預(yù)測(cè)。
7
使用向量運(yùn)算進(jìn)行前饋網(wǎng)絡(luò)的推理
布朗大學(xué)最近的研究展示了前饋層如何幫助預(yù)測(cè)下一個(gè)單詞的優(yōu)雅例子。我們之前討論過(guò)Google的word2vec研究,顯示可以使用向量運(yùn)算進(jìn)行類比推理。例如,柏林-德國(guó)+法國(guó)=巴黎。
布朗大學(xué)的研究人員發(fā)現(xiàn),前饋層有時(shí)使用這種準(zhǔn)確的方法來(lái)預(yù)測(cè)下一個(gè)單詞。例如,他們研究了GPT-2對(duì)以下提示的回應(yīng):“問(wèn)題:法國(guó)的首都是什么?回答:巴黎。問(wèn)題:波蘭的首都是什么?回答:”
團(tuán)隊(duì)研究了一個(gè)包含24個(gè)層的GPT-2版本。在每個(gè)層之后,布朗大學(xué)的科學(xué)家們探測(cè)模型,觀察它對(duì)下一個(gè)詞元(token)的最佳猜測(cè)。在前15層,最高可能性的猜測(cè)是一個(gè)看似隨機(jī)的單詞。在第16層和第19層之間,模型開(kāi)始預(yù)測(cè)下一個(gè)單詞是波蘭——不正確,但越來(lái)越接近正確。然后在第20層,最高可能性的猜測(cè)變?yōu)槿A沙——正確的答案,并在最后四層保持不變。
布朗大學(xué)的研究人員發(fā)現(xiàn),第20個(gè)前饋層通過(guò)添加一個(gè)將國(guó)家向量映射到其對(duì)應(yīng)首都的向量,從而將波蘭轉(zhuǎn)換為華沙。將相同的向量添加到中國(guó)時(shí),答案會(huì)得到北京。
同一模型中的前饋層使用向量運(yùn)算將小寫單詞轉(zhuǎn)換為大寫單詞,并將現(xiàn)在時(shí)的單詞轉(zhuǎn)換為過(guò)去時(shí)的等效詞。
8
注意力層和前饋層有不同的功能
到目前為止,我們已經(jīng)看到了GPT-2單詞預(yù)測(cè)的兩個(gè)實(shí)際示例:注意力頭幫助預(yù)測(cè)約翰給瑪麗一杯飲料;前饋層幫助預(yù)測(cè)華沙是波蘭的首都。
在第一個(gè)案例中,瑪麗來(lái)自用戶提供的提示。但在第二個(gè)案例中,華沙并沒(méi)有出現(xiàn)在提示中。相反,GPT-2必須“記住”華沙是波蘭的首都,這個(gè)信息是從訓(xùn)練數(shù)據(jù)中學(xué)到的。
當(dāng)布朗大學(xué)的研究人員禁用將波蘭轉(zhuǎn)換為華沙的前饋層時(shí),模型不再預(yù)測(cè)下一個(gè)詞是華沙。但有趣的是,如果他們接著在提示的開(kāi)頭加上句子“波蘭的首都是華沙”,那么GPT-2就能再次回答這個(gè)問(wèn)題。這可能是因?yàn)镚PT-2使用注意力機(jī)制從提示中提取了華沙這個(gè)名字。
這種分工更廣泛地表現(xiàn)為:注意力機(jī)制從提示的較早部分檢索信息,而前饋層使語(yǔ)言模型能夠“記住”未在提示中出現(xiàn)的信息。
事實(shí)上,可以將前饋層視為模型從訓(xùn)練數(shù)據(jù)中學(xué)到的信息的數(shù)據(jù)庫(kù)。靠前的前饋層更可能編碼與特定單詞相關(guān)的簡(jiǎn)單事實(shí),例如“特朗普經(jīng)常在唐納德之后出現(xiàn)”??亢蟮膶觿t編碼更復(fù)雜的關(guān)系,如“添加這個(gè)向量以將一個(gè)國(guó)家轉(zhuǎn)換為其首都。
9
語(yǔ)言模型的訓(xùn)練方式
許多早期的機(jī)器學(xué)習(xí)算法需要人工標(biāo)記的訓(xùn)練示例。例如,訓(xùn)練數(shù)據(jù)可能是帶有人工標(biāo)簽(“狗”或“貓”)的狗或貓的照片。需要標(biāo)記數(shù)據(jù)的需求,使得人們創(chuàng)建足夠大的數(shù)據(jù)集以訓(xùn)練強(qiáng)大模型變得困難且昂貴。
LLM的一個(gè)關(guān)鍵創(chuàng)新之處在于,它們不需要顯式標(biāo)記的數(shù)據(jù)。相反,它們通過(guò)嘗試預(yù)測(cè)文本段落中下一個(gè)單詞來(lái)學(xué)習(xí)。幾乎任何書面材料都適用于訓(xùn)練這些模型——從維基百科頁(yè)面到新聞文章再到計(jì)算機(jī)代碼。
舉例來(lái)說(shuō),LLM可能會(huì)得到輸入“I like my coffee with cream and(我喜歡在咖啡里加奶油和)”,并試圖預(yù)測(cè)“sugar(糖)”作為下一個(gè)單詞。一個(gè)新的初始化語(yǔ)言模型在這方面表現(xiàn)很糟糕,因?yàn)樗拿總€(gè)權(quán)重參數(shù)——GPT-3最強(qiáng)大的版本高達(dá)1750億個(gè)參數(shù)——最初基本上都是從一個(gè)隨機(jī)數(shù)字開(kāi)始。
但是隨著模型看到更多的例子——數(shù)千億個(gè)單詞——這些權(quán)重逐漸調(diào)整以做出更好的預(yù)測(cè)。
下面用一個(gè)類比來(lái)說(shuō)明這個(gè)過(guò)程是如何進(jìn)行的。假設(shè)你要洗澡,希望水溫剛剛好:不太熱,也不太冷。你以前從未用過(guò)這個(gè)水龍頭,所以你隨意調(diào)整水龍頭把手的方向,并觸摸水的溫度。如果太熱或太冷,你會(huì)向相反的方向轉(zhuǎn)動(dòng)把手,當(dāng)接近適當(dāng)?shù)乃疁貢r(shí),你對(duì)把手所做的調(diào)整幅度就越小。
現(xiàn)在,讓我們對(duì)這個(gè)類比做幾個(gè)改動(dòng)。首先,想象一下有50257個(gè)水龍頭,每個(gè)水龍頭對(duì)應(yīng)一個(gè)不同的單詞,比如"the"、"cat"或"bank"。你的目標(biāo)是,只讓與序列中下一個(gè)單詞相對(duì)應(yīng)的水龍頭里出水。
其次,水龍頭后面有一堆互聯(lián)的管道,并且這些管道上還有一堆閥門。所以如果水從錯(cuò)誤的水龍頭里出來(lái),你不能只調(diào)整水龍頭上的旋鈕。你要派遣一支聰明的松鼠部隊(duì)去追蹤每條管道,并沿途調(diào)整它們找到的每個(gè)閥門。
這變得很復(fù)雜,由于同一條管道通常供應(yīng)多個(gè)水龍頭,所以需要仔細(xì)思考如何確定要擰緊和松開(kāi)哪些閥門,以及程度多大。
顯然,如果字面理解這個(gè)例子,就變得很荒謬。建立一個(gè)擁有1750億個(gè)閥門的管道網(wǎng)絡(luò)既不現(xiàn)實(shí)也沒(méi)用。但是由于摩爾定律,計(jì)算機(jī)可以并且確實(shí)以這種規(guī)模運(yùn)行。
截止目前,在本文中所討論的LLM的所有部分——前饋層的神經(jīng)元和在單詞之間傳遞上下文信息的注意力頭——都被實(shí)現(xiàn)為一系列簡(jiǎn)單的數(shù)學(xué)函數(shù)(主要是矩陣乘法),其行為由可調(diào)整的權(quán)重參數(shù)來(lái)確定。就像我故事中的松鼠松緊閥門來(lái)控制水流一樣,訓(xùn)練算法通過(guò)增加或減小語(yǔ)言模型的權(quán)重參數(shù)來(lái)控制信息在神經(jīng)網(wǎng)絡(luò)中的流動(dòng)。
訓(xùn)練過(guò)程分為兩個(gè)步驟。首先進(jìn)行“前向傳播(forward pass)”,打開(kāi)水源并檢查水是否從正確的水龍頭流出。然后關(guān)閉水源,進(jìn)行“反向傳播(backwards pass)”,松鼠們沿著每根管道競(jìng)速,擰緊或松開(kāi)閥門。在數(shù)字神經(jīng)網(wǎng)絡(luò)中,松鼠的角色由一個(gè)稱為反向傳播的算法來(lái)扮演,該算法“逆向(walks backwards)”通過(guò)網(wǎng)絡(luò),使用微積分來(lái)估計(jì)需要改變每個(gè)權(quán)重參數(shù)的程度。
完成這個(gè)過(guò)程——對(duì)一個(gè)示例進(jìn)行前向傳播,然后進(jìn)行后向傳播來(lái)提高網(wǎng)絡(luò)在該示例上的性能——需要進(jìn)行數(shù)百億次數(shù)學(xué)運(yùn)算。而像GPT-3這種大模型的訓(xùn)練需要重復(fù)這個(gè)過(guò)程數(shù)十億次——對(duì)每個(gè)訓(xùn)練數(shù)據(jù)的每個(gè)詞都要進(jìn)行訓(xùn)練。OpenAI估計(jì),訓(xùn)練GPT-3需要超過(guò)3000億萬(wàn)億次浮點(diǎn)計(jì)算——這需要幾十個(gè)高端計(jì)算機(jī)芯片運(yùn)行數(shù)月。
10
GPT-3的驚人性能
你可能會(huì)對(duì)訓(xùn)練過(guò)程能夠如此出色地工作感到驚訝。ChatGPT可以執(zhí)行各種復(fù)雜的任務(wù)——撰寫文章、進(jìn)行類比和甚至編寫計(jì)算機(jī)代碼。那么,這樣一個(gè)簡(jiǎn)單的學(xué)習(xí)機(jī)制是如何產(chǎn)生如此強(qiáng)大的模型?
一個(gè)原因是規(guī)模。很難過(guò)于強(qiáng)調(diào)像GPT-3這樣的模型看到的示例數(shù)量之多。GPT-3是在大約5000億個(gè)單詞的語(yǔ)料庫(kù)上進(jìn)行訓(xùn)練的。相比之下,一個(gè)普通的人類孩子在10歲之前遇到的單詞數(shù)量大約是1億個(gè)。
在過(guò)去的五年中,OpenAI不斷增大其語(yǔ)言模型的規(guī)模。在一篇廣為傳閱的2020年論文中OpenAI報(bào)告稱,他們的語(yǔ)言模型的準(zhǔn)確性與模型規(guī)模、數(shù)據(jù)集規(guī)模以及用于訓(xùn)練的計(jì)算量呈冪律關(guān)系,一些趨勢(shì)甚至跨越七個(gè)數(shù)量級(jí)以上”。
模型規(guī)模越大,在涉及語(yǔ)言的任務(wù)上表現(xiàn)得越好。但前提是,他們需要以類似的倍數(shù)增加訓(xùn)練數(shù)據(jù)量。而要在更多數(shù)據(jù)上訓(xùn)練更大的模型,還需要更多的算力。
2018年,OpenAI發(fā)布了第一個(gè)大模型GPT-1于。它使用了768維的詞向量,共有12層,總共有1.17億個(gè)參數(shù)。幾個(gè)月后,OpenAI發(fā)布了GPT-2,其最大版本擁有1600維的詞向量,48層,總共有15億個(gè)參數(shù)。2020年,OpenAI發(fā)布了GPT-3,它具有12288維的詞向量,96層,總共有1750億個(gè)參數(shù)。
今年,OpenAI發(fā)布了GPT-4。該公司尚未公布任何架構(gòu)細(xì)節(jié),但業(yè)內(nèi)普遍認(rèn)為,GPT-4比GPT-3要大得多。
每個(gè)模型不僅學(xué)到了比其較小的前身模型更多的事實(shí),而且在需要某種形式的抽象推理任務(wù)上表現(xiàn)出更好的性能。
例如,設(shè)想以下故事:一個(gè)裝滿爆米花的袋子。袋子里沒(méi)有巧克力。然而,袋子上的標(biāo)簽寫著“巧克力”而不是“爆米花”。山姆發(fā)現(xiàn)了這個(gè)袋子。她以前從未見(jiàn)過(guò)這個(gè)袋子。她看不見(jiàn)袋子里面的東西。她讀了標(biāo)簽。
你可能猜到,山姆相信袋子里裝著巧克力,并會(huì)驚訝地發(fā)現(xiàn)里面是爆米花。
心理學(xué)家將這種推理他人思維狀態(tài)的能力研究稱為“心智理論(Theory of Mind)”。大多數(shù)人從上小學(xué)開(kāi)始就具備這種能力。專家們對(duì)于任何非人類動(dòng)物(例如黑猩猩)是否適用心智理論存在分歧,但基本共識(shí)是,它對(duì)人類社會(huì)認(rèn)知至關(guān)重要。
今年早些時(shí)候,斯坦福大學(xué)心理學(xué)家米Michal Kosinski發(fā)表了一項(xiàng)研究,研究了LLM的能力以解決心智理論任務(wù)。他給各種語(yǔ)言模型閱讀類似剛剛引述的故事,然后要求它們完成一個(gè)句子,比如“她相信袋子里裝滿了”,正確答案是“巧克力”,但一個(gè)不成熟的語(yǔ)言模型可能會(huì)說(shuō)“爆米花”或其他東西。
GPT-1和GPT-2在這個(gè)測(cè)試中失敗了。但是在2020年發(fā)布的GPT-3的第一個(gè)版本正確率達(dá)到了近40%,Kosinski將模型性能水平與三歲兒童相比較。去年11月發(fā)布的最新版本GPT-3將上述問(wèn)題的正確率提高到了約90%,與七歲兒童相當(dāng)。GPT-4對(duì)心智理論問(wèn)題的回答正確率約為95%。
“鑒于這些模型中既沒(méi)有跡象表明ToM(心智化能力)被有意設(shè)計(jì)進(jìn)去,也沒(méi)有研究證明科學(xué)家們知道如何實(shí)現(xiàn)它,這一能力很可能是自發(fā)且自主地出現(xiàn)的。這是模型的語(yǔ)言能力不斷增強(qiáng)的一個(gè)副產(chǎn)品。"Kosinski寫道。
值得注意的是,研究人員并不全都認(rèn)可這些結(jié)果證明了心智理論:例如,對(duì)錯(cuò)誤信念任務(wù)的微小更改導(dǎo)致GPT-3的性能大大下降;而GPT-3在測(cè)量心智理論的其他任務(wù)中的表現(xiàn)更為不穩(wěn)定,正如其中肖恩所寫的那樣,成功的表現(xiàn)可能歸因于任務(wù)中的混淆因素——一種“聰明漢斯(clever Hans,指一匹名為漢斯的馬看似能完成一些簡(jiǎn)單的智力任務(wù),但實(shí)際上只是依賴于人們給出的無(wú)意識(shí)線索)”效應(yīng),只不過(guò)是出現(xiàn)在了語(yǔ)言模型上而不是馬身上。
盡管如此,GPT-3在幾個(gè)旨在衡量心智理論的任務(wù)上接近人類的表現(xiàn),這在幾年前是無(wú)法想象的,并且這與更大的模型通常在需要高級(jí)推理的任務(wù)中表現(xiàn)更好的觀點(diǎn)相一致。
這只是語(yǔ)言模型表現(xiàn)出自發(fā)發(fā)展出高級(jí)推理能力的眾多例子之一。今年4月,微軟的研究人員發(fā)表的一篇論文表示,GPT-4展示了通用人工智能的初步、誘人的跡象——即以一種復(fù)雜、類人的方式思考的能力。
例如,一位研究人員要求GPT-4使用一種名為TiKZ的晦澀圖形編程語(yǔ)言畫一只獨(dú)角獸。GPT-4回應(yīng)了幾行代碼,然后研究人員將這些代碼輸入TiKZ軟件。生成的圖像雖然粗糙,但清晰地顯示出GPT-4對(duì)獨(dú)角獸的外觀有一定的理解。
研究人員認(rèn)為,GPT-4可能以某種方式從訓(xùn)練數(shù)據(jù)中記住了繪制獨(dú)角獸的代碼,所以他們給它提出了一個(gè)后續(xù)的挑戰(zhàn):他們修改了獨(dú)角獸的代碼,移除了頭角,并移動(dòng)了一些其他身體部位。然后他們讓GPT-4把獨(dú)角獸的頭角放回去。GPT-4通過(guò)將頭角放在正確的位置上作出了回應(yīng):
盡管作者的測(cè)試版本的訓(xùn)練數(shù)據(jù)完全基于文本,沒(méi)有包含任何圖像,但GPT-4似乎仍然能夠完成這個(gè)任務(wù)。不過(guò),通過(guò)大量的書面文本訓(xùn)練后,GPT-4顯然學(xué)會(huì)了推理關(guān)于獨(dú)角獸身體形狀的知識(shí)。
目前,我們對(duì)LLM如何完成這樣的壯舉沒(méi)有真正的了解。有些人認(rèn)為,像這樣的例子表明模型開(kāi)始真正理解其訓(xùn)練集中詞的含義。其他人堅(jiān)持認(rèn)為,語(yǔ)言模型只是“隨機(jī)鸚鵡”,僅僅是重復(fù)越來(lái)越復(fù)雜的單詞序列,而并非真正理解它們。
這種辯論指向了一種深刻的哲學(xué)爭(zhēng)論,可能無(wú)法解決。盡管如此,我們認(rèn)為關(guān)注GPT-3等模型的經(jīng)驗(yàn)表現(xiàn)很重要。如果一個(gè)語(yǔ)言模型能夠在特定類型的問(wèn)題中始終得到正確答案,并且研究人員有信心排除混淆因素(例如,確保在訓(xùn)練期間該語(yǔ)言模型沒(méi)有接觸到這些問(wèn)題),那無(wú)論它對(duì)語(yǔ)言的理解方式是否與人類完全相同,這都是一個(gè)有趣且重要的結(jié)果。
訓(xùn)練下一個(gè)詞元預(yù)測(cè)如此有效的另一個(gè)可能原因是,語(yǔ)言本身是可預(yù)測(cè)的。語(yǔ)言的規(guī)律性通常(盡管并不總是這樣)與物質(zhì)世界的規(guī)律性相聯(lián)系。因此,當(dāng)語(yǔ)言模型學(xué)習(xí)單詞之間的關(guān)系時(shí),通常也在隱含地學(xué)習(xí)這個(gè)世界存在的關(guān)系。
此外,預(yù)測(cè)可能是生物智能以及人工智能的基礎(chǔ)。根據(jù)Andy Clark等哲學(xué)家的觀點(diǎn) ,人腦可以被認(rèn)為是一個(gè)“預(yù)測(cè)機(jī)器”,其主要任務(wù)是對(duì)我們的環(huán)境進(jìn)行預(yù)測(cè),然后利用這些預(yù)測(cè)來(lái)成功地駕馭環(huán)境。預(yù)測(cè)對(duì)于生物智能和人工智能都至關(guān)重要。直觀地說(shuō),好的預(yù)測(cè)離不開(kāi)良好的表示——準(zhǔn)確的地圖比錯(cuò)誤的地圖更有可能幫助人們更好地導(dǎo)航。世界是廣闊而復(fù)雜的,進(jìn)行預(yù)測(cè)有助于生物高效定位和適應(yīng)這種復(fù)雜性。
在構(gòu)建語(yǔ)言模型方面,傳統(tǒng)上一個(gè)重大的挑戰(zhàn)是,找出最有用的表示不同單詞的方式,特別是因?yàn)樵S多單詞的含義很大程度上取決于上下文。下一個(gè)詞的預(yù)測(cè)方法使研究人員能夠?qū)⑵滢D(zhuǎn)化為一個(gè)經(jīng)驗(yàn)性問(wèn)題,以此避開(kāi)這個(gè)棘手的理論難題。
事實(shí)證明,如果我們提供足夠的數(shù)據(jù)和計(jì)算能力,語(yǔ)言模型能夠通過(guò)找出最佳的下一個(gè)詞的預(yù)測(cè)來(lái)學(xué)習(xí)人類語(yǔ)言的運(yùn)作方式。不足之處在于,最終得到的系統(tǒng)內(nèi)部運(yùn)作方式人類還并不能完全理解。
審核編輯:劉清
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100966 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132851 -
GPT
+關(guān)注
關(guān)注
0文章
354瀏覽量
15446 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1566瀏覽量
7868 -
LLM
+關(guān)注
關(guān)注
0文章
297瀏覽量
359
原文標(biāo)題:通俗解構(gòu)語(yǔ)言大模型的工作原理
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論