【LLM 论文】Self-Refine:使用 feedback 迭代修正 LLM 的 output

devtools/2024/9/24 12:24:11/

论文:Self-Refine: Iterative Refinement with Self-Feedback

⭐⭐⭐⭐

CMU, NeurIPS 2023, arXiv:2303.17651

Code: https://selfrefine.info/

论文速读

本文提出了 Self-Refine 的 prompt 策略,可以在无需额外训练的情况下,在下游任务上产生更好的效果。

该方法的直观 insight:我们在写一封 email 时,往往写出一个 draft,然后再修改其中措辞不当的地方,修改为更好的版本。

其思路如下图:

在这里插入图片描述

  • 首先,给定一个 input x x x,在 prompt p g e n p_{gen} pgen 下让 LLM 先生成一个初始 output y 0 y_0 y0
  • 进行迭代,每一轮 t t t 中:
    • Feedback:将 input x x x、上一轮 output y t y_t yt 和 prompt p f b p_{fb} pfb 给 LLM,得到这一轮的 feedback f b t fb_t fbt
    • Refine:将 input x x x、历史的所有 feedback 和 output、prompt p r e f i n e p_{refine} prefine 给 LLM,得到这一轮的 output t t + 1 t_{t+1} tt+1

如此迭代,直到 feedback 中被检查出有 stop 标识符,或者达到了最大迭代次数。

下面是一个使用 Self-Refine 来进行 code optimization 的示例:

在这里插入图片描述

总结

论文提出了 Self-Refine,核心就是反复迭代 Feedback 和 Refine 操作,从而让 LLM 在具体任务上有更好的表现。

论文在多个任务上进行了实验,发现 Self-Refine 可以有效地在各种任务上提升 LLM 的表现,当在较弱的小模型上则表现不佳(会重复输出)。


http://www.ppmy.cn/devtools/56531.html

相关文章

使用 JavaScript 的 classList 方法轻松切换样式

JavaScript提供了一个非常方便的属性classList,用于操作元素的类名 什么是 classList? classList 是一个 DOM 属性,它返回一个元素的类名集合,并提供了一系列操作这些类名的方法。常用的方法包括: add(className)&a…

最流行的文件同步软件

PanguFlow是一款免费的文件同步软件,他支持文件的全量同步、支持文件的增量同步、支持文件的实时备份,支持双向同步,支持三向同步甚至多向同步,支持无人值守运行。 PanguFlow数据同步软件下载地址https://pan.baidu.com/s/1GLjFR…

加速科技Flash存储测试解决方案 全面保障数据存储可靠性

Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器,作为现代电子设备中不可或缺的核心组件,承载着数据的存取重任。这种小巧而强大的芯片,以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…

C# 入门—实现 Hello, World!

目录 一、.net 平台与.NET Framework框架 .NET Framework的构成 CLR:公共语言运行库 FCL:框架类库 WinForms ASP.NET ADO.NET WPF WCF WF LINQ Entity Framework Parallel LINQ 二、.net 能干什么 .net 两种交互模式 .net 能干什么 .net …

每天一个数据分析题(三百九十)- 多元线性回归

在多元线性回归中,下列哪项可以缓解多重共线性问题? A. 取对数 B. 平方 C. 去除异常值 D. 逐步回归 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python,SQL&am…

俄罗斯防空系统

俄罗斯的S系列防空系统是一系列先进的地对空导弹系统,旨在防御各类空中威胁,包括飞机、无人机、巡航导弹和弹道导弹。以下是几种主要的S系列防空系统: 1. **S-300系统**: - **S-300P**:最早期的版本,用…

Batch文件中的goto命令:控制流程的艺术

Batch文件,也称为批处理脚本,是Windows操作系统中用于自动化任务的一种脚本文件。在Batch脚本中,goto命令是一个至关重要的控制结构,它允许脚本跳转到指定的标签位置,从而实现循环、条件分支等复杂的控制流程。本文将详…

使用kubeadm对K8S节点进行扩容

使用kubeadm扩容K8S节点数量 已经完成k8s集群的搭建,使用一段时间后,需要增加k8s节点的数量。借助kubeadm完成k8s节点的横向扩容。下面以centos7.9下面部署的一套1master2worker节点环境,扩容一个worker节点为例。 1. 待加入节点完成基础配…