文献阅读:RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback

news/2024/7/20 19:24:49 标签: RLAIF, LLM, RLHF, 强化学习, 大模型
  • 文献阅读:RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback
    • 1. 文章简介
    • 2. 方法介绍
      • 1. 整体方法说明
    • 3. 实验结果
      • 1. RLHF vs RLAIF
      • 2. Prompt的影响
      • 3. Self-Consistency
      • 4. Labeler Size的影响
      • 5. 标注数据的影响
    • 4. 总结 & 思考
  • 文章链接:https://arxiv.org/abs/2309.00267

1. 文章简介

这篇文章是Google在今年9月发表的一篇文章,顾名思义,其核心的idea就是将RLHF当中的human部分直接替换为AI,直接用LLM的Feedback来finetune模型,考察其得到的模型效果。

结论而言其得到的模型效果有了不输RLHF后的模型效果,证明了上述策略的可行性。

怎么说呢,这个结论多少有些情理之中又有些意料之外……

情理之中是在于说已经有多个实验证明了LLM在标注任务上的效果不弱于人类,甚至比人类有着更稳定的标注效果,因此用LLM来替代人类的标注有其一定的道理。

另一方面,意料之外则是因为LLM毕竟还是模型,用模型自己来finetune模型总觉得会引入bias,在其本身的训练feature没有获得增加的情况下,对于模型效果的最终提升来说总觉得有些不可靠……

不过,anyway,还是让我们言归正传,来看看文中到底是做了怎么样的实验以及得出了怎么样的结论吧。

2. 方法介绍

1. 整体方法说明

首先,我们给出RLHFRLAIF的完整pipeline示意图如下:

在这里插入图片描述

可以看到,整体来说,RLHFRLAIF唯一的区别就是将RM模型所需的标注从人工换成了另一个LLM的自动标注结果。

下面,我们来看一下其中具体的细节实现。

对于一个标准的RLHF过程,可以拆解为以下三部分的内容:

  1. Supervised finetuned Model (SFT)

  2. RM model

    使用人工标注结果训练一个二分类模型:

    L = − E ( x , y w , y l ) ∼ D [ l o g σ ( r ϕ ( x , y w ) − r ϕ ( x , y l ) ) ] L = -\mathop{E}\limits_{(x, y_w, y_l) \sim D} [\mathop{log}\sigma(r_{\phi}(x, y_w) - r_{\phi}(x, y_l))] L=(x,yw,yl)DE[logσ(rϕ(x,yw)rϕ(x,yl))]

  3. Reinforce Learning

    m a x θ E [ r ϕ ( y ∣ x ) − β D K L ( π θ R L ( y ∣ x ) ∣ ∣ π S F T ( y ∣ x ) ) ] \mathop{max}\limits{\theta} \mathop{E}[ r_{\phi} (y|x) - \beta \mathop{D}_{KL} (\pi_{\theta}^{RL}(y|x) || \pi^{SFT} (y|x))] maxθE[rϕ(yx)βDKL(πθRL(yx)∣∣πSFT(yx))]

RLAIF就是将2中的标注结果替换为人工标注的结果,其用于query大模型的prompt示例如下:

在这里插入图片描述

可以看到,文中使用的prompt主要包含四部分的内容:

  1. Preamble
    • 对任务的整体介绍
  2. Few-Shot example
    • optional,一些具体的case样例
  3. query
    • 具体的query,在文中就是summary任务
  4. ending
    • 回答的提示词

但是,实际在实验过程当中,文中发现LLM的回答对于summary的位置信息还是挺敏感的,也就是说当LLM对summary出现的位置具有一定的倾向性,比如说比较倾向于选择先给出的summary这样。

而另一方面,在请求模型时,为了优化模型调用的效果,文中还使用了类似CoT之类的prompt调优的方法。

下图是文中实际使用的LLM进行标注的流程示意图:

在这里插入图片描述

可以看到,这里主要是加入了如下一些变化:

  1. 引入COT方法
  2. 对于输出的结果,分别用两个概率来表示其preference。
  3. 对于每一组summary都query两次,消除其出现位置对模型输出的影响,然后将两次结果进行平均作为最终的输出;

3. 实验结果

下面,我们来看一下文中实际的实验效果。

RLHF_vs_RLAIF_90">1. RLHF vs RLAIF

首先,文中给出了人对于RLHFRLAIF的结果的喜好程度比例如下:

在这里插入图片描述

可以看到:

  • RLHFRLAIF都超越了SFT模型的生成效果,但是两者相互之间却没有显著的效果差异。

下面是一个具体的生成case展示:

在这里插入图片描述

2. Prompt的影响

下面,我们来考察一下prompt对RLAIF效果的影响。

文中主要研究了三方面的prompt tuning的效果影响:

  1. preamble的准确性
  2. In-Context Learning
  3. CoT

给出文中的实验结果表格如下:

在这里插入图片描述

其中,AI Labeler Aligned表示标注结果与人工标注结果的一致性。

可以看到:

  • Preamble对模型效果的影响最大;
  • CoT同样可以给模型带来一定的效果增益;
  • few-shot (in-context learning)对模型效果并没有什么增益,甚至可能会带来伤害;

