大模型對現實世界,可以形成自己的理解!
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(隨訓練過程的變化,作者將訓練過程分為了三個階段-
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/
#🎜###
以上是大模型對語言有自己的理解! MIT 論文揭示大模型'思考過程”的詳細內容。更多資訊請關注PHP中文網其他相關文章!