0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

語言大模型內(nèi)部究竟是如何工作的?

OSC開源社區(qū) ? 來源:OneFlow ? 2023-08-23 10:19 ? 次閱讀

OneFlow編譯

當(dāng)ChatGPT在去年秋天推出時,在科技行業(yè)乃至世界范圍內(nèi)引起了轟動。當(dāng)時,機器學(xué)習(xí)研究人員嘗試研發(fā)了多年的語言大模型(LLM),但普通大眾并未十分關(guān)注,也沒有意識到它們變得多強大。

如今,幾乎每個人都聽說過LLM,并有數(shù)千萬人用過它們,但是,了解工作原理的人并不多。你可能聽說過,訓(xùn)練LLM是用于“預(yù)測下一個詞”,而且它們需要大量的文本來實現(xiàn)這一點。但是,解釋通常就止步于此。它們?nèi)绾晤A(yù)測下一個詞的細(xì)節(jié)往往被視為一個深奧的謎題。

其中一個原因是,這些系統(tǒng)的開發(fā)方式與眾不同。一般的軟件是由人類工程師編寫,他們?yōu)橛嬎銠C提供明確的、逐步的指令。相比之下,ChatGPT是建立在一個使用數(shù)十億個語言詞匯進行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)之上。

因此,地球上沒有人完全理解LLM的內(nèi)部工作原理。研究人員正在努力嘗試?yán)斫膺@些模型,但這是一個需要數(shù)年甚至幾十年才能完成的緩慢過程。

然而,專家們確實對這些系統(tǒng)的工作原理已有不少了解。本文的目標(biāo)是將這些知識開放給廣大受眾。我們將努力解釋關(guān)于這些模型內(nèi)部工作原理的已知內(nèi)容,而不涉及技術(shù)術(shù)語或高級數(shù)學(xué)。

我們將從解釋詞向量(word vector)開始,它是語言模型表示和推理語言的一種令人驚訝的方式。然后,我們將深入探討構(gòu)建ChatGPT等模型的基石Transformer。最后,我們將解釋這些模型是如何訓(xùn)練的,并探討為什么要使用龐大的數(shù)據(jù)量才能獲得良好的性能。

1

詞向量

要了解語言模型的工作原理,首先需要了解它們?nèi)绾伪硎締卧~。人類用字母序列來表示英文單詞,比如C-A-T表示貓。語言模型使用的是一個叫做詞向量的長串?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]

(注:完整的向量長度實際上有300個數(shù)字)

為什么要使用如此復(fù)雜的表示法?這里有個類比,華盛頓特區(qū)位于北緯38.9度,西經(jīng)77度,我們可以用向量表示法來表示:

? 華盛頓特區(qū)的坐標(biāo)是[38.9,77]

? 紐約的坐標(biāo)是[40.7,74]

? 倫敦的坐標(biāo)是[51.5,0.1]

? 巴黎的坐標(biāo)是[48.9,-2.4]

這對于推理空間關(guān)系很有用。你可以看出,紐約離華盛頓特區(qū)很近,因為坐標(biāo)中38.9接近40.7,77接近74。同樣,巴黎離倫敦也很近。但巴黎離華盛頓特區(qū)很遠。

語言模型采用類似的方法:每個詞向量代表了“詞空間(word space)”中的一個點,具有相似含義的詞的位置會更接近彼此。例如,在向量空間中與貓最接近的詞包括狗、小貓和寵物。用實數(shù)向量表示單詞(相對于“C-A-T”這樣的字母串)的一個主要優(yōu)點是,數(shù)字能夠進行字母無法進行的運算。

單詞太復(fù)雜,無法僅用二維表示,因此語言模型使用具有數(shù)百甚至數(shù)千維度的向量空間。人類無法想象具有如此高維度的空間,但計算機完全可以對其進行推理并產(chǎn)生有用的結(jié)果。

幾十年來,研究人員一直在研究詞向量,但這個概念真正引起關(guān)注是在2013年,那時Google公布了word2vec項目。Google分析了從Google新聞中收集的數(shù)百萬篇文檔,以找出哪些單詞傾向于出現(xiàn)在相似的句子中。隨著時間的推移,一個經(jīng)訓(xùn)練過的神經(jīng)網(wǎng)絡(luò)學(xué)會了將相似類別的單詞(如狗和貓)放置在向量空間中的相鄰位置。

Google的詞向量還具有另一個有趣的特點:你可以使用向量運算“推理”單詞。例如,Google研究人員取出最大的(biggest)向量,減去大的(big)向量,再加上小的(small)向量。與結(jié)果向量最接近的詞就是最小的(smallest)向量。

15e88992-40e2-11ee-a2ef-92fbcf53809c.png

你可以使用向量運算來做類比!在這個例子中,大(big)與最大的(biggest)的關(guān)系,類似于?。╯mall)與最小的(smallest)的關(guān)系。Google的詞向量捕捉到了許多其他的關(guān)系:

? 瑞士人與瑞士類似于柬埔寨人與柬埔寨。(國籍)

? 巴黎與法國類似于柏林與德國。(首都)

? 不道德的與道德的類似于可能的與不可能的。(反義詞)

? Mouse(老鼠)與mice(老鼠的復(fù)數(shù))類似于dollar(美元)與dollars(美元的復(fù)數(shù))。(復(fù)數(shù)形式)

? 男人與女人類似于國王與女王。(性別角色)

