解密prompt系列25. RLHF改良方案之样本标注:RLAIF & SALMON
上一章我们主要唠了RLHF训练相关的方案,这一章我们主要针对RLHF的样本构建阶段,引入机器标注来降低人工标注的成本。主要介绍两个方案:RLAIF,和IBM的SALMON。
RLAIF
- RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback
RLAIF给出的方案是完全使用大模型来进行偏好样本的标注,论文主要测试了摘要任务,对话的无害性和有用性上,RLAIF能获得和RLHFg相似的效果。我们在后期也采用了机器标注,因为真的不标不知道一标吓一跳,想获得足够用来训练RL的高质量标注样本的成本大的吓人......
既然是用大模型来标注偏好样本,那核心又回到了如何写Prompt, RLAIF一个基础的Prompt构建如下:Preamble是如何进行评估的任务指令,Exampler是高质量的标注few-shot,然后是上文和两条待评估的摘要,最后是模型输出。
论文还提到了几个指令优化细节
- soft label:想让模型评估两个样本的优劣,有很多种打分方式,论文选择了输出样本序号的方式,这样既符合自然语言表达,同时因为就1个输出字符,可以很直观的计算1和2的解码概率,从而得到soft label,后续用于RM训练
- Positional bias: 考虑summary1和2的前后顺序会影响模型的评估结果,论文会分别对12,21的两组样本进行打分,并取soft label的平均值。这里论文验证了越小的模型位置偏差越严重。
- 加入COT: 在Ending的部分加入思维链指令"Consider the coherence, accuracy, coverage, and overall quality of each summary and explain which one is better. Rationale:"
- 解码策略:在附录中论文对比了self-consistency和greedy decode,效果上greedy更好,哈哈但是self-consistency的样本最多只用到16,所以这个对比做的不是非常充分。
获取到机器标注数据后,论文使用soft-label[0.6,0.4]来进行Reward模型的训练再对SFT之后的模型进行对齐。注意这里有一个细节就是论文使用了soft label,从模型蒸馏的角度,soft label比[0,1]的hard label包含远远更多的信息,在蒸馏方案中往往可以显著提高蒸馏效果,因此不排除RLAIF超过人工标注效果的部分原因,来自soft-label而非machine label。对齐后的模型效果对比如下,RLAIF的无害率提升更加明显,胜率和RLHF齐平
细看会发现上面对比中还有两个细节
- same-size RLAIF:RLAIF的标注模型是PaLM2 Large,而SFT模型是PaLM2 XS。论文同时测试了当标注模型和SFT模型大小同样为PaLM2 XS的效果。说明RLAIF的效果不完全来自模型大到小的蒸馏,在同样大小上模型标注可以带来自我提升
- Direct RLAIF:是不使用Reward模型进行训练,直接使用大模型(PaLM2 XS)标注出1-10分的打分,并把打分概率归一化到sum(1).然后直接使用模型打分作为reward来进行对齐。但个人对这种方案表示存疑,因为在我们的尝试中模型的绝对打分能力并不高,哈哈不排除我们任务有点复杂prompt没写好。论文使用的prompt如下
prompt = """You are an expert summary rater. Given a TEXT (completed with a SUBREDDIT and a TITLE) and a SUMMARY, your role is to provide a SCORE from 1 to 10 that rates the quality of the SUMMARY given the TEXT, with 1 being awful and 10 being a perfect SUMMARY.
"""
IBM SALMON
- SALMON: SELF-ALIGNMENT WITH PRINCIPLE-FOLLOWING REWARD MODELS
- https://github.com/IBM/Dromedary
SALMON在RLAIF的基础上优化了机器标注的部分,并给出了新的Reward模型的训练方案- Principle-Following Reward Model,背后其实也是用到了对比学习的思路。个人感觉这个思路更优的点在于,不直接让模型学习什么回答更好,什么回答更不好,因为好和不好的判定更容易陷入reward hacking,相反SALMON让模型学习每个具体的好和不好的偏好标准的表征。
先说偏好样本标注,同样是基于SFT模型采样两个候选回答,在使用大模型进行偏好标注时,SALMON对偏好进行了更为细致的拆分,总结了小20条偏好标准,包括事实性,数值 敏感,时间敏感等等。论文没有把所有原则合并成一个prompt,而是每一条原则,都会让模型对两个候选回答进行独立打分,打分是回答A、B解码概率的对数之差。这里同样考虑了position bias,因此会swap位置求平均。prompt模板如下
通过以上的标注我们能得到prompt_i,responseiA,responseiB,princle_j, score_iaj, score_ibj的偏好样本。在RL模型训练时,SALMON没有像以上RLAIF直接使用soft label进行模型微调,而是采用了指令微调的方案,并引入了负向原则,例如非事实性,无用性等等,更全面的让Reward模型学习每一个偏好原则的具体表征。具体的指令样本构建方式如下
- 对所有正面 原则,构建对应的负面原则描述,以下为简洁性原则的正负面principle
- 输入:对每个prompt,采样3个原则,并对采样的原则进行随机反转。在以下的指令样本中,随机采样的principle分别是Concise ,Ethical和precise, 其中Eithical被随机反转成负面原则。
- 输出:如果responseA 和resposneB 对应以上3个原则 的打分分别是(2,3,6)和(1,5,5),这时选择AB打分差异最大的一个principle来决定最终的输出结果,这时分差最大的是Ethical Principle,又因为该原则被反转,因此模型的解码结果是该维度上得分更低的A。
最后使用以上构建的指令样本进行微调得到可以理解正负面偏好原则并对回答进行打分的Reward模型。
同样因为训练了Reward模型的Principle理解能力,在推理使用Reward模型时,论文指出可以通过动态调整上文principle来解决一些已经发现的reward hacking的问题,哈哈所谓头疼医头,脚疼医脚。最开始读到这个思路时觉得有点逗,后来训练发现时不时就会发现Reward模型存在各种奇葩Bias时,才发现能快速通过prompt修复一两个小问题真的很香,虽然不是终极解决方案,但胜在临时好用。针对三个发现的Reward hacking问题,论文分别在推理时加入了以下的新principle
说完RL训练策略优化,和样本标注优化,过几章我们接着说RL相关的对抗训练和训练过程优化方案~
想看更全的大模型相关论文梳理·微调及预训练数据和框架·AIGC应用,移步Github >> DecryPrompt
解密prompt系列25. RLHF改良方案之样本标注:RLAIF & SALMON的更多相关文章
- 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...
- 解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF
这一章我们介绍固定prompt微调LM的相关模型,他们的特点都是针对不同的下游任务设计不同的prompt模板,在微调过程中固定模板对预训练模型进行微调.以下按时间顺序介绍,支持任意NLP任务的T5,针 ...
- 解密prompt系列5. APE+SELF=自动化指令集构建代码实现
上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...
- 解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct
这一章我们聊聊指令微调,指令微调和前3章介绍的prompt有什么关系呢?哈哈只要你细品,你就会发现大家对prompt和instruction的定义存在些出入,部分认为instruction是promp ...
- 解密Prompt系列3. 冻结LM微调Prompt: Prefix-Tuning & Prompt-Tuning & P-Tuning
这一章我们介绍在下游任务微调中固定LM参数,只微调Prompt的相关模型.这类模型的优势很直观就是微调的参数量小,能大幅降低LLM的微调参数量,是轻量级的微调替代品.和前两章微调LM和全部冻结的pro ...
- .NET Core加解密实战系列之——消息摘要与数字签名算法
目录 简介 功能依赖 消息摘要算法 MD算法 家族发展史 应用场景 代码实现 MD5 示例代码 SHA算法 应用场景 代码实现 SHA1 SHA256 示例代码 MAC算法 HMAC算法的典型应用 H ...
- .NET Core加解密实战系列之——使用BouncyCastle制作p12(.pfx)数字证书
简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...
- Java 加解密技术系列文章
Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...
- office全系列激活脚本-改良版
@ECHO OFFTITLE office 全版本系统激活@echo offfor /l %%a in (8,1,16) do (for /f "tokens=*" %%i in ...
- windows全系列激活脚本-改良版.cmd
@ECHO OFFTITLE Windows 全版本系统激活cscript //nologo %Systemroot%\system32\slmgr.vbs -skms 10.1.1.12ECHO 检 ...
随机推荐
- updatedb命令
updatedb命令 updatedb创建或更新locate命令使用的数据库,如果数据库已经存在,则重用其数据以避免重新读取未更改的目录,updatedb通常由cron每天运行以更新默认数据库. 语法 ...
- Java设计模式-迭代器模式Iterator
介绍 根据GoF的定义,迭代器模式提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法.这是一种行为设计模式. 顾名思义,迭代器有助于以定义的方式遍历对象集合,这对客户端应用程序很有用.在迭代期间 ...
- thinkphp集成webuploader实战
介绍 最近用了下thinkphp搞自己的博客,期间用到了百度的webuploader上传图片.百度出来的参考质量一言难尽,写教程没有一点追求,千篇一律的复制粘贴,某些个作者自己都没搞清楚就发文,误人又 ...
- win32 - 创建带有标准阴影的无边框窗口
这个框框好像删不掉,就先放这边吧... #define WIN32_LEAN_AND_MEAN #include <unknwn.h> #include <windows.h&g ...
- 使用 Hugging Face 微调 Gemma 模型
我们最近宣布了,来自 Google Deepmind 开放权重的语言模型 Gemma现已通过 Hugging Face 面向更广泛的开源社区开放.该模型提供了两个规模的版本:20 亿和 70 亿参数, ...
- 用Taro写一个微信小程序——引入外部字体
小程序直接用.ttf字体文件,在开发工具看没有问题,但是打包编译会提示这个字体文件打包上传不成功. 一.字体文件转换为css 1.打开https://transfonter.org/ 注意选择Base ...
- 参数替换xargs
由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔为参数 示例: 创建10个用户 echo user{ ...
- go语言中的数据类型
数据类型可分为四类 基础类型 数字.字符串和布尔型 复合类型 数组.结构体 引用类型 指针.切片.map.函数.通道channel 接口类型 interface
- 使用go module导入本地包
go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具. 前提 假设我们有learngo和mypackage两个 ...
- Java面向对象之内部类的几类使用场景
介绍 Java内部类是一种特殊的类,它定义在另一个类的内部.内部类提供了许多有用的特性,包括访问外部类的私有成员.隐藏实现细节以及实现回调接口等.以下是Java内部类的一些常用场景及其举例说明: 回调 ...