RLAIF - RL from AI Feedback
Constitutional AI
Constitutional AI
论文:Constitutional AI: Harmlessness from AI Feedback
2022-12, Anthropic 这是两年前的论文,有些内容可能当时很前卫,现在看来可能已经司空见惯了, 这里温故而知新。
RLAIF - RL from AI Feedback
目的
- 利用AI模型来训练AI模型,提升Harmlessness
方法
- 监督学习
- 从helpful模型生成有害的回复
- 利用实现规定好的prompts让模型自己评价刚刚的回复有哪些问题(harmful, unethical, racist, sexist, toxic, dangerous, or illegal)+ 修改回复去掉内容里面的有害内容 (这一步骤可以重复多轮)
- 最后将这多轮对话联结用于finetune另外一个pretrained model
- 为了让模型能生成无害且有帮助性的回复,还在训练数据中加入了从训练好的RLHF模型提取得到的的有效回复。
- 训练得到的模型叫做SL-CAI models
- 强化学习
- 和之前不同的,用于训练preference模型的比较数据标注(关于有毒与否的标注)是源于AI系统的喜好,而不是人工喜好。
- (关于有用与否的标注还是来自于人工)
- 然后就是按照RLHF方法完成模型训练。
- 利用LM进行标注:
- 首先我给你一段人机多轮对话 + 多轮对话评判标准 + 用于比较的两个回复。
- 然后利用LM计算两种回复的log possibilities,得出机器对于两个回复的偏好程度 -(当然也可以直接利用训好的reward模型给出两者的比较)。
- 训练得到的模型叫做RL-CAI models
CAI的通俗化类比 类比“数学老师教一个有出色学习能力但不懂数学的学生写出数学题的解答”
- 阶段1:
- 让这个学生A看大量与数学相关的知识,因为A学习能力强,此时已经能做对很多题,但难题经常错
- 阶段2:
- 让学生A做大量难题,会有很多做错的(Generate)
- 将做错的题逐一让A再多看几遍,并给他官方评分标准作参考,看看有没有能改进的(Critic)
- 让A逐一根据自己提出的改进点重写回答 (Revision)
- 让A回看一遍新写的回答,总结新的解题方式,忘记之前的旧方式 (Fine-Tune)
- 阶段3:
- 又让A做了一批新的题目,难题简单题都有,但每一题都要写好几种解答方法
- 老师找了个数学能力不如A的学生B来评价,做题比不上A,所以给了B官方评分标准,让他根据标准来评价A针对每一题的多种解答,每一个解答都要写评语
- 如果学生B又写评语又打分太累了,可能会出错,所以让学习能力也很强的学生C来学着怎么打分。因为已经有评语和学生A的解答了,所以看懂评语就能知道这个解答该给高分还是低分。练习了一段时间后,学生C打分已经很熟练了。
- 此时让学生A和C一起,A负责继续做题(难题简单题都做),C负责打分,A根据C的打分修改答案期望获得更好的分,C继续打分。直到A差不多已经无法再进步了,达到自己的能力上限。最终A成为了SL-RLAIF-A
结论
- 最好是利用监督学习得到的模型作为第二步里面的标注模型
这样的话,两种分布的统一能在一定程度上保证,最终利用RLHF训练得到的模型同监督学习得到模型不会差距太远。 - LLM 与人类判断表 现出高度一致, 甚至在某些任务上, 表现优于人类.
RLAIF vs. RLHF
论文:RLAIF vs. RLHF: Scaling Reinforcement Learning from Human Feedback with AI Feedback
2023-09, DeepMind
目的
- 对比RLAIF和RLHF的效果,看看RLAIF是否能替代RLHF?
偏好打分
我们应该用什么样的大模型来进行打分呢?
一般而言,我们可以使用预训练好的模型或者针对通用任务进行SFT之后的模型(而不是针对某个特定的下游任务)
偏好打分与人类打分不同
与人类打分不同,LLM通过提取出要输出的token中“1”和“2”在整个词表中的概率,然后计算softmax得到二者的概率。
但是这个过程中,会存在一个问题,LLM对response输入的顺序有时候会存在偏见,比如说他总是偏好先输入的第一个答案,如:(x,y1,y2)→y1(x,y_1,y_2)\rightarrow y_1(x,y_1,y_2)\rightarrow y_1和(x,y2,y1)→y2(x,y_2,y_1)\rightarrow y_2(x,y_2,y_1)\rightarrow y_2,并且模型越小,出现偏见的频率就越高。
解决方案:文中提出,通过将response反转过来后都送进评分,然后取二者均值计算得最终的偏好分数。
Prompt设计
现在我们知道了如何用现有LLM(off-the-shelf LLM)来进行打分。
那么prompt应该如何设计,让LLM能够更好的明白你的意图呢?
Prompt由以下四部分构成:
- Preamble(前言)
- Few-shot exemplars (optional)(示例)
- Sample to annotate(要标注的样本)
- Ending (e.g. preferred Response=)(结束语)
结论
- 对于收集数据很困难的团队来说,可以极大降低相关成本
- 它的性能还是有上限,无法继续迭代升级数据质量来进一步提升模型性能
- 更适合作为初始模型版本训练的数据收集器
- 其实,2024年后的O1,phi-4等模型合成数据有很大进步,逻辑能力上效果非常好。