论文解读:吴恩达来信AI Agent技巧—利用自我反馈的迭代细化技术

《自我完善:利用自我反馈的迭代细化技术》

https://arxiv.org/pdf/2303.17651.pdf

摘要

Large language models (LLMs) 经常无法在一次尝试中生成最佳输出。受人类在修改书面文本时所表现出的迭代精炼过程的启发,

我们提出了 SELF-REFINE,一种通过迭代反馈和精炼来改进大型语言模型初始输出的方法。主要思想是使用一个语言模型生成初始输出;

然后,该语言模型对其输出提供反馈,并使用这些反馈来精炼自己,迭代进行。

SELF-REFINE 不需要任何监督训练数据、额外的训练或强化学习,而是使用单个语言模型作为生成器、精炼器和反馈提供者。

我们使用最先进的语言模型(GPT-3.5 和 GPT-4)在 7 项不同的任务上评估 SELF-REFINE,这些任务涵盖了从对话响应生成到数学推理的各个方面。在所有评估的任务中,使用 SELF-REFINE 生成的输出在人类和自动指标上的偏好程度均优于使用相同语言模型通过传统的一次性生成生成的输出,平均提高了约 20% 的绝对性能。我们的工作表明,即使是像 GPT-4 这样的最先进的语言模型,也可以通过我们简单、独立的迭代精炼方法在测试时进一步提高性能。

1. SELF-REFINE主要能做什么

1.1. 利用反馈来提高对话的质量和相关性。

图 2(a):初始输出,用户对打乒乓球感兴趣。

图 2(b):反馈,指出初始输出没有提供关于乒乓球的信息,也没有理解用户的心理状态。

图 2©:优化后的输出,更加吸引人,并且理解用户的需求和心理状态。

1.2. 利用反馈来提高代码的质量和效率。

代码优化:

图 2(d):初始代码,使用了6层嵌套循环来计算矩阵乘积。

图 2(e):反馈,指出这段代码效率低下,建议使用公式来优化。

图 2(f):优化后的代码,使用了动态规划的方法来计算矩阵乘积,大大提高了效率。

2. SELF-REFINE与其他迭代优化方法对比

以上列出了几种不同的迭代优化方法,包括以下几个方面:

  • 监督方式:是否需要额外的监督数据。
  • 反馈来源:反馈的来源,包括人类、强化学习奖励函数、模型本身等。
  • 反馈类型:反馈的形式,包括自然语言反馈、非自然语言反馈等。
  • 优化器训练方式:优化器的训练方式,包括监督学习、强化学习等。
  • 优化器类型:是否需要训练一个专门的优化器。

SELF-REFINE的优势

  • SELF-REFINE不需要额外训练数据或专门的优化器,只需要少量示例即可应用到不同的任务上。
  • SELF-REFINE使用自然语言反馈,而其他一些方法使用非自然语言反馈或奖励函数。
  • SELF-REFINE是迭代框架,与其他强化学习或监督学习方法不同。
  • SELF-REFINE利用了语言模型的多任务学习能力,而其他一些方法需要训练专门的优化器。

总的来说,表 3 对比了SELF-REFINE与其他迭代优化方法,突出了SELF-REFINE的简单性、无需额外训练和适用性广泛的特点。

3. SELF-REFINE算法的描述

SELF-REFINE利用语言模型进行迭代自我反馈和优化,以提高其输出的质量。

算法包含初始生成、反馈和优化三个步骤,不断迭代直到满足停止条件。

  1. 初始生成:使用语言模型M生成初始输出y0。
  2. 反馈:将y0传递回M,生成反馈fb。
  3. 优化:根据fb,使用M生成优化后的输出y1。
  4. 迭代:重复上述步骤,直到满足停止条件。

4. SELF-REFINE算法使用的评估指标

