這就是大語言模型! | 一文梳理LLM中的核心概念
文字接龍
LLM從根本上始終要做的是,針對(duì)它得到的任何文本產(chǎn)生“合理的延續(xù)”。LLM只是在玩一個(gè)“文字接龍”的游戲。
當(dāng)ChatGPT做一些事情,比如寫一篇文章時(shí),它實(shí)質(zhì)上只是在一遍又一遍地詢問“根據(jù)目前的文本,下一個(gè)詞應(yīng)該是什么”,并且每次都添加一個(gè)詞。(這里說的“詞”實(shí)際上指的是token,它可能只是詞的一部分)
每個(gè)詞的出現(xiàn)有一定的概念,并不會(huì)在每次添加詞的時(shí)候選擇概率最高的那個(gè),而是在一定范圍內(nèi)隨機(jī)選擇,否則就像輸入法軟件那樣只能聯(lián)想,每次都選擇第一個(gè)詞,通常會(huì)得到一篇非常“平淡”的文章,完全顯示不出任何“創(chuàng)造力”(是時(shí)候甚至?xí)a(chǎn)生混亂和重復(fù))。存在隨機(jī)性意味著,如果我們多次使用相同的提示(prompt),每次都有可能得到不同的文章。使用“溫度”參數(shù)來確定低排名的詞的使用頻率。對(duì)于文章生成任務(wù),“溫度”為0.8似乎最好。
概率從何而來
使用N-gram模型從大型文本語料庫中統(tǒng)計(jì)連續(xù)的N個(gè)詞出現(xiàn)的概率??梢韵胂?,如何能夠使用足夠長(zhǎng)的n元詞,我們基本上會(huì)“得到一個(gè)ChatGPT”,也就是說我們得到的東西能夠生成符合“正確的整體文章概率”且像文章一樣長(zhǎng)的序列。但問題在于:我們根本沒有足夠的文本來推斷出這些概率。這里存在一個(gè)組合爆炸的問題,可能的20元詞的數(shù)量會(huì)大于宇宙中的粒子數(shù)量,所以永遠(yuǎn)無法把它們?nèi)繉懴聛怼?/p>
改進(jìn)方案是建立一個(gè)模型,讓我們能夠估計(jì)序列出現(xiàn)的概率。這就是“大語言模型”要做的事情。
假設(shè)我們要知道從比薩斜塔上掉落的鐵球需要多長(zhǎng)時(shí)間才能落地,我們有兩種方法可以運(yùn)用。第一種是進(jìn)行多次測(cè)量和記錄;第二種是根據(jù)已知的物理定律直接計(jì)算出最終的結(jié)果。在某種程度上,N-gram模型類似于第一種方法,而大語言模型類似于第二種方法。
什么是模型
牛頓運(yùn)動(dòng)定律并不是“先知”告訴牛頓的,而是牛頓本人經(jīng)過觀察、測(cè)量、記錄、思考、假設(shè)、驗(yàn)證等一系列步驟后總結(jié)出來的。這個(gè)總結(jié)的過程就是建立模型的過程,最后得到的結(jié)論就是一個(gè)模型。有些模型是有名字的,比如“牛頓第一、第二、第三運(yùn)動(dòng)定律”。根據(jù)建立的模型,我們可以直接計(jì)算出給定條件(輸入)下我們關(guān)心的問題的結(jié)果是什么(輸出),這也就是用模型進(jìn)行“預(yù)測(cè)”的過程,這一過程有時(shí)候也叫做“推理”。
為人類語言文本建立的模型就是語言模型。大語言模型的“大”體現(xiàn)在模型的參數(shù)量很多,比如ChatGPT有1750億個(gè)參數(shù)。
任何模型都有某種特定的基本結(jié)構(gòu),以及用于擬合數(shù)據(jù)的一定數(shù)量的“旋鈕”(參數(shù)),只有當(dāng)這些“旋鈕”都旋到合適的位置時(shí),模型才能有預(yù)期的表現(xiàn)。電視機(jī)有很多旋鈕,比如頻道選擇旋鈕、音量旋鈕、明亮度旋鈕等,用來完成多種功能。幸運(yùn)的是,我們只需要調(diào)整有限的幾個(gè)旋鈕就能讓電視機(jī)有效工作。相反,要讓ChatGPT這樣的大語言模型有效工作,需要讓1750億個(gè)旋鈕處于正確的位置。
神經(jīng)網(wǎng)絡(luò)
一種主流的模型基本結(jié)構(gòu)是神經(jīng)網(wǎng)絡(luò),它發(fā)明于20世紀(jì)40年代,可以視作對(duì)大腦工作機(jī)制的簡(jiǎn)單理想化。
神經(jīng)網(wǎng)絡(luò)是一種層次化的模型,由多層神經(jīng)元組成,每一層都可以對(duì)輸入數(shù)據(jù)進(jìn)行特征提取和轉(zhuǎn)換。每一層的輸出作為下一層的輸入,從而形成了一種層層傳遞的結(jié)構(gòu)。無論輸入什么,神經(jīng)網(wǎng)絡(luò)都會(huì)生成一個(gè)答案,這跟人的神經(jīng)系統(tǒng)比較相似,因此神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別、語音識(shí)別中比較常用。
一個(gè)典型是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)之所以很有用,原因不僅在于它可以執(zhí)行各種任務(wù),還在于它可以通過逐步“根據(jù)樣例訓(xùn)練”來學(xué)習(xí)執(zhí)行這些任務(wù)。當(dāng)構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)來區(qū)分貓和狗的圖像時(shí),我們不需要編寫一個(gè)程序來明確地找到胡須,只需要展示很多關(guān)于什么是貓和什么是狗的樣例,然后讓神經(jīng)網(wǎng)絡(luò)從中“機(jī)器學(xué)習(xí)”如何區(qū)分它們即可。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練究竟是如何起效的呢?本質(zhì)上,我們一直在嘗試找到能使神經(jīng)網(wǎng)絡(luò)成功復(fù)現(xiàn)給定樣例的權(quán)重。然后,我們依靠神經(jīng)網(wǎng)絡(luò)在這些樣例“之間”進(jìn)行“合理”的“插值”(或“泛化”)。想象一個(gè)讓神經(jīng)網(wǎng)絡(luò)擬合指定函數(shù)的過程。
為了找出“我們距離我們有多遠(yuǎn)”,我們計(jì)算通常所說的“損失函數(shù)”(有時(shí)也稱為“成本函數(shù)”)。這里我們使用一個(gè)簡(jiǎn)單的 (L2) 損失函數(shù),它只是我們得到的值與真實(shí)值之間差異的平方和。我們看到的是,隨著訓(xùn)練過程的進(jìn)行,損失函數(shù)逐漸減?。ㄗ裱槍?duì)不同任務(wù)不同的特定“學(xué)習(xí)曲線”),直到我們達(dá)到網(wǎng)絡(luò)(至少達(dá)到良好近似)成功再現(xiàn)的點(diǎn)我們想要的功能:
最后一個(gè)要解釋的重要部分是如何調(diào)整權(quán)重以減少損失函數(shù)。數(shù)值分析提供了多種技術(shù)來找到此類情況下的最小值。但典型的方法是逐步遵循從我們之前的 w1、w2 開始的最陡下降路徑:
實(shí)際上,“深度學(xué)習(xí)”在2012年左右的重大突破與如下發(fā)現(xiàn)有關(guān):與權(quán)重相對(duì)較少時(shí)相比,在涉及許多權(quán)重時(shí),進(jìn)行最小化可能會(huì)更容易。換句話說,有時(shí)候用神經(jīng)網(wǎng)絡(luò)解決復(fù)雜問題比解決簡(jiǎn)單問題更容易——這似乎有些違反直覺。大致原因在于,當(dāng)有很多“權(quán)重變量”時(shí),高維空間中有很多不同的的方向可以引導(dǎo)我們達(dá)到最小值;而當(dāng)變量較少時(shí),很容易陷入局部最小值的“山湖”,無法找到“出去的方向”。
在典型情況下,有許多不同的權(quán)重集合可以使神經(jīng)網(wǎng)絡(luò)具有幾乎相同的性能。在實(shí)際的神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,通常會(huì)做出許多隨機(jī)選擇,導(dǎo)致產(chǎn)生一些“不同但等效”的解決方案。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練的藝術(shù)
1. 針對(duì)特定的任務(wù)使用何種神經(jīng)網(wǎng)絡(luò)架構(gòu)
在過去的十年中,神經(jīng)網(wǎng)絡(luò)訓(xùn)練的藝術(shù)已經(jīng)有了許多進(jìn)展。是的,它基本上是一門藝術(shù)。有時(shí),尤其是回顧過去時(shí),人們?cè)谟?xùn)練中至少可以看到一絲“科學(xué)解釋”的影子了。但是在大多數(shù)情況下,這些解釋是通過試錯(cuò)發(fā)現(xiàn)的,并且添加了一些想法和技巧,逐漸針對(duì)如何使用神經(jīng)網(wǎng)絡(luò)建立了一門重要的學(xué)問。
有人可能會(huì)認(rèn)為,每種特定的任務(wù)都需要不同的神經(jīng)網(wǎng)絡(luò)架構(gòu)。但事實(shí)上,即使對(duì)于看似完全不同的任務(wù),同樣的架構(gòu)通常也能夠起作用。這反映了我們通常試圖讓神經(jīng)網(wǎng)絡(luò)去完成的任務(wù)是“類人”任務(wù),而神經(jīng)網(wǎng)絡(luò)可以捕捉相當(dāng)普遍的“類人過程”。
在早期發(fā)展階段,人們傾向于認(rèn)為應(yīng)該“讓神經(jīng)網(wǎng)絡(luò)做盡可能少的事”。例如,在將語音轉(zhuǎn)換為文本時(shí),人們認(rèn)為應(yīng)該先分析出語音的音頻,再將其分解為音素等。但是后來發(fā)現(xiàn),最好的方法通常是嘗試訓(xùn)練神經(jīng)網(wǎng)絡(luò)來“解決端到端的問題”,讓它自己“發(fā)現(xiàn)”必要的中間特征、編碼等。
還有一種想法是,應(yīng)該將復(fù)雜的獨(dú)立組件引入神經(jīng)網(wǎng)絡(luò),以便讓它有效地“顯式實(shí)現(xiàn)特定的算法思想”。但結(jié)果再次證明,這在大多數(shù)情況下并不值得;相反,最好只處理非常簡(jiǎn)單的組件,并讓它們“自我組織”來實(shí)現(xiàn)(可能)等效的算法思想。
這并不意味著沒有與神經(jīng)網(wǎng)絡(luò)相關(guān)的“結(jié)構(gòu)化思想”。例如,CNN在圖像處理任務(wù)中似乎很有用,就像RNN在文本處理任務(wù)中一樣。
2. 如何獲取訓(xùn)練數(shù)據(jù)
“遷移學(xué)習(xí)”可以將已經(jīng)在另一個(gè)神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)到的重要特征列表“遷移過來”,從而顯著降低對(duì)數(shù)據(jù)規(guī)模的要求。
“數(shù)據(jù)增強(qiáng)”的變化并不一定要很復(fù)雜才有用。例如,自動(dòng)駕駛可以使用在模擬的游戲環(huán)境中獲取的數(shù)據(jù)。
“無監(jiān)督學(xué)習(xí)”可以用在訓(xùn)練ChatGPT這樣的任務(wù)重。
3. “足夠大的神經(jīng)網(wǎng)絡(luò)當(dāng)然無所不能!”
ChatGPT的能力令人印象深刻,以至于人們可能會(huì)想象,如果能夠在此基礎(chǔ)上繼續(xù)努力,訓(xùn)練出越來越大的神經(jīng)網(wǎng)絡(luò),那么它們最終將“無所不能”。對(duì)于那些容易被人類思維理解的事物,這確實(shí)很可能是成立的。但我們從科學(xué)在過去幾百年間的發(fā)展中得出的教訓(xùn)是,有些事物雖然可以通過形式化的過程來弄清楚,但并不容易立即為人類思維所理解。
說到底,可學(xué)習(xí)性和計(jì)算不可約性之間存在根本的矛盾。學(xué)習(xí)實(shí)際上涉及通過利用規(guī)律來壓縮數(shù)據(jù),但計(jì)算不可約性意味著最終對(duì)可能存在的規(guī)則有一個(gè)限制。
"計(jì)算不可約性"(Computational irreducibility)是由著名物理學(xué)家斯蒂芬·沃爾夫勒姆(Stephen Wolfram)在其探索復(fù)雜系統(tǒng)和細(xì)胞自動(dòng)機(jī)理論時(shí)提出的一個(gè)概念。這個(gè)概念主要涉及到一類系統(tǒng),這些系統(tǒng)的未來狀態(tài)只能通過逐步模擬或執(zhí)行其所有步驟來確定,而不能通過更簡(jiǎn)單的方式或縮減的公式直接預(yù)測(cè)。
簡(jiǎn)而言之,如果一個(gè)系統(tǒng)是計(jì)算不可約的,那么為了得到系統(tǒng)未來的狀態(tài),沒有比實(shí)際按照規(guī)則一步一步計(jì)算更快的方法。你不能通過某種捷徑或者更高效的公式來預(yù)測(cè)它將來的狀態(tài),即使是使用最強(qiáng)大的計(jì)算機(jī)和最聰明的數(shù)學(xué)家也無法找到一個(gè)系統(tǒng)的簡(jiǎn)化模型來替代完整地、逐步地計(jì)算過程。
例如,在細(xì)胞自動(dòng)機(jī)(如著名的康威生命游戲)中,系統(tǒng)的發(fā)展規(guī)則可以非常簡(jiǎn)單,但產(chǎn)生的模式和結(jié)構(gòu)卻可能極其復(fù)雜,以至于我們無法預(yù)測(cè)它未來的狀態(tài),除非逐步模擬它的每一個(gè)時(shí)間步。這顯示出了在看似簡(jiǎn)單的規(guī)則之下潛在的復(fù)雜性和計(jì)算不可約性。
計(jì)算不可約性是現(xiàn)代計(jì)算理論、復(fù)雜系統(tǒng)研究以及物理學(xué)中的一個(gè)重要觀點(diǎn),它挑戰(zhàn)了傳統(tǒng)的縮減主義思維,即通過簡(jiǎn)化系統(tǒng)來理解系統(tǒng)的行為。在計(jì)算不可約的視角下,簡(jiǎn)化可能不再是一種可行的策略,復(fù)雜性和未可知性成為了系統(tǒng)固有的特點(diǎn)。這種理論對(duì)于理解生命現(xiàn)象、社會(huì)復(fù)雜性以及宇宙的基本規(guī)則都具有深遠(yuǎn)的意義。
能力和可訓(xùn)練性之間存在著一個(gè)終極的平衡:你越想讓一個(gè)系統(tǒng)“真正利用”其計(jì)算能力,它就會(huì)表現(xiàn)出計(jì)算不可約性,從而越不容易被訓(xùn)練;而它在本質(zhì)上越易于訓(xùn)練,就越不能進(jìn)行復(fù)雜的計(jì)算。
神經(jīng)網(wǎng)絡(luò)確實(shí)可以注意到自然界中我們通過“無輔助的人類思維”也能輕易注意到的規(guī)律。但是,如果我們想解決數(shù)學(xué)或計(jì)算科學(xué)領(lǐng)域的問題,神經(jīng)網(wǎng)絡(luò)將無法完成任務(wù),除非它能有效地使用一個(gè)“普通”的計(jì)算系統(tǒng)作為“工具”。
神經(jīng)網(wǎng)絡(luò)能夠在寫文章的任務(wù)中獲得成功的原因是,寫文章實(shí)際上是一個(gè)“計(jì)算深度較淺”的問題,比我們想象的簡(jiǎn)單。
“嵌入”的概念
神經(jīng)網(wǎng)絡(luò),至少以目前的設(shè)置來說,基本上是基于數(shù)的。因此,如果要用它來處理像文本這樣的東西,我們需要一種用數(shù)表示文本的方法。當(dāng)然,我們可以(本質(zhì)上和ChatGPT一樣)從為字典中的每個(gè)詞分配一個(gè)數(shù)開始。但有一個(gè)重要的思想—也是ChatGPT的中心思想—更勝一籌。這就是“嵌入”(embedding)的思想。可以將嵌入視為一種嘗試通過數(shù)的數(shù)組來表示某些東西“本質(zhì)”的方法,其特性是“相近的事物”由相近的數(shù)表示。
embedding是一種將詞匯、句子或更大的文本塊轉(zhuǎn)化為數(shù)值向量的方法,這些向量可以被機(jī)器學(xué)習(xí)模型理解和處理。"嵌入"這個(gè)詞在此上下文中的含義是,文本信息被"嵌入"到高維空間中,每個(gè)維度都代表文本的某種特性。
比如“貓”這個(gè)單詞文本,可能會(huì)在訓(xùn)練過程中被解析成數(shù)百個(gè)數(shù)字,這些數(shù)字都代表了這個(gè)單詞某個(gè)抽象的本質(zhì)特性,他們可能與語義相似性、語法關(guān)系、共現(xiàn)模式有關(guān)系,但具體的含義我們并不知道,最后會(huì)將這些數(shù)字放進(jìn)一個(gè)高維向量中。
可以通過查看大量文本,創(chuàng)建很多的詞向量,同時(shí)收集將一堆有關(guān)聯(lián)的詞(比如alligator 短吻鱷和crocodile鱷魚在相似的句子中經(jīng)常幾乎可以互換),相似的詞向量之間距離較近,不相似詞向量距離較遠(yuǎn)。
這種詞向量有以下幾個(gè)特點(diǎn):
- 捕獲了詞之間的語義相似性關(guān)系
- 可以通過神經(jīng)網(wǎng)絡(luò)有效地學(xué)習(xí)獲得
- 方便后續(xù)的語義運(yùn)算,通過向量運(yùn)算實(shí)現(xiàn)語義組合
- 是文本的分布式數(shù)值表示,便于統(tǒng)計(jì)學(xué)習(xí)
有了詞向量,語言模型就可以通過比較兩個(gè)或更多詞向量之間的距離或角度,來理解詞之間的關(guān)系,衡量文本之間的相似性。
embedding讓語義運(yùn)算有了數(shù)值基礎(chǔ),是神經(jīng)網(wǎng)絡(luò)模型處理語義的基石,也是 ChatGPT 等大模型的核心技術(shù):先用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)大量文本數(shù)據(jù),獲得每個(gè)詞的向量表達(dá),然后在此向量空間中進(jìn)行語義運(yùn)算,從而達(dá)到理解語義的目的。
ChatGPT的內(nèi)部原理
好的,我們終于準(zhǔn)備好討論 ChatGPT 的內(nèi)部?jī)?nèi)容了。是的,歸根結(jié)底,它是一個(gè)巨大的神經(jīng)網(wǎng)絡(luò)——目前是所謂的 GPT-3 網(wǎng)絡(luò)的一個(gè)版本,擁有 1750 億個(gè)權(quán)重。在很多方面,這是一個(gè)神經(jīng)網(wǎng)絡(luò),與我們討論過的其他神經(jīng)網(wǎng)絡(luò)非常相似。但它是一個(gè)專門為處理語言而設(shè)置的神經(jīng)網(wǎng)絡(luò)。它最顯著的特點(diǎn)是一種稱為“Transformer”的神經(jīng)網(wǎng)絡(luò)架構(gòu)。
Transformer的想法是對(duì)組成一段文本的標(biāo)記序列做一些至少有些相似的事情。但 Transformer 不是僅僅在序列中定義一個(gè)可以存在連接的固定區(qū)域,而是引入了“注意力”的概念——即更多地“關(guān)注”序列的某些部分而不是其他部分。也許有一天,可以啟動(dòng)一個(gè)通用神經(jīng)網(wǎng)絡(luò)并通過訓(xùn)練來完成所有的定制工作。但至少到目前為止,在實(shí)踐中“模塊化”事物似乎至關(guān)重要——就像Transformer所做的那樣,也可能就像我們的大腦所做的那樣。
ChatGPT到底在做什么?在任何給定時(shí)刻,它都有一定數(shù)量的文本,其目標(biāo)是為下一個(gè)要添加的標(biāo)記提供適當(dāng)?shù)倪x擇。
它分三個(gè)基本階段運(yùn)行。首先,它獲取到目前為止與文本相對(duì)應(yīng)的標(biāo)記序列,并找到表示這些標(biāo)記的嵌入(即數(shù)字?jǐn)?shù)組)。然后,它以“標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)方式”對(duì)這種嵌入進(jìn)行操作,值 “像漣漪一樣依次通過” 網(wǎng)絡(luò)中的各層,以產(chǎn)生新的嵌入(即新的數(shù)字?jǐn)?shù)組)。然后,它獲取該數(shù)組的最后一部分,并從中生成一個(gè)包含大約 50,000 個(gè)值的數(shù)組,這些值將轉(zhuǎn)換為不同可能的下一個(gè)標(biāo)記的概率。
一個(gè)關(guān)鍵點(diǎn)是,這個(gè)管道的每個(gè)部分都是由神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的,其權(quán)重由網(wǎng)絡(luò)的端到端訓(xùn)練決定。換句話說,實(shí)際上,除了整體架構(gòu)之外,沒有任何東西是“明確設(shè)計(jì)的”;一切都是從訓(xùn)練數(shù)據(jù)中“學(xué)到”的。
首先是嵌入模塊:
輸入是一個(gè)由 n 個(gè)標(biāo)記組成的向量(如上一節(jié)中所示,用 1 到大約 50,000 的整數(shù)表示)。這些標(biāo)記中的每一個(gè)都被(通過單層神經(jīng)網(wǎng)絡(luò))轉(zhuǎn)換為嵌入向量(GPT-2 的長(zhǎng)度為 768,ChatGPT 的 GPT-3 的長(zhǎng)度為 12,288)。同時(shí),還有一條“輔助路徑”,它采用標(biāo)記的(整數(shù))位置序列,并根據(jù)這些整數(shù)創(chuàng)建另一個(gè)嵌入向量。最后,將標(biāo)記值和標(biāo)記位置的嵌入向量加在一起,以從嵌入模塊生成最終的嵌入向量序列。
以下是嵌入模塊的作用,對(duì)字符串 ??hello hello hello hello hello hello hello hello hello hello bye bye bye bye bye bye bye bye bye?
? 進(jìn)行操作:
在嵌入模塊之后是Transformer的“主要事件”:一系列所謂的“注意力塊”(GPT-2 為 12 個(gè),ChatGPT 的 GPT-3 為 96 個(gè))。這一切都非常復(fù)雜,讓人想起難以理解的大型工程系統(tǒng)或者生物系統(tǒng)。以下是(GPT-2中)單個(gè)“注意力塊”的示意圖:
在每個(gè)這樣的注意力塊中,都有一組“注意力頭”(GPT-2 為 12 個(gè),ChatGPT 的 GPT-3 為 96 個(gè))——每個(gè)注意力頭都獨(dú)立地對(duì)嵌入向量中的不同值塊進(jìn)行操作。(是的,我們不知道為什么分割嵌入向量是個(gè)好主意,也不知道它的不同部分“意味著什么”;這只是“被發(fā)現(xiàn)有效”的事情之一)
那么注意力頭是做什么的呢?基本上,它們是一種在標(biāo)記序列(即在迄今為止生成的文本中)中“回顧”的方式,并以一種有用的形式“打包過去的內(nèi)容”,以便找到下一個(gè)標(biāo)記。在前面的部分,我們討論了使用??2-gram?
?的概率根據(jù)上一個(gè)詞選擇下一個(gè)詞。Transformer 中的“注意力”機(jī)制所做的是允許“關(guān)注”更早的詞,因此可能捕獲到(例如)動(dòng)詞可以如何被聯(lián)系到出現(xiàn)在在句子中許多詞之前的名詞。在更詳細(xì)地說,注意力頭所做的就是用一定的權(quán)重重新加權(quán)組合與不同標(biāo)記相關(guān)的嵌入向量中的塊。
經(jīng)過注意力頭處理后,生成的“重新加權(quán)嵌入向量”(GPT-2 的長(zhǎng)度為 768,ChatGPT 的 GPT-3 的長(zhǎng)度為 12,288)通過標(biāo)準(zhǔn)的“全連接”神經(jīng)網(wǎng)絡(luò)層。
因此,在經(jīng)過一個(gè)注意力塊之后,我們得到了一個(gè)新的嵌入向量,然后該向量依次通過其他注意力塊(GPT-2 總共 12 個(gè);GPT-3 總共 96 個(gè))。每個(gè)注意力塊都有自己特定的“注意力”和“全連接”權(quán)重模式。
在經(jīng)歷了所有這些注意力塊之后,Transformer的實(shí)際效果是什么?本質(zhì)上,它是將標(biāo)記序列的原始嵌入集合轉(zhuǎn)換為最終集合。然后,ChatGPT的特定工作方式是選取該集合中的最后一個(gè)嵌入,并對(duì)其進(jìn)行“解碼”,以生成應(yīng)該出現(xiàn)的下一個(gè)標(biāo)記的概率列表。
LLM在做什么?它為何才能做到這些
那么,ChatGPT到底在做什么?它為什么能做到這些?
ChatGPT的基本概念在某種程度上相當(dāng)簡(jiǎn)單:首先從互聯(lián)網(wǎng)、書籍等獲取人類創(chuàng)造的海量文本樣本,然后訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來生成“與之類似”的文本。特別是,它能夠從“提示”開始,繼續(xù)生成“與其訓(xùn)練數(shù)據(jù)相似的文本”。
訓(xùn)練ChatGPT的重頭戲是在向其“展示”來自互聯(lián)網(wǎng)、書籍等的大量現(xiàn)有文本,但事實(shí)證明訓(xùn)練還包括另一個(gè)(顯然非常重要的)部分。
一旦根據(jù)被展示的原始文本語料庫完成“原始訓(xùn)練”,ChatGPT內(nèi)部的神經(jīng)網(wǎng)絡(luò)就會(huì)準(zhǔn)備開始生成自己的文本,根據(jù)提示續(xù)寫,等等。盡管這些結(jié)果通??雌饋砗侠恚鼈兒苋菀祝ㄌ貏e是在較長(zhǎng)的文本片段中)以“非類人”的方式“偏離正軌”。這不是通過對(duì)文本進(jìn)行傳統(tǒng)的統(tǒng)計(jì)可以輕易檢測(cè)到的。
在經(jīng)過所有的預(yù)訓(xùn)練后,你只需要把東西告訴它一次,它就能“記住”——至少記住足夠長(zhǎng)的時(shí)間來生成一段文本。這里面到底發(fā)生了什么事呢?也行“你能告訴它的一切已經(jīng)在里面的某個(gè)地方了”,你只是把它引導(dǎo)到了正確的位置。但這似乎不太可能,更可能的是雖然這些元素已經(jīng)在里面了,但具體情況是由類似于“這些元素之間的軌跡”所定義的,而你告訴它的就是這條軌跡。
就像人類一樣,如果LLM接受到一些匪夷所思、出乎意料、完全不符合它已有框架的東西,它就似乎無法成功地“整合”這些信息。只有在這些信息基本上以一種相對(duì)簡(jiǎn)單的方式依賴于它已有的框架時(shí),它才能夠進(jìn)行“整合”。
人類語言,及其生成所涉及的思維過程,一直被視為復(fù)雜性的巔峰。人類大腦“僅”有約1000億個(gè)神經(jīng)元(及約100萬億個(gè)連接),卻能夠做到這一切,確實(shí)令人驚嘆。人們可能會(huì)認(rèn)為,大腦中不只有神經(jīng)元網(wǎng)絡(luò),還有某種具有尚未發(fā)現(xiàn)的物理特性的新層。但是有了ChatGPT之后,我們得到了一條重要的新信息:一個(gè)連接數(shù)與大腦神經(jīng)元數(shù)量相當(dāng)?shù)募兇獾娜斯ど窠?jīng)網(wǎng)絡(luò),就能夠出色地生成人類語言。
那么,產(chǎn)生“有意義的人類語言”需要什么?
第一個(gè)是語言的語法,語言不僅僅是把一些詞隨機(jī)拼湊在一起;相反,不同類型的詞之間有相當(dāng)明確的語法規(guī)則。
第二個(gè)是邏輯,在亞里士多德發(fā)現(xiàn)的三段論(syllogistic)形式中,邏輯基本上用來說明遵循一定模式的句子是合理的,而其他句子則不合理。
ChatGPT“僅僅”是從其積累的“傳統(tǒng)智慧的統(tǒng)計(jì)數(shù)據(jù)”中提取了一些“連貫的文本線索”。但是,結(jié)果的類人程度已經(jīng)足夠令人驚訝了,因此,有意義的人類語言實(shí)際上比我們所知道的更加結(jié)構(gòu)化、更加簡(jiǎn)單,最終可能以相當(dāng)簡(jiǎn)單的規(guī)則來描述如何組織這樣的語言。
ChatGPT的成功可能向我們揭示了人類思維本質(zhì)的一些基本規(guī)律。
人類語言是不精確的,這主要是因?yàn)樗鼪]有與特定的計(jì)算實(shí)現(xiàn)相“結(jié)合”,其意義基本上只由其使用者之間的“社會(huì)契約”定義。但是,計(jì)算語言在本質(zhì)上具有一定的精確性,因?yàn)樗付ǖ膬?nèi)容最終總是可以“在計(jì)算機(jī)上毫無歧義地執(zhí)行”。
比如在自然語言中,“少年”這個(gè)詞的范圍是模糊不清的,可能指代從12歲到18歲的人。但在計(jì)算語言中,我們可以精確定義: 少年 = If[age >= 12 && age < 18, True, False] 這里使用了編程語言中的邏輯語句,明確限定了“少年”的準(zhǔn)確年齡范圍。
LLM,如ChatGPT,是如何在語言方面獲得如此巨大的成功的呢?答案可能是語言在根本上比它看起來更簡(jiǎn)單。這意味著,即使是具有簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的LLM,也能夠成功地捕捉人類語言的“本質(zhì)”和背后的思維方式。在訓(xùn)練過程中,LLM已經(jīng)通過某種方式“隱含地發(fā)現(xiàn)”了使一切成為可能的語言規(guī)律。
之前討論過,在ChatGPT內(nèi)部,任何文本都可以被有效地表示為一個(gè)由數(shù)組成的數(shù)組,可以將其視為某種“語言特征空間”中一個(gè)點(diǎn)的坐標(biāo)。因此,ChatGPT續(xù)寫一段文本,就相當(dāng)于在語言特征空間中追蹤一條軌跡。現(xiàn)在我們會(huì)問:是什么讓這條軌跡與我們認(rèn)為有意義的文本相對(duì)應(yīng)呢?是否有某種“語義運(yùn)動(dòng)定律”定義(或至少限制)了語言特征空間中的點(diǎn)如何在保持“有意義”的同時(shí)到處移動(dòng)?
產(chǎn)生“有意義的人類語言”需要什么?過去,我們可能認(rèn)為人類大腦必不可少。但現(xiàn)在我們知道,ChatGPT的神經(jīng)網(wǎng)絡(luò)也可以做得非常出色。這或許就是我們所能達(dá)到的極限,沒有比這更簡(jiǎn)單(或更易于人類理解)的方法可以使用了。不過,我強(qiáng)烈懷疑ChatGPT的成功暗示了一個(gè)重要的“科學(xué)”事實(shí):有意義的人類語言實(shí)際上比我們所知道的更加結(jié)構(gòu)化、更加簡(jiǎn)單,最終可能以相當(dāng)簡(jiǎn)單的規(guī)則來描述如何組織這樣的語言。
本文轉(zhuǎn)自 AI生成未來 ,作者:楊木易
