經典論文ReAct精讀 原創
人類智能的一個獨特特征是能夠將面向任務的行為與語言推理(或稱作內心獨白)無縫結合。理論上,這被認為是人類認知中的重要一環,能夠實現自我調節或策略化并維持工作記憶。
以在廚房烹飪一道菜為例,在任何兩個具體行為之間,我們可能會:(1)用語言進行推理以跟蹤進度(例如“現在一切都切好了,我應該把水壺里的水加熱”);(2)處理異常情況或根據情況調整計劃(例如“我沒有鹽,所以讓我用醬油和胡椒代替”);(3)意識到何時需要外部信息(例如“我該如何準備面團?讓我在網上搜索一下”)。我們還可能采取行動(例如打開食譜書閱讀食譜,打開冰箱,檢查食材)以支持推理并回答問題(例如“我現在能做什么菜?”)。這種“行動”與“推理”之間的緊密協同使得人類能夠快速學習新任務并執行穩健的決策或推理,即使在之前未見過的情境下或面對信息不確定性時也能如此。
近期的研究結果暗示了在自主系統中結合語言推理與互動決策的可能性。
一方面,適當提示的大語言模型(Large Language Models, LLMs)已經在算術、常識和符號推理等任務中展示了通過問題推導答案的多步驟推理能力。然而,這種 “鏈條式思考”推理是一個靜態的黑箱,因為模型使用自己的內部表示來生成思考,并沒有與現實世界相結合,這限制了它進行反應性推理或更新知識的能力。這可能導致諸如事實虛構和推理過程中的錯誤傳播等問題。
另一方面,近期的研究探索了在交互環境中使用預訓練的語言模型進行規劃和行動,重點是利用語言先驗預測動作。這些方法通常將多模態觀察轉換為文本,使用語言模型生成特定領域的動作或計劃,然后使用控制器來選擇或執行它們。然而,它們并沒有使用語言模型來抽象地推理高級目標或維持工作記憶以支持行動。
在超越這種簡單的具身任務之外,還沒有研究探討如何在一般任務解決中將推理和行動以協同方式結合,以及這種結合是否可以與單獨推理或行動相比帶來系統性的好處。
基于以上考慮,姚順雨等人提出了ReAct通用框架,用于結合大語言模型進行推理和行動,以解決多樣化的語言推理和決策任務,系統示意圖如下圖所示。
ReAct提示大語言模型以交錯的方式生成與任務相關的語言推理追蹤和行動,這使得模型能夠進行:(1)推理以行動:動態推理以創建、維護和調整行動的高級計劃;(2)行動以推理:與外部環境(例如維基百科)互動,將額外信息納入推理。
圖 1 ReAct示例
1. 問題描述
考慮一個智能體(Agent)與環境進行交互,智能體的目標是解決某個特定任務。在時間步,智能體從環境接收到觀測,并按照某種策略采取行動,其中表示智能體進行決策所需要的上下文。
當映射是隱式形式且需要大量計算時,學習策略是比較困難的。例如,圖1(1c)中顯示的智能體無法生成正確的最終行動(Act4)來完成問答(QA)任務,因為它需要對軌跡上下文(問題,Act1-3,Obs1-3)進行復雜推理。同樣,圖1(2a)中顯示的代理無法從上下文中理解水槽1中沒有胡椒瓶1,因此持續產生幻覺的行動。
2. ReAct基本想法
ReAct的想法很簡單:ReAct將智能體的行動空間擴展到,其中表示語言空間。語言空間中的一個行動稱為思考或推理追蹤,不會影響外部環境,因此不會產生觀察反饋。相反,一個思考旨在通過推理當前上下文來組合有用的信息,并更新上下文以支持未來的推理或行動。如圖1所示,可能有各種類型的有用思考,例如分解任務目標并創建行動計劃(2b,Act1;1d,Thought 1),注入與任務解決相關的常識知識(2b,Act1),從觀察中提取重要部分(1d,Thought2,4),跟蹤進度并轉換行動計劃(2b,Act8),處理異常并調整行動計劃(1d,Thought3)等等。
然而,由于語言空間是無限的,在這個擴展的行動空間中學習是困難的,需要強大的語言先驗。為此,可以使用大語言模型進行處理。在論文中,作者使用一個凍結的大語言模型PaLM-540B,通過少量示例的上下文提示來生成特定領域的行動和自由形式的語言思考以解決任務(圖1 (1d),(2b))。每個上下文示例都是人類解決任務實例的行動、思考和環境觀察的軌跡。對于推理至關重要的任務(圖1(1)),作者交替生成思考和行動,使得任務解決軌跡包含多個思考-行動-觀察步驟。相比之下,對于可能涉及大量行動的決策任務(圖1(2)),思考只需要在軌跡中最相關的位置稀疏出現。因此,ReAct讓語言模型自行決定思考和行動的異步發生。
由于決策和推理能力被集成到一個大語言模型中,ReAct具有幾個獨特的特征:
- (1)直觀且易于設計:設計ReAct提示非常直接,人類注釋者只需在采取的行動之上用語言記錄下他們的思考。本文沒有使用特設的格式選擇、思考設計或示例選擇。
- (2)通用且靈活:由于靈活的思考空間和思考-行動發生格式,ReAct適用于具有不同行動空間和推理需求的多樣化任務,包括但不限于問答、事實驗證、文本游戲和網頁導航等任務。
- (3)高性能且穩健:ReAct在僅從一到六個上下文示例中學習時,對新任務實例表現出強大的泛化能力,一致地優于不同領域僅含推理或行動的基線。
- (4)與人類一致且可控:ReAct可以提供一個可解釋的順序決策和推理過程,人類可以輕松檢查推理和事實的正確性。
3. 知識密集型推理任務實踐
以下以一個知識密集型推理任務具體介紹ReAct如何工作。
3.1 基本設置
問題領域 作者考慮了兩個頗具挑戰性的知識檢索和推理數據集:(1)HotPotQA,一個需要基于兩個或更多維基百科段落進行推理的多跳問答基準;(2)FEVER,一個事實驗證基準,每個主張根據是否存在維基百科段落來驗證該主張,被標注為支持、反駁或信息不足。實驗時,模型只接收問題/主張作為輸入,沒有支持段落的訪問權限,并且必須依賴內部知識或通過與外部環境的互動來檢索知識以支持推理。
行動空間 作者設計了一個簡單的維基百科網絡API,包含三種類型的行動以支持交互式信息檢索:(1)search[實體],如果對應的實體維基頁面存在,則返回該頁面的前5個句子,否則從維基百科搜索引擎建議前5個相似的實體;(2)lookup[字符串],這將返回包含該字符串的頁面中的下一句話,模擬瀏覽器上的Ctrl+F功能。(3)finish[答案],這將用答案完成當前任務。注意到,這個行動空間大多數情況下只能根據精確的段落名檢索一小部分內容,這比最先進的詞匯或神經檢索器要弱得多。這樣做的目的是模擬人類如何與維基百科互動,并迫使模型通過顯式的語言推理來檢索信息。
3.2 方法
ReAct提示指令 對于HotpotQA和FEVER,作者從訓練集中隨機選擇了6個和3個示例,并手動編寫了符合ReAct格式的軌跡,用作提示中的少量示例。類似于圖1(d),每個軌跡包含多個思考-行動-觀察步驟。具體來說,作者使用了以下幾種思考的組合:分解問題(“我需要搜索x,找到y,然后找到z”),從維基百科觀察中提取信息(“x始于1844年”,“段落中沒有提到x”),執行常識推理(“x不是y,所以z必須是...”)或算術推理(“1844 < 1989”),指導搜索重構(“也許我可以搜索/查找x”),以及合成最終答案(“...所以答案是x”)。
基線 作者系統地消除了ReAct軌跡中的部分內容,以構建多個基線測試的提示(格式如圖1(1a-1c)所示):(a) 標準提示(Standard),移除了ReAct軌跡中的所有思考、行動和觀察。(b) 思考鏈提示(CoT),移除了行動和觀察,作為一個僅推理的基線。作者還構建了一個自我一致性基線(CoT-SC),通過在推理過程中采樣21個CoT軌跡,解碼溫度為0.7,并采用多數答案。(c) 僅行動提示(Act),移除了ReAct軌跡中的思考,松散地模擬了WebGPT與互聯網互動以回答問題的方式,盡管它操作的是不同的任務和行動空間,并且使用模仿和強化學習而不是提示。
結合內部和外部知識 ReAct展示的問題解決過程更加事實化和具體,而CoT在構建推理結構方面更加準確,但容易受到虛構事實或思考的影響。因此,作者提議結合ReAct和CoT-SC,并根據以下啟發式規則讓模型決定何時切換到另一種方法:A) ReAct CoT-SC:當ReAct在給定步驟內未能返回答案時,回退到CoT-SC。作者分別為HotpotQA和FEVER設置了7步和5步。B) CoT-SC ReAct:當n個CoT-SC樣本中的多數答案出現少于n/2次時(即內部知識可能不支持任務自信地完成),回退到ReAct。
微調 由于手動標注大規模推理軌跡和行動的挑戰,作者考慮了一種引導式方法,使用ReAct(以及其他基線)生成的3,000個正確答案的軌跡來微調更小的語言模型(PaLM-8/62B),以解碼基于輸入問題/主張的條件軌跡(所有思考、行動、觀察)。
表1 PaLM-540B的結果
3.3 實驗結果
ReAct在Act上持續表現更好 表1顯示了使用PaLM540B作為基礎模型,不同提示方法在HotpotQA和Fever上的結果。注意到,ReAct在這兩個任務上都優于Act,這證明了推理指導行動的價值,尤其是在合成最終答案方面,如圖1 (1c-d)所示。微調結果3也確認了推理軌跡對于更明智的行動的益處。
圖2 根據使用的CoT-SC樣本數量,PaLM-540B的提示結果。
ReAct vs. CoT 另一方面,ReAct在Fever上優于CoT(60.9 vs. 56.3),而在HotpotQA上略遜于CoT(27.4 vs. 29.4)。Fever的主張對于支持/反駁可能只略有不同,因此通過行動檢索準確和最新的知識至關重要。為了更好地理解ReAct和CoT在HotpotQA上的行為差異,作者從ReAct和CoT中分別隨機采樣了50個具有正確和錯誤答案的軌跡(總共200個示例),并在表2中手動標記了它們的成功和失敗模式。一些關鍵觀察結果如下:
- A) 對于CoT,虛構是一個嚴重的問題,導致其成功模式下的假陽性率遠高于ReAct(14% vs. 6%),并且是其主要失敗模式(56%)。相比之下,ReAct的問題解決軌跡更加扎實、事實驅動和可信,這是由于它訪問了一個外部知識庫。
- B) 盡管交錯推理、行動和觀察步驟提高了ReAct的扎實性和可信度,但這種結構約束也減少了它在制定推理步驟方面的靈活性,導致其推理錯誤率高于CoT。注意到,ReAct有一個特定的錯誤模式,模型會重復生成之前的思考和行動,作者將這種模式歸類為“推理錯誤”,因為模型無法推理出正確的下一步行動并跳出循環4。
- C) 對于ReAct,通過搜索成功檢索信息知識至關重要。非信息性搜索,占錯誤案例的23%,使模型推理偏離軌道,并使其難以恢復和重新制定思想。這可能是事實性和靈活性之間的一種預期權衡。
表2 在HotpotQA上,ReAct和CoT的成功和失敗模式類型,以及人類研究隨機選擇的示例中它們的百分比。
ReAct + CoT-SC在提示LLM上表現最佳 表1還顯示,在HotpotQA和Fever上最佳的提示方法分別是ReAct CoT-SC和CoT-SC ReAct。此外,圖2顯示了不同方法隨著使用CoT-SC樣本數量的變化表現。雖然兩種ReAct + CoT-SC方法在各自的任務上都具有優勢,但它們都顯著且一致地優于使用不同數量樣本的CoT-SC,僅使用3-5個樣本就達到了CoT-SC的表現。這些結果表明,適當結合模型的內部知識和外部知識對于推理任務的價值。
圖3 在HotPotQA上,使用ReAct和基線進行提示和微調的擴展結果
ReAct在微調中表現最佳 圖3顯示了在HotpotQA上對四種方法(標準、CoT、Act、ReAct)進行提示/微調的擴展效果。使用PaLM-8/62B,提示ReAct在四種方法中表現最差,這是由于從上下文示例中學習推理和行動的困難。然而,當僅使用3,000個示例進行微調時,ReAct成為四種方法中表現最佳的方法,PaLM-8B微調的ReAct優于所有PaLM-62B提示方法,而PaLM-62B微調的ReAct優于所有540B提示方法。與此相反,微調標準或CoT遠不如微調ReAct或Act對于PaLM8/62B,因為前者本質上是在教模型記住(可能虛構的)知識事實,而后者是在教模型如何推理和行動以從維基百科獲取信息,這是對知識推理更可推廣的技能。由于所有提示方法與特定領域的最先進方法(表1)仍有很大差距,作者認為使用更多人工編寫的數據進行微調可能是釋放ReAct力量更好的方式。
參考論文:https://arxiv.org/abs/2210.03629
本文轉載自公眾號AIGC最前線