因為這些向量是從人們使用語言的方式中構(gòu)建的,它們反映了許多存在于人類語言中的偏見。例如,在某些詞向量模型中,(醫(yī)生)減去(男人)再加上(女人)等于(護士)。減少這種偏見是一個很新穎的研究領(lǐng)域。

盡管如此,詞向量是語言模型的一個有用的基礎(chǔ),它們編碼了詞之間微妙但重要的關(guān)系信息。如果一個語言模型學(xué)到了關(guān)于貓的一些知識(例如,它有時會去看獸醫(yī)),那同樣的事情很可能也適用于小貓或狗。如果模型學(xué)到了關(guān)于巴黎和法國之間的關(guān)系(例如,它們共用一種語言),那么柏林和德國以及羅馬和意大利的關(guān)系很可能是一樣的。

2

詞的意義取決于上下文

像這樣簡單的詞向量方案并沒有捕獲到自然語言的一個重要事實:詞通常有多重含義。

例如,單詞“bank”可以指金融機構(gòu)或河岸。或者考慮以下句子:

?John picks up amagazine(約翰拿起一本雜志)。

?Susan works for amagazine(蘇珊為一家雜志工作)。

這些句子中,“magazine”的含義相關(guān)但又有不同。約翰拿起的是一本實體雜志,而蘇珊為一家出版實體雜志的機構(gòu)工作。

當(dāng)一個詞有兩個無關(guān)的含義時,語言學(xué)家稱之為同音異義詞(homonyms)。當(dāng)一個詞有兩個緊密相關(guān)的意義時,如“magazine”,語言學(xué)家稱之為多義詞(polysemy)。

像ChatGPT這樣的語言模型能夠根據(jù)單詞出現(xiàn)的上下文以不同的向量表示同一個詞。有一個針對“bank(金融機構(gòu))”的向量,還有一個針對“bank(河岸)”的向量。有一個針對“magazine(實體出版物)”的向量,還有一個針對“magazine(出版機構(gòu))”的向量。正如你預(yù)想的那樣,對于多義詞的含義,語言模型使用的向量更相似,而對于同音異義詞的含義,使用的向量則不太相似。

到目前為止,我們還沒有解釋語言模型是如何做到這一點——很快會進入這個話題。不過,我們正在詳細(xì)說明這些向量表示,這對理解語言模型的工作原理非常重要。

傳統(tǒng)軟件的設(shè)計被用于處理明確的數(shù)據(jù)。如果你讓計算機計算“2+3”,關(guān)于2、+或3的含義不存在歧義問題。但自然語言中的歧義遠不止同音異義詞和多義詞:

? 在“the customer asked the mechanic to fixhiscar(顧客請修理工修理他的車)”中,“his”是指顧客還是修理工?

? 在“the professor urged the student to doherhomework(教授催促學(xué)生完成她的家庭作業(yè))”中,“her”是指教授還是學(xué)生?

? 在“fruitflieslike a banana”中,“flies”是一個動詞(指在天空中飛的水果像一只香蕉)還是一個名詞(指喜歡香蕉的果蠅)?

人們根據(jù)上下文來解決這類歧義,但并沒有簡單或明確的規(guī)則。相反,這需要理解關(guān)于這個世界的實際情況。你需要知道修理工通常會修理顧客的汽車,學(xué)生通常完成自己的家庭作業(yè),水果通常不會飛。

詞向量為語言模型提供了一種靈活的方式,以在特定段落的上下文中表示每個詞的準(zhǔn)確含義。現(xiàn)在讓我們看看它們是如何做到這一點的。

3

將詞向量轉(zhuǎn)化為詞預(yù)測

ChatGPT原始版本背后的GPT-3模型,由數(shù)十個神經(jīng)網(wǎng)絡(luò)層組成。每一層接受一系列向量作為輸入——輸入文本中的每個詞對應(yīng)一個向量——并添加信息以幫助澄清該詞的含義,并且更好地預(yù)測接下來可能出現(xiàn)的詞。

讓我們從一個簡單的事例說起。

160d7284-40e2-11ee-a2ef-92fbcf53809c.png

LLM的每個層都是一個Transformer,2017年,Google在一篇里程碑的論文中首次介紹了這一神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

在圖表底部,模型的輸入文本是“John wants his bank to cash the(約翰想讓他的銀行兌現(xiàn))”, 這些單詞被表示為word2vec風(fēng)格的向量,并傳送至第一個Transformer。這個Transformer確定了wants和cash都是動詞(這兩個詞也可以是名詞)。我們用小括號中的紅色文本表示這一附加的上下文,但實際上模型會通過修改詞向量的方式來存儲這一信息,這種方式對人類來說很難解釋。這些新的向量被稱為隱藏狀態(tài)(hidden state),并傳遞給下一個Transformer。

第二個Transformer添加了另外兩個上下文信息:它澄清了bank是指金融機構(gòu)(financial institution)而不是河岸,并且his是指John的代詞。第二個Transformer產(chǎn)生了另一組隱藏狀態(tài)向量,這一向量反映的是該模型之前所學(xué)習(xí)的所有信息。

上述圖表描繪的是一個純假設(shè)的LLM,所以不要對細(xì)節(jié)過于較真。真實的LLM往往有更多層。例如,最強大的GPT-3版本有96層。

