世界的參數(shù)倒影:為何GPT通過Next Token Prediction可以產(chǎn)生智能(1)
來源:機(jī)器之心
GPT是鸚鵡學(xué)舌,還是真的具有類人智能?帶你一探究竟。
「兩位說英語的荒島幸存者被困在相鄰島嶼上,中間隔著危險(xiǎn)水域。幸運(yùn)的是,他們發(fā)現(xiàn)了前任居民留下的電報(bào)機(jī),電報(bào)機(jī)通過一條水下電纜連接起來,他們能夠通過電報(bào)傳遞信息。但是,他們不知道的是:附近水域里,生活著一個(gè)具備超級(jí)智能的章魚,它劫持了水下電纜并****了他們之間傳送的消息。盡管章魚不懂英語,但其超級(jí)智能使其能夠檢測到電報(bào)信息文字的統(tǒng)計(jì)模式,并能準(zhǔn)確表示各種電報(bào)信號(hào)間的統(tǒng)計(jì)關(guān)系。在章魚覺得自己已經(jīng)學(xué)好這些統(tǒng)計(jì)規(guī)律之后,它切斷水下電纜,將自己兩個(gè)長觸手定位在電纜的兩個(gè)末端,基于它所識(shí)別出來的統(tǒng)計(jì)模式,接收并自己來回復(fù)兩名漂流者的電報(bào)信號(hào)。無論兩位幸存者是否注意到交流對象已發(fā)生變化,章魚發(fā)送出去的信息,在本質(zhì)上似乎沒有任何含義。畢竟,章魚只是遵循它從人類之間的前期交流中學(xué)到的統(tǒng)計(jì)模式,而并沒有看到過任何人類對信號(hào)的解釋,比如 “椰子” 或 “海水” 所代表的真實(shí)含義。此外,章魚甚至可能都不明白這些信號(hào)是具有意義的,或起到了促進(jìn)交流的功能?!?nbsp;—— 「章魚測試(The Octopus Test)」- Bender & Koller
如果我們把「章魚測試」里的章魚換成 ChatGPT 或 GPT 4,您會(huì)怎么看這個(gè)問題呢?也就是說,下述兩種觀點(diǎn),您支持哪一種呢?一種觀點(diǎn)與 “章魚測試” 看法類似,認(rèn)為 GPT 4 這種 LLM 模型僅僅學(xué)會(huì)了語言中的單詞共現(xiàn)等淺層的表面統(tǒng)計(jì)關(guān)系,其實(shí)并未具備智能,只是類似鸚鵡學(xué)舌的語言片段縫合怪而已;另外一種觀點(diǎn)則認(rèn)為:GPT 4 不僅學(xué)會(huì)了語言元素間的表面統(tǒng)計(jì)關(guān)系,而且學(xué)到了人類語言甚至包括物理世界的內(nèi)在運(yùn)行規(guī)律,文字是由內(nèi)在智能產(chǎn)生的,所以 LLM 具備類人智能。
這兩種觀點(diǎn)針鋒相對,我不確定您屬于哪一派。目前無論是學(xué)術(shù)界,還是社會(huì)層面,其實(shí)持有兩方觀點(diǎn)的人數(shù)都不少,相互之間爭論很激烈。比如不認(rèn)為大語言模型具備智能的反方知名代表人物,AI 圈子里的大佬代表是 LeCun,語言學(xué)界代表人物是喬姆斯基,都否認(rèn)通過 Next Token Prediction 這種方式訓(xùn)練出來的大語言模型能夠具備智能;而正方代表人物也很多,OpenAI 不說了,毫無疑問是最具影響力的正方代表,從目前的公開言論看,Hinton 老爺子很明顯也持正方觀點(diǎn),而且特別正方,不僅認(rèn)為 GPT 4 具備類人智能,而且覺得將來人類這種碳基智能很可能是 LLM 這種硅基智能的引導(dǎo)啟動(dòng)程序 (Booster),在這點(diǎn)上 Hinton 和馬斯克(這是簡稱,全名為:埃隆?電動(dòng)車之王?火箭先驅(qū)?Twitter 再造者?環(huán)保先鋒?火星殖民者?OpenAI 唾棄者?馬斯克)的看法是類似的。
目前規(guī)模夠大的 LLM 模型,在訓(xùn)練基座模型的時(shí)候,都采用「Next Token Prediction,NTP」 (后文為了書寫簡潔,有時(shí)會(huì)簡稱為 NTP) 任務(wù)。Next Token Prediction 如此簡單的操作,就是通過語言中前面的單詞,來產(chǎn)生下一個(gè)單詞,很明顯這樣學(xué)到的不就是單詞之間的表層統(tǒng)計(jì)關(guān)系嗎?對于持正方觀點(diǎn)的人士來說,這個(gè)問題其實(shí)并不好反駁,因?yàn)檎б豢瓷先ゴ_實(shí)如此,我相信絕大多數(shù)正方人士很難給出有理有據(jù)的另反方人士信服的解釋。
至于我本人,如果看過我年初寫的《張俊林:通向 AGI 之路:大型語言模型(LLM)技術(shù)精要》,很容易看出持正方立場。其實(shí)當(dāng)時(shí)在那篇文章的最初版本里,有一節(jié)內(nèi)容,主題就是討論 NTP 為何會(huì)產(chǎn)生智能。按照 23 年 1 月份版本的我當(dāng)時(shí)對 LLM 的理解,把 NTP 產(chǎn)生智能歸納為「通過 NTP 任務(wù),LLM 在模型參數(shù)里學(xué)到了一個(gè)****的知識(shí)圖譜,當(dāng)輸入 Prompt 的時(shí)候,Prompt 包含的概念啟動(dòng)知識(shí)圖譜相關(guān)節(jié)點(diǎn),然后在知識(shí)圖譜上按照 < 激活 - 擴(kuò)散 > 理論引發(fā)知識(shí)間的激活擴(kuò)散和信息傳遞,由此導(dǎo)致 LLM 產(chǎn)生了智能」。當(dāng)時(shí)版本的我是這么理解這個(gè)問題的答案的,現(xiàn)在版本的我再去審視這個(gè)看法,雖然不能說是錯(cuò)的,但是很明顯這種認(rèn)知還是淺了些或粗略了些。當(dāng)時(shí),由于那篇文章已有內(nèi)容已經(jīng)太長,再加上支持上述看法的依據(jù)不太充足,所以我在發(fā)文的時(shí)候把那節(jié)內(nèi)容刪掉了。
本文專門探討這個(gè)主題,我試圖梳理歸納目前已有的一些片段性的證據(jù),對上述問題給出一個(gè)相對有依據(jù)的回答。其實(shí)目前正方并沒有專門的研究來解釋這個(gè)問題,但是,如果把各種已知用于研究其它問題的研究結(jié)論片段聯(lián)系到一起來看,即我們可以把尋找這個(gè)問題的答案當(dāng)作一個(gè)拼圖游戲,在已知研究的拼圖碎片基礎(chǔ)上,如再加一些合理的推論和假設(shè),我認(rèn)為正方大致是能給出一些起碼看似合理的解釋的。本文在結(jié)構(gòu)上首先會(huì)比較細(xì)致地介紹下 OpenAI 對這個(gè)問題的看法,這個(gè)對大多數(shù)人來說應(yīng)該是個(gè)很新穎的角度,之后會(huì)收集匯總現(xiàn)有的研究結(jié)論,之后會(huì)給出我認(rèn)為還算合理的解釋。
天平的兩端:壓縮即智能
假設(shè)有一個(gè)想象中的天平,天平的左端用來稱量大語言模型的數(shù)據(jù)壓縮能力,天平的右端用來稱量大語言模型的智能水準(zhǔn)。問題是:這個(gè)天平的稱量結(jié)果是可信的嗎?換句話說,如果大語言模型具備越強(qiáng)的數(shù)據(jù)壓縮能力,是否意味著它具備越強(qiáng)的 AGI 智能呢?
OpenAI 肯定是相信兩者間存在等價(jià)性的,目前看,這可能是推動(dòng) OpenAI 大模型發(fā)展方向的一個(gè)核心理念。OpenAI 首席科學(xué)家 Ilya Sutskever 在今年早期的一些公開訪談初步透漏了這個(gè)思路。而后續(xù) OpenAI 負(fù)責(zé)大模型團(tuán)隊(duì)的 Jack Rae 在 Stanford MLSys 研討會(huì)上做了以「Compression for AGI」 為主題的報(bào)告,則是從理論層面,概念性地論證了這一理念。
本部分主要參照 Jack Rae 報(bào)告內(nèi)容,轉(zhuǎn)述 OpenAI 堅(jiān)信的 “壓縮即智能” 論證過程。我們先從一個(gè)數(shù)據(jù)壓縮傳輸?shù)募傧雽?shí)驗(yàn)講起。
利用 LLM 進(jìn)行數(shù)據(jù)壓縮
我們假設(shè)小帥和小美分別住在地球和火星,現(xiàn)在小帥獲得一批機(jī)密數(shù)據(jù) ,需要以最小傳輸成本傳送給遠(yuǎn)在火星的小美,小帥計(jì)劃通過 LLM 模型比如 GPT 來對數(shù)據(jù)進(jìn)行壓縮,然后把壓縮后的數(shù)據(jù)傳給小美,以此來減少傳輸數(shù)據(jù)數(shù)量。同時(shí),他希望信息壓縮是無損的,也就是說,小美要能夠根據(jù)拿到的壓縮數(shù)據(jù),利用一定方法完整恢復(fù)原始數(shù)據(jù),不能有任何差異。這個(gè)事情看似不太容易做到,怎么辦呢?
首先,小帥把 GPT 模型的代碼,包括代碼本身、初始化方法以及隨機(jī)種子等信息傳給小美,小美根據(jù)小帥傳過來的 GPT 模型的信息,利用同樣的代碼、初始化方法以及隨機(jī)種子,復(fù)制并初始化了一份自己的 GPT,以此來讓自己手上的 GPT 模型和小帥手上的模型,在初始狀態(tài)保持一致。
接下來,小帥以 Next Token Prediction 作為任務(wù),以 作為訓(xùn)練數(shù)據(jù),啟動(dòng) GPT 模型的訓(xùn)練過程,訓(xùn)練過程本身其實(shí)就是數(shù)據(jù)壓縮過程。我們假設(shè)小帥已經(jīng)對數(shù)據(jù) 通過 GPT 進(jìn)行了壓縮,對應(yīng)的壓縮數(shù)據(jù)為,并將這批壓縮數(shù)據(jù)陸續(xù)傳給了小美,現(xiàn)在準(zhǔn)備傳送數(shù)據(jù) 。我們在這里按下 “慢放” 鍵,仔細(xì)觀察下 GPT 是如何對數(shù)據(jù) 進(jìn)行壓縮編碼和解碼的。
編碼階段:我們的目的是利用 GPT 壓縮 數(shù)據(jù),小帥以 作為 GPT 的輸入,利用當(dāng)前版本的 GPT 模型 做一次 Next Token 預(yù)測。假設(shè) Token 詞典是,則 GPT 模型經(jīng)過 Next Token 預(yù)測,產(chǎn)生了詞典 中每一個(gè)單詞的生成概率, 中有些單詞生成概率大,有些生成概率小,所有單詞的生成概率之和為 1,于是形成 的概率分布 。若設(shè)原始數(shù)據(jù) ,此時(shí),可以利用某種數(shù)據(jù)壓縮算法,比如算術(shù)編碼(Algorithm Coding, AC ),根據(jù) 和 ,將 壓縮成數(shù)據(jù) (至于算術(shù)編碼如何運(yùn)作,稍后會(huì)說明),即,于是小帥可以把得到的壓縮編碼 傳給小美。
另外,如果 GPT 根據(jù)上文 做 Next Token 預(yù)測得到概率最大的單詞不是標(biāo)準(zhǔn)答案 ,說明模型訓(xùn)練得還不夠好,于是小帥讓 GPT 執(zhí)行一次反向傳播,來修正 GPT 模型參數(shù),希望以后 GPT 遇到類似上文能夠更準(zhǔn)確地做出預(yù)測。經(jīng)過反向傳播,模型參數(shù)發(fā)生變化,GPT 模型從 修正到了版本。
可以看出,上述過程,其實(shí)就是針對某個(gè) Token 做的一次標(biāo)準(zhǔn)的 GPT 訓(xùn)練步驟,只不過我們平常訓(xùn)練 GPT 的時(shí)候,不會(huì)根據(jù) Next Token Prediction 得到的分布概率 以及算術(shù)編碼來獲得 的壓縮編碼 ,并記錄下來而已。如果你愿意,完全可以在訓(xùn)練過程中一步步產(chǎn)生每個(gè) 對應(yīng)的 ,并把它們記錄下來,這樣就會(huì)獲得數(shù)據(jù) 的一份無損壓縮編碼版本。
解碼階段:接收到小帥傳來的壓縮編碼 后,小美希望利用自己手上的 GPT 模型來恢復(fù)原始數(shù)據(jù) 。她也可以用算術(shù)編碼來逆向?qū)?nbsp; 進(jìn)行解碼,但是,若想解碼 信息不足,除了 外,還需知道 對應(yīng)的詞典 中單詞的概率分布 ,但是小帥并沒有把 傳過來,因?yàn)檫@個(gè)信息量太大,傳過來很不合算,如何是好?
小美可以用自己手上的 GPT 來產(chǎn)生缺失的詞典單詞概率分布 ,她把之前已經(jīng)解碼出的 作為模型的輸入,讓自己手上的 版本 GPT 模型做一次 Next Token 預(yù)測,于是 GPT 模型產(chǎn)生了單詞概率分布 ,這個(gè)與小帥的概率分布 是一樣的。得到 后,小美可以利用算術(shù)編碼對 解碼,即 ,這樣就恢復(fù)出原始數(shù)據(jù) 。類似的,如果小美手上的 GPT 此次 Next Token 預(yù)測最大概率單詞不是 ,她也讓 GPT 執(zhí)行一次反向傳播,修正模型參數(shù),將 GPT 模型從 版本修正到 版本。只有這樣,小美才能保證自己手上的 GPT 模型和小帥在傳輸過程中始終保持一致。
可以看出,解碼過程,其實(shí)就是小美也同步進(jìn)行 GPT 的一次訓(xùn)練步驟,并利用 Next Token Prediction 得到的詞典單詞概率分布 ,來幫助從壓縮數(shù)據(jù) 解碼到原始數(shù)據(jù) 。
如此這般,小帥和小美就通過兩人同步進(jìn)行 GPT 在 上的模型訓(xùn)練過程,完成了對數(shù)據(jù) 的壓縮和解壓,只要不斷重復(fù)上述過程,小帥就能把 中所有數(shù)據(jù)無損地傳送給小美,實(shí)現(xiàn)了通過 LLM 對數(shù)據(jù)的無損壓縮和解壓。所以我們可以說,GPT 模型的訓(xùn)練過程,其實(shí)就是對訓(xùn)練數(shù)據(jù)的無損壓縮過程,只不過我們平常訓(xùn)練的時(shí)候跳過了這個(gè)步驟而已。
算術(shù)編碼機(jī)制
上文未講解算術(shù)編碼的運(yùn)行機(jī)制,此處以簡單例子做簡要說明。如上圖所示,假設(shè)單詞詞典 包含 4 個(gè)單詞,我們要壓縮編碼的原始數(shù)據(jù) ,此時(shí) GPT 運(yùn)行 Next Token Prediction 后,詞典 中單詞對應(yīng)的概率分布 在上圖圖左列出,也就是說,此刻的 GPT 預(yù)測的 Next Token,生成概率最大的單詞是「too」,而不是 Ground Truth 「MaskNet」。
此時(shí),已知 和它對應(yīng)的 ,我們使用算術(shù)編碼來對數(shù)據(jù)進(jìn)行壓縮。首先,我們可以根據(jù)詞典中各個(gè)單詞的生成概率,把 0 到 1 的區(qū)間按照每個(gè)單詞的概率分值進(jìn)行切割,單詞生成概率數(shù)值越大,占據(jù)區(qū)間越長。于是,就可以得到每個(gè)單詞覆蓋區(qū)間的下界和上界,比如對于要編碼的單詞「MaskNet」,它的下界是 0.4,因?yàn)樽陨砩筛怕蕿?0.2,所以上界是 0.6。為了使得二進(jìn)制編碼后的長度盡可能短,算術(shù)編碼在 「MaskNet」“” 單詞覆蓋的 0.4 到 0.6 區(qū)間尋找對應(yīng)二進(jìn)制最短的十進(jìn)制小數(shù),很明顯在這個(gè)區(qū)間里,十進(jìn)制數(shù)字 0.5 是二進(jìn)制最短的數(shù)字,于是選擇 0.5 作為編碼數(shù)字,進(jìn)行數(shù)制轉(zhuǎn)換后得到二進(jìn)制 0.1,這個(gè)數(shù)字就是單詞 “MaskNet” 對應(yīng)的二進(jìn)制算術(shù)編碼,小帥只需要把小數(shù)點(diǎn)后的二進(jìn)制數(shù)字 1 發(fā)送給小美即可。
接著,介紹小美接收到二進(jìn)制數(shù)字 1 之后的解碼過程。如上文所述,小美利用自己的 GPT,也會(huì)得到一個(gè)相同的單詞分布概率 ,按照算術(shù)編碼原則,用這個(gè)分布概率切割 0 到 1 的數(shù)值區(qū)間,會(huì)得到和小帥一樣的一個(gè)切割圖。小美將二進(jìn)制 0.1 進(jìn)行進(jìn)制轉(zhuǎn)換,得到十進(jìn)制數(shù)字 0.5,然后查看 0.5 落在切割圖哪個(gè)單詞的上下界范圍內(nèi),會(huì)定位到單詞 “MaskNet”,于是解碼出 0.1 代表的對應(yīng)單詞 。
算術(shù)編碼的思想是很精妙的,它對輸入序列動(dòng)態(tài)編碼,能夠以小數(shù)來對整個(gè)輸入進(jìn)行二進(jìn)制編碼,編碼效率接近于香農(nóng)提出的熵極限。不過,在我們描述的場景下,因?yàn)槊總€(gè) 對應(yīng)的 在 GPT 訓(xùn)練過程中總是發(fā)生變化,所以某個(gè)分布 只需要壓縮或者解碼一個(gè) Token,其思路看起來就很簡單,當(dāng)面向較長的輸入序列進(jìn)行算術(shù)編碼,其方法可以參考:什么是算術(shù)編碼 。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。