SELF-REFINE算法使用的评估指标,包括:

  1. 任务特定指标:对于一些任务,使用了之前工作定义的自动化指标,如数学推理任务的解决率,代码优化任务的优化程序百分比等。
  2. 人类偏好:对于对话响应生成、代码可读性改进、情感反转和缩略词生成等任务,由于缺乏自动化指标,进行了盲人A/B测试,以选择更符合任务指导的输出。
  3. GPT-4偏好:除了人类偏好,还使用GPT-4作为人类偏好的代理,对生成的输出进行偏好评估。
  4. 统计置信区间:在表13中,展示了每个任务上SELF-REFINE相对于基础模型的改进,并提供了Wilson置信区间和统计显著性。

5. 主要结论

  1. SELF-REFINE在所有任务上都能提高基础语言模型的性能,效果明显,平均提高了约20%的绝对性能。
  2. 在偏好任务上,如对话响应生成、情感反转和缩略词生成,SELF-REFINE的改进尤为显著。
  3. 在数学推理任务上,由于错误判断的复杂性,SELF-REFINE的改进较小,但文章指出如果外部能判断当前答案是否错误,则SELF-REFINE的改进会更大。
  4. 在代码优化和生成任务中,SELF-REFINE也能提高基础模型Codex的性能。
  5. SELF-REFINE的效果在不同基础模型上基本一致,GPT-4+SELF-REFINE通常优于GPT-3.5+SELF-REFINE和ChatGPT+SELF-REFINE。
  6. 比较结果表明,SELF-REFINE能够帮助解锁更强大模型(如GPT-4)的潜力。

6. 例子

6.1. 对话响应生成:

初始响应: "The best way to cook pasta is to… "

反馈: “Make response relevant, engaging, safe”

优化后的响应: "Boil water, add salt, and cook pasta… "

6.2. 代码优化:

初始代码: “Nested loop for matrix product”

反馈: “Improve time complexity”

优化后的代码: “Use NumPy’s optimized matmul function”

6.3. 代码可读性改进:

初始代码: “Unclear variable names, no comments”

反馈: “Enhance variable naming; add comments”

优化后的代码: “Clear variables, meaningful comments”

6.4. 数学推理:

初始代码: “Olivia has $23, buys 5 bagels at$3 each”

反馈: “Show step-by-step solution”

优化后的代码: “Solution with detailed explanation”

6.5. 情感反转:

初始文本: "The food was fantastic… "

反馈: “Increase negative sentiment”

优化后的文本: "The food was utterly terrible… "

6.6. 缩略词生成:

初始文本: “Radio Detecting and Ranging”

反馈: “be context relevant; easy pronunciation”

优化后的文本: “RADAR”

6.7. 约束生成:

初始文本: “During our beach vacation…”

反馈: “Include keywords; maintain coherence”

优化后的文本: “During our beach vacation was filled with relaxation”

7. 如何应用?

7.1. 如何将SELF-REFINE应用于我的特定写作场景?

  1. 您的写作目标是什么? 您希望 SELF-REFINE 帮助您达到什么特定的写作目标?
  2. 您写作的主题或领域是什么? SELF-REFINE 适用于各种主题,了解您的主题可以帮助确定最适合的提示和反馈。
  3. 您希望在哪些方面改进您的写作? 例如,您希望改进语言的流畅性、逻辑性、创意性还是其他方面?
  4. 您是否有特定的写作限制或要求? 例如,您需要满足特定的字数限制或格式要求。
  5. 您是否有一个初步的写作草稿? 如果有的话,您可以分享给我,这样我可以更好地理解您的写作风格和内容,并提供更具体的建议。