研究表明(https://arxiv.org/abs/1905.05950),前幾層專注于理解句子的語法并解決上面所示的歧義。后面的層(為保持圖表大小的可控性上述圖標(biāo)沒有顯示)則致力于對整個段落的高層次理解。

例如,當(dāng)LLM“閱讀”一篇短篇小說時,它似乎會記住關(guān)于故事角色的各種信息:性別和年齡、與其他角色的關(guān)系、過去和當(dāng)前的位置、個性和目標(biāo)等等。

研究人員并不完全了解LLM是如何跟蹤這些信息的,但從邏輯上講,模型在各層之間傳遞時信息時必須通過修改隱藏狀態(tài)向量來實現(xiàn)?,F(xiàn)代LLM中的向量維度極為龐大,這有利于表達更豐富的語義信息。

例如,GPT-3最強大的版本使用有12288個維度的詞向量,也就是說,每個詞由一個包含12288個的數(shù)字列表表示。這比Google在2013年提出的word2vec方案要大20倍。你可以把所有這些額外的維度看作是GPT-3可以用來記錄每個詞的上下文的一種“暫存空間(scratch space)”。較早層所做的信息筆記可以被后來的層讀取和修改,使模型逐漸加深對整篇文章的理解。

因此,假設(shè)我們將上面的圖表改為,描述一個96層的語言模型來解讀一個1000字的故事。第60層可能包括一個用于約翰(John)的向量,帶有一個表示為“(主角,男性,嫁給謝麗爾,唐納德的表弟,來自明尼蘇達州,目前在博伊西,試圖找到他丟失的錢包)”的括號注釋。同樣,所有這些事實(可能還有更多)都會以一個包含12288個數(shù)字列表的形式編碼,這些數(shù)字對應(yīng)于詞John?;蛘?,該故事中的某些信息可能會編碼在12288維的向量中,用于謝麗爾、唐納德、博伊西、錢包或其他詞。

這樣做的目標(biāo)是,讓網(wǎng)絡(luò)的第96層和最后一層輸出一個包含所有必要信息的隱藏狀態(tài),以預(yù)測下一個單詞。

4

注意力機制

現(xiàn)在讓我們談?wù)劽總€Transformer內(nèi)部發(fā)生的情況。Transformer在更新輸入段落的每個單詞的隱藏狀態(tài)時有兩個處理過程:

1. 在注意力步驟中,詞匯會“觀察周圍”以查找具有相關(guān)背景并彼此共享信息的其他詞。

2. 在前饋步驟中,每個詞會“思考”之前注意力步驟中收集到的信息,并嘗試預(yù)測下一個單詞。

當(dāng)然,執(zhí)行這些步驟的是網(wǎng)絡(luò),而不是個別的單詞。但我們用這種方式表述是為了強調(diào)Transformer是以單詞作為這一分析的基本單元,而不是整個句子或段落。這種方法使得LLM能夠充分利用現(xiàn)代GPU芯片的大規(guī)模并行處理能力。它還幫助LLM擴展到包含成千上萬個詞的長段落。而這兩個方面都是早期語言模型面臨的挑戰(zhàn)。

你可以將注意力機制看作是單詞之間的一個撮合服務(wù)。每個單詞都會制作一個檢查表(稱為查詢向量),描述它尋找的詞的特征。每個詞還會制作一個檢查表(稱為關(guān)鍵向量),描述它自己的特征。神經(jīng)網(wǎng)絡(luò)通過將每個關(guān)鍵向量與每個查詢向量進行比較(通過計算點積)來找到最佳匹配的單詞。一旦找到匹配項,它將從產(chǎn)生關(guān)鍵向量的單詞傳遞相關(guān)信息到產(chǎn)生查詢向量的單詞。

例如,在前面的部分中,我們展示了一個假設(shè)的Transformer模型,它發(fā)現(xiàn)在部分句子“John wants his bank to cash the”中,“his(他的)”指的是“John(約翰)”。在系統(tǒng)內(nèi)部,過程可能是這樣的:“his”的查詢向量可能會有效地表示為“我正在尋找:描述男性的名詞”?!癑ohn”的關(guān)鍵向量可能會有效地表示為“我是一個描述男性的名詞”。網(wǎng)絡(luò)會檢測到這兩個向量匹配,并將關(guān)于"John"的向量信息轉(zhuǎn)移給“his”的向量。

每個注意力層都有幾個“注意力頭”,這意味著,這個信息交換過程在每一層上會多次進行(并行)。每個注意頭都專注于不同的任務(wù):

? 一個注意頭可能會將代詞與名詞進行匹配,就像我們之前討論的那樣。

? 另一個注意頭可能會處理解析類似"bank"這樣的一詞多義的含義。

? 第三個注意力頭可能會將“Joe Biden”這樣的兩個單詞短語鏈接在一起。

諸如此類的注意力頭經(jīng)常按順序操作,一個注意力層中的注意力操作結(jié)果成為下一層中一個注意力頭的輸入。事實上,我們剛才列舉的每個任務(wù)可能都需要多個注意力頭,而不僅僅是一個。

GPT-3的最大版本有96個層,每個層有96個注意力頭,因此,每次預(yù)測一個新詞時,GPT-3將執(zhí)行9216個注意力操作。

5

一個真實世界的例子

在上述兩節(jié)內(nèi)容中,我們展示了注意力頭的工作方式的理想化版本。現(xiàn)在讓我們來看一下關(guān)于真實語言模型內(nèi)部運作的研究。

去年,研究人員在Redwood Research研究了GPT-2,即ChatGPT的前身,對于段落“When Mary and John went to the store, John gave a drink to(當(dāng)瑪麗和約翰去商店,約翰把一杯飲料給了)”預(yù)測下一個單詞的過程。

