SELF-REFINE: Iterative Refinement with Self-Feedback

news/2024/12/26 12:29:04/文章来源:https://www.cnblogs.com/yanlishao/p/18526188

1. 概述

基于给定的Prompt,大语言模型生成的Reponse可能不是最好的(这一点我认为当前的LLM大部分都是Decoder架构,基于已生成的结果产生下一个Token,一旦之前生成结果出错,也不容易及时改正。)。

本文为原始的生成添加了额外的反思重写步骤,过程如下:

  1. 对于给定的\(Input\),先交给LLM生成第一个版本的\(Output_n\),n表示生成的第n轮回复,初始值为1,
  2. 然后将\(Input\)\(Output_n\)交给LLM,让其提出\(Feedback_n\)
  3. \(Feedback_1\)\(Feedback_n\)\(Input\)\(Output_n\)交给LLM,使其反思重写得到\(Output_(n+1)\)
    重复2-3步骤,直到满足停止条件(轮数条件 or 数据质量条件)

作者用7类任务以及3个闭源模型(GPT-3.5、ChatGPT、GPT-4)进行验证,任务如下:

  • 段落情绪反转(输入一段文字和一个情绪,把这段文字改写成输入的情绪)
  • 对话生成
  • 代码优化
  • 代码可读性提升
  • 数学推理
  • 首字母缩略词生成
  • Constrained Generation(根据给定条件进行结果生成)

除数学推理任务以外,反思重写基本都有大幅度的效果提升。

2. 方法细节

其中

  1. \(P_(gen)\)是当前任务的Prompt。
  2. \(x\)表示任务输入,\(y_n\)则是每一次LLM输出的结果。\(||\)为串联符号。
  3. \(stop()\)函数为任务特定的停止函数,返回true表示不再需要进一步的生成反馈。
  4. \(P_(fb)\)是用于生成反馈的Prompt,\(fb_t\)则为生成的反馈信息。注意,不同任务使用了不同的\(P_(fb)\)
  5. \(P_(refine)\)为重写原始Response的Prompt

3. 实验

实验过程中使用的LLM包括:

  1. GPT-3.5
  2. ChatGPT
  3. GPT-4
  4. CODEX(代码任务额外使用了这个模型)

3.1 评估方式

  1. 任务metric:对于不同任务,评估标准采用和Baseline相同的metric。
  2. 人工评估(GSB)
  3. GPT-4评估

3.2 结果

  1. 除了数学推理任务,其他任务都有较大提升。
  2. 对于Constrained Generation任务,纠错现象极其频繁。
  3. 数学推理任务,由于错误过于细节,导致LLM无法纠错(会回答"everything looks good")。但是如果外部信息告知Response是否正确,反思重写能带来5%左右的提升。基于Oracle feedback进行Response正确性反馈的情况下,反思重写效果如下:
  4. Self-Refine的提升与模型规模相关联。 可以看到Self-Refine对于GPT-4的提升是大于GPT-3.5的,尽管有些情况下GPT-4的效果不如GPT3.5,例如Acronym Generation任务,仅使用GPT-4和GPT-3.5处理该问题,前者弱于后者11个点左右,但Self-Refine对GPT-4的提升却远超GPT-3.5

3.3 分析

3.3.1 反馈质量的影响

作者通过对3个任务(代码优化、情绪反转、首字母缩略词生成),采用不同的Feedback生成方式进行实验,包括:

  1. Self-Refine feedback
  2. Generic feedback:LLM生成的Feedback更加通用,而非精细的策略。例如,优化代码的策略可能会是Improve the efficiency of the code而不是Avoid repeated calculations in the for loop。
  3. No feedback:去掉LLM生成Feedback这一步,单纯的将上一步的输出交给LLM,让其重写。

实验证明:精细化的Feedback > 通用Feedback > 无Feedback

3.3.2 迭代Refine的影响

作者对3个任务(代码优化、情绪反转、Constrained Generation),统计Self-Refine进行不同轮次的Refine,效果变化。

\(y_n\)中的n代表迭代轮次。上图显示随着迭代轮次的增加,生成Response的效果会提升,但提升幅度会逐渐降低。

注意:作者发现,Feedback带来的提升是多方向的提升,可能存在单方向的降低,而别的方向更加优秀。

3.3.3 Self-Refine是否适用于弱模型

作者采用Vicuna-13B验证Self-Refine,但是它无法很好的完成refine工作,主要表现在无法很好的生成feedback。

错误分析

