1.论文速读(摘要+引言)
本文主要提出了Self-Refine策略,旨在通过一个LLM不断refine
修正LLM的输出,使其在无需额外训练的情况下,在下游任务产生更好的效果。
该方法的直观Insight:我们在写一封 email 时,往往写出一个 draft,然后再修改其中措辞不当的地方,修改为更好的版本。
其思路如下图:
- 首先,给定一个
input x
,在prompt pgen
下让 LLM 先生成一个初始outputy0
。 - 进行迭代,每一轮 t 中:
-
- Feedback:将
input x
、上一轮output y(t)
和prompt p(fb)
给 LLM,得到这一轮的feedback f(bt)
。【feedback的prompt】
- Feedback:将
-
- Refine:将
input x
、历史的所有 feedback
和output
、prompt P(refine)
给 LLM,得到这一轮的 output T(t+1)。【refine重新优化的prompt】
- Refine:将
如此迭代,直到 feedback 中被检查出有stop
标识符,或者达到了最大迭代次数。
2.方法 method
给定输入,self-refine生成最初的输出,根据该输出提出反馈,然后根据反馈优化输出。直到得到满意的答案。self-refine依靠LLM和三个prompts(生成输出的Prompt,生成反馈的Prompt,根据反馈优化输出的优化Prompt)
3.评估
主要在这几个任务
进行评估:
对话生成
代码优化
代码可读性提升 数学推理
反转情绪
缩写词生成
限制性生成
Metrics指标效果:
Math reasoning %解决率,code optimization:% 代码优化率,Acronym Generation:%受限生成