7.2. 如何使用SELF-REFINE来提升文章的逻辑性?

  1. 初始生成:首先,使用您的语言模型生成文章的初步草稿。
  2. 设计反馈机制:
  3. 逻辑连贯性:设计一个反馈机制来评估文章的逻辑连贯性。这可能包括检查文章中的论点是否合理、论据是否充分以及论点和论据之间的联系是否紧密。
  4. 逻辑错误:识别文章中的逻辑错误,例如不一致、循环论证、无效论证等。
  5. 逻辑清晰性:确保文章的逻辑结构清晰,读者可以轻松理解作者的思路。
  6. 迭代反馈与精炼:
  7. 反馈生成:使用同一语言模型为初步草稿生成反馈,指出逻辑上的优点和需要改进的地方。
  8. 精炼:基于反馈,调整文章的结构、论点和论据,以提高逻辑性。
  9. 迭代:重复反馈和精炼步骤,每次都根据上一次的反馈改进文章。
  10. 最终评估:
  11. 人类评估:请其他人阅读最终版本的文章,评估其逻辑性,并与原始版本进行比较。
  12. 自动评估:如果可能,使用自动评估工具来量化逻辑性的改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win10下使用qemu安装aarch64架构的iso镜像虚拟机

1、win下安装qemu 最新版 可在如下链接进行下载安装 QEMU for Windows – Installers (64 bit) 2、准备aarch64的iso镜像 我这里使用的是 Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso 3、使用如下命令启动虚拟机安装 打开powershell cd C:\Program Files\…

创建一个qt登录界面,密码账号正确转到窗口2,否则弹出对话框提示账号密码错误,窗口2有四个按键,三个按键可以朗读按键文本,第四个退出。

作业要求: 主函数: int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();Form1 f;//连接窗口1的信号函数和窗口2打开的lambda函数Widget::connect(&w,&Widget::login,[&](){f.show();});return a.exec(); }窗…

MySQL中的SQL高级语句[一](下篇)

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法,看完代码自己敲一遍,十分有用 拖动表名到查询文件中就可以直接把名字拉进来以下是使用脚本方法,也可以直接进行修改中括号,就代表可写可不写 目录 1.数…

【路径规划】基于六次多项式的多关节机器人避障路径规划

最近迷上了机械臂避障轨迹规划,因为之前一直做的都是无障碍物轨迹规划,所以这次想试一下有障碍物的,把避障算法用在我的SimMechanics机械臂上,看看效果咋样。以下定义不区分路径规划和轨迹规划。   by the way,本文实…

RAG文本加载和分块调研

文本加载和分块 一、文本加载 文本加载是RAG文本增强检索重要环节。文件有不同类型(excel、word、ppt、pdf、png、html、eps、gif、mp4、zip等),衍生出了很多第三方库。使用python处理文件是各种python开发岗位都需要的操作。主要涉及到的标准…

PostgreSQL入门到实战-第四弹

PostgreSQL入门到实战 PostgreSQL查询语句(一)官网地址PostgreSQL概述查询语句概述查询语句实操更新计划 PostgreSQL查询语句(一) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概述…

reids-AOF(Append Only File)持久化使用方法

