論文閱讀_反思模型_Reflexion

英文名稱: 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 在所有測試中表現優于所有基準準確性,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212022.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker 一鍵尋找容器在服務器存儲位置

docker ps -a找到容器id/容器名稱 docker inspect 容器id/容器名稱 | grep UpperDir找出該容器在物理機的位置 inspect作用:查看docker詳細信息 cd到UpperDir所指向的地址,找到配置文件并修改,到這后,這個位置和你用exec命令進入容器內看到文件是一致的

AtCoder Beginner Contest 328

A - Not Too Hard (atcoder.jp) AC代碼: #include<bits/stdc.h> #define endl \n //#define int long long using namespace std; const int N10; int s[N]; int n,x; void solve() {cin>>n>>x;for(int i1;i<n;i) cin>>s[i];int ans0;for(int i1;…

go-zero 開發之安裝 etcd

本文只涉及 Linux 上的安裝。 二進制安裝 下載二進制安裝包 #ETCD_VERv3.4.28 ETCD_VERv3.5.10 DOWNLOAD_URLhttps://github.com/etcd-io/etcd/releases/download INSTALL_DIR/tmprm -f ${INSTALL_DIR}/etcd-${ETCD_VER}-linux-amd64.tar.gz rm -rf ${INSTALL_DIR}/etcd-dow…

反匯編語言區分函數和運算符

在匯編語言中&#xff0c;函數和運算符可以通過一些特定的指令和約定來區分。 函數&#xff1a; 函數通常由一系列指令組成&#xff0c;用于執行特定的任務或操作。函數通常具有入口點和出口點&#xff0c;分別表示函數的開始和結束位置。函數通常包含參數傳遞、局部變量的分配…

windows錯誤事件 98、41、7000、55、153解決辦法

事件錯誤&#xff1a;98、55、153 疑難解答清單 在系統事件日志中&#xff0c;搜索新技術文件系統 (NTFS) 和磁盤相關的警告和錯誤。 例如&#xff0c;事件 ID 55、153 或 98。 管理員身份打開CMD&#xff0c;運行命令 chkdsk /scan 并檢查結果。 該 chkdsk /scan 命令是只讀…

字符串詳解+代碼分析

目錄 1. 字符與整數的聯系——ASCII碼每個常用字符都對應一個-128 ~ 127的數字&#xff0c;二者之間可以相互轉化。注意&#xff1a;目前負數沒有與之對應的字符。 2.字符數組 2.2 字符數組的常用操作下面幾個函數需要引入頭文件: 2.3 遍歷字符數組中的字符&#xff1a; 3.…

ICMP協議以及報文講解(ICMP查詢報文、ICMP差錯報文)

目錄 ICMP協議 ICMP報文格式 ICMP回顯請求/應答報文 ICMP差錯報文 ICMP 宿主機不可達差錯報文 ICMP 重定向差錯報文 ICMP TTL超時差錯報文 ICMP協議 ICMP協議的作用 ICMP&#xff08;Internet Control massage protocol&#xff09;因特網控制協議&#xff0c;主要用來…

C語言再學習 -- 單精度(float)和雙精度(double)浮點數 與 十六進制(HEX) 之間轉換(轉載))

之前講過浮點數部分&#xff0c;參看&#xff1a;C語言再學習 – 浮點數 現在程序中要將浮點數&#xff0c;通過TCP發送。那得先將其轉換為十六進制才行呀。 那么問題就來了。 參看&#xff1a;C語言&#xff1a;單精度(float)和雙精度(double)浮點數 與 十六進制(HEX) 之間…

(JAVA)-打印流

打印流是高級流&#xff0c;只能寫不能讀&#xff0c;只有輸出流 只操作文件目的地&#xff0c;不操作數據源 能實現數據的原樣輸出 printStream:字節打印流 構造方法&#xff1a; 用文件或地址的方式創建字節打印流也會創建一個字節基本流。 字節流底層沒有緩存區&#xff…

文檔或書籍掃描為 PDF:ScanPapyrus Crack