作者对70条数据(30条有正向提升,30条负向)进行分析,发现Self-Refine表现差主要由于Feedback生成较差(94%),而不是Refine过程出现问题(6%)。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于stm32的bacnet协议

bacnet协议对于国内网站来说,几乎可以说资料为零,通俗大论一遍,具体操作方法屁都没说 先从工具说起 开发工具 BACnetScan:(讯绕提供)(工具1) 链接:https://pan.baidu.com/s/1TJxc0xaEsCT3lJOlG78B7w 提取码:t7bw Yabe:(工具2) 链接:https://pan.baidu.com/s/1jfs…

未能加载文件或程序集 “项目名称对应的程序集,Version=1.0.0.0.culture=neutral.PublicKeyToken=null或它的某一个依赖项。系统找不到指定的文件。

Visual Studio 2022, AutoCAD开发, wpf项目, 因viewmodel中代码出现问题, 造成窗体设计器中无法预览(这个问题通过修改viewmodel代码解决), 删除项目路径下的obj及bin文件夹后, 重新生成项目, 出现新的错误:窗体能够显示了, 但个别控件无法正常显示, 以为是visual …

.Net Core关于项目引用和命名空间导入的一个小坑

.Net Core关于项目引用和命名空间导入的一个小坑 一、.Net Core项目嵌套引用的情况 经笔者测试验证,发现对于一个.Net Core项目Root,其引用另一个.Net Core项目Root.SubA后,Root项目会自动将Root.SubA项目引用的子项目,也纳入其引用项目池中,而无需再手动引用这些子项目。…

考研打卡(18)

开局(18) 开始时间 2024-11-15 16:36:35 结束时间 2024-11-15 16:53:39等会去打剧本杀数据结构1 以下________排序算法的最坏时间复杂度可以做到O(nlog(n))(暨南大学 2010年) A 归并排序 B 快速排序 C 冒泡排序 D 插入排序A 答案归并排序:基于分治的思想,其时间…

前端Git规范

AI前端Git规范 Git分支命名master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。 develop:开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都从该分支创建。其它分支为短期分支,其完成功能开发之后需要删除 feature/*:特性(功…

DNS批量解析管理软件有什么用

在复杂的网络环境中,DNS批量解析管理软件犹如一把功能强大的钥匙,开启了高效网络管理的大门,为网络运营和维护带来了诸多便利。 1、对于网络服务提供商而言,DNS批量解析管理软件极大地提高了工作效率 传统的DNS解析管理方式在处理大量域名时,往往需要逐个进行设置和调整,…

163邮箱发送邮件通知异常 org.springframework.mail.MailAuthenticationException: Authentication failed

从腾讯企业邮箱切换成163邮箱,邮箱配置经过检查未作调整,网络检查均是正常,但发送邮件时一直报错org.springframework.mail.MailAuthenticationException: Authentication failed。 解决办法: 1.检查smtp服务是否打开(若未打开需要开启)2.客户端授权码需打开3.检查邮箱配…

SpringBoot 3.3.5 集成 mybatis-plus-boot-starter 3.4.2报错

一、环境 JDK:17 SpringBoot:3.3.5 Mybatis-Plus:3.4.2 二、报错信息Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may nee…

js 日期遍历 小算法

js 日期遍历 小算法给一个完整月份日期 list ,怎样遍历出来 类似一个月 日历呢?勉强写了一个 基于vue<table><tbody><template v-for="n in 5"><tr><template v-for="w in 7"><template v-if="(w-1)+(n-1)*7 <…

2024-2025-1 20241322《计算机基础与程序设计》第八周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第八周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08这个作业的目标 功能设计与面向对象设计面向对…

echarts 画一个南丁格尔玫瑰饼图

const datas = [{name: 无信号,value: 5,label: { color: #06B7FFFF }},{name: 正常,value: 8,label: { color: #69D85DFF }},{name: 报警,value: 7,label: { color: #FA6400FF }},{name: 警告,value: 4,label: { color: #F7B500FF }} ]option = {tooltip: {trigger: item,form…

数字孪生技术:如何实现智能制造与城市管理的全新升级

在现代的数字化转型过程中,数字孪生技术成为许多行业实现智能化升级的重要推动力。而作为领先的可视化平台,山海鲸可视化通过其强大的鲸孪生组件,将数字孪生技术与可视化紧密结合,为企业和行业用户提供了一种全新的方式来管理、监控和优化复杂系统。下面我们将详细介绍山海…