GPT-2預(yù)測下一個單詞是Mary(瑪麗)。研究人員發(fā)現(xiàn)有三種類型的注意力頭對這個預(yù)測做出了貢獻:

? 他們稱之為名稱移動頭(Name Mover Head)的三個注意力頭將信息從Mary向量復(fù)制到最后的輸入向量(to這個詞對應(yīng)的向量)。GPT-2使用此最右向量中的信息來預(yù)測下一個單詞。

? 神經(jīng)網(wǎng)絡(luò)是如何決定Mary是正確的復(fù)制詞?通過GPT-2的計算過程進行逆向推導(dǎo),科學(xué)家們發(fā)現(xiàn)了一組他們稱之為主語抑制頭(Subject Inhibition Head)的四個注意頭,它們標(biāo)記了第二個John向量,阻止名稱移動頭復(fù)制John這個名字。

? 主語抑制頭是如何知道不應(yīng)該復(fù)制John?團隊進一步向后推導(dǎo),發(fā)現(xiàn)了他們稱為重復(fù)標(biāo)記頭(Duplicate Token Heads)的兩個注意力頭。他們將第二個John向量標(biāo)記為第一個John向量的重復(fù)副本,這幫助主語抑制頭決定不應(yīng)該復(fù)制John。

簡而言之,這九個注意力頭使得GPT-2能夠理解“John gave a drink to John(約翰給了約翰一杯飲料”沒有意義,而是選擇了“John gave a drink to Mary(約翰給了瑪麗一杯飲料)”。

這個例子側(cè)面說明了要完全理解LLM會有多么困難。由五位研究人員組成的Redwood團隊曾發(fā)表了一篇25頁的論文,解釋了他們是如何識別和驗證這些注意力頭。然而,即使他們完成了所有這些工作,我們離對于為什么GPT-2決定預(yù)測“Mary”作為下一個單詞的全面解釋還有很長的路要走。

例如,模型是如何知道下一個單詞應(yīng)該是某個人的名字而不是其他類型的單詞?很容易想到,在類似的句子中,Mary不會是一個好的下一個預(yù)測詞。例如,在句子“when Mary and John went to the restaurant, John gave his keys to(當(dāng)瑪麗和約翰去餐廳時,約翰把鑰匙給了)”中,邏輯上,下一個詞應(yīng)該是“the valet(代客停車員)”。

假設(shè)計算機科學(xué)家們進行充足的研究,他們可以揭示和解釋GPT-2推理過程中的其他步驟。最終,他們可能能夠全面理解GPT-2是如何決定“Mary”是該句子最可能的下一個單詞。但這可能需要數(shù)月甚至數(shù)年的額外努力才能理解一個單詞的預(yù)測情況。

ChatGPT背后的語言模型——GPT-3和GPT-4——比GPT-2更龐大和復(fù)雜,相比Redwood團隊研究的簡單句子,它們能夠完成更復(fù)雜的推理任務(wù)。因此,完全解釋這些系統(tǒng)的工作將是一個巨大的項目,人類不太可能在短時間內(nèi)完成。

6

前饋步驟

在注意力頭在詞向量之間傳輸信息后,前饋網(wǎng)絡(luò)會“思考”每個詞向量并嘗試預(yù)測下一個詞。在這個階段,單詞之間沒有交換信息,前饋層會獨立地分析每個單詞。然而,前饋層可以訪問之前由注意力頭復(fù)制的任何信息。以下是GPT-3最大版本的前饋層結(jié)構(gòu)。

162184b8-40e2-11ee-a2ef-92fbcf53809c.png

綠色和紫色的圓圈表示神經(jīng)元:它們是計算其輸入加權(quán)和的數(shù)學(xué)函數(shù)。

前饋層之所以強大,是因為它有大量的連接。我們使用三個神經(jīng)元作為輸出層,六個神經(jīng)元作為隱藏層來繪制這個網(wǎng)絡(luò),但是GPT-3的前饋層要大得多:輸出層有12288個神經(jīng)元(對應(yīng)模型的12288維詞向量),隱藏層有49152個神經(jīng)元。

所以在最大版本的GPT-3中,隱藏層有49152個神經(jīng)元,每個神經(jīng)元有12288個輸入值(因此每個神經(jīng)元有12288個權(quán)重參數(shù)),并且還有12288輸出神經(jīng)元,每個神經(jīng)元有49152個輸入值(因此每個神經(jīng)元有49152個權(quán)重參數(shù))。這意味著,每個前饋層有49152*12288+12288*49152=12億個權(quán)重參數(shù)。并且有96個前饋層,總共有12億*96=1160億個參數(shù)!這相當(dāng)于具有1750億參數(shù)的GPT-3近三分之二的參數(shù)量。

來自特拉維夫大學(xué)的研究人員發(fā)現(xiàn),前饋層通過模式匹配進行工作:隱藏層中的每個神經(jīng)元都能匹配輸入文本中的特定模式。下面是一個16層版本的GPT-2中的一些神經(jīng)元匹配的模式:

? 第1層的神經(jīng)元匹配以“substitutes”結(jié)尾的詞序列。

? 第6層的神經(jīng)元匹配與軍事有關(guān)并以“base”或“bases”結(jié)尾的詞序列。

? 第13層的神經(jīng)元匹配以時間范圍結(jié)尾的序列,比如“在下午3點到7點之間”或者“從周五晚上7點到”。

? 第16層的神經(jīng)元匹配與電視節(jié)目相關(guān)的序列,例如“原始的NBC日間版本,已存檔”或者“時間延遲使該集的觀眾增加了57%?!?/p>

正如你所看到的,在后面的層中,模式變得更抽象。早期的層傾向于匹配特定的單詞,而后期的層則匹配屬于更廣泛語義類別的短語,例如電視節(jié)目或時間間隔。

這很有趣,因為如前所述,前饋層每次只能檢查一個單詞。因此,當(dāng)將序列“原始的NBC日間版本,已存檔”分類為“與電視相關(guān)”時,它只能訪問“已存檔”這個詞的向量,而不是NBC或日間等詞匯??梢酝茢?,前饋層之所以可以判斷“已存檔”是電視相關(guān)序列的一部分,是因為注意力頭先前將上下文信息移到了“已存檔”的向量中。

當(dāng)一個神經(jīng)元與其中一個模式匹配時,它會向詞向量中添加信息。雖然這些信息并不總是容易解釋,但在許多情況下,你可以將其視為對下一個詞的臨時預(yù)測。

7

使用向量運算進行前饋網(wǎng)絡(luò)的推理

布朗大學(xué)最近的研究展示了前饋層如何幫助預(yù)測下一個單詞的優(yōu)雅例子。我們之前討論過Google的word2vec研究,顯示可以使用向量運算進行類比推理。例如,柏林-德國+法國=巴黎。

布朗大學(xué)的研究人員發(fā)現(xiàn),前饋層有時使用這種準(zhǔn)確的方法來預(yù)測下一個單詞。例如,他們研究了GPT-2對以下提示的回應(yīng):“問題:法國的首都是什么?回答:巴黎。問題:波蘭的首都是什么?回答:”

團隊研究了一個包含24個層的GPT-2版本。在每個層之后,布朗大學(xué)的科學(xué)家們探測模型,觀察它對下一個詞元(token)的最佳猜測。在前15層,最高可能性的猜測是一個看似隨機的單詞。在第16層和第19層之間,模型開始預(yù)測下一個單詞是波蘭——不正確,但越來越接近正確。然后在第20層,最高可能性的猜測變?yōu)槿A沙——正確的答案,并在最后四層保持不變。

