大模型對語言有自己的理解,MIT論文揭示大模型「思維過程」
大模型對現實世界,可以形成自己的理解!
MIT的一項研究發現,隨著模型能力越強,它對現實的理解可能不僅是簡單模仿。
比如大模型沒有聞過氣味,是否就意味著它不能理解氣味?
研究發現,它可以自發模擬一些概念,方便理解。
這項研究意味著,大模型未來有希望更深入理解語言和世界,論文已被頂會ICML 24接收。
![](http://n.sinaimg.cn/spider20240819/799/w1080h519/20240819/49b2-e5624a5f1e4f94a4c93e6dfdfb283b11.jpg)
這篇論文的作者是MIT計算機與人工智能實驗室(CSAIL)華裔博士生Charles Jin和他的導師Martin Rinard教授。
研究當中,作者讓大模型只學習代碼文本,結果發現模型逐漸掌握了其背後的含義。
Rinard教授表示,這項研究直接針對現代人工智能的一個核心問題——
大模型的能力僅僅是由於大規模的統計相關性,還是對它們要處理的現實問題產生了有意義的理解?
![△](http://n.sinaimg.cn/spider20240819/700/w900h600/20240819/c581-e4581b4cc5ff20446e6013d1cf97d5f1.jpg)
同時這項研究也引發了不少討論。
有網民表示,雖然大模型對語言的理解可能和人類不同,但這項研究至少說明了模型做的絕不僅僅是對訓練數據的記憶。
![](http://n.sinaimg.cn/spider20240819/681/w1080h401/20240819/9dd0-c38f3d4052ac32a69f5501feddd00815.jpg)
01 讓大模型學習純代碼
為了探究大模型能否產生語義層面的理解,作者構建了一個由程序代碼及其對應輸入輸出組成的合成數據集。
這些代碼程序用一種名為Karel的教學語言編寫,主要用於實現機器人在2D網格世界中導航的任務。
這個網格世界由8×8的格子組成,每個格子可以包含障礙物、標記物或空地。機器人可以在格子間移動,並進行放置/拾取標記物等操作。
Karel語言包含5個原始操作——move(前進一步)、turnLeft(左轉90度)、turnRight(右轉90度)、pickMarker(拾取標記物)、putMarker(放置標記物),程序就是由這些原始操作的序列組成。
![](http://n.sinaimg.cn/spider20240819/19/w1080h539/20240819/be79-de5b96eca0c30e8488e794ed54f96cc4.jpg)
作者隨機生成了一個包含50萬個Karel程序的訓練集,每個程序長度在6到10之間。
每個訓練樣本由三部分組成:5個輸入狀態、5個輸出狀態和完整的程序代碼,輸入輸出狀態以特定格式編碼進字符串中。
利用這些數據,作者訓練了標準Transformer架構的CodeGen模型的一個變體。
訓練過程中,模型可以訪問每個樣本中的輸入輸出信息和程序前綴,但看不到程序執行的完整軌跡和中間狀態。
除了訓練集,作者還構建了一個包含1萬個樣本的測試集,用於評估模型的泛化性能。
為了研究語言模型是否掌握了代碼背後的語義,同時深入瞭解模型的「思維過程」,作者設計了一套包含線性分類器和單/雙隱層MLP的探測器組合。
探測器的輸入是語言模型在生成程序tokens過程中的隱藏狀態,預測目標則是程序執行的中間狀態,具體包括機器人的朝向(direction)、相對於初始位置的偏移量(position)以及是否正面朝向障礙物(obstacle) 這三個特徵。
在生成模型的訓練過程中,作者每隔4000步記錄一次上述三個特徵,並同時記下生成模型的隱藏狀態,形成探測器的訓練數據集。
![](http://n.sinaimg.cn/spider20240819/647/w1080h367/20240819/3dd7-86a576819c855e7e9fd8cd2a163b4213.jpg)
02 大模型學習的三個階段
通過觀察語言模型產生的程序的多樣性、困惑度等指標隨訓練進程的變化,作者將訓練過程分為了三個階段——
Babbling(胡言亂語)階段:輸出程序重覆度高,探測器準確率不穩定。
語法習得階段:程序多樣性迅速提高,生成準確率小幅提升,困惑度下降,說明語言模型習得了程序的句法結構。
語義習得階段:程序多樣性和句法結構掌握程度平穩,但生成準確率和探測器性能大幅提升,說明語言模型習得了程序的語義。
具體來說,Babbling階段佔據了整個訓練過程的前50%,例如在訓練到20%左右的時候,無論輸入什麼規範,模型都只會生成一個固定的程序——「pickMarker」重覆9次。
語法習得階段處於訓練過程的50%到75%,模型在Karel程序上的困惑度顯著下降,表明語言模型開始更好地適應Karel程序的統計特性,但生成程序的準確率提升幅度不大(從10%左右提升到25%左右),仍然無法準確完成任務。
語義習得階段是最後的25%,程序的準確率出現了急劇提升,從25%左右提升到90%以上,生成的程序能夠準確地完成給定的任務。
![](http://n.sinaimg.cn/spider20240819/756/w918h638/20240819/2e6b-e4528e8122b5b8677ba42c0c0176ef47.jpg)
進一步實驗又發現,探測器不僅可以對t時刻的同時間步進行預測,還能預測後續時間步的程序執行狀態。
舉例來說,假設生成模型在t時刻生成了token「move」,並將在t+1時刻生成「turnLeft」。
與此同時,t時刻的程序狀態是機器人面向北方,位於坐標(0,0),而t+1時刻機器人將是機器人將面向西方,位置不變。
如果探測器能夠從語言模型在t時刻的隱藏狀態中,成功預測到t+1時刻機器人會面向西方,就說明在生成」turnLeft」之前,隱藏狀態就已經包含了這一操作帶來的狀態變化信息。
這一現象說明,模型並非只對已生成的程序部分有語義理解,而是在生成每一步時,就已經對接下來要生成的內容有所預期和規劃,顯現出了初步的面向未來的推理能力。
但這一發現又給這項研究帶來了新的問題——
實驗中觀察到的準確度提升,到底真的是生成模型進步了,還是探測器自己推論的結果呢?
為瞭解決這個疑惑,作者補充了語義探測干預實驗。
![](http://n.sinaimg.cn/spider20240819/620/w1080h340/20240819/3f42-c22399582d3a4555052e9a45cc47fab5.jpg)
實驗的基本思路是改變程序操作的語義解釋規則,具體又分為「flip」和「adversarial」兩種方式。
「flip」是強行反轉指令含義,如將「turnRight」強行解釋為「左轉」不過能進行這種反轉的也只有「turnLeft」和「turnRight」;
「adversarial」則是將所有指令對應的語義隨機打亂,具體方式如下方表格。
![](http://n.sinaimg.cn/spider20240819/484/w908h376/20240819/8eea-fd717e88b3c9b6fa90fe6ca517e60087.jpg)
如果生成模型的隱藏狀態只編碼了程序的句法結構,而非語義信息,那麼探測器應該仍然能夠從隱藏狀態中以同等的性能去提取這些被改變的語義信息。
相反,如果探測器性能顯著下降,則說明探測器顯示出的的性能提升的確是因為生成模型隱藏狀態編碼了實際語義。
實驗結果顯示,在兩種新語義下,探測器的性能都出現了顯著下降。
尤其是在「adversarial」模式下更加明顯,這也與該模式下的語義與原始語義差異更大的特徵相一致。
![](http://n.sinaimg.cn/spider20240819/795/w1080h515/20240819/2f33-22388e0ecf07d42cba5a243ca444fde2.jpg)
這些結果有力地排除了探測器「自己學會語義映射」的可能性,進一步證實了生成模型的確掌握了代碼的含義。
參考鏈接:
[1]https://news.mit.edu/2024/llms-develop-own-understanding-of-reality-as-language-abilities-improve-0814
[2]https://www.reddit.com/r/LocalLLaMA/comments/1esxkin/llms_develop_their_own_understanding_of_reality/
本文來自微信公眾號「量子位」,作者:關注前沿科技,36氪經授權發佈。