英文名稱: Reflexion: Language Agents with Verbal Reinforcement Learning
中文名稱: 反思:具有言語強化學習的語言智能體
文章: http://arxiv.org/abs/2303.11366
代碼: https://github.com/noahshinn/reflexion
作者: Noah Shinn (Northeastern University)
日期: 2023-10-10
讀后感
論文提出了一種強化學習方法。傳統的調優主要是通過訓練調整網絡參數,而文中提出的方法則是“分析”錯誤,形成反思的“文字”并保存,在之后的決策中,將其作為上下文以幫助決策。
它利用大模型及其周邊方法構造了角色的行為、對結果的評價、當不能達成目標時,利用大模型來反思執行過程中具體哪一步出了問題,并將其作為反思存儲。這樣就構造了基于當前環境的短期存儲,和基于反思的長期存儲,結合二者使模型在未來做出更好的決策。
可將其視為把之前在棋類游戲中的強化學習擴展到了角色扮演游戲之中。之前的虛擬世界是棋盤,而現在的智能體置身于一個游戲世界;之前的行為是多步棋的組合,現在是多個行為的組合;之前是根據最終輸贏為每一步計算獎勵值,現在是利用大模型反思出每一步的對錯……
這個方法很巧妙,當然也是因為現在有了各種大模型,鏈式思維的方法,才能支持該方法的實現。
摘要
對于語言代理來說,通過傳統的強化學習方法進行試錯學習需要大量的訓練樣本和昂貴的模型微調。論文提出了 Reflexion 框架 ,通過語言反饋而不是更新權重來強化語言代理。Reflexion 足夠靈活,可以整合各種類型和來源的反饋信號,實驗證明,它在各種任務中取得顯著改進。
1. 引言
Reflexion 將環境中的反饋轉化為文本摘要,然后將其作為附加上下文添加到下一輪的 LLM 代理中,從以前的錯誤中學習,以在未來任務中表現更好。這類似于人類如何通過反思以往的失敗來形成改進,以便以少量嘗試的方式完成復雜任務。
與傳統方法相比,Reflexion 具有以下優點:
- 更為輕量,不需要對 LLM 進行微調
- 相比于難以進行準確信用分配的標量或向量獎勵,它允許更細致的反饋
- 允許更明確和可解釋的情節性記憶形式
- 為未來的決策提供了更明確的行動提示
其缺點是:
- 依賴于 LLM 的自我評估能力(或啟發式方法)
- 無法保證成功
文章貢獻如下:
? 提出了 Reflexion,一種新的基于語言的強化學習范式,結合了智能體的記憶與 LLM 參數的選擇,以優化策略。
? 探索了 LLM 中自我反思的性質,證明自我反思對于少量數據的復雜任務非常有用。
? 引入了包含 40 個具有挑戰性的 Leetcode 問題(“困難級別”)的代碼生成,涵蓋了 19 種編程語言。
? 展示了 Reflexion 在多個任務上相對于強基線方法的改進。
2. 相關工作
略…
3. 方法
- Actor:角色,使用 LLM 實現,它基于可觀察的狀態,利用提示生成文本和動作。類似強化學習中的基于策略的方法,在時間步 t,從策略 πθ 中采樣一個動作 at,它探索了各種 Actor 模型,包括 COT 和 ReAct,從而豐富了探索空間。
- Evaluator:評估器,用于評估 Actor 輸出的質量。將生成的軌跡作為輸入,計算在給定任務上下文中的獎勵分數。對于推理任務,探索基于精確匹配(EM)評分的獎勵函數;對于決策任務,采用根據特定評估標準的預定義啟發式函數;還使用 LLM 的不同實例作為評估器,為決策和編程任務生成獎勵。
- Self-reflection:自我反思,使用 LLM 實現,用于生成基于語言的反思。在給出稀疏獎勵信號,如二元狀態(成功/失敗),當前軌跡及其持久記憶內存。自我反思模型會生成細致入微且具體的反饋,這種反饋相比標量獎勵提供更多信息,然后被存儲在代理的內存 (mem) 中。如在多步決策任務中,當智能體收到失敗信號時,它可以推斷出特定動作 ai 導致了后續錯誤動作 ai+1 和 ai+2。然后,智能體可以用語言聲明它應該采取不同的動作 a’ i,這將導致 a’ i+1 和 a’ i+2,并將該經驗存儲在其記憶中。在隨后的試驗中,智能體可以利用其過去的經驗,通過選擇動作 a’ i 來調整其在時間 t 的決策方法。這種嘗試、錯誤、自我反思和持久記憶的迭代過程使智能體能夠利用信息反饋信號快速提高其在各種環境中的決策能力。
- Memory:內存組件,為 Agent 提供額外的上下文。它提供短期記憶和長期記憶。在推理時,Actor 根據短期和長期記憶做出決定,在強化學習設置中,軌跡歷史充當短期記憶,而自我反思模型的輸出則存儲在長期記憶中。這是反思 Agent 相對于其他 LLM 的關鍵優勢。類似于人類記住近期細節的方式,同時也回憶從長期記憶中提煉出的重要經驗。
- The Reflexion process:反思過程,如算法 -1 所示的迭代優化過程。在第一次試驗中,Actor 通過與環境交互產生軌跡 τ0。然后評估器產生一個分數 r0;rt 是標量獎勵;為了放大 r0 ,自我反思模型分析 {τ0, r0} 集合以生成存儲在內存 mem 中的摘要 sr0。srt 是對試驗 t 的語言反饋。 Actor、Evaluator 和 Self-Reflection 模型通過循環試驗協同工作,直到 Evaluator 認為 τt 是正確的。每次試驗后 t、srt 都會附加存入 mem。在實踐中,通過存儲經驗的最大數量 Ω(通常設置為 1-3)來限制 mem,從而不超過 LLM 的上下文限制。
4. 實驗
4.1 順序決策制定:ALFWorld
在 AlfWorld 常見家庭環境中的多步任務中,反思使性能提高了 22%。
4.2 推理:HotpotQA
HotPotQA 是一個基于維基百科的數據集,包含 113k 個問題和答案對,代理解析內容并在多個支持文檔上進行推理。
論文實現了一個反思 + 思維鏈的 Agent,它可以使用維基百科 API 檢索相關上下文,并使用逐步顯式思考推斷答案。加入反思在該任務中提升了 20%,
4.3 編程
在 MBPP、HumanEval 和 LeetcodeHardGym 上評估了基準和 Reflexion 方法在 Python 和 Rust 代碼編寫方面的表現。除了 MBPP Python 1,Reflexion 在所有測試中表現優于所有基準準確性,