布朗大學(xué)的研究人員發(fā)現(xiàn),第20個前饋層通過添加一個將國家向量映射到其對應(yīng)首都的向量,從而將波蘭轉(zhuǎn)換為華沙。將相同的向量添加到中國時,答案會得到北京。

同一模型中的前饋層使用向量運算將小寫單詞轉(zhuǎn)換為大寫單詞,并將現(xiàn)在時的單詞轉(zhuǎn)換為過去時的等效詞。

8

注意力層和前饋層有不同的功能

到目前為止,我們已經(jīng)看到了GPT-2單詞預(yù)測的兩個實際示例:注意力頭幫助預(yù)測約翰給瑪麗一杯飲料;前饋層幫助預(yù)測華沙是波蘭的首都。

在第一個案例中,瑪麗來自用戶提供的提示。但在第二個案例中,華沙并沒有出現(xiàn)在提示中。相反,GPT-2必須“記住”華沙是波蘭的首都,這個信息是從訓(xùn)練數(shù)據(jù)中學(xué)到的。

當(dāng)布朗大學(xué)的研究人員禁用將波蘭轉(zhuǎn)換為華沙的前饋層時,模型不再預(yù)測下一個詞是華沙。但有趣的是,如果他們接著在提示的開頭加上句子“波蘭的首都是華沙”,那么GPT-2就能再次回答這個問題。這可能是因為GPT-2使用注意力機制從提示中提取了華沙這個名字。

這種分工更廣泛地表現(xiàn)為:注意力機制從提示的較早部分檢索信息,而前饋層使語言模型能夠“記住”未在提示中出現(xiàn)的信息

事實上,可以將前饋層視為模型從訓(xùn)練數(shù)據(jù)中學(xué)到的信息的數(shù)據(jù)庫。靠前的前饋層更可能編碼與特定單詞相關(guān)的簡單事實,例如“特朗普經(jīng)常在唐納德之后出現(xiàn)”??亢蟮膶觿t編碼更復(fù)雜的關(guān)系,如“添加這個向量以將一個國家轉(zhuǎn)換為其首都。

9

語言模型的訓(xùn)練方式

許多早期的機器學(xué)習(xí)算法需要人工標(biāo)記的訓(xùn)練示例。例如,訓(xùn)練數(shù)據(jù)可能是帶有人工標(biāo)簽(“狗”或“貓”)的狗或貓的照片。需要標(biāo)記數(shù)據(jù)的需求,使得人們創(chuàng)建足夠大的數(shù)據(jù)集以訓(xùn)練強大模型變得困難且昂貴。

LLM的一個關(guān)鍵創(chuàng)新之處在于,它們不需要顯式標(biāo)記的數(shù)據(jù)。相反,它們通過嘗試預(yù)測文本段落中下一個單詞來學(xué)習(xí)。幾乎任何書面材料都適用于訓(xùn)練這些模型——從維基百科頁面到新聞文章再到計算機代碼。

舉例來說,LLM可能會得到輸入“I like my coffee with cream and(我喜歡在咖啡里加奶油和)”,并試圖預(yù)測“sugar(糖)”作為下一個單詞。一個新的初始化語言模型在這方面表現(xiàn)很糟糕,因為它的每個權(quán)重參數(shù)——GPT-3最強大的版本高達1750億個參數(shù)——最初基本上都是從一個隨機數(shù)字開始。