3. Self-Consistency

文中还考察一了一下生成结果的self-consistency,具体来说,就是通过调整生成的随机性,然后多次生成进行average作为RM模型的训练数据,实验得到的结果如下:

在这里插入图片描述

可以看到:

  • self-consistency的实验结果并不很好,多次sample取均值之后发现其结果反而有所下降。

文中给出一种猜测可能是由于设置随机性较高之后使得生成质量受到了影响。

4. Labeler Size的影响

文中同样考察了一下Label模型的size对标注结果的影响:

在这里插入图片描述

可以看到:

  • 模型size越大,模型的标注效果越好。

这也是符合直觉的,毕竟模型的size越大,模型的效果越好,对应的标注效果也应该越好。

5. 标注数据的影响

最后,文中还考察了一下随着标注数据的增加,RLHFRLAIF效果的变化。

在这里插入图片描述

可以看到:

  • RLAIF可以更快速地达到一个较好的水平上,但是随着标注数据的增加,模型效果的提升很快达到了一个瓶颈,不会随着标注数据的增加而持续提升;
  • 而另一方面,RLHF的效果随着标注数据的增加提升的相对较慢,但是会有一个持续的提升趋势。

这个结果也是make sense的,毕竟RLAIF并没有额外的信息输入,只能说是更有效地利用现有训练数据对模型进行训练,因此其效果的提升总是会有一个极限的,而相对的,RLHF则是持续地给模型增加额外的输入特征,因此模型总是可以持续地进行优化的。

但是另一方面,正如文章所说,考虑到所需的数据量和标注成本,RLAIF作为一个替代方案已经足够有效和划算了。

4. 总结 & 思考

综上,我们可以看到,由于当前LLM本身拥有的强大理解能力和效果,用LLM来替换RLHF当中的人工标注部分获得的RLAIF可以获得和人工标注相类似的效果,这个和目前大量的使用LLM来进行标注的工作中的结论是一致的。

然后,同样的,由于LLM本身不会有额外的信息传入,因此虽然RLAIF能够获得超过SFT,并获得和RLHF相当的效果,其效果的上限较之RLHF依然存在一定的差距,只不过要看到相对明显的差距需要大量的标注数据,这个成本是非常可观的,因此整体上来说RLAIF是一个相当好用的RLHF的替代品。

最后,文中还考察了一下标注过程的prompt调优,发现随即因子的引入会伤害模型的表达,另外CoT和好的preamble非常的关键,但是in-context learning则不是那么重要,这个和我们平时的prompt调优的感觉也是相似的。

但尽管如此,prompt工程这方面的结论的可靠性和一致性我个人实在是觉得有点过低了,仿佛炼丹,充满了玄学色彩,感觉还是不太好控制,不知道是不是只有我一个人这么觉得……


http://www.niftyadmin.cn/n/5061283.html

相关文章

stm32 - 串口

stm32 - 串口 OLED显示屏 OLED显示屏 oled.h #ifndef __OLED_H #define __OLED_Hvoid OLED_Init(void); void OLED_Clear(void); void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char); void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); void OLE…

【小沐学前端】Node.js实现基于Protobuf协议的UDP通信(UDP/TCP)

文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf2.2.1 安装2.2.2 工具 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子: awesome.proto4.1.1 加载.proto文件方式4.1.2 加载.json文件方式4.1.3 加载.js文件方式 4.2 例…

小谈设计模式(9)—工厂方法模式

小谈设计模式(9)—工厂方法模式 专栏介绍专栏地址专栏介绍 工厂方法模式角色分类抽象产品(Abstract Product)具体产品(Concrete Product)抽象工厂(Abstract Factory)具体工厂&#x…

了解Vue

什么是Vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。 功能 Vue.js是一套构建用户界面的…

解决仪器掉线备忘

网络管控越来越严格,老的Mac模式连接的仪器经常断开,要么是网络没活动被断开TCP了,要么是网络波动无法保持TCP。每次重启仪器控制很麻烦,基于之前用M写http服务的基础上改进仪器接口连接。 参照之前实现http服务的逻辑 最终逻辑 …

驱动开发,使用数码管显示采集的温湿度的值(取整)

1.IIC驱动层次图(同SPI) 前提:将核心层和总线驱动层配置进内核; 先完成设备驱动和i2c总线驱动的绑定,让总线驱动管理到设备驱动,调用核心层API即可完成绑定,然后i2c总线驱动完成设备驱动和si700…

一站式企业协同研发云——云效

一站式企业协同研发云——云效 文章目录 一站式企业协同研发云——云效什么是云效云效的作用云效使用说明公司领导操作步骤项目创建者或项目组长操作步骤项目上线部署 什么是云效 云效是一种基于云计算技术的软件研发与交付管理平台,旨在提高团队的协作效率和软件交…

点击、拖拉拽,BI系统让业务掌握数据分析主动权

在今天的商业环境中,数据分析已经成为企业获取竞争优势的关键因素之一。然而,许多企业在面对复杂的数据分析工具时,却常常感到困扰。这些工具往往需要专业的技术人员操作,而且界面复杂,难以理解和使用。对业务人员来说…