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