但是隨著模型看到更多的例子——數(shù)千億個單詞——這些權(quán)重逐漸調(diào)整以做出更好的預(yù)測。

下面用一個類比來說明這個過程是如何進行的。假設(shè)你要洗澡,希望水溫剛剛好:不太熱,也不太冷。你以前從未用過這個水龍頭,所以你隨意調(diào)整水龍頭把手的方向,并觸摸水的溫度。如果太熱或太冷,你會向相反的方向轉(zhuǎn)動把手,當(dāng)接近適當(dāng)?shù)乃疁貢r,你對把手所做的調(diào)整幅度就越小。

現(xiàn)在,讓我們對這個類比做幾個改動。首先,想象一下有50257個水龍頭,每個水龍頭對應(yīng)一個不同的單詞,比如"the"、"cat"或"bank"。你的目標(biāo)是,只讓與序列中下一個單詞相對應(yīng)的水龍頭里出水。

其次,水龍頭后面有一堆互聯(lián)的管道,并且這些管道上還有一堆閥門。所以如果水從錯誤的水龍頭里出來,你不能只調(diào)整水龍頭上的旋鈕。你要派遣一支聰明的松鼠部隊去追蹤每條管道,并沿途調(diào)整它們找到的每個閥門。

這變得很復(fù)雜,由于同一條管道通常供應(yīng)多個水龍頭,所以需要仔細(xì)思考如何確定要擰緊和松開哪些閥門,以及程度多大。

顯然,如果字面理解這個例子,就變得很荒謬。建立一個擁有1750億個閥門的管道網(wǎng)絡(luò)既不現(xiàn)實也沒用。但是由于摩爾定律,計算機可以并且確實以這種規(guī)模運行。

截止目前,在本文中所討論的LLM的所有部分——前饋層的神經(jīng)元和在單詞之間傳遞上下文信息的注意力頭——都被實現(xiàn)為一系列簡單的數(shù)學(xué)函數(shù)(主要是矩陣乘法),其行為由可調(diào)整的權(quán)重參數(shù)來確定。就像我故事中的松鼠松緊閥門來控制水流一樣,訓(xùn)練算法通過增加或減小語言模型的權(quán)重參數(shù)來控制信息在神經(jīng)網(wǎng)絡(luò)中的流動。

訓(xùn)練過程分為兩個步驟。首先進行“前向傳播(forward pass)”,打開水源并檢查水是否從正確的水龍頭流出。然后關(guān)閉水源,進行“反向傳播(backwards pass)”,松鼠們沿著每根管道競速,擰緊或松開閥門。在數(shù)字神經(jīng)網(wǎng)絡(luò)中,松鼠的角色由一個稱為反向傳播的算法來扮演,該算法“逆向(walks backwards)”通過網(wǎng)絡(luò),使用微積分來估計需要改變每個權(quán)重參數(shù)的程度。

完成這個過程——對一個示例進行前向傳播,然后進行后向傳播來提高網(wǎng)絡(luò)在該示例上的性能——需要進行數(shù)百億次數(shù)學(xué)運算。而像GPT-3這種大模型的訓(xùn)練需要重復(fù)這個過程數(shù)十億次——對每個訓(xùn)練數(shù)據(jù)的每個詞都要進行訓(xùn)練。OpenAI估計,訓(xùn)練GPT-3需要超過3000億萬億次浮點計算——這需要幾十個高端計算機芯片運行數(shù)月。

10

GPT-3的驚人性能

你可能會對訓(xùn)練過程能夠如此出色地工作感到驚訝。ChatGPT可以執(zhí)行各種復(fù)雜的任務(wù)——撰寫文章、進行類比和甚至編寫計算機代碼。那么,這樣一個簡單的學(xué)習(xí)機制是如何產(chǎn)生如此強大的模型?

一個原因是規(guī)模。很難過于強調(diào)像GPT-3這樣的模型看到的示例數(shù)量之多。GPT-3是在大約5000億個單詞的語料庫上進行訓(xùn)練的。相比之下,一個普通的人類孩子在10歲之前遇到的單詞數(shù)量大約是1億個。

在過去的五年中,OpenAI不斷增大其語言模型的規(guī)模。在一篇廣為傳閱的2020年論文中OpenAI報告稱,他們的語言模型的準(zhǔn)確性與模型規(guī)模、數(shù)據(jù)集規(guī)模以及用于訓(xùn)練的計算量呈冪律關(guān)系,一些趨勢甚至跨越七個數(shù)量級以上”。

模型規(guī)模越大,在涉及語言的任務(wù)上表現(xiàn)得越好。但前提是,他們需要以類似的倍數(shù)增加訓(xùn)練數(shù)據(jù)量。而要在更多數(shù)據(jù)上訓(xùn)練更大的模型,還需要更多的算力。

2018年,OpenAI發(fā)布了第一個大模型GPT-1于。它使用了768維的詞向量,共有12層,總共有1.17億個參數(shù)。幾個月后,OpenAI發(fā)布了GPT-2,其最大版本擁有1600維的詞向量,48層,總共有15億個參數(shù)。2020年,OpenAI發(fā)布了GPT-3,它具有12288維的詞向量,96層,總共有1750億個參數(shù)。

今年,OpenAI發(fā)布了GPT-4。該公司尚未公布任何架構(gòu)細(xì)節(jié),但業(yè)內(nèi)普遍認(rèn)為,GPT-4比GPT-3要大得多。

