下文翻譯自Timothy B Lee和Sean Trott花費(fèi)兩個(gè)月完成的一篇博客。
“Large language?models, explained with a minimum of math and jargon (understandingai.org)”。
語言大模型內(nèi)部究竟是如何工作的?本文用最少的數(shù)學(xué)知識(shí)和術(shù)語進(jìn)行解釋。如今,幾乎每個(gè)人都聽說過LLM,并有數(shù)千萬人用過它們,但是,了解工作原理的人并不多。你可能聽說過,訓(xùn)練LLM是用于“預(yù)測(cè)下一個(gè)詞”,而且它們需要大量的文本來實(shí)現(xiàn)這一點(diǎn)。但是,解釋通常就止步于此。它們?nèi)绾晤A(yù)測(cè)下一個(gè)詞的細(xì)節(jié)往往被視為一個(gè)深?yuàn)W的謎題。
其中一個(gè)原因是,這些系統(tǒng)的開發(fā)方式與眾不同。一般的軟件是由人類工程師編寫,他們?yōu)橛?jì)算機(jī)提供明確的、逐步的指令。相比之下,ChatGPT是建立在一個(gè)使用數(shù)十億個(gè)語言詞匯進(jìn)行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)之上。
因此,地球上沒有人完全理解LLM的內(nèi)部工作原理。研究人員正在努力嘗試?yán)斫膺@些模型,但這是一個(gè)需要數(shù)年甚至幾十年才能完成的緩慢過程。然而,專家們確實(shí)對(duì)這些系統(tǒng)的工作原理已有不少了解。本文的目標(biāo)是將這些知識(shí)開放給廣大受眾。我們將努力解釋關(guān)于這些模型內(nèi)部工作原理的已知內(nèi)容,而不涉及技術(shù)術(shù)語或高級(jí)數(shù)學(xué)。
我們將從解釋詞向量(word vector)開始,它是語言模型表示和推理語言的一種令人驚訝的方式。然后,我們將深入探討構(gòu)建ChatGPT等模型的基石Transformer。最后,我們將解釋這些模型是如何訓(xùn)練的,并探討為什么要使用龐大的數(shù)據(jù)量才能獲得良好的性能。
Word vectors
詞向量
要理解語言模型的工作原理,首先需要了解它們?nèi)绾伪硎締卧~。人類用字母序列來表示英語單詞,比如用C-A-T來表示"cat"。語言模型使用一個(gè)稱為詞向量的長列表來表示單詞。例如,這是一種表示"cat"的向量的方式:
[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]
(完整的向量長度為300個(gè)數(shù)字,要查看完整數(shù)字,請(qǐng)?jiān)L問下面網(wǎng)站,并然后點(diǎn)擊Show the raw vector of ?cat??)。
http://vectors.nlpl.eu/explore/embeddings/en/MOD_enwiki_upos_skipgram_300_2_2021/cat_NOUN/
為什么要使用這樣的復(fù)雜表示法呢?這里舉個(gè)類比。華盛頓特區(qū)位于北緯38.9度、西經(jīng)77度。我們可以使用向量表示法來表示它:
Washington DC?is at [38.9, 77]
New York?is at [40.7, 74]
London?is at [51.5, 0.1]
Paris?is at [48.9, -2.4]
這對(duì)于推理空間關(guān)系非常有用。你可以通過38.9接近于40.7以及77接近于74來判斷紐約離華盛頓特區(qū)很近。同樣的道理,巴黎靠近倫敦。但是巴黎離華盛頓特區(qū)很遠(yuǎn)。
語言模型采用類似的方法:每個(gè)詞向量代表了虛擬的“詞空間”中的一個(gè)點(diǎn),具有更相似含義的單詞會(huì)被放置在彼此更靠近的位置。例如,在詞向量空間中,最接近"cat"的詞包括"dog"、"kitten"和"pet"。使用實(shí)數(shù)向量(而不是像"C-A-T"這樣的字母序列)來表示單詞的一個(gè)關(guān)鍵優(yōu)勢(shì)是,數(shù)字使得可以進(jìn)行字母無法實(shí)現(xiàn)的操作。
單詞太復(fù)雜,無法僅用二維空間表示,因此語言模型使用具有數(shù)百甚至數(shù)千維度的向量空間。人類無法想象具有如此多維度的空間,但計(jì)算機(jī)完全能夠?qū)ζ溥M(jìn)行推理并產(chǎn)生有用的結(jié)果。
研究人員幾十年來一直在嘗試使用詞向量,但這個(gè)概念真正開始流行起來是在2013年,當(dāng)時(shí)谷歌宣布了其word2vec項(xiàng)目。谷歌分析了從Google新聞中獲取的數(shù)百萬份文檔,以確定哪些單詞傾向于在類似的句子中出現(xiàn)。隨著時(shí)間的推移,經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)了預(yù)測(cè)哪些單詞與其他單詞同時(shí)出現(xiàn),并將相似的單詞(如"dog"和"cat")放置在向量空間中靠近的位置。
谷歌的詞向量還有一個(gè)有趣的特性:你可以使用向量算術(shù)來“推理”單詞。例如,谷歌的研究人員取了"biggest"的向量,減去"big",再加上"small"。與結(jié)果向量最接近的詞是"smallest"。
你可以使用向量算術(shù)來進(jìn)行類比!在這個(gè)例子中,big對(duì)應(yīng)biggest,就像small對(duì)應(yīng)smallest一樣。谷歌的詞向量捕捉到了許多其他的關(guān)系:
Swiss is to Switzerland as Cambodian is to Cambodia. (nationalities)
Paris is to France?as Berlin is to Germany.(capitals)
Unethical is to ethical as?possibly is to impossibly. (opposites)
Mouse is to mice as dollar?is to dollars.(plurals)
Man is to woman as king?is to queen.(gender roles)
由于這些向量是根據(jù)人類使用單詞的方式構(gòu)建的,它們反映了存在于人類語言中的許多偏見。例如,在某些詞向量模型中,doctor減去man再加上woman的結(jié)果是nurse。減輕這種偏見是當(dāng)前研究的一個(gè)領(lǐng)域。
然而,詞向量對(duì)于語言模型來說是一個(gè)有用的構(gòu)建模塊,因?yàn)樗鼈兙幋a了關(guān)于單詞之間關(guān)系的微妙但重要的信息。如果語言模型學(xué)到了關(guān)于貓的某些事情(例如:它有時(shí)去看獸醫(yī)),同樣的事情很可能也適用于小貓或狗。如果模型學(xué)到了巴黎和法國之間的關(guān)系(例如:它們共用一種語言),那么柏林和德國以及羅馬和意大利之間也很有可能存在相同的情況。
Word meaning depends on context
詞義取決于上下文
像這樣的簡單詞向量方案無法捕捉到自然語言的一個(gè)重要事實(shí):單詞通常具有多個(gè)含義。
例如,單詞"bank"可以指代金融機(jī)構(gòu)或河邊的土地。或者考慮以下句子:
John picks up a?magazine.
Susan works for a?magazine.
這些句子中的"雜志"的含義相關(guān)但微妙地不同。約翰拿起的是一本實(shí)體雜志,而蘇珊為一家出版實(shí)體雜志的機(jī)構(gòu)工作。
當(dāng)一個(gè)單詞具有兩個(gè)無關(guān)的含義時(shí),如"bank",語言學(xué)家稱之為同音異義詞(homonyms)。當(dāng)一個(gè)單詞具有兩個(gè)密切相關(guān)的含義時(shí),如"雜志",語言學(xué)家稱之為多義性(polysemy)。
像ChatGPT這樣的語言模型能夠根據(jù)單詞出現(xiàn)的上下文以不同的向量表示相同的單詞。有一個(gè)針對(duì)"bank"(金融機(jī)構(gòu))的向量,還有一個(gè)針對(duì)"bank"(河岸)的不同向量。有一個(gè)針對(duì)"雜志"(實(shí)體出版物)的向量,還有一個(gè)針對(duì)"雜志"(機(jī)構(gòu))的向量。正如你所預(yù)期的,語言模型在多義性含義上使用更相似的向量,而在同音異義詞上使用更不相似的向量。
到目前為止,我們還沒有討論語言模型如何做到這一點(diǎn),我們將很快介紹。但我們一直在詳細(xì)闡述這些向量表示,因?yàn)檫@是理解語言模型如何工作的基礎(chǔ)。
傳統(tǒng)軟件設(shè)計(jì)用于處理明確的數(shù)據(jù)。如果你讓計(jì)算機(jī)計(jì)算"2 + 3",對(duì)于數(shù)字2、加號(hào)和數(shù)字3的含義沒有任何歧義。但自然語言充滿了超越同音異義詞和多義性的歧義:
在句子"the customer asked the mechanic to fix?his?car"中,"his?"是指顧客還是修理工?
在句子"the professor urged the student to do?her?homework"中,"her?"是指教授還是學(xué)生?
在句子"fruit?flies?like a banana"中,"flies?"是動(dòng)詞(指水果在天空中飛翔)還是名詞(指喜愛香蕉的昆蟲)?
人們根據(jù)上下文來解決這樣的歧義,但沒有簡單或確定的規(guī)則可以做到這一點(diǎn)。相反,它需要對(duì)世界的事實(shí)有所了解。你需要知道修理工通常修理顧客的車,學(xué)生通常自己做家庭作業(yè),以及水果通常不會(huì)飛行。
詞向量為語言模型提供了一種靈活的方式,以在特定上下文中表示每個(gè)單詞的精確含義。現(xiàn)在讓我們來看看它們是如何做到這一點(diǎn)的。
Transforming word vectors into word predictions
將詞向量轉(zhuǎn)化為詞語預(yù)測(cè)
GPT-3,即ChatGPT原始版本背后的模型,由數(shù)十個(gè)層組成。每個(gè)層以一系列向量作為輸入,輸入文本中每個(gè)單詞對(duì)應(yīng)一個(gè)向量,并添加信息來澄清該單詞的含義,并更好地預(yù)測(cè)接下來可能出現(xiàn)的單詞。
讓我們從一個(gè)簡化的例子開始
LLM(語言模型)的每個(gè)層都是一個(gè)transformer,這是一種神經(jīng)網(wǎng)絡(luò)架構(gòu),由Google在2017年發(fā)表的一篇具有里程碑意義的論文中首次引入。
圖中顯示的模型輸入位于圖的底部,是部分句子“John wants his bank to cash the.” 這些單詞被表示為word2vec風(fēng)格的向量,并輸入到第一個(gè)transformer中。
transformer推斷出wants和cash都是動(dòng)詞(這兩個(gè)詞也可以是名詞)。我們用括號(hào)中的紅色文本表示這個(gè)額外的上下文,但實(shí)際上,模型會(huì)通過修改單詞向量的方式存儲(chǔ)它,這種方式對(duì)人類來說很難解釋。這些新的向量被稱為隱藏狀態(tài),傳遞給堆疊中的下一個(gè)transformer。
第二個(gè)transformer添加了其他兩個(gè)上下文信息:它澄清了bank指的是金融機(jī)構(gòu)而不是河岸,還指出his是一個(gè)指代John的代詞。第二個(gè)transformer生成了另一組隱藏狀態(tài)向量,反映了模型到目前為止學(xué)到的所有知識(shí)。
上述圖表描繪了一個(gè)純粹假設(shè)的LLM,所以不要過于認(rèn)真對(duì)待細(xì)節(jié)。我們很快將研究真實(shí)的語言模型。實(shí)際的LLM通常有不止兩個(gè)層。例如,最強(qiáng)大的GPT-3版本有96個(gè)層。
研究表明,前幾層主要關(guān)注理解句子的語法和解決上面所示的歧義。后續(xù)的層(我們沒有顯示在圖表中以保持圖表的可管理大小)致力于對(duì)整個(gè)段落進(jìn)行高層次的理解。
例如,當(dāng)LLM“閱讀”一篇短篇小說時(shí),它似乎會(huì)對(duì)這個(gè)故事的多種信息進(jìn)行跟蹤:性別和年齡、與其他角色的關(guān)系、過去和當(dāng)前的位置、個(gè)性和目標(biāo)等等。
研究人員并不完全理解LLM是如何跟蹤這些信息的,但從邏輯上講,模型必須通過在層與層之間傳遞時(shí)修改隱藏狀態(tài)向量來實(shí)現(xiàn)。對(duì)于現(xiàn)代LLM來說,這些向量非常大,這有助于這個(gè)過程。
例如,最強(qiáng)大的GPT-3版本使用具有12,288個(gè)維度的詞向量,也就是說,每個(gè)單詞由一個(gè)包含12,288個(gè)數(shù)字的列表表示。這比Google在2013年推出的word2vec方案大20倍。你可以將所有這些額外的維度看作是GPT-3可以用來對(duì)每個(gè)單詞的上下文進(jìn)行記錄的一種“臨時(shí)空間”。早期層次所做的記錄可以被后續(xù)層次閱讀和修改,從而使模型逐漸加深對(duì)整個(gè)段落的理解。
假設(shè)我們將上面的圖表改為描述一個(gè)96層的語言模型來解釋一個(gè)1000詞的故事。第60層可能包含一個(gè)John的向量,帶有括號(hào)注釋,比如“(主角,男性,娶了Cheryl,Donald的表兄,來自明尼蘇達(dá)州,目前在博伊西,試圖找到他遺失的錢包)”。同樣,所有這些事實(shí)(或許還有更多)都會(huì)以一個(gè)包含12288個(gè)數(shù)字的列表的形式編碼,這些數(shù)字對(duì)應(yīng)于單詞John。或者,這些信息的一部分也可能會(huì)被編碼在Cheryl、Donald、Boise、wallet或故事中的其他單詞的12288維向量中。
96層網(wǎng)絡(luò)的目標(biāo)是輸出一個(gè)包含所有必要信息的最終詞的隱藏狀態(tài),以預(yù)測(cè)下一個(gè)詞。
Can I have your attention please
我可以吸引你的注意嗎?
現(xiàn)在讓我們談?wù)劽總€(gè)Transformer內(nèi)部發(fā)生的事情。Transformer對(duì)于更新輸入段落中每個(gè)單詞的隱藏狀態(tài)有一個(gè)兩步的過程:
1.在注意力步驟中,單詞會(huì)“尋找”與其具有相關(guān)上下文的其他單詞,并相互共享信息。
2.在前饋步驟中,每個(gè)單詞會(huì)“思考”之前注意力步驟中收集到的信息,并嘗試預(yù)測(cè)下一個(gè)單詞。
當(dāng)然,執(zhí)行這些步驟的是網(wǎng)絡(luò),而不是個(gè)別單詞。但我們以這種方式表述是為了強(qiáng)調(diào)Transformer將單詞視為分析的基本單位,而不是整個(gè)句子或段落。這種方法使得語言模型可以充分利用現(xiàn)代GPU芯片的大規(guī)模并行處理能力。它還幫助語言模型在處理數(shù)千個(gè)單詞的段落時(shí)進(jìn)行擴(kuò)展,這是以前的語言模型所面臨的困難之處。
你可以將注意機(jī)制看作是單詞之間的媒婆服務(wù)。每個(gè)單詞都會(huì)創(chuàng)建一個(gè)清單(稱為查詢向量),描述它尋找的單詞的特征。每個(gè)單詞還會(huì)創(chuàng)建一個(gè)清單(稱為鍵向量),描述它自身的特征。網(wǎng)絡(luò)會(huì)將每個(gè)鍵向量與每個(gè)查詢向量進(jìn)行比較(通過計(jì)算點(diǎn)積),以找到最佳匹配的單詞。一旦找到匹配,它會(huì)將信息從產(chǎn)生鍵向量的單詞傳遞給產(chǎn)生查詢向量的單詞。
例如,在前面的部分中,我們展示了一個(gè)假設(shè)的Transformer推斷出在部分句子“John wants his bank to cash the”中,his指的是John。以下是在內(nèi)部可能的實(shí)現(xiàn)方式。his的查詢向量可能有效地表示“我正在尋找:描述男性的名詞”。John的鍵向量可能有效地表示“我是:描述男性的名詞”。網(wǎng)絡(luò)會(huì)檢測(cè)到這兩個(gè)向量匹配,并將關(guān)于John的向量的信息轉(zhuǎn)移到his的向量中。
每個(gè)注意力層都有多個(gè)“注意力頭”,這意味著這個(gè)信息交換過程在每個(gè)層次上會(huì)多次(并行)發(fā)生。每個(gè)注意力頭專注于不同的任務(wù):
一個(gè)注意力頭可能會(huì)將代詞與名詞進(jìn)行匹配,就像我們之前討論的那樣。
另一個(gè)注意力頭可能會(huì)處理解決類似“bank”這樣的同音異義詞的含義。
第三個(gè)注意力頭可能會(huì)將“Joe Biden”這樣的兩個(gè)單詞短語鏈接在一起。
諸如此類。
注意力頭經(jīng)常按順序操作,一個(gè)層次中的注意力操作的結(jié)果成為后續(xù)層次中的一個(gè)注意力頭的輸入。實(shí)際上,我們剛才列出的每個(gè)任務(wù)都可能需要多個(gè)注意力頭,而不僅僅是一個(gè)。
最大版本的GPT-3有96層,每層有96個(gè)注意力頭,因此每次預(yù)測(cè)一個(gè)新單詞時(shí),GPT-3執(zhí)行9,216個(gè)注意力操作。
A real-world example
一個(gè)真實(shí)案例
在最后的兩個(gè)部分中,我們呈現(xiàn)了注意力頭的工作方式的簡化版本。現(xiàn)在讓我們來看看對(duì)真實(shí)語言模型內(nèi)部運(yùn)作的研究。去年,Redwood Research的科學(xué)家研究了GPT-2(ChatGPT的前身)如何預(yù)測(cè)下一個(gè)單詞的。他們使用了以下句子作為樣本:“When Mary and John went to the store, John gave a drink to.”
GPT-2預(yù)測(cè)下一個(gè)單詞是Mary。研究人員發(fā)現(xiàn)有三種類型的注意力頭對(duì)此預(yù)測(cè)起到了作用:
他們稱之為“Name Mover Heads”的三個(gè)注意力頭從Mary的向量中復(fù)制信息到最終輸入向量(用于表示to這個(gè)單詞)。GPT-2使用這個(gè)最右側(cè)的向量中的信息來預(yù)測(cè)下一個(gè)單詞。
網(wǎng)絡(luò)是如何決定復(fù)制Mary這個(gè)單詞的呢?通過逆向分析GPT-2的計(jì)算過程,科學(xué)家們發(fā)現(xiàn)了一組四個(gè)注意力頭,他們稱之為“Subject Inhibition Heads”,它們以一種方式標(biāo)記了第二個(gè)John向量,阻止了“Name Mover Heads”復(fù)制名字John。
Subject Inhibition Heads是如何知道不應(yīng)該復(fù)制John這個(gè)單詞的呢?進(jìn)一步逆向分析,團(tuán)隊(duì)發(fā)現(xiàn)了兩個(gè)注意力頭,稱之為“Duplicate Token Heads”。它們將第二個(gè)John向量標(biāo)記為第一個(gè)John向量的重復(fù),這有助于Subject Inhibition Heads決定不應(yīng)該復(fù)制John。
簡而言之,這九個(gè)注意力頭使得GPT-2能夠推斷出“John gave a drink to John”沒有意義,而選擇了“John gave a drink to Mary”。
我們喜歡這個(gè)例子,因?yàn)樗故玖艘耆斫庹Z言模型的困難之處。Redwood團(tuán)隊(duì)的五名成員發(fā)表了一篇25頁的論文,解釋了他們?nèi)绾巫R(shí)別和驗(yàn)證這些注意力頭。然而,即使他們完成了所有這些工作,我們?nèi)匀贿h(yuǎn)未能全面解釋為什么GPT-2決定預(yù)測(cè)Mary作為下一個(gè)單詞。
例如,模型是如何知道下一個(gè)單詞應(yīng)該是一個(gè)人的名字,而不是其他類型的詞?我們可以輕松想到類似的句子,其中Mary不會(huì)是一個(gè)好的下一個(gè)單詞預(yù)測(cè)。例如,在句子“當(dāng)Mary和John去餐廳的時(shí)候,John把他的鑰匙給了”中,邏輯上下一個(gè)單詞應(yīng)該是“the valet”。
可以想象,通過足夠的研究,計(jì)算機(jī)科學(xué)家們可以揭示并解釋GPT-2推理過程中的其他步驟。最終,他們可能能夠全面了解GPT-2為什么決定在這個(gè)句子中預(yù)測(cè)Mary是最可能的下一個(gè)單詞。但是,即使只是理解一個(gè)單詞的預(yù)測(cè),可能需要額外幾個(gè)月甚至幾年的努力。
ChatGPT背后的語言模型——GPT-3.5和GPT-4比GPT-2要大得多、更復(fù)雜。它們能夠進(jìn)行比Redwood團(tuán)隊(duì)研究的簡單句子完成任務(wù)更復(fù)雜的推理。因此,要完全解釋這些系統(tǒng)的工作原理將是一個(gè)巨大的項(xiàng)目,人類很可能在短時(shí)間內(nèi)無法完成。
the feed-forward step
前饋步驟
在注意力頭之間傳遞信息后,有一個(gè)前饋網(wǎng)絡(luò)進(jìn)行思考每個(gè)詞向量,并嘗試預(yù)測(cè)下一個(gè)單詞。在這個(gè)階段,詞之間不進(jìn)行信息交換:前饋層獨(dú)立分析每個(gè)單詞。然而,前饋層可以訪問之前由注意力頭復(fù)制的任何信息。以下是GPT-3最大版本中前饋層的結(jié)構(gòu)。
綠色和紫色圓圈表示神經(jīng)元:它們是計(jì)算它們輸入的加權(quán)和的數(shù)學(xué)函數(shù)。
前饋層之所以強(qiáng)大,是因?yàn)樗哂旋嫶蟮倪B接數(shù)。我們?cè)谳敵鰧又欣L制了三個(gè)神經(jīng)元,在隱藏層中有六個(gè)神經(jīng)元,但是GPT-3的前饋層要大得多:輸出層有12,288個(gè)神經(jīng)元(對(duì)應(yīng)模型的12,288維詞向量),隱藏層有49,152個(gè)神經(jīng)元。
因此,在GPT-3最大版本中,隱藏層有49,152個(gè)神經(jīng)元,每個(gè)神經(jīng)元有12,288個(gè)輸入(因此有12,288個(gè)權(quán)重參數(shù))。每個(gè)神經(jīng)元有49,152個(gè)輸入值(因此有49,152個(gè)權(quán)重參數(shù))。這意味著每個(gè)前饋層有49,152 * 12,288 + 12,288 * 49,152 = 12億個(gè)權(quán)重參數(shù)。而且有96個(gè)前饋層,總共有12億 * 96 = 1160億個(gè)參數(shù)!這幾乎占據(jù)了GPT-3總共1750億個(gè)參數(shù)的三分之二。
在2020年的一篇論文中,來自以色列特拉維夫大學(xué)的研究人員發(fā)現(xiàn),前饋層通過模式匹配工作:隱藏層中的每個(gè)神經(jīng)元匹配輸入文本中的特定模式。以下是在GPT-2的16層版本中由神經(jīng)元匹配的一些模式:
第一層的一個(gè)神經(jīng)元匹配以“substitutes”結(jié)尾的詞序列。
第六層的一個(gè)神經(jīng)元匹配與軍事相關(guān)并以“base”或“bases”結(jié)尾的詞序列。
第13層的一個(gè)神經(jīng)元匹配以時(shí)間范圍結(jié)尾的詞序列,例如“between 3 pm and 7”或“from 7:00 pm Friday until”。
第16層的一個(gè)神經(jīng)元匹配與電視節(jié)目相關(guān)的詞序列,例如“the original NBC daytime version, archived”或“time shifting viewing added 57 percent to the episode’s”。
正如你所看到的,隨著層數(shù)的增加,模式變得更加抽象。早期的層傾向于匹配特定的單詞,而后期的層匹配的短語則屬于更廣泛的語義類別,例如電視節(jié)目或時(shí)間間隔。
這很有趣,因?yàn)槿缜八觯梆亴右淮沃粰z查一個(gè)單詞。因此,當(dāng)它將序列“the original NBC daytime version, archived”分類為與電視相關(guān)時(shí),它只能訪問archived的向量,而不能訪問NBC或daytime等單詞。可以推測(cè),前饋層能夠判斷archived是與電視相關(guān)的序列的一部分,是因?yàn)樽⒁饬︻^先前將上下文信息移入了archived向量中。
當(dāng)神經(jīng)元匹配這些模式之一時(shí),它會(huì)向詞向量添加信息。雖然這些信息并不總是容易解釋,但在許多情況下,你可以將其視為關(guān)于下一個(gè)單詞的初步預(yù)測(cè)。
Feed-forward networks reason with vector math
前饋網(wǎng)絡(luò)通過向量運(yùn)算進(jìn)行推理
布朗大學(xué)的最新研究揭示了前饋層如何幫助預(yù)測(cè)下一個(gè)單詞的一個(gè)優(yōu)雅的例子。之前我們討論過谷歌的word2vec研究表明,可以使用向量運(yùn)算進(jìn)行類比推理。例如,Berlin - Germany + France = Paris。
布朗大學(xué)的研究人員發(fā)現(xiàn),前饋層有時(shí)確實(shí)使用這種精確的方法來預(yù)測(cè)下一個(gè)單詞。例如,他們研究了GPT-2對(duì)以下提示的回應(yīng):“Q: 法國的首都是什么?A: 巴黎 Q: 波蘭的首都是什么?A:”
團(tuán)隊(duì)研究了一個(gè)具有24層的GPT-2版本。在每一層之后,布朗大學(xué)的科學(xué)家們探測(cè)模型,觀察其對(duì)下一個(gè)標(biāo)記的最佳猜測(cè)。在前15層中,最高猜測(cè)是一個(gè)看似隨機(jī)的單詞。從第16層到第19層之間,模型開始預(yù)測(cè)下一個(gè)單詞將是波蘭-雖然不正確,但越來越接近。然后在第20層,最高猜測(cè)變?yōu)槿A沙-正確答案,并且在最后四層保持不變。
布朗大學(xué)的研究人員發(fā)現(xiàn),第20個(gè)前饋層通過添加一個(gè)將國家向量映射到它們相應(yīng)的首都的向量,將波蘭轉(zhuǎn)換為華沙。將相同的向量添加到中國會(huì)產(chǎn)生北京。
同一模型中的前饋層使用向量運(yùn)算將小寫單詞轉(zhuǎn)換為大寫單詞,并將現(xiàn)在時(shí)單詞轉(zhuǎn)換為它們的過去時(shí)等效詞。
The attention and feed-forward layers have different jobs
注意力層和前饋層有不同的任務(wù)。
到目前為止,我們已經(jīng)看了兩個(gè)GPT-2單詞預(yù)測(cè)的真實(shí)案例:注意力頭幫助預(yù)測(cè)John給Mary一杯飲料,而前饋層則幫助預(yù)測(cè)華沙是波蘭的首都。
在第一個(gè)案例中,Mary來自用戶提供的提示。但在第二個(gè)案例中,華沙并不在提示中。相反,GPT-2必須“記住”華沙是波蘭的首都-這是它從訓(xùn)練數(shù)據(jù)中學(xué)到的信息。
當(dāng)布朗大學(xué)的研究人員禁用了將波蘭轉(zhuǎn)換為華沙的前饋層時(shí),模型不再預(yù)測(cè)華沙是下一個(gè)單詞。但有趣的是,如果他們?cè)谔崾镜拈_頭添加句子“波蘭的首都是華沙”,那么GPT-2又能夠再次回答這個(gè)問題。這可能是因?yàn)镚PT-2使用注意力頭從提示中復(fù)制了華沙這個(gè)名字。
這種分工更普遍地適用:注意力頭從提示中的先前單詞中檢索信息,而前饋層使語言模型能夠“記住”不在提示中的信息。
實(shí)際上,可以將前饋層視為模型從訓(xùn)練數(shù)據(jù)中學(xué)到的信息的數(shù)據(jù)庫。早期的前饋層更有可能編碼與特定單詞相關(guān)的簡單事實(shí),例如“Trump經(jīng)常在Donald之后出現(xiàn)”。而后期的層則編碼了更復(fù)雜的關(guān)系,比如“添加這個(gè)向量以將一個(gè)國家轉(zhuǎn)換為它的首都”。
How language models are trained
語言模型是如何訓(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)大的模型變得困難且昂貴。
語言模型的一個(gè)關(guān)鍵創(chuàng)新是它們不需要明確標(biāo)記的數(shù)據(jù)。相反,它們通過嘗試預(yù)測(cè)普通文本中的下一個(gè)單詞來進(jìn)行學(xué)習(xí)。幾乎任何書面材料,從維基百科頁面到新聞文章再到計(jì)算機(jī)代碼,都適用于訓(xùn)練這些模型。
例如,一個(gè)語言模型可能會(huì)給出輸入 "我喜歡在咖啡里加奶油和",并預(yù)測(cè)下一個(gè)單詞是 "糖"。一個(gè)新初始化的語言模型在這方面會(huì)非常糟糕,因?yàn)樗拿總€(gè)權(quán)重參數(shù)(在GPT-3的最強(qiáng)版本中有1750億個(gè))最開始都是一個(gè)基本上隨機(jī)的數(shù)。
但隨著模型看到更多的例子-數(shù)千億個(gè)單詞,這些權(quán)重逐漸調(diào)整以做出更好的預(yù)測(cè)。
這里有一個(gè)類比來說明這是如何工作的。假設(shè)你要洗澡,你希望水溫剛剛好:不太熱,也不太冷。你從未使用過這個(gè)水龍頭,所以你將旋鈕指向一個(gè)隨機(jī)的方向,然后感受水的溫度。如果水太熱,你就轉(zhuǎn)動(dòng)它一邊;如果水太冷,你就轉(zhuǎn)動(dòng)它另一邊。你越接近合適的溫度,你做的調(diào)整就越小。
現(xiàn)在讓我們對(duì)這個(gè)類比進(jìn)行一些修改。首先,想象一下有50257個(gè)水龍頭,而不只是一個(gè)。每個(gè)水龍頭對(duì)應(yīng)一個(gè)不同的單詞,比如"the"、"cat"或"bank"。你的目標(biāo)是只有下一個(gè)單詞序列對(duì)應(yīng)的水龍頭才會(huì)冒出水來。
其次,水龍頭后面有一堆相互連接的管道迷宮,這些管道上也有許多閥門。因此,如果水從錯(cuò)誤的水龍頭流出,你不能只調(diào)整水龍頭上的旋鈕。你需要派遣一支智能松鼠的軍隊(duì)追蹤每根管道并沿途調(diào)整找到的每個(gè)閥門。
這變得復(fù)雜,因?yàn)橥桓艿劳ǔ?huì)連接到多個(gè)水龍頭。因此,需要仔細(xì)思考哪些閥門應(yīng)該擰緊,哪些應(yīng)該松開,以及程度如何。
顯然,如果你過于字面地理解這個(gè)例子,它很快就會(huì)變得荒謬。建造一個(gè)擁有1750億個(gè)閥門的管道網(wǎng)絡(luò)既不現(xiàn)實(shí)也沒有實(shí)際用途。但幸運(yùn)的是,由于摩爾定律的存在,計(jì)算機(jī)可以并且確實(shí)可以在這種規(guī)模上運(yùn)作。
到目前為止,在本文中討論的LLM的所有部分-前饋層中的神經(jīng)元以及在單詞之間移動(dòng)上下文信息的注意力頭-都被實(shí)現(xiàn)為一系列簡單的數(shù)學(xué)函數(shù)(主要是矩陣乘法),其行為由可調(diào)節(jié)的權(quán)重參數(shù)確定。正如我故事中的松鼠們通過松緊閥門來控制水流一樣,訓(xùn)練算法通過增加或減少語言模型的權(quán)重參數(shù)來控制信息在神經(jīng)網(wǎng)絡(luò)中的流動(dòng)。
訓(xùn)練過程分為兩個(gè)步驟。首先是“前向傳遞”,打開水源并檢查水是否從正確的水龍頭流出。然后關(guān)閉水源,進(jìn)行“反向傳遞”,松緊閥門的松鼠們沿著每根管道競速。在數(shù)字神經(jīng)網(wǎng)絡(luò)中,松鼠們的角色由一種稱為反向傳播的算法扮演,該算法通過“向后行走”穿過網(wǎng)絡(luò),使用微積分來估計(jì)每個(gè)權(quán)重參數(shù)的變化量。
完成這個(gè)過程-對(duì)一個(gè)示例進(jìn)行前向傳遞,然后進(jìn)行反向傳遞以改善網(wǎng)絡(luò)在該示例上的性能-需要數(shù)千億次的數(shù)學(xué)運(yùn)算。而訓(xùn)練一個(gè)像GPT-3這樣大的模型需要重復(fù)這個(gè)過程數(shù)十億次-每個(gè)訓(xùn)練數(shù)據(jù)的單詞一次。OpenAI估計(jì),訓(xùn)練GPT-3需要進(jìn)行超過3000億萬億次浮點(diǎn)計(jì)算-這對(duì)于幾十塊高端計(jì)算機(jī)芯片來說需要數(shù)月的工作時(shí)間。
The surprising performance of GPT-3
GPT-3的驚人表現(xiàn)
您可能會(huì)對(duì)訓(xùn)練過程的表現(xiàn)感到驚訝,ChatGPT可以執(zhí)行各種復(fù)雜的任務(wù),如撰寫論文、進(jìn)行類比推理,甚至編寫計(jì)算機(jī)代碼。那么為什么這樣一個(gè)簡單的學(xué)習(xí)機(jī)制能夠產(chǎn)生如此強(qiáng)大的模型呢?
一個(gè)原因是規(guī)模。難以言喻的是,像GPT-3這樣的模型所見到的例子數(shù)量之多。GPT-3是在大約5000億個(gè)單詞的語料庫上進(jìn)行訓(xùn)練的。相比之下,一個(gè)典型的人類孩子在10歲之前大約接觸到1億個(gè)單詞。
在過去的五年里,OpenAI逐漸增加了其語言模型的規(guī)模。在一篇廣為閱讀的2020年論文中,OpenAI報(bào)告稱其語言模型的準(zhǔn)確性“與模型規(guī)模、數(shù)據(jù)集規(guī)模和用于訓(xùn)練的計(jì)算量呈冪律關(guān)系,某些趨勢(shì)跨越了七個(gè)數(shù)量級(jí)以上”。
隨著模型越來越大,它們?cè)谏婕罢Z言的任務(wù)上表現(xiàn)得越好。但前提是他們需要以類似的比例增加訓(xùn)練數(shù)據(jù)量。而要在更多的數(shù)據(jù)上訓(xùn)練更大的模型,就需要更多的計(jì)算能力。
OpenAI的第一個(gè)語言模型GPT-1于2018年發(fā)布。它使用了768維的詞向量,有12層,總共117萬個(gè)參數(shù)。幾個(gè)月后,OpenAI發(fā)布了GPT-2。最大版本的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é),但廣泛認(rèn)為GPT-4比GPT-3要大得多。
每個(gè)模型不僅學(xué)到了比其較小的前身更多的事實(shí),而且在需要某種形式的抽象推理的任務(wù)上表現(xiàn)更好:
例如,考慮以下故事:
這是一個(gè)裝滿爆米花的袋子。袋子里沒有巧克力。 然而,袋子上的標(biāo)簽卻寫著“巧克力”而不是“爆米花”。 Sam找到了這個(gè)袋子。她以前從未見過這個(gè)袋子。 她無法看到袋子里面的東西。她讀了標(biāo)簽。
你可能可以猜到Sam相信袋子里有巧克力,當(dāng)她發(fā)現(xiàn)里面是爆米花時(shí)會(huì)感到驚訝。心理學(xué)家將這種關(guān)于他人心理狀態(tài)的推理能力稱為"心智理論"。大多數(shù)人從小學(xué)階段就具備這種能力。專家們對(duì)于是否有非人類動(dòng)物(如黑猩猩)也具備心智理論存在爭議,但普遍認(rèn)為這對(duì)于人類的社會(huì)認(rèn)知非常重要。
今年早些時(shí)候,斯坦福大學(xué)的心理學(xué)家Michal Kosinski發(fā)表了一項(xiàng)研究,研究了大型語言模型解決心智理論任務(wù)的能力。他給各種語言模型提供了像我們上面引用的那樣的段落,然后要求它們完成一個(gè)類似于"她相信袋子里裝滿了"的句子。正確答案是"巧克力",但一個(gè)簡單的語言模型可能會(huì)說"爆米花"或其他東西。
GPT-1和GPT-2在這個(gè)測(cè)試中失敗了。但在2020年發(fā)布的第一個(gè)版本的GPT-3幾乎有40%的準(zhǔn)確率,Kosinski將其與三歲兒童的表現(xiàn)水平相比較。去年11月發(fā)布的最新版本的GPT-3將準(zhǔn)確率提高到了約90%的水平,與七歲兒童相當(dāng)。而GPT-4則大約有95%的準(zhǔn)確率來回答心智理論問題。
"鑒于沒有跡象表明類似心智理論的能力是有意地被設(shè)計(jì)到這些模型中的,也沒有研究證明科學(xué)家知道如何實(shí)現(xiàn)這一點(diǎn),類似心智理論的能力很可能是隨著模型語言能力的增強(qiáng)而自發(fā)地、自主地出現(xiàn)的副產(chǎn)品," Kosinski寫道。
值得注意的是,并非所有研究人員都認(rèn)為這些結(jié)果表明了心智理論的證據(jù):例如,對(duì)錯(cuò)誤信念任務(wù)的細(xì)微改變導(dǎo)致GPT-3的表現(xiàn)大幅下降;而GPT-3在其他衡量心智理論的任務(wù)中表現(xiàn)出更多的變異性。正如我們中的一位(Sean)所寫,成功的表現(xiàn)可能歸因于任務(wù)中的混淆效應(yīng),這種效應(yīng)類似于“聰明的漢斯”效應(yīng),只是在語言模型而不是馬匹中出現(xiàn)。
盡管如此,GPT-3在幾個(gè)旨在衡量心智理論的任務(wù)上表現(xiàn)出近乎人類水平的能力,在幾年前還是難以想象的,這與更大的模型通常在需要高級(jí)推理的任務(wù)上表現(xiàn)更好的觀點(diǎn)是一致的。
這只是語言模型表現(xiàn)出自發(fā)發(fā)展高級(jí)推理能力的眾多例子之一。今年四月,微軟的研究人員發(fā)表了一篇論文,認(rèn)為GPT-4展示了人工通用智能的早期迷人跡象,即以一種復(fù)雜、類似于人類的方式進(jìn)行思考的能力。
例如,一位研究人員要求GPT-4使用一種名為TiKZ的晦澀的圖形編程語言繪制一只獨(dú)角獸。GPT-4回答了幾行代碼,然后研究人員將這些代碼輸入到TiKZ軟件中。得到的圖像雖然粗糙,但清楚地顯示出GPT-4對(duì)獨(dú)角獸的外觀有一定的理解。
研究人員認(rèn)為GPT-4可能以某種方式從其訓(xùn)練數(shù)據(jù)中記住了繪制獨(dú)角獸的代碼,所以他們給它一個(gè)后續(xù)挑戰(zhàn):他們修改了獨(dú)角獸的代碼,將犄角移除,并移動(dòng)了其他一些身體部位。然后他們要求GPT-4將犄角放回去。GPT-4的回答是將犄角放在了正確的位置上:
盡管作者測(cè)試的GPT-4版本的訓(xùn)練數(shù)據(jù)完全是基于文本的,沒有包含任何圖像,但它仍然能夠完成這個(gè)任務(wù)。換句話說,在訓(xùn)練集中沒有獨(dú)角獸的圖像。然而,GPT-4顯然在大量的書面文本訓(xùn)練后學(xué)會(huì)了推理關(guān)于獨(dú)角獸身體形狀的知識(shí)。
目前,我們對(duì)于大型語言模型如何實(shí)現(xiàn)這樣的成就還沒有真正的洞察力。有人認(rèn)為,像這樣的例子表明模型開始真正理解訓(xùn)練集中單詞的含義。而其他人則堅(jiān)持認(rèn)為語言模型只是“隨機(jī)鸚鵡”,僅僅是重復(fù)越來越復(fù)雜的詞序列,而并非真正理解它們。
這場(chǎng)辯論指向了一種深刻的哲學(xué)緊張關(guān)系,可能無法解決。盡管如此,我們認(rèn)為專注于GPT-3等模型的實(shí)證表現(xiàn)是很重要的。如果一個(gè)語言模型能夠在特定類型的問題上始終給出正確答案,并且研究人員確信他們已經(jīng)控制了混淆因素(例如,在訓(xùn)練過程中確保語言模型沒有接觸過這些問題),那么這無論它是否以與人類完全相同的方式理解語言,都是一個(gè)有趣且重要的結(jié)果。
訓(xùn)練模型使用下一個(gè)令牌預(yù)測(cè)的原因之一可能是語言本身是可預(yù)測(cè)的。語言中的規(guī)律通常(雖然不總是)與物理世界中的規(guī)律相關(guān)。因此,當(dāng)語言模型學(xué)習(xí)單詞之間的關(guān)系時(shí),它通常也在隱含地學(xué)習(xí)世界中的關(guān)系。
此外,預(yù)測(cè)可能是生物智能和人工智能的基礎(chǔ)。在像安迪·克拉克(Andy Clark)這樣的哲學(xué)家看來,人類大腦可以被看作是一個(gè)“預(yù)測(cè)機(jī)器”,其主要任務(wù)是對(duì)我們的環(huán)境進(jìn)行預(yù)測(cè),以便成功地在環(huán)境中導(dǎo)航。直覺上,進(jìn)行良好的預(yù)測(cè)需要良好的表示方式,準(zhǔn)確的地圖比不準(zhǔn)確的地圖更有可能使我們成功導(dǎo)航。世界是龐大而復(fù)雜的,進(jìn)行預(yù)測(cè)有助于生物體高效地適應(yīng)和適應(yīng)這種復(fù)雜性。
傳統(tǒng)上,建立語言模型的一個(gè)重要挑戰(zhàn)是找出最有用的表示不同詞語的方式,特別是因?yàn)樵S多詞語的含義嚴(yán)重依賴于上下文。下一個(gè)詞語預(yù)測(cè)方法使研究人員能夠通過將其轉(zhuǎn)化為實(shí)證問題而繞過這個(gè)棘手的理論難題。事實(shí)證明,如果我們提供足夠的數(shù)據(jù)和計(jì)算能力,語言模型通過找出最佳預(yù)測(cè)下一個(gè)詞語的方法,最終學(xué)到了很多關(guān)于人類語言如何工作的知識(shí)。不足之處在于,我們最終得到了一些內(nèi)部工作機(jī)制我們并不完全理解的系統(tǒng)。
Tim Lee是Ars的員工,任職于2017年至2021年。他最近推出了一份名為Understanding AI的新聞簡報(bào),探討了人工智能的工作原理以及它如何改變我們的世界。您可以在這里訂閱他的簡報(bào)。
Sean Trott是加州大學(xué)圣地亞哥分校的助理教授,他在人類和大型語言模型的語言理解方面進(jìn)行研究。他在他的簡報(bào)The Counterfactual中寫到這些話題以及其他話題。
從技術(shù)上講,語言模型(LLMs)是在被稱為標(biāo)記的單詞片段Token上運(yùn)行的,但為了保持文章長度可控,我們將忽略這個(gè)實(shí)現(xiàn)細(xì)節(jié)。
從技術(shù)上講,ChatGPT的原始版本基于GPT-3.5,這是GPT-3的后繼版本,經(jīng)過了一種稱為強(qiáng)化學(xué)習(xí)與人類反饋(RLHF)的過程。OpenAI尚未公布此模型的所有架構(gòu)細(xì)節(jié),因此在本文中我們將重點(diǎn)關(guān)注GPT-3,這是OpenAI詳細(xì)描述的最新版本。
前饋網(wǎng)絡(luò)也被稱為多層感知器。自20世紀(jì)60年代以來,計(jì)算機(jī)科學(xué)家一直在研究這種類型的神經(jīng)網(wǎng)絡(luò)。
從技術(shù)上講,神經(jīng)元計(jì)算其輸入的加權(quán)總和后,將結(jié)果傳遞給激活函數(shù)。我們將忽略這個(gè)實(shí)現(xiàn)細(xì)節(jié),但如果您想要全面了解神經(jīng)元的工作原理,可以閱讀Tim在2018年撰寫的解釋器。
如果你想了解更多關(guān)于反向傳播的知識(shí),可以查閱Tim在2018年撰寫的關(guān)于神經(jīng)網(wǎng)絡(luò)工作原理的解釋器。
在實(shí)踐中,訓(xùn)練通常以批處理的方式進(jìn)行,以提高計(jì)算效率。因此,軟件可能會(huì)在進(jìn)行反向傳播之前對(duì)32,000個(gè)標(biāo)記進(jìn)行前向傳遞。
審核編輯:黃飛
?
評(píng)論
查看更多