ScanPapyrus 可讓您快速輕松地將文檔或書籍掃描為 PDF&#xff0c;批處理模式使掃描過程快速高效&#xff0c;自動處理書籍并將其拆分為單獨的頁面 用于快速掃描文檔、書籍或打印照片的掃描儀軟件 快速掃描文檔 使用此掃描儀軟件&#xff0c;您無需在掃描儀和計算機之間來回移動…

SpringBoot 官方腳手架不再支持Java8和Java11

Spring 官方腳手架不再支持初始化 Java8 和 Java 11 項目&#xff0c;目前僅支持初始化Java17 和 Java21 項目。 阿里巴巴Spring腳手架支持初始化Java8、Java11、Java17、Java19 的項目&#xff0c;不支持初始化Java21的項目。

Torn Lucky Ticket

題目 #include<bits/stdc.h> using namespace std; #define int long long const int maxn 1e6 5, d 500; vector<string> vec[6]; int mp[1005]; signed main(){int n;cin >> n;for(int i 1; i < n; i){string s;cin >> s;int len s.size();…

java簡述springboot內置數據庫 并舉例啟動h2內存數據環境

在前面 我們講了 springboot 給我們提供了 默認的 數據源 默認 HikariCP 以及其他兩種內置數據源 持久化技術 JdbcTemplate 那么 說起來很多人難以置信 不過 springboot 也真的給我們內置了數據庫技術 而且不止一種 是三種 這三個數據庫的特點在于 它們都是用java語言寫的 就表…

28 動態規劃解按摩師的最長預約時間

問題描述&#xff1a;一名有名的按摩師會受到源源不斷的預約請求&#xff0c;每個預約都可以選擇接或者不接&#xff0c;在每次預約服務之間要有休息時間&#xff0c;因此不能接相鄰的預約&#xff0c;給定一個請求序列&#xff0c;按摩師找到最優的預約集合(總預約時間最長)&a…

探索中文文本處理利器 - Python jieba庫詳解

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com jieba庫介紹 在處理中文文本數據時&#xff0c;分詞是一項至關重要的任務。而在Python的工具箱中&#xff0c;jieba庫作為一款強大的中文分詞工具&#xff0c;為開發者提供了高效而靈活的解決方案。jieba&#…

JDK8新特性:Lambda表達式規則及用法,方法引用

目錄 Lambda表達式是JDK8新增的一種語法格式 1.作用 2.用法規則&#xff1a; 3.方法引用 Lambda表達式是JDK8新增的一種語法格式 1.作用 簡化匿名內部類的代碼寫法 Lambad用法前提&#xff1a;只能簡化函數式接口&#xff08;一般加有Funcationallnterface&#xff09;&a…

Python dateutil 庫:簡化日期和時間處理的利器

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 在Python中&#xff0c;處理日期和時間是常見的任務之一。dateutil庫是Python標準庫中datetime模塊的擴展&#xff0c;提供了許多方便的工具和函數&#xff0c;簡化了日期和時間的操作。 安裝與基本用法 首先&…

小黑子之——MybatiPlus整合

MybatiPlus學習 一、MybatiPlus簡介1.1 入門案例1.2 mybatisPlus概述1.3 總結 二、標準數據層開發2.1 標準的CRUD使用2.2 新增2.3 刪除2.4 修改2.5 根據Id查詢2.6 查詢全部2.7 Lombok2.8 分頁功能 三、DQL控制3.1 條件查詢方式3.1.1 構建條件查詢3.1.2 多條件查詢3.1.3 null值判…

運維05:自動化

人工運維時代 運維人員早期需要維護眾多的機器&#xff0c;因此需要執行很多重復的勞動&#xff0c;很多機器需要同時部署相同的服務或者是執行相同的命令&#xff0c;還得反復地登錄不同的機器&#xff0c;執行重復的動作 自動化運維時代 早期運維人員會結合ssh免密登錄&…

Java基礎——對象類型轉換(向上、向下轉型)

非繼承關系的類之間對象類型不可以互相類型轉換&#xff0c;只有繼承關系才可以互相轉換。 簡單說&#xff0c;對象類型轉換的前提要是繼承關系。 對象類型轉換分為&#xff1a;向上轉型和向下轉型。多態就是一種自動向上轉型。 向上轉型&#xff1a;子類對象用父類類型接收…