今天小編分享的科學經驗:大模型對語言有自己的理解!MIT論文揭示大模型“思維過程”,歡迎閱讀。
大模型對現實世界,可以形成自己的理解!
MIT 的一項研究發現,随着模型能力越強,它對現實的理解可能不僅是簡單模仿。
比如大模型沒有聞過氣味,是否就意味着它不能理解氣味?
研究發現,它可以自發模拟一些概念,方便理解。
這項研究意味着,大模型未來有希望更深入理解語言和世界,論文已被頂會 ICML 24 接收。
這篇論文的作者是 MIT 計算機與人工智能實驗室(CSAIL)華裔博士生 Charles Jin 和他的導師 Martin Rinard 教授。
研究當中,作者讓大模型只學習代碼文本,結果發現模型逐漸掌握了其背後的含義。
Rinard 教授表示,這項研究直接針對現代人工智能的一個核心問題——
大模型的能力僅僅是由于大規模的統計相關性,還是對它們要處理的現實問題產生了有意義的理解?
△來源:MIT 官網
同時這項研究也引發了不少讨論。
有網友表示,雖然大模型對語言的理解可能和人類不同,但這項研究至少說明了模型做的絕不僅僅是對訓練數據的記憶。
讓大模型學習純代碼
為了探究大模型能否產生語義層面的理解,作者構建了一個由程式代碼及其對應輸入輸出組成的合成數據集。
這些代碼程式用一種名為Karel的教學語言編寫,主要用于實現機器人在 2D 網格世界中導航的任務。
這個網格世界由 8x8 的格子組成,每個格子可以包含障礙物、标記物或空地。機器人可以在格子間移動,并進行放置 / 拾取标記物等操作。
Karel 語言包含 5 個原始操作—— move(前進一步)、turnLeft(左轉 90 度)、turnRight(右轉 90 度)、pickMarker(拾取标記物)、putMarker(放置标記物),程式就是由這些原始操作的序列組成。
作者随機生成了一個包含 50 萬個 Karel 程式的訓練集,每個程式長度在 6 到 10 之間。
每個訓練樣本由三部分組成:5 個輸入狀态、5 個輸出狀态和完整的程式代碼,輸入輸出狀态以特定格式編碼進字元串中。
利用這些數據,作者訓練了标準 Transformer 架構的 CodeGen 模型的一個變體。
訓練過程中,模型可以訪問每個樣本中的輸入輸出信息和程式前綴,但看不到程式執行的完整軌迹和中間狀态。
除了訓練集,作者還構建了一個包含 1 萬個樣本的測試集,用于評估模型的泛化性能。
為了研究語言模型是否掌握了代碼背後的語義,同時深入了解模型的 " 思維過程 ",作者設計了一套包含線性分類器和單 / 雙隐層 MLP 的探測器組合。
探測器的輸入是語言模型在生成程式 tokens 過程中的隐藏狀态,預測目标則是程式執行的中間狀态,具體包括機器人的朝向(direction)、相對于初始位置的偏移量(position)以及是否正面朝向障礙物(obstacle) 這三個特征。
在生成模型的訓練過程中,作者每隔 4000 步記錄一次上述三個特征,并同時記下生成模型的隐藏狀态,形成探測器的訓練數據集。
大模型學習的三個階段
通過觀察語言模型產生的程式的多樣性、困惑度等指标随訓練進程的變化,作者将訓練過程分為了三個階段——
Babbling(胡言亂語)階段:輸出程式重復度高,探測器準确率不穩定。
語法習得階段:程式多樣性迅速提高,生成準确率小幅提升,困惑度下降,說明語言模型習得了程式的句法結構。
語義習得階段:程式多樣性和句法結構掌握程度平穩,但生成準确率和探測器性能大幅提升,說明語言模型習得了程式的語義。
具體來說,Babbling 階段占據了整個訓練過程的前 50%,例如在訓練到 20% 左右的時候,無論輸入什麼規範,模型都只會生成一個固定的程式—— "pickMarker" 重復 9 次。
語法習得階段處于訓練過程的 50% 到 75%,模型在 Karel 程式上的困惑度顯著下降,表明語言模型開始更好地适應 Karel 程式的統計特性,但生成程式的準确率提升幅度不大(從 10% 左右提升到 25% 左右),仍然無法準确完成任務。
語義習得階段是最後的 25%,程式的準确率出現了急劇提升,從 25% 左右提升到 90% 以上,生成的程式能夠準确地完成給定的任務。
進一步實驗又發現,探測器不僅可以對 t 時刻的同時間步進行預測,還能預測後續時間步的程式執行狀态。
舉例來說,假設生成模型在 t 時刻生成了 token"move",并将在 t+1 時刻生成 "turnLeft"。
與此同時,t 時刻的程式狀态是機器人面向北方,位于坐标 ( 0,0 ) ,而 t+1 時刻機器人将是機器人将面向西方,位置不變。
如果探測器能夠從語言模型在 t 時刻的隐藏狀态中,成功預測到 t+1 時刻機器人會面向西方,就說明在生成 "turnLeft" 之前,隐藏狀态就已經包含了這一操作帶來的狀态變化信息。
這一現象說明,模型并非只對已生成的程式部分有語義理解,而是在生成每一步時,就已經對接下來要生成的内容有所預期和規劃,顯現出了初步的面向未來的推理能力。
但這一發現又給這項研究帶來了新的問題——
實驗中觀察到的準确度提升,到底真的是生成模型進步了,還是探測器自己推論的結果呢?
為了解決這個疑惑,作者補充了語義探測幹預實驗。
實驗的基本思路是改變程式操作的語義解釋規則,具體又分為 "flip" 和 "adversarial" 兩種方式。
"flip" 是強行反轉指令含義,如将 "turnRight" 強行解釋為 " 左轉 " 不過能進行這種反轉的也只有 "turnLeft" 和 "turnRight";
"adversarial" 則是将所有指令對應的語義随機打亂,具體方式如下方表格。
如果生成模型的隐藏狀态只編碼了程式的句法結構,而非語義信息,那麼探測器應該仍然能夠從隐藏狀态中以同等的性能去提取這些被改變的語義信息。
相反,如果探測器性能顯著下降,則說明探測器顯示出的的性能提升的确是因為生成模型隐藏狀态編碼了實際語義。
實驗結果顯示,在兩種新語義下,探測器的性能都出現了顯著下降。
尤其是在 "adversarial" 模式下更加明顯,這也與該模式下的語義與原始語義差異更大的特征相一致。
這些結果有力地排除了探測器 " 自己學會語義映射 " 的可能性,進一步證實了生成模型的确掌握了代碼的含義。
論文地址:
https://icml.cc/virtual/2024/poster/34849
參考鏈接:
[ 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/