每個模型不僅學(xué)到了比其較小的前身模型更多的事實,而且在需要某種形式的抽象推理任務(wù)上表現(xiàn)出更好的性能。

例如,設(shè)想以下故事:一個裝滿爆米花的袋子。袋子里沒有巧克力。然而,袋子上的標(biāo)簽寫著“巧克力”而不是“爆米花”。山姆發(fā)現(xiàn)了這個袋子。她以前從未見過這個袋子。她看不見袋子里面的東西。她讀了標(biāo)簽。

你可能猜到,山姆相信袋子里裝著巧克力,并會驚訝地發(fā)現(xiàn)里面是爆米花。

心理學(xué)家將這種推理他人思維狀態(tài)的能力研究稱為“心智理論(Theory of Mind)”。大多數(shù)人從上小學(xué)開始就具備這種能力。專家們對于任何非人類動物(例如黑猩猩)是否適用心智理論存在分歧,但基本共識是,它對人類社會認(rèn)知至關(guān)重要。

今年早些時候,斯坦福大學(xué)心理學(xué)家米Michal Kosinski發(fā)表了一項研究,研究了LLM的能力以解決心智理論任務(wù)。他給各種語言模型閱讀類似剛剛引述的故事,然后要求它們完成一個句子,比如“她相信袋子里裝滿了”,正確答案是“巧克力”,但一個不成熟的語言模型可能會說“爆米花”或其他東西。

GPT-1和GPT-2在這個測試中失敗了。但是在2020年發(fā)布的GPT-3的第一個版本正確率達到了近40%,Kosinski將模型性能水平與三歲兒童相比較。去年11月發(fā)布的最新版本GPT-3將上述問題的正確率提高到了約90%,與七歲兒童相當(dāng)。GPT-4對心智理論問題的回答正確率約為95%。

16364c4a-40e2-11ee-a2ef-92fbcf53809c.png

“鑒于這些模型中既沒有跡象表明ToM(心智化能力)被有意設(shè)計進去,也沒有研究證明科學(xué)家們知道如何實現(xiàn)它,這一能力很可能是自發(fā)且自主地出現(xiàn)的。這是模型的語言能力不斷增強的一個副產(chǎn)品。"Kosinski寫道。

值得注意的是,研究人員并不全都認(rèn)可這些結(jié)果證明了心智理論:例如,對錯誤信念任務(wù)的微小更改導(dǎo)致GPT-3的性能大大下降;而GPT-3在測量心智理論的其他任務(wù)中的表現(xiàn)更為不穩(wěn)定,正如其中肖恩所寫的那樣,成功的表現(xiàn)可能歸因于任務(wù)中的混淆因素——一種“聰明漢斯(clever Hans,指一匹名為漢斯的馬看似能完成一些簡單的智力任務(wù),但實際上只是依賴于人們給出的無意識線索)”效應(yīng),只不過是出現(xiàn)在了語言模型上而不是馬身上。

盡管如此,GPT-3在幾個旨在衡量心智理論的任務(wù)上接近人類的表現(xiàn),這在幾年前是無法想象的,并且這與更大的模型通常在需要高級推理的任務(wù)中表現(xiàn)更好的觀點相一致。

這只是語言模型表現(xiàn)出自發(fā)發(fā)展出高級推理能力的眾多例子之一。今年4月,微軟的研究人員發(fā)表的一篇論文表示,GPT-4展示了通用人工智能的初步、誘人的跡象——即以一種復(fù)雜、類人的方式思考的能力。

例如,一位研究人員要求GPT-4使用一種名為TiKZ的晦澀圖形編程語言畫一只獨角獸。GPT-4回應(yīng)了幾行代碼,然后研究人員將這些代碼輸入TiKZ軟件。生成的圖像雖然粗糙,但清晰地顯示出GPT-4對獨角獸的外觀有一定的理解。

168489fa-40e2-11ee-a2ef-92fbcf53809c.png

研究人員認(rèn)為,GPT-4可能以某種方式從訓(xùn)練數(shù)據(jù)中記住了繪制獨角獸的代碼,所以他們給它提出了一個后續(xù)的挑戰(zhàn):他們修改了獨角獸的代碼,移除了頭角,并移動了一些其他身體部位。然后他們讓GPT-4把獨角獸的頭角放回去。GPT-4通過將頭角放在正確的位置上作出了回應(yīng):

1696799e-40e2-11ee-a2ef-92fbcf53809c.png

盡管作者的測試版本的訓(xùn)練數(shù)據(jù)完全基于文本,沒有包含任何圖像,但GPT-4似乎仍然能夠完成這個任務(wù)。不過,通過大量的書面文本訓(xùn)練后,GPT-4顯然學(xué)會了推理關(guān)于獨角獸身體形狀的知識。

目前,我們對LLM如何完成這樣的壯舉沒有真正的了解。有些人認(rèn)為,像這樣的例子表明模型開始真正理解其訓(xùn)練集中詞的含義。其他人堅持認(rèn)為,語言模型只是“隨機鸚鵡”,僅僅是重復(fù)越來越復(fù)雜的單詞序列,而并非真正理解它們。

這種辯論指向了一種深刻的哲學(xué)爭論,可能無法解決。盡管如此,我們認(rèn)為關(guān)注GPT-3等模型的經(jīng)驗表現(xiàn)很重要。如果一個語言模型能夠在特定類型的問題中始終得到正確答案,并且研究人員有信心排除混淆因素(例如,確保在訓(xùn)練期間該語言模型沒有接觸到這些問題),那無論它對語言的理解方式是否與人類完全相同,這都是一個有趣且重要的結(jié)果。