一,什么是AOF(Append Only File) 将我们所有的命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍 以日志的形式来记录每个写的操作,将Redis执行过的所有指令记录下来(读操作不记录&…

利用Java代码调用Lua脚本改造分布式锁

4.8 利用Java代码调用Lua脚本改造分布式锁 lua脚本本身并不需要大家花费太多时间去研究,只需要知道如何调用,大致是什么意思即可,所以在笔记中并不会详细的去解释这些lua表达式的含义。 我们的RedisTemplate中,可以利用execute方…

V神演讲展望Web3发展并认为可引入人工智能

前言 2024 香港 Web3 嘉年华期间,以太坊联合创始人 Vitalik Buterin 发表主旨演讲《Reaching the Limits of Protocol Design》。以下是演讲内容: 区块链与ZK-SNARKS 我们用来构建协议的技术类型在过去 10 年里发生了很大变化。那么,当 2…

[react优化] 避免组件或数据多次渲染/计算

代码如下 点击视图x➕1,导致视图更新, 视图更细导致a也重新大量计算!!这很浪费时间 function App() {const [x, setX] useState(3)const y x 2console.log(重新渲染, x, y);console.time(timer)let a 0for (let index 0; index < 1000000000; index) {a}console.timeE…

CodeMirror使用: 编写一个在线编辑HTML、JS、CSS文件,网页的模板页面-初实现

前言&#xff1a;前几天编写一个UI模板控制的功能&#xff0c;根据上传的前端模板更换跳转入口主题页面&#xff1b;在编写的时候&#xff0c;突发奇想能不能在列表页面进行在线编辑刚刚上传的模板zip压缩包里的页面...于是经过学习研究有了这篇文章&#xff1b;当日记本一样记…

主机有被植入挖矿病毒篡改系统库文件

查看主机有被植入挖矿病毒篡改系统库文件的行为 排查方法 挖矿病毒被植入主机后&#xff0c;利用主机的运算力进行挖矿&#xff0c;主要体现在CPU使用率高达90%以上&#xff0c;有大量对外进行网络连接的日志记录。 Linux主机中挖矿病毒后的现象如下图所示&#xff1a; &…

在Linux中使用dpkg -i离线安装下载的deb软件包

“dpkg -i” 是 Debian 系统中用于安装 .deb 格式软件包的命令。它是 Debian Package Management System&#xff08;DPMS&#xff09;的一部分&#xff0c;允许用户通过命令行界面来管理软件包。 使用该命令时&#xff0c;需要提供要安装的软件包的路径作为参数。例如&#…

Walmart.com DSV XML对接需求

此前的文章Walmart.com DSV EDI对接需求中&#xff0c;为大家介绍了如果选择传输EDI文件需要做的准备与需求。本文将为大家介绍Walmart.com 与DSV&#xff08;Drop Ship Vender&#xff09;之间传输XML文件的需求。与EDI相比&#xff0c;XML文件的处理难度相对低一些。无论企业…

2007-2022年上市公司企业绿色创新效率数据

2007-2022年上市公司企业绿色创新效率数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;stkcd、year、绿色科技研发效率、绿色成果转化效率 3、来源&#xff1a;上市公司年报、上市公司社会责任报告、上市公司网站信息 4、计算方法&…

自动化测试大总结

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

[NKCTF2024]-PWN:leak解析(中国剩余定理泄露libc地址,汇编覆盖返回地址)

查看保护 查看ida 先放exp 完整exp&#xff1a; from pwn import* from sympy.ntheory.modular import crt context(log_leveldebug,archamd64)while True:pprocess(./leak)ps[101,103,107,109,113,127]p.sendafter(bsecret\n,bytes(ps))cs[0]*6for i in range(6):cs[i]u32(p…

想要品牌传播有效,先清楚这三个本质问题

在互联网时代&#xff0c;企业想要提高市场竞争力就需要做好品牌传播。然而有许多企业在做品牌传播时都会踩坑&#xff0c;原因是因为忽视了这三点&#xff0c;接下来就让媒介盒子和大家分享&#xff1a; 一、 文案本质是“购买理由” 在文案技巧中经常会出现一些词&#xff…

【SVN】clean up报错:Cleanup failed to process the following paths 解决方法

报错来源&#xff1a;代码更新有一个文件既不能接受自己的也不能接受别人的&#xff0c;只能取消&#xff0c;再提交提醒clean up&#xff0c;随后报标题错误。 解决方法&#xff1a;参考https://www.cnblogs.com/pinpin/p/11395438.html 1.下载sqlite3 网址&#xff1a;SQL…

请求转发和请求重定向的区别

请求转发(Forward)和请求重定向(Redirect)虽然都是 HTTP 服务器&#xff0c;处理客户端请求时进行(页面)跳转的实现方式&#xff0c;但是二者有以下 5 点不同: 1. 定义不同。 2. 跳转方不同。 3. 数据共享不同。 4.最终 URL 地址不同。 5.代码实现不同。 具体内容如下&…