AI大模型實(shí)戰(zhàn)篇:LATS,可能是目前最強(qiáng)的AI Agent設(shè)計(jì)框架
在人工智能領(lǐng)域,AI Agent的設(shè)計(jì)和實(shí)現(xiàn)一直是研究和應(yīng)用的熱點(diǎn)。本文深入剖析了LATS(Language Agent Tree Search)這一前沿的AI Agent設(shè)計(jì)框架,供大家參考。
在上篇文章《AI大模型實(shí)戰(zhàn)篇:Reflexion,通過(guò)強(qiáng)化學(xué)習(xí)提升模型推理能力》中,風(fēng)叔結(jié)合原理和具體源代碼,詳細(xì)介紹了Reflexion這種本質(zhì)是強(qiáng)化學(xué)習(xí)的AI Agent設(shè)計(jì)模式。Reflexion已經(jīng)算是一種非常高級(jí)的設(shè)計(jì)框架,在解決很多復(fù)雜問(wèn)題時(shí),也能有比較好的表現(xiàn)。
在這篇文章中,風(fēng)叔將為大家介紹可能是目前最強(qiáng)大的AI Agent設(shè)計(jì)框架,集多種規(guī)劃和反思技術(shù)的集大成者,LATS。文章內(nèi)容會(huì)相對(duì)比較復(fù)雜難懂,值得收藏和反復(fù)研讀。
一、LATS的概念
LATS,全稱是Language Agent Tree Search,說(shuō)的更直白一些,LATS = Tree search + ReAct + Plan&Execute+ Reflexion。這么來(lái)看,LATS確實(shí)非常高級(jí)和復(fù)雜,下面我們根據(jù)上面的等式,先從宏觀上拆解一下LATS。
1. Tree Search
Tree Search是一種樹(shù)搜索算法,LATS 使用蒙特卡羅樹(shù)搜索(MCTS)算法,通過(guò)平衡探索和利用,找到最優(yōu)決策路徑。
蒙特卡羅方法可能大家都比較熟悉了,是一種通過(guò)隨機(jī)采樣模擬來(lái)求解問(wèn)題的方法。通過(guò)生成隨機(jī)數(shù),建立概率模型,以解決難以通過(guò)其他方法解決的數(shù)值問(wèn)題。蒙特卡羅方法的一個(gè)典型應(yīng)用是求定積分。假設(shè)我們要計(jì)算函數(shù) f(x) 在[a, b]之間的積分,即陰影部分面積。
蒙特卡羅方法的解法如下:在[a, b]之間取一個(gè)隨機(jī)數(shù) x,用 f(x)?(b?a) 來(lái)估計(jì)陰影部分的面積。為了提高估計(jì)精度,可以取多個(gè)隨機(jī)數(shù) x,然后取這些估計(jì)值的平均值作為最終結(jié)果。當(dāng)取的隨機(jī)數(shù) x 越多,結(jié)果將越準(zhǔn)確,估計(jì)值將越接近真實(shí)值。
蒙特卡羅樹(shù)搜索(MCTS)則是一種基于樹(shù)結(jié)構(gòu)的蒙特卡羅方法。它在整個(gè) 2^N(N 為決策次數(shù),即樹(shù)深度)空間中進(jìn)行啟發(fā)式搜索,通過(guò)反饋機(jī)制尋找最優(yōu)路徑。MCTS 的五個(gè)主要核心部分是:
- 樹(shù)結(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)開(kāi)始,按照最大化某種啟發(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)開(kāi)始,進(jìn)行隨機(jī)模擬,直到到達(dá)終止?fàn)顟B(tài)。
- 反向傳播(Backpropagation):將模擬結(jié)果沿著路徑反向傳播,更新每個(gè)節(jié)點(diǎn)的統(tǒng)計(jì)信息。
2. ReAct
ReAct的概念和設(shè)計(jì)模式,風(fēng)叔在此前的文章中《AI大模型實(shí)戰(zhàn)篇:AI Agent設(shè)計(jì)模式 – ReAct》已做過(guò)詳細(xì)介紹。
它的典型流程如下圖所示,可以用一個(gè)有趣的循環(huán)來(lái)描述:思考(Thought)→ 行動(dòng)(Action)→ 觀察(Observation),簡(jiǎn)稱TAO循環(huán)。
- 思考(Thought):面對(duì)一個(gè)問(wèn)題,我們需要進(jìn)行深入的思考。這個(gè)思考過(guò)程是關(guān)于如何定義問(wèn)題、確定解決問(wèn)題所需的關(guān)鍵信息和推理步驟。
- 行動(dòng)(Action):確定了思考的方向后,接下來(lái)就是行動(dòng)的時(shí)刻。根據(jù)我們的思考,采取相應(yīng)的措施或執(zhí)行特定的任務(wù),以期望推動(dòng)問(wèn)題向解決的方向發(fā)展。
- 觀察(Observation):行動(dòng)之后,我們必須仔細(xì)觀察結(jié)果。這一步是檢驗(yàn)我們的行動(dòng)是否有效,是否接近了問(wèn)題的答案。
- 循環(huán)迭代
3. Plan & Execute
Plan & Execute的概念和設(shè)計(jì)模式,風(fēng)叔同樣在此前的文章中《AI大模型實(shí)戰(zhàn)篇:AI Agent設(shè)計(jì)模式 – Plan & Execute》已做過(guò)詳細(xì)介紹,因此不再贅述。
Plan-and-Execute這個(gè)方法的本質(zhì)是先計(jì)劃再執(zhí)行,即先把用戶的問(wèn)題分解成一個(gè)個(gè)的子任務(wù),然后再執(zhí)行各個(gè)子任務(wù),并根據(jù)執(zhí)行情況調(diào)整計(jì)劃。
4. Reflexion
Reflexion的概念和設(shè)計(jì)模式,風(fēng)叔在上篇文章《AI大模型實(shí)戰(zhàn)篇:Reflexion,通過(guò)強(qiáng)化學(xué)習(xí)提升模型推理能力》做了詳細(xì)介紹。
Reflexion的本質(zhì)是Basic Reflection加上強(qiáng)化學(xué)習(xí),完整的Reflexion框架由三個(gè)部分組成:
- 參與者(Actor):根據(jù)狀態(tài)觀測(cè)量生成文本和動(dòng)作。參與者在環(huán)境中采取行動(dòng)并接受觀察結(jié)果,從而形成軌跡。前文所介紹的Reflexion Agent,其實(shí)指的就是這一塊
- 評(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ǔ)在記憶組件中。智能體利用這些經(jīng)驗(yàn)(存儲(chǔ)在長(zhǎng)期記憶中)來(lái)快速改進(jìn)決策。
因此,融合了Tree Search、ReAct、Plan & Execute、Reflexion的能力于一身之后,LATS成為AI Agent設(shè)計(jì)模式中,集反思模式和規(guī)劃模式的大成者。
二、LATS的工作流程
LATS的工作流程如下圖所示,包括以下步驟:
- 選擇 (Selection):即從根節(jié)點(diǎn)開(kāi)始,使用上置信區(qū)樹(shù) (UCT) 算法選擇具有最高 UCT 值的子節(jié)點(diǎn)進(jìn)行擴(kuò)展。
- 擴(kuò)展 (Expansion):通過(guò)從預(yù)訓(xùn)練語(yǔ)言模型 (LM) 中采樣 n 個(gè)動(dòng)作擴(kuò)展樹(shù),接收每個(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é)果更新樹(shù)的值,路徑中的每個(gè)節(jié)點(diǎn)的值被更新以反映模擬結(jié)果。
- 反思 (Reflection):在遇到不成功的終端節(jié)點(diǎn)時(shí),LM 生成自我反思,總結(jié)過(guò)程中的錯(cuò)誤并提出改進(jìn)方案。這些反思和失敗軌跡在后續(xù)迭代中作為額外上下文整合,幫助提高模型的表現(xiàn)。
下圖是在langchain中實(shí)現(xiàn)LATS的過(guò)程:
第一步,選擇:根據(jù)下面步驟中的總獎(jiǎng)勵(lì)選擇最佳的下一步行動(dòng),如果找到解決方案或達(dá)到最大搜索深度,做出響應(yīng);否則就繼續(xù)搜索。
第二步,擴(kuò)展和執(zhí)行:生成N個(gè)潛在操作,并且并行執(zhí)行。
第三步,反思和評(píng)估:觀察行動(dòng)的結(jié)果,并根據(jù)反思和外部反饋對(duì)決策評(píng)分。
第四步,反向傳播:根據(jù)結(jié)果更新軌跡的分?jǐn)?shù)。
三、LATS的實(shí)現(xiàn)過(guò)程
下面,風(fēng)叔通過(guò)實(shí)際的源碼,詳細(xì)介紹LATS模式的實(shí)現(xiàn)方法。關(guān)注公眾號(hào)【風(fēng)叔云】,回復(fù)關(guān)鍵詞【LATS源碼】,可獲取LATS設(shè)計(jì)模式的完整源代碼。
第一步 構(gòu)建樹(shù)節(jié)點(diǎn)
LATS 基于蒙特卡羅樹(shù)搜索。對(duì)于每個(gè)搜索步驟,它都會(huì)選擇具有最高“置信上限”的節(jié)點(diǎn),這是一個(gè)平衡開(kāi)發(fā)(最高平均獎(jiǎng)勵(lì))和探索(最低訪問(wèn)量)的指標(biāo)。從該節(jié)點(diǎn)開(kāi)始,它會(huì)生成 N(在本例中為 5)個(gè)新的候選操作,并將它們添加到樹(shù)中。當(dāng)它生成有效解決方案或達(dá)到最大次數(shù)(搜索樹(shù)深度)時(shí),會(huì)停止搜索。
在Node節(jié)點(diǎn)中,我們定義了幾個(gè)關(guān)鍵的函數(shù):
- best_child:選擇 UCT 最高的子項(xiàng)進(jìn)行下一步搜索
- best_child_score:返回具有最高價(jià)值的子項(xiàng)
- height:檢查已經(jīng)推進(jìn)的樹(shù)的深度
- upper_confidence_bound:返回 UCT 分?jǐn)?shù),平衡分支的探索與利用
- backpropogate:利用反向傳播,更新此節(jié)點(diǎn)及其父節(jié)點(diǎn)的分?jǐn)?shù)
- get_trajectory:獲取代表此搜索分支的消息
- get_best_solution:返回當(dāng)前子樹(shù)中的最佳解決方案
第二步 構(gòu)建Agent
Agent將主要處理三個(gè)事項(xiàng):
- 反思:根據(jù)工具執(zhí)行響應(yīng)的結(jié)果打分
- 初始響應(yīng):創(chuàng)建根節(jié)點(diǎn),并開(kāi)始搜索
- 擴(kuò)展:從當(dāng)前樹(shù)中的最佳位置,生成5個(gè)候選的下一步
對(duì)于更多實(shí)際的應(yīng)用,比如代碼生成,可以將代碼執(zhí)行結(jié)果集成到反饋或獎(jiǎng)勵(lì)中,這種外部反饋對(duì)Agent效果的提升將非常有用。
對(duì)于Agent,首先構(gòu)建工具Tools,我們只使用了一個(gè)搜索引擎工具。
然后,構(gòu)建反射系統(tǒng),反射系統(tǒng)將根據(jù)決策和工具使用結(jié)果,對(duì)Agent的輸出進(jìn)行打分,我們將在其他兩個(gè)節(jié)點(diǎn)中調(diào)用此方法。
接下來(lái),我們從根節(jié)點(diǎn)開(kāi)始,根據(jù)用戶輸入進(jìn)行響應(yīng)
然后開(kāi)始根節(jié)點(diǎn),我們將候選節(jié)點(diǎn)生成和reflection打包到單個(gè)節(jié)點(diǎn)中。
第三步 生成候選節(jié)點(diǎn)
對(duì)于每個(gè)節(jié)點(diǎn),生成5個(gè)待探索的候選節(jié)點(diǎn)。
將候選節(jié)點(diǎn)生成和refleciton步驟打包在下面的擴(kuò)展節(jié)點(diǎn)中,所有操作都以批處理的方式進(jìn)行,以加快執(zhí)行速度。
第四步 構(gòu)建流程圖
下面,我們構(gòu)建流程圖,將根節(jié)點(diǎn)和擴(kuò)展節(jié)點(diǎn)加入進(jìn)來(lái)
至此,整個(gè)LATS的核心邏輯就介紹完了。關(guān)注公眾號(hào)【風(fēng)叔云】,回復(fù)關(guān)鍵詞【LATS源碼】,可獲取LATS設(shè)計(jì)模式的完整源代碼。
總結(jié)
與其他基于樹(shù)的方法相比,LATS實(shí)現(xiàn)了自我反思的推理步驟,顯著提升了性能。當(dāng)采取行動(dòng)后,LATS不僅利用環(huán)境反饋,還結(jié)合來(lái)自語(yǔ)言模型的反饋,以判斷推理中是否存在錯(cuò)誤并提出替代方案。這種自我反思的能力與其強(qiáng)大的搜索算法相結(jié)合,使得LATS更適合處理一些相對(duì)復(fù)雜的任務(wù)。
然而,由于算法本身的復(fù)雜性以及涉及的反思步驟,LATS通常比其他單智能體方法使用更多的計(jì)算資源,并且完成任務(wù)所需的時(shí)間更長(zhǎng)。
后記
這篇文章之后,整個(gè)《AI大模型實(shí)戰(zhàn)篇》系列就全部介紹完了,這個(gè)系列一共包括八篇文章,從最經(jīng)典的ReAct模式開(kāi)始,沿著規(guī)劃路線介紹了REWOO、Plan&Execute和LLM Compiler,沿著反思路線介紹了Basic Reflection、Self Discover和Reflexion,并以最強(qiáng)大的設(shè)計(jì)模式LATS作為收尾。整個(gè)系列基本上包含了目前AI大模型和AI Agent的全部主流設(shè)計(jì)框架,后續(xù)如果有新的前沿設(shè)計(jì)模式和具體案例,風(fēng)叔還會(huì)零星做一些介紹。
但是,所有的這些設(shè)計(jì)模式,都只是在告訴AI Agent應(yīng)該如何規(guī)劃和思考,且只能依賴于大模型既有的知識(shí)儲(chǔ)備。而實(shí)際應(yīng)用中,我們往往更希望AI Agent結(jié)合我們給定的知識(shí)和信息,在更專業(yè)的垂直領(lǐng)域內(nèi)進(jìn)行規(guī)劃和思考。
比如我們希望Agent幫我們做論文分析、書(shū)籍總結(jié),或者在企業(yè)級(jí)場(chǎng)景中,讓AI Agent寫營(yíng)銷計(jì)劃、內(nèi)部知識(shí)問(wèn)答、智能客服等等非常多的場(chǎng)景,只靠上面幾種Agent設(shè)計(jì)模式是遠(yuǎn)遠(yuǎn)不夠的,我們必須給大模型外掛知識(shí)庫(kù),并且通過(guò)工作流進(jìn)一步約束和規(guī)范Agent的思考方向和行為模式。
解決這個(gè)問(wèn)題的最佳方式是利用Rag技術(shù),接下來(lái)我們正式開(kāi)啟《Rag系統(tǒng)實(shí)戰(zhàn)篇》系列。在后續(xù)的幾篇文章中,風(fēng)叔將同樣結(jié)合應(yīng)用場(chǎng)景和源代碼,詳細(xì)介紹Rag系統(tǒng)的實(shí)現(xiàn)方式和優(yōu)化技巧。
對(duì)于還不太了解Rag的讀者,可以先參考風(fēng)叔的這兩篇文章進(jìn)行預(yù)習(xí)。
《聊聊炙手可熱的Rag:產(chǎn)生原因、基本原理與實(shí)施路徑》
《Rag系統(tǒng)的發(fā)展歷程,從樸素、高級(jí)到模塊化》
本文由人人都是產(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é)議。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!