訓(xùn)練下一個詞元預(yù)測如此有效的另一個可能原因是,語言本身是可預(yù)測的。語言的規(guī)律性通常(盡管并不總是這樣)與物質(zhì)世界的規(guī)律性相聯(lián)系。因此,當(dāng)語言模型學(xué)習(xí)單詞之間的關(guān)系時,通常也在隱含地學(xué)習(xí)這個世界存在的關(guān)系。

此外,預(yù)測可能是生物智能以及人工智能的基礎(chǔ)。根據(jù)Andy Clark等哲學(xué)家的觀點 ,人腦可以被認(rèn)為是一個“預(yù)測機器”,其主要任務(wù)是對我們的環(huán)境進行預(yù)測,然后利用這些預(yù)測來成功地駕馭環(huán)境。預(yù)測對于生物智能和人工智能都至關(guān)重要。直觀地說,好的預(yù)測離不開良好的表示——準(zhǔn)確的地圖比錯誤的地圖更有可能幫助人們更好地導(dǎo)航。世界是廣闊而復(fù)雜的,進行預(yù)測有助于生物高效定位和適應(yīng)這種復(fù)雜性。

在構(gòu)建語言模型方面,傳統(tǒng)上一個重大的挑戰(zhàn)是,找出最有用的表示不同單詞的方式,特別是因為許多單詞的含義很大程度上取決于上下文。下一個詞的預(yù)測方法使研究人員能夠?qū)⑵滢D(zhuǎn)化為一個經(jīng)驗性問題,以此避開這個棘手的理論難題。

事實證明,如果我們提供足夠的數(shù)據(jù)和計算能力,語言模型能夠通過找出最佳的下一個詞的預(yù)測來學(xué)習(xí)人類語言的運作方式。不足之處在于,最終得到的系統(tǒng)內(nèi)部運作方式人類還并不能完全理解。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4726

    瀏覽量

    100339
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8325

    瀏覽量

    132216
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    348

    瀏覽量

    15255
  • ChatGPT
    +關(guān)注

    關(guān)注

    28

    文章

    1536

    瀏覽量

    7273
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    254

    瀏覽量

    286

原文標(biāo)題:通俗解構(gòu)語言大模型的工作原理

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    tas5756m使用GPIO口加內(nèi)部PLL產(chǎn)生MCLK的方法究竟是怎么樣的?

    tas5756m使用GPIO口加內(nèi)部PLL產(chǎn)生MCLK的方法究竟是怎么樣的?
    發(fā)表于 08-19 06:06

    圖解:IGBT究竟是什么?

    圖解:IGBT究竟是什么? IGBT究竟是什么?
    發(fā)表于 08-10 08:01

    S參數(shù)究竟是什么?

    S參數(shù)究竟是什么?起決定性作用的S參數(shù)將S參數(shù)擴展到多端口器件和差分器件
    發(fā)表于 03-01 11:46

    我們仿真DDR究竟是仿真什么

    我們仿真DDR究竟是仿真什么?
    發(fā)表于 03-04 07:32

    電感飽和究竟是什么

    電感飽和究竟是什么
    發(fā)表于 03-11 08:13

    真正軟件定義無線電究竟是怎樣的?

    真正軟件定義無線電究竟是怎樣的?
    發(fā)表于 05-14 06:47

    分貝究竟是什么?如何去理解它?

    分貝究竟是什么?如何去理解它?
    發(fā)表于 05-31 07:05

    究竟是選擇eMMC5.1還是eMCP好?

    eMMC是什么?eMCP又是什么?eMMC和eMCP各有哪些優(yōu)點?究竟是選擇eMMC5.1還是eMCP好?
    發(fā)表于 06-18 08:10

    一文讀懂eMMC究竟是啥?

    eMMC究竟是啥?eMMC長什么樣?eMMC用在哪?主要是干嘛用的?eMMC究竟是如何工作的呢?
    發(fā)表于 06-18 06:04

    SLC、MLC、Parallel NOR Flash等究竟是什么意思?

    什么是Flash Memory?Flash Memory主要可以分為哪幾類?SLC、MLC、Parallel NOR Flash等究竟是什么意思?它們又有什么不同?
    發(fā)表于 06-18 09:11

    spec究竟是什么?有誰可以分享一下嗎

    spec究竟是什么?哪位同行可以幫忙分享下DFI 5.0的spec?
    發(fā)表于 06-21 07:16

    無片外電容LDO究竟是什么?

    無片外電容LDO究竟是什么?有誰清楚嗎
    發(fā)表于 06-22 08:07

    retain,copy與assign究竟是有什么區(qū)別呢

    retain,copy與assign究竟是有什么區(qū)別呢?
    發(fā)表于 09-30 09:25

    經(jīng)轉(zhuǎn)速環(huán)PI之后輸出的究竟是什么

    為什么經(jīng)轉(zhuǎn)速環(huán)PI之后的輸出量是電流?經(jīng)轉(zhuǎn)速環(huán)PI之后輸出的究竟是什么?
    發(fā)表于 10-08 07:12

    S參數(shù)究竟是什么?

    S參數(shù)究竟是什么?
    發(fā)表于 11-01 08:24 ?2次下載
    S參數(shù)<b class='flag-5'>究竟是</b>什么?