前幾天OpenAI 發(fā)布的o1 模型,在各個(gè)競(jìng)賽、領(lǐng)域的表現(xiàn)相比之前的產(chǎn)品有了很大的提高,號(hào)稱能媲美人類的博士水平。這么強(qiáng)的大模型,里面有那些黑科技?這篇文章,我們和作者一起來(lái)學(xué)習(xí)一下。
9月13日凌晨,OpenAI爆出重磅消息,正式發(fā)布了OpenAI O1推理模型。
O1模型的特殊之處在于其強(qiáng)大的推理能力,和OpenAI其他模型不同,O1模型更像人類大腦的“系統(tǒng)2”,擅長(zhǎng)慢思考,在作出回答之前會(huì)進(jìn)行“深思熟慮”,產(chǎn)生一個(gè)長(zhǎng)長(zhǎng)的思維鏈,并嘗試通過(guò)不同的策略進(jìn)行推理和反思,從而確;卮鸬馁|(zhì)量和深度。
因此,相比其他模型,O1模型“更大,更強(qiáng),更慢,也更貴”。
Greg Brockman這樣評(píng)價(jià)O1模型:
“可以這樣理解,我們的模型進(jìn)行系統(tǒng) I 思考,而思維鏈則解鎖了系統(tǒng) II 思考。人們已經(jīng)發(fā)現(xiàn),提示模型「一步步思考」可以提升性能。但是通過(guò)試錯(cuò)來(lái)訓(xùn)練模型,從頭到尾這樣做,則更為可靠,并且正如我們?cè)趪寤?Dota 等游戲中所見可以產(chǎn)生極其令人印象深刻的結(jié)果。”
這種強(qiáng)大推理能力使o1在多個(gè)行業(yè)中具有廣泛的應(yīng)用潛力,尤其是復(fù)雜的科學(xué)、數(shù)學(xué)和編程任務(wù)。
同時(shí),為了凸顯O1模型在推理上的巨大進(jìn)步,OpenAI也設(shè)計(jì)了一套完整的評(píng)估方案。測(cè)試結(jié)果令人振奮,在絕大多數(shù)需要深度思考和復(fù)雜推理的任務(wù)中,O1模型都要明顯好于GPT-4o模型。
下圖是在數(shù)學(xué)競(jìng)賽、編碼競(jìng)賽和科學(xué)問答中的表現(xiàn),O1要高出gpt4o一大截。
在其他學(xué)科領(lǐng)域,比如化學(xué)、物理、生物、經(jīng)濟(jì)學(xué)、邏輯學(xué)等領(lǐng)域,o1相比gpt4o也有顯著提升。
目前,o1系列包含三款模型,OpenAI o1、OpenAI o1-preview和OpenAI o1-mini。OpenAI o1作為最高級(jí)的推理模型,暫不對(duì)外開放。OpenAI o1-preview,這個(gè)版本更注重深度推理處理,每周可以使用30次。OpenAI o1-mini,這個(gè)版本更高效、劃算,適用于編碼任務(wù),每周可以使用50次。
從目前公開的消息得知,O1模型的核心是思維鏈(COT,chain of thought),但從實(shí)際表現(xiàn)來(lái)看,背后一定用到了其他更強(qiáng)大的推理模型,因?yàn)閱为?dú)的COT無(wú)法讓模型獲得如此強(qiáng)的推理結(jié)果。
下面,讓我們一起回顧一下,那些大幅提升模型推理能力的黑科技。未來(lái)隨著O1模型的公開和解密,其中很可能就會(huì)有風(fēng)叔介紹到的推理框架。
1. 初級(jí)推理框架:COT、COT-SC和TOT
初級(jí)推理框架的核心主張,是將大型任務(wù)分解為更孝更易于管理的子目標(biāo),從而高效處理復(fù)雜任務(wù)。
主要的子任務(wù)分解方式包括:思維鏈COT(Chain of thought)、自洽性思維鏈(COT-SC)、思維樹TOT(Tree of thought)。
1.1 思維鏈COT
思維鏈COT的全稱是Chain of Thought,當(dāng)我們對(duì)LLM這樣要求「think step by step」,會(huì)發(fā)現(xiàn)LLM會(huì)把問題分解成多個(gè)步驟,一步一步思考和解決,能使得輸出的結(jié)果更加準(zhǔn)確。這就是思維鏈,一種線性思維方式。
思維鏈適用的場(chǎng)景很多,包括各種推理任務(wù),比如:數(shù)學(xué)問題、嘗試推理、符號(hào)操作等。思維鏈方法的好處在于,不用對(duì)模型進(jìn)行訓(xùn)練和微調(diào)
在下圖的案例中,通過(guò)few-shot propmt,引導(dǎo)大模型先對(duì)問題進(jìn)行拆解,再進(jìn)行解答。其效果要遠(yuǎn)遠(yuǎn)好于直接詢問。
1.2 自洽性COT
所謂自洽性,是指一種為同一問題,生成多個(gè)不同的思維鏈,并對(duì)模型進(jìn)行訓(xùn)練從中挑選出最合適的答案的方法。一個(gè)CoT出現(xiàn)錯(cuò)誤的概率比較大,我們可以讓大模型進(jìn)行發(fā)散,嘗試通過(guò)多種思路來(lái)解決問題,然后投票選擇出最佳答案,這就是自洽性CoT。
這種方法特別適用于需要連續(xù)推理的復(fù)雜任務(wù),例如思維鏈提示法。它在多個(gè)評(píng)估標(biāo)準(zhǔn)上顯著提升了CoT提示的效果,如在GSM8K上提升了17.9%,在SVAMP上提升了11.0%,在AQuA上提升了12.2%。
1.3 思維樹TOT
思維樹TOT是對(duì)思維鏈CoT的進(jìn)一步擴(kuò)展,在思維鏈的每一步,推理出多個(gè)分支,拓?fù)湔归_成一棵思維樹。使用啟發(fā)式方法評(píng)估每個(gè)推理分支對(duì)問題解決的貢獻(xiàn)。選擇搜索算法,使用廣度優(yōu)先搜索(BFS)或深度優(yōu)先搜索(DFS)等算法來(lái)探索思維樹,并進(jìn)行前瞻和回溯。
2. 中級(jí)推理框架:ReAct、Plan & Execute和Self Discover
初級(jí)推理框架的優(yōu)勢(shì)是簡(jiǎn)單,但缺點(diǎn)是缺少可控性,我們很難約束和控制大模型朝哪個(gè)方向推理。當(dāng)推理方向存在錯(cuò)誤時(shí),也缺少糾錯(cuò)機(jī)制。
因此,以ReAct、Plan & Execute和Self Discover為代表的推理框架,更主張約束大模型的推理方向,并根據(jù)環(huán)境反饋進(jìn)行推理糾錯(cuò)。
2.1 ReAct
ReAct通過(guò)結(jié)合語(yǔ)言模型中的推理(reasoning)和行動(dòng)(acting)來(lái)解決多樣化的語(yǔ)言推理和決策任務(wù),因此提供了一種更易于人類理解、診斷和控制的決策和推理過(guò)程。
它的典型流程如下圖所示,可以用一個(gè)有趣的循環(huán)來(lái)描述:思考(Thought)→ 行動(dòng)(Action)→ 觀察(Observation),簡(jiǎn)稱TAO循環(huán)。
思考(Thought):面對(duì)一個(gè)問題,我們需要進(jìn)行深入的思考。這個(gè)思考過(guò)程是關(guān)于如何定義問題、確定解決問題所需的關(guān)鍵信息和推理步驟。
行動(dòng)(Action):確定了思考的方向后,接下來(lái)就是行動(dòng)的時(shí)刻。根據(jù)我們的思考,采取相應(yīng)的措施或執(zhí)行特定的任務(wù),以期望推動(dòng)問題向解決的方向發(fā)展。
觀察(Observation):行動(dòng)之后,我們必須仔細(xì)觀察結(jié)果。這一步是檢驗(yàn)我們的行動(dòng)是否有效,是否接近了問題的答案。
如果觀察到的結(jié)果并不匹配我們預(yù)期的答案,那么就需要回到思考階段,重新審視問題和行動(dòng)計(jì)劃。這樣,我們就開始了新一輪的TAO循環(huán),直到找到問題的解決方案。
2.2 Plan & Execute
Plan & Execute方法的本質(zhì)是先計(jì)劃再執(zhí)行,即先把用戶的問題分解成一個(gè)個(gè)的子任務(wù),然后再執(zhí)行各個(gè)子任務(wù),并根據(jù)執(zhí)行情況調(diào)整計(jì)劃。
Plan&Execute相比ReAct,最大的不同就是加入了Plan和Replan機(jī)制,其架構(gòu)上包含規(guī)劃器、執(zhí)行器和重規(guī)劃器:
規(guī)劃器Planner負(fù)責(zé)讓 LLM 生成一個(gè)多步計(jì)劃來(lái)完成一個(gè)大任務(wù),在實(shí)際運(yùn)行中,Planner負(fù)責(zé)第一次生成計(jì)劃;
執(zhí)行器接收規(guī)劃中的步驟,并調(diào)用一個(gè)或多個(gè)工具來(lái)完成該任務(wù);
重規(guī)劃器Replanner負(fù)責(zé)根據(jù)實(shí)際的執(zhí)行情況和信息反饋來(lái)調(diào)整計(jì)劃
關(guān)于Plan & Execute的更多原理和實(shí)踐,可參考
2.3 Self Discover
這種方法的核心是一個(gè)自發(fā)現(xiàn)過(guò)程,它允許大型語(yǔ)言模型在沒有明確標(biāo)簽的情況下,自主地從多個(gè)原子推理模塊(如批判性思維和逐步思考)中選擇,并將其組合成一個(gè)推理結(jié)構(gòu)。
Self-Discover框架包含兩個(gè)主要階段,如下圖所示:
階段一:自發(fā)現(xiàn)特定任務(wù)的推理結(jié)構(gòu)
包含三個(gè)主要?jiǎng)幼鳎哼x擇(SELECT)、適應(yīng)(ADAPT)和實(shí)施(IMPLEMENT)。
選擇:在這個(gè)階段,模型從一組原子推理模塊中選擇對(duì)于解決特定任務(wù)有用的模塊。模型通過(guò)一個(gè)元提示來(lái)引導(dǎo)選擇過(guò)程,這個(gè)元提示結(jié)合了任務(wù)示例和原子模塊描述。選擇過(guò)程的目標(biāo)是確定哪些推理模塊對(duì)于解決任務(wù)是有助的。
適應(yīng):一旦選定了相關(guān)的推理模塊,下一步是調(diào)整這些模塊的描述使其更適合當(dāng)前任務(wù)。這個(gè)過(guò)程將一般性的推理模塊描述,轉(zhuǎn)化為更具體的任務(wù)相關(guān)描述。例如對(duì)于算術(shù)問題,“分解問題”的模塊可能被調(diào)整為“按順序計(jì)算每個(gè)算術(shù)操作”。同樣,這個(gè)過(guò)程使用元提示和模型來(lái)生成適應(yīng)任務(wù)的推理模塊描述。
實(shí)施:在適應(yīng)了推理模塊之后,Self-Discover框架將這些適應(yīng)后的推理模塊描述轉(zhuǎn)化為一個(gè)結(jié)構(gòu)化的可執(zhí)行計(jì)劃。這個(gè)計(jì)劃以鍵值對(duì)的形式呈現(xiàn),類似于JSON,以便于模型理解和執(zhí)行。這個(gè)過(guò)程不僅包括元提示,還包括一個(gè)人類編寫的推理結(jié)構(gòu)示例,幫助模型更好地將自然語(yǔ)言轉(zhuǎn)化為結(jié)構(gòu)化的推理計(jì)劃。
階段二:應(yīng)用推理結(jié)構(gòu)
完成階段一之后,模型將擁有一個(gè)專門為當(dāng)前任務(wù)定制的推理結(jié)構(gòu)。在解決問題的實(shí)例時(shí),模型只需遵循這個(gè)結(jié)構(gòu),逐步填充JSON中的值,直到得出最終答案。
關(guān)于self discover的更多原理和實(shí)踐,可參考《AI大模型實(shí)戰(zhàn)篇:Self Discover框架,萬(wàn)萬(wàn)想不到Agent還能這樣推理》
3. 高級(jí)推理框架,Reflexion和LATS
大模型經(jīng)過(guò)初級(jí)和中級(jí)推理框架的優(yōu)化后,能準(zhǔn)確地處理一些相對(duì)簡(jiǎn)單的問題,但是在處理復(fù)雜的推理任務(wù)時(shí),仍然會(huì)顯得力不從心。
因此,高級(jí)推理框架的核心主張就是,通過(guò)強(qiáng)化學(xué)習(xí)技術(shù)進(jìn)行訓(xùn)練,專門用于思考鏈條更長(zhǎng)、反思環(huán)節(jié)更多的復(fù)雜推理任務(wù)。
3.1 Reflexion
Reflexion的本質(zhì)是強(qiáng)化學(xué)習(xí),完整的Reflexion框架由三個(gè)部分組成:
參與者(Actor):根據(jù)狀態(tài)觀測(cè)量生成文本和動(dòng)作。參與者在環(huán)境中采取行動(dòng)并接受觀察結(jié)果,從而形成軌跡。
評(píng)估者(Evaluator):對(duì)參與者的輸出進(jìn)行評(píng)價(jià)。具體來(lái)說(shuō),它將生成的軌跡(也被稱作短期記憶)作為輸入并輸出獎(jiǎng)勵(lì)分?jǐn)?shù)。根據(jù)人物的不同,使用不同的獎(jiǎng)勵(lì)函數(shù)(決策任務(wù)使用LLM和基于規(guī)則的啟發(fā)式獎(jiǎng)勵(lì))。
自我反思(Self-Reflection):這個(gè)角色由大語(yǔ)言模型承擔(dān),能夠?yàn)槲磥?lái)的試驗(yàn)提供寶貴的反潰自我反思模型利用獎(jiǎng)勵(lì)信號(hào)、當(dāng)前軌跡和其持久記憶生成具體且相關(guān)的反饋,并存儲(chǔ)在記憶組件中。Agent會(huì)利用這些經(jīng)驗(yàn)(存儲(chǔ)在長(zhǎng)期記憶中)來(lái)快速改進(jìn)決策。
因此,Reflexion模式非常適合以下情況:
大模型需要從嘗試和錯(cuò)誤中學(xué)習(xí):自我反思旨在通過(guò)反思過(guò)去的錯(cuò)誤并將這些知識(shí)納入未來(lái)的決策來(lái)幫助智能體提高表現(xiàn)。這非常適合大模型需要通過(guò)反復(fù)試驗(yàn)來(lái)學(xué)習(xí)的任務(wù),例如決策、推理和編程。
傳統(tǒng)的強(qiáng)化學(xué)習(xí)方法失效:傳統(tǒng)的強(qiáng)化學(xué)習(xí)(RL)方法通常需要大量的訓(xùn)練數(shù)據(jù)和昂貴的模型微調(diào)。自我反思提供了一種輕量級(jí)替代方案,不需要微調(diào)底層語(yǔ)言模型,從而使其在數(shù)據(jù)和計(jì)算資源方面更加高效。
需要細(xì)致入微的反饋:自我反思利用語(yǔ)言反饋,這比傳統(tǒng)強(qiáng)化學(xué)習(xí)中使用的標(biāo)量獎(jiǎng)勵(lì)更加細(xì)致和具體。這讓大模型能夠更好地了解自己的錯(cuò)誤,并在后續(xù)的試驗(yàn)中做出更有針對(duì)性的改進(jìn)。
后續(xù),風(fēng)叔也會(huì)專門寫一篇文章來(lái)詳細(xì)介紹Reflexion框架。
3.2 LATS,可能是目前最強(qiáng)的推理框架
LATS,全稱是Language Agent Tree Search,說(shuō)的更直白一些,LATS = Tree search + ReAct + Plan&Execute+ Reflexion。
ReAct、Plan&Execute、Reflexion的原理在前文都做了介紹,這里不再贅述,詳細(xì)介紹下Tree Search。
Tree Search是一種樹搜索算法,LATS 使用蒙特卡羅樹搜索(MCTS)算法,通過(guò)平衡探索和利用,找到最優(yōu)決策路徑。
蒙特卡羅樹搜索(MCTS)則是一種基于樹結(jié)構(gòu)的蒙特卡羅方法。它在整個(gè) 2^N(N 為決策次數(shù),即樹深度)空間中進(jìn)行啟發(fā)式搜索,通過(guò)反饋機(jī)制尋找最優(yōu)路徑。MCTS 的五個(gè)主要核心部分是:
樹結(jié)構(gòu):每一個(gè)葉子節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑都對(duì)應(yīng)一個(gè)解,解空間大小為 2^N。
蒙特卡羅方法:通過(guò)隨機(jī)統(tǒng)計(jì)方法獲取觀測(cè)結(jié)果,驅(qū)動(dòng)搜索過(guò)程。
損失評(píng)估函數(shù):設(shè)計(jì)一個(gè)可量化的損失函數(shù),提供反饋評(píng)估解的優(yōu)劣。
反向傳播線性優(yōu)化:采用反向傳播對(duì)路徑上的所有節(jié)點(diǎn)進(jìn)行優(yōu)化。
啟發(fā)式搜索策略:遵循損失最小化原則,在整個(gè)搜索空間上進(jìn)行啟發(fā)式搜索。
MCTS 的每個(gè)循環(huán)包括四個(gè)步驟:
選擇(Selection):從根節(jié)點(diǎn)開始,按照最大化某種啟發(fā)式價(jià)值選擇子節(jié)點(diǎn),直到到達(dá)葉子節(jié)點(diǎn)。使用上置信區(qū)間算法(UCB)選擇子節(jié)點(diǎn)。
擴(kuò)展(Expansion):如果葉子節(jié)點(diǎn)不是終止節(jié)點(diǎn),擴(kuò)展該節(jié)點(diǎn),添加一個(gè)或多個(gè)子節(jié)點(diǎn)。
仿真(Simulation):從新擴(kuò)展的節(jié)點(diǎn)開始,進(jìn)行隨機(jī)模擬,直到到達(dá)終止?fàn)顟B(tài)。
反向傳播(Backpropagation):將模擬結(jié)果沿著路徑反向傳播,更新每個(gè)節(jié)點(diǎn)的統(tǒng)計(jì)信息。
LATS的工作流程如下圖所示,包括以下步驟:
選擇 (Selection):即從根節(jié)點(diǎn)開始,使用上置信區(qū)樹 (UCT) 算法選擇具有最高 UCT 值的子節(jié)點(diǎn)進(jìn)行擴(kuò)展。
擴(kuò)展 (Expansion):通過(guò)從預(yù)訓(xùn)練語(yǔ)言模型 (LM) 中采樣 n 個(gè)動(dòng)作擴(kuò)展樹,接收每個(gè)動(dòng)作并返回反饋,然后增加 n 個(gè)新的子節(jié)點(diǎn)。
評(píng)估 (Evaluation):為每個(gè)新子節(jié)點(diǎn)分配一個(gè)標(biāo)量值,以指導(dǎo)搜索算法前進(jìn),LATS 通過(guò) LM 生成的評(píng)分和自一致性得分設(shè)計(jì)新的價(jià)值函數(shù)。
模擬 (Simulation):擴(kuò)展當(dāng)前選擇的節(jié)點(diǎn)直到達(dá)到終端狀態(tài),優(yōu)先選擇最高價(jià)值的節(jié)點(diǎn)。
回溯 (Backpropagation):根據(jù)軌跡結(jié)果更新樹的值,路徑中的每個(gè)節(jié)點(diǎn)的值被更新以反映模擬結(jié)果。
反思 (Reflection):在遇到不成功的終端節(jié)點(diǎn)時(shí),LM 生成自我反思,總結(jié)過(guò)程中的錯(cuò)誤并提出改進(jìn)方案。這些反思和失敗軌跡在后續(xù)迭代中作為額外上下文整合,幫助提高模型的表現(xiàn)。
當(dāng)采取行動(dòng)后,LATS不僅利用環(huán)境反饋,還結(jié)合來(lái)自語(yǔ)言模型的反饋,以判斷推理中是否存在錯(cuò)誤并提出替代方案。這種自我反思的能力與其強(qiáng)大的搜索算法相結(jié)合,使得LATS更適合處理一些相對(duì)復(fù)雜的任務(wù)。
總結(jié)
O1模型的發(fā)布,將繼續(xù)吹響大模型軍備競(jìng)賽的號(hào)角。在處理物理、化學(xué)和生物問題時(shí),o1的表現(xiàn)已經(jīng)和該領(lǐng)域的博士生水平不相上下。在國(guó)際數(shù)學(xué)奧林匹克的資格考試,o1的正確率為83%,成功進(jìn)入了美國(guó)前500名學(xué)生的行列。
這樣的發(fā)展速度令人驚嘆,也令人擔(dān)憂。AGI未來(lái)的發(fā)展能達(dá)到什么上限,我們不得而知。我們能做的,唯有持續(xù)學(xué)習(xí),跟上AI發(fā)展的步伐。
本文由人人都是產(chǎn)品經(jīng)理作者【風(fēng)叔】,微信公眾號(hào):【風(fēng)叔云】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于 CC0 協(xié)議。