全面測試 OpenAI o1:邏輯推理天衣無縫,空間推理一碰就碎?

GPT-4o 對象棋策略沒有深刻的見解,但訓練數據中卻有足夠多的國際象棋對局,所以至少可以猜測出一個看似合理的走法。

相比之下,o1 試圖扮演人類,真正地去分析棋盤狀態。而它做得如此糟糕,以至於最終吐出了完全無意義的內容。

作者 | Timothy B Lee

編譯 | Eric Harrington

出品丨AI 科技大班營(ID:rgznai100)

去年 11 月的時候,外媒報導 OpenAI 前首席科學家 Ilya Sutskever(當時他還沒離職)領導的團隊取得了技術突破,有關 OpenAI 的 Q* 項目的消息也因此傳出,該項目旨在構建能解決複雜數學問題的模型

從此,全世界「醜化」了 Q* 的存在,有許多專家聲稱這就是 OpenAI 的 AGI(通用人工智能)項目,甚至還有一些 OpenAI 研究人員向董事會寫了一封信,警告「一項強大的人工智能發現可能會威脅人類

這件事的結果就是,Ilya Sutskever 從此多了一個在外網爆火的梗:「Ilya 到底看到了什麼?」(What did Ilya see?)

全球網民就像這樣反復刷著表情包,每天都要在 OpenAI 官推底下質問 Ilya 為什麼會對這個秘密 AI 項目諱莫如深,直到 Ilya 從 OpenAI 離職後也沒消停。

終於,在 2024 年的上半年,外媒報導 Q* 項目重出江湖,並被重命名為「草莓」(Strawberry)。隨後在九月上旬,OpenAI 揭示了他們一直秘密研究的這項內容:

  • o1-preview 模型:o1 模型的早期版本,在未來幾個月內發佈

  • o1-mini 模型一個更快、更便宜且性能驚人的模型。

OpenAI 突破的關鍵在於一種稱為強化學習(Reinforcement Learning, RL)的訓練技術,這幫助 o1 模型以更加集中和精確的方式進行推理。在測試中我發現,要設計出 o1 無法解決的謎題其實出奇地困難。在本文中,我將首先簡要解釋 OpenAI 的方法,然後給出一些 o1 模型可以解決的難題示例——以及一些它們仍然無法解決的問題。

更長的思維鏈

眾所周知,大語言模型是通過預測文本序列中的下一個詞(Next Word Prediction)來訓練的。當一個大模型看似在推理時,它實際上是在識別訓練過程中學到的文本模式。

這裏有一個簡單的例子:如果一個文檔包含字符串「2+2=」,那下一個字符很可能是「4」。因此,在訓練過程中,大模型將學會在遇到「2+2=」這個提示詞時回應「4」。這並不需要模型對數字有任何深刻的見解。對於大模型來說,「2」和「4」只是像「貓」或「這個」一樣的 token(最小的語言單位)

現在假設要求一個大模型預測序列「2+5+4+5-12+7-5=」中的下一個 token。這個確切的序列可能並未出現在大模型的訓練集中,所以它不會想當然地給出答案。然而,如果我們要求模型「逐步思考」,它會產生類似這樣的輸出:

1. 從前兩個數字開始:二加五等於七;

2. 加上下一個數字:七加四等於十一;

3. 加上下一個數字:十一加五等於十六;

4. 減去下一個數字:十六減十二等於四;

5. 加上下一個數字四加七等於十一;

6. 減去最後一個數字:十一減五等於六。

儘管「2+5+4+5-12+7-5=6」不在訓練數據中,但「2+5=7」、「7+4=11」等表達可能存在。因此,通過將一個大的數學問題轉換為一系列小的數學問題,大模型能夠得出正確答案。但值得注意的是,只有當模型的訓練數據包含大量將大型數學表達式分解為較小陳述的例子時,這才是可能的。

以上就是 o1 模型的基本思路。假設用戶給 o1 一個困難的推理問題,比如 OpenAI 的官方例子:

編寫一個 bash 命令行腳本,該腳本接受一個以「[1,2],[3,4],[5,6]」格式表示的矩陣字符串,並以相同格式打印其轉置矩陣。

這是一個編程任務,如果沒有人工智能輔助,人類程序員可能需要三十分鐘才能完成。而 o1 模型採用了類似於我上面給出的數學例子的方法:它將問題分解成更小的問題,然後逐個解決這些問題。以下是 o1-preview 在解決問題時的部分思考過程:

好的,讓我們思考如何在 bash 中解析輸入字符串,構建矩陣(可能使用數組),轉置它,然後以預期格式輸出結果轉置矩陣……

方法:

– 解析輸入字符串以提取矩陣元素;

– 將矩陣構建為數組的數組;

– 轉置矩陣;

– 以相同格式輸出轉置後的矩陣。

實現步驟:

1. 將輸入字符串作為參數捕獲。

2. 移除任何空格(如果有的話)。

3. 解析輸入字符串,將數字提取到數組中。

o1 像上述這樣繼續思考了大約八百字,然後產生了一個符合要求的 Bash 腳本。

這是 OpenAI 的官方示例,所以他們在博客里透露了具體的思維鏈細節。但在日常使用中,OpenAI 其實會對用戶隱藏這個思考過程。這意味著用戶通常需要等待模型思考三十秒、六十秒,甚至更長時間才能得到回應——就像一個人在解決複雜問題時需要時間思考一樣。

思維鏈並不是一個新概念。自從 2022 年 Jason Wei 的一篇著名論文(https://arxiv.org/abs/2201.11903)發表以來,它在機器學習領域已被廣泛認可。如今,大多數模型都被訓練成在面對具有挑戰性的問題時自動逐步思考。但 OpenAI 做了兩件事,使這種技術變得更加有效。

一是創建了大量的訓練數據,向模型展示如何進行更長、更複雜的思維鏈推理。這部分不一定是 OpenAI 獨有的——每個主要的人工智能實驗室都在努力生成更多、更好的訓練數據——但 OpenAI 在這方面可能做得比其競爭對手更徹底。

但 OpenAI 真正的突破在於一種新的訓練過程,這個過程幫助 o1 從長鏈思維訓練示例中更有效地學習。

模仿學習的困境:只注重模仿格式

要理解為什麼 o1 模型如此強大,你需要瞭解模仿學習(Imitation Learning)和強化學習之間的區別。

在 Brian Christian 2020 年的著作《The Alignment Problem》中,講述了計算機科學家 Stéphane Ross 在卡內基梅隆大學讀研究生時的一個故事:2009 年,Ross 試圖使用模仿學習來教導人工智能模型玩一款名為 SuperTuxKart 的小型賽車賽車遊戲。研究人員想通過觀察 Ross 玩遊戲並模仿他的行為來訓練神經網絡玩 SuperTuxKart。但即使在數小時的遊戲後,他的人工智能模型仍然難以保持在賽道上。

Christian 寫道,問題在於「學習者看到的是專家解決問題的過程,而專家幾乎從不遇到麻煩。但無論學習者多麼優秀,他們都會犯錯誤——無論是明顯的還是微妙的。但由於學習者從未看到專家陷入困境,他們也從未看到專家如何擺脫困境。」

當 Ross 玩遊戲時,他大多將車保持在賽道中央附近,並指向正確的方向。因此,只要人工智能保持在賽道中央附近,它大多會做出正確的決定。

歡迎回顧 Brian Christian 在 CSDN《新程序員 007》的文章:《AI 對齊是未來十年最重要的科學和社會技術工程 | 新程序員》。

但偶爾,人工智能會犯一個小錯誤——比如說,向右偏離得太遠。然後它就會處於一種與訓練數據略有不同的情況。這會使它更有可能犯另一個錯誤——比如繼續向右偏離。這會使車輛更加遠離訓練樣本的分佈。因此,錯誤往往會產生雪球效應,直到車輛完全偏離道路——就像一個初學者在學習騎單車時,一個小的失衡可能導致完全的摔倒。

大模型也存在同樣的問題。例如,去年年初,美國著名報紙《紐約時報》的記者 Kevin Roose 與一個基於 GPT-4 的早期微軟聊天機器人聊了兩個小時。隨著時間的推移,對話變得越來越瘋狂。最終,微軟的聊天機器人竟然聲稱愛上了 Roose,並敦促他離開妻子。

從根本上說,這種情況的發生是因為傳統的大模型是使用模仿學習進行訓練的,而錯誤累積的問題意味著如果運行時間足夠長,它們往往會偏離軌道——就像一個初學者在學習新技能時,一個小錯誤可能導致整個過程偏離正軌。在《紐約時報》的報導之後,微軟限制了其聊天機器人可以進行的對話長度。

大模型偏離軌道的傾向在使用長思維鏈進行推理時尤其成問題。假設一個問題需要五十個步驟來解決,而模型在每個步驟都有百分之二的機會犯錯。那麼模型只有大約百分之三十六的機會(0.98^50)得到正確答案。

這裏有另一種看待問題的方式:當大模型使用模仿學習進行訓練時,如果它輸出的恰好是訓練數據中的下一個 token,就會得到正面強化。如果輸出任何其他 token,就會得到負面強化。

這意味著訓練算法將思維鏈推理過程中的所有 token 都視為同等重要,而實際上有些 token 比其他 token 重要得多。例如,如果一個模型需要計算「2+2」,在思維鏈推理過程中有許多有效的表達方式:

  • 2 + 2 = 4;

  • 二加二等於四;

  • 二和二的和是四

  • 如果我們把 2 加到 2 上,我們會得到 4。

然而,如果訓練樣本只放入了「2 + 2 = 4」,那模仿學習算法會將「二加二等於四」和「2 + 2 = 5」都視為同樣不正確。它會花費大量時間試圖訓練模型複製訓練樣本的風格和格式——卻使用相對較少的精力確保最終得到正確答案。

「真正通用」的強化學習

強化學習採取了不同的方法。強化學習不是試圖完美地複製訓練數據中的每個 token,而是根據它最終是否得到正確答案來評分響應。而且,隨著推理步驟數量的增加,這種反饋變得越發重要。

那麼,如果強化學習如此出色,為什麼不是每個人都使用它呢?一個原因是,強化學習可能會遇到一個稱為稀疏獎勵(sparse rewards)的問題——即在整個學習過程中,有效的反饋信號很少。如果一個大模型只產生了答案中的一小部分 token,強化學習算法可能無法知道它是否正在朝著正確答案的方向前進。因此,完全使用強化學習訓練的模型可能永遠無法變得足夠好以開始接收正面反饋。而無論有什麼缺陷,模仿學習至少可以對每個 token 給出反饋。這使它成為訓練初期的好選擇,因為此時新生模型甚至無法產生連貫的句子。一旦模型能夠有時產生良好的答案,那麼強化學習就可以幫助它更快地改進。

另一個挑戰是,強化學習需要一種客觀的方式來判斷模型的輸出。當計算機科學家 Noam Brown 去年加入 OpenAI 參與「草莓」項目時,他在一系列推文中暗示了 OpenAI 的策略:

「多年來,我一直在研究人工智能自我對弈和在撲克和外交等遊戲中的推理,」Brown 寫道,「現在我將研究如何讓這些方法真正通用。」

自我對弈指的是一個模型與自己的副本對弈的過程——就像一個人在下棋時自己和自己對弈。然後,遊戲的勝負結果回被用於強化學習。因為軟件可以確定誰贏了遊戲,所以訓練過程可以完全自動化,避免了昂貴的人工監督的需要。

Brown 指出 AlphaGo 作為 OpenAI 效仿的例子,這是一個使用自我對弈和強化學習訓練的 DeepMind 系統。DeepMind 在 2016 年擊敗了世界上最好的人類圍棋選手之一——這也是人工智能發展史上的一個裡程碑。

像圍棋或撲克這樣的遊戲有客觀的規則來決定贏家。相比之下,判斷大模型產生的 token 是否良好通常很睏難。在某些領域,可能需要聘請昂貴的人類專家來評判模型的輸出——比如詩歌,畢竟文無第一,有時難以分析好壞。

OpenAI o1 專注於數學和計算機編程中的推理問題。這些問題不僅有客觀的正確答案,而且通常可以自動生成新的問題以及答案。這可以導致一個完全自動化的訓練過程,類似於用於訓練 AlphaGo 的自我對弈過程。

雖然 o1 在數學和科學推理方面有顯著改進,但 o1 模型在推理能力上並不是「通用」的。例如,o1 在語言推理方面並沒有明顯優於其他前沿模型。我懷疑這是因為 OpenAI 團隊還沒有找到一種自動化的方法來生成他們需要的那種訓練數據,以便在語言任務上進行強化學習。

正片開始:全面測試 o1 模型

為了衡量 o1 的能力,我需要一些比我之前模型評測中使用的更難的謎題。但令人驚訝的是,想出一道能難倒 o1 的問題其實非常棘手。例如:

你正在計劃一個婚禮招待會,有五張桌子,每張桌子三位客人。

– Alice 不想和 Bethany、Ellen 或 Kimmie 坐在一起。

– Bethany 不想和 Margaret 坐在一起。

– Chuck 不想和 Nancy 坐在一起。

– Fiona 不想和 Henry 或 Chuck 坐在一起。

– Jason 不想和 Bethany 或 Donald 坐在一起。

– Grant 不想和 Ingrid、Nancy 或 Olivia 坐在一起。

– Henry 不想和 Olivia、Louise 或 Margaret 坐在一起。

– Louise 不想和 Margaret 或 Olivia 坐在一起。

你如何安排客人,以便所有這些偏好都得到尊重?

這是一個 NP-hard(非確定性多項式時間難解)問題,這意味著沒有已知的算法可以有效地解決它,只能通過窮舉試錯來解決。當我要求 GPT-4o 解決這個問題時,它會開始像這樣分配人員到桌子:

桌子 1:Alice、Chuck、Jason;

桌子 2:Bethany、Ellen、Kimmie;

桌子 3:Fiona、Ingrid、Donald…

到第三桌的時候,GPT-4o 的思考卡住了,因為只剩下兩張桌子,而它還沒有安排 Louise、Margaret 或 Henry 的座位——根據題干,這三個人都不想坐在一起。

按理來說,GPT-4o 應該回溯思考,調換前三張桌子上的人,以嘗試解決衝突。但事實恰恰相反,GPT-4o 只是給出了最後兩張桌子的分配,這些分配不符合要求,然後就此草草結束,給用戶了一道錯誤答案。

相比之下,o1 思考了 35 秒,然後生成了以下正確的解決方案:

桌子 1:Alice、Donald、Fiona;

桌子 2:Grant、Bethany、Kimmie;

桌子 3:Henry、Chuck、Ellen;

桌子 4:Jason、Margaret、Olivia;

桌子 5:Louise、Ingrid、Nancy。

o1 模型通過試錯找到了這個座位表。而根據 ChatGPT 放出的部分思維鏈(前文提到,OpenAI 不會給用戶查看完整思維鏈),o1 有著這樣的內心獨白:「我重新考慮讓 Jason、Margaret 和 Nancy 坐在桌子 4。Louise 的偏好使桌子 5 變得複雜,這表明需要進一步調整。」 也就是說,o1 和 GPT-4o 遇到了同樣的問題,但它懂得嘗試不同的排列,直到找到一個可行的方案

我注意到大模型往往會被複雜性問題搞糊塗,所以我想知道 o1 是否能處理一個非常長的應用題,並寫了一個 Perl 腳本來生成這樣的故事:

Alice 把 1 個彈珠放進紅色罐子裡;

Frank 從有最多彈珠的罐子裡拿出一個彈珠;

David 把 4 個彈珠放進藍色罐子里;

Frank 又從藍色罐子裡拿出一半的彈珠,放進紫色罐子裡;

然後,Frank 從藍色罐子裡拿出1個彈珠……

每個罐子裡有多少個彈珠?

腳本可以讓這個問題一直生成下去,所以我想測試模型會在第幾步被搞糊塗。我發現 GPT-4o 可以解決最多約 50 步的這類問題,但它被 70 步的問題搞糊塗了。o1 模型則可以解決最多 200 步的問題,但在 250 步的時候會犯很多錯誤。

我覺得有趣的是,這個問題在概念上並不難。所有的模型都使用了相同的基本策略:逐行計算每個罐子裡的彈珠數量。它們的區別在於隨著問題規模的增長,保持「專注」的能力。o1 模型並不完美,但它在保持專注的方面比其他前沿模型要好得多——結果就是,o1 模型因此在推理能力上比 OpenAI 或其他公司之前的大語言模型強大得多。

然而,o1 並不完美,下面我會找一些它們仍然無法解決的問題。

o1 模型在空間推理方面表現不佳

這是少數幾個讓 GPT-4o 和 o1 模型都感到棘手的問題之一:

一個城市有七條南北向的街道,從西邊的第一街到東邊的第七街。它有七條東西向的街道,從北邊的 A 街到南邊的 G 街。第三街在 F 街以北被封閉,所以汽車不允許在 A、B、C、D 或 E 街上穿過第三街。E 街在第三街和第六街之間被封閉,汽車不允許在第四或第五街上穿過 E 街。從第二街和 B 街到第四街和 B 街的最短路線是什麼?

o1 模型還不能接收圖像輸入,但讀者們可以。所以我為大家繪製了這個場景的可視化圖表,方便理解問題。

以下是 o1 的回答:

可能的路線: 

直接路線(不可行):沿 B 街從第二街向東,到第四街 —— 不可行,因為由於封閉,你不能在 B 街上穿過第三街。

替代路線(可行且最短):

– 步驟 1:沿第二街向南,從 B 街到 F 街(向南 4 個街區)。

– 步驟 2:沿 F 街向東,從第二街到第四街,穿過第三街(向東 2 個街區)。

– 步驟 3:沿第四街向北,從 F 街到 B 街(向北 4 個街區)。

我們把 o1 給出的這條推薦路線畫出來,看看到底行不行:

完全錯了!而我們又 GPT-4o 了,它也推薦了同樣的無效路線。

o1 模型對國際象棋同樣一無所知。問題如下:

一局標準的國際象棋遊戲開局如下:

1. e4 e5

2. Qh5 Nf6

3. Qg6 

黑方最強的走法是什麼?

如果你對國際象棋有所瞭解,你就知道黑方應該用 h7 或 f7 的兵(小卒)吃掉 g6 的皇后(國際象棋的兵只能斜向吃子)。當我問 GPT-4o 時,它給出了如上正確的建議(hxg6):

但是,o1-preview 模型給出的答案非常糟糕。首先它說「g7 的兵可以吃掉 g6 的皇后。」 這是無稽之談,因為兵只能斜向吃子。然後 o1 模型又推薦了 gxh6 的走法——換句話說,它建議兵應該吃掉 h6 上一個不存在的棋子。

o1 給出的完整答案分享:https://chatgpt.com/share/66ec9cf6-7dc0-8010-96ff-ed3e1e45bf23

對於其他國際象棋場景,情況是相似的。GPT-4o 的國際象棋其實下得也很爛,但大多數時候它至少會建議合乎規則的走法。相比之下,o1 對象棋規則完全一無所知,經常推薦無效的走法。

我的假設是,GPT-4o 正在對提示中的走法序列進行相當粗略的模式匹配。它對策略沒有深刻的見解,但訓練數據中卻有足夠多的國際象棋對局,所以至少可以猜測出一個看似合理的走法。

相比之下,o1 試圖扮演人類,真正地去分析棋盤狀態。而它做得如此糟糕,以至於最終吐出了完全無意義的內容。

我認為上述的國際象棋問題本質在於,大模型無法通過一維的 token 序列來表示二維空間。它們無法模擬人類在紙上畫草圖幫助思考的這一行為。

於是,我試圖通過 ASCII 繪製一個棋盤,來協助大模型進行空間推理:

但這並沒有幫助。GPT-4o 這一次建議黑方將其皇后斜向移動一格,使其位於國王前面——這個走法遵循了象棋規則,卻不如它之前的建議好。而 o1-preview 建議黑方用 F6 的騎士吃掉皇后,提出了另一個違反規則的走法。

現實世界比數學問題複雜得多

我對 o1 模型印象深刻,但我確實想指出我所有例子的一個共同點:它們都包含了相對簡短的問題陳述中所有必要的信息。

現實世界中的大多數問題並非如此。人類工作者花費數十年積累知識,使我們在工作中更有效率。有時解決問題需要回憶起我們數月或數年前的對話或閱讀過的研究論文中的事實。有時我們缺少關鍵信息,必須弄清楚需要閱讀什麼或與誰交談才能獲得這些信息。

我認為 OpenAI 還未掌握這種類型的問題。原因之一是,目前公開可用的最佳大模型上下文窗口通常不超過 200 萬個 token。這遠遠少於我們任何人一生中將遇到的信息量。

更重要的是,正如我上文中「計算每個罐子裡的彈珠」的例子所示,上下文窗口並不總是最主要的約束。o1-preview 模型擁有 128,000 的 token 上下文窗口,卻還是被複雜性問題所壓倒。我懷疑,如果在問題中加入大量無意義的描述,還能導致結果更差,因為 o1 會浪費大量時間「思考」提示詞中無關的廢話。

人類善於進行概念性思考。當一個人讀一本書時,通常會很快忘記大部分細節,只保留書中最重要的思想。即使我們進行對話或閱讀研究論文時,也會本能地這樣做。相比之下,目前的大語言模型——即使是 o1——仍學不會這樣做。結果,當被要求處理涉及大量信息的複雜問題時,它們很快就會陷入困境。

所以,雖然我對大語言模型在解決固定推理問題方面變得如此出色印象深刻,但我認為重要的是人們不要將此與有效應對現實世界混亂所需的認知類型混淆。這些模型離人類水平的智能還相當遠。

參考文獻:https://www.understandingai.org/p/openai-just-unleashed-an-alien-of