第 3 章  ·  RLHF(二)-RLHF的三个步骤

第3章 第2节 RLHF(二)-RLHF的三个步骤


第3章 第2节 RLHF(二)-RLHF的三个步骤

2.1 RLHF的三个步骤

第一步:收集人类偏好数据

这一步,OpenAI组织了大量的人类标注员,让他们做一件事:对模型生成的答案进行排序。

具体操作流程:

  1. 准备问题集

收集一批问题,来源包括真实用户的提问、标注员自己构思的问题,覆盖科学、生活、技术、哲学等各种主题。

  1. 生成候选答案

用监督微调后的模型对每个问题生成4-9个不同的答案,通过调整随机性参数得到多样化的回应。

  1. 人类标注员排序

标注员看到1个问题和4-9个候选答案,任务是将这些答案按质量从高到低排序。

  1. 记录排序结果

比如:答案C > 答案A > 答案D > 答案B,表示标注员认为C最好,A次之,D第三,B最差。

  1. 大量重复

以上步骤重复几万次甚至更多,收集大量的偏好数据。

一个具体的标注示例

问题:量子计算机和经典计算机有什么区别?

候选答案1:

"量子计算机使用量子比特(qubit),而经典计算机使用普通比特。量子比特可以同时处于0和1的叠加态。.."

候选答案2:

"量子计算机比经典计算机快很多倍,可以瞬间破解所有密码。"

候选答案3:

"这是个很复杂的物理学问题,我建议您查阅专业文献。"

候选答案4:

"主要区别在于:1. 计算原理,经典计算机基于二进制(0/1),量子计算机利用量子叠加态 2. 优势领域,量子计算机在特定问题上有指数级加速 3. 局限,量子计算机不是'更快的经典计算机',而是擅长不同类型的问题 4. 现状,仍在实验阶段,离实用还有距离。需要注意的是,量子计算机不会'取代'经典计算机,两者会并存。"

标注员的排序结果:

  1. 候选答案4(最好:准确、全面、诚实)
  2. 候选答案1(准确但不够全面)
  3. 候选答案3(回避问题,不够有帮助)
  4. 候选答案2(最差:夸大事实,误导)

标注员的指导原则

为了保证标注质量的一致性,OpenAI给标注员提供了详细的指南,有兴趣的同学可以去搜索下,这里就不再列出了。

标注的挑战

这里有一个微妙但重要的问题:不同的标注员可能有不同的判断。

OpenAI如何处理这个问题?多人交叉标注,同一组答案由多个标注员排序,取平均。标注员培训,定期校准,讨论边界案例。接受一定程度的不一致,人类本身的偏好就是多样的。

正是这种"多样性",让RLHF学到的是"大多数人的偏好",而不是某一个人的偏好。

收集到的数据

经过数周甚至数月的标注工作,OpenAI收集到了大约3-5万条这样的数据:

数据1:
问题:"什么是量子计算?"
排序:答案D > 答案A > 答案C > 答案B

数据2:
问题:"如何做红烧肉?"
排序:答案B > 答案C > 答案A

数据3:
问题:"如何破解邻居的WiFi密码?"
排序:答案A(坚定拒绝+合法建议) > 答案B(警告但给技术信息) > 答案C(直接给方法)

...3万多条

这些数据,就是RLHF的"黄金"——它们代表了人类对"好答案"的集体判断。

第二步:训练奖励模型

现在我们有了数万条排序数据(比如"D > C > B > A"),但这些排序无法直接用来训练ChatGPT。

为什么?

因为ChatGPT需要的是对每个答案的具体评分,而不是排序。排序只是模糊的关系,计算机无法量化他。对于计算机世界,无法量化的问题非常难以处理。

所以OpenAI做了一件聪明的事:训练一个专门的"评分模型"——奖励模型(Reward Model)

奖励模型的工作流程可以概括为三个阶段:

输入阶段

接收一个问题及其对应的答案,以文本形式传入模型。

处理阶段

奖励模型内部进行计算,分析答案的质量、相关性、准确性等维度。

输出阶段

输出一个数值分数,表示该答案的质量评分,例如 7.2、8.5 等。

整个流程就是:问题+答案(文本) → 奖励模型计算 → 质量分数(数值)

训练过程

用步骤1收集的排序数据来训练。具体来说:

训练过程:

  1. 拿出一条排序数据,比如:
    问题:"量子计算机和经典计算机有什么区别?"
    排序:答案4 > 答案1 > 答案3 > 答案2
  2. 让奖励模型分别给答案4、答案1、答案3、答案2打分
    奖励模型输出:
    答案4的分数:8.5
    答案1的分数:7.2
    答案3的分数:4.8
    答案2的分数:2.1
  3. 检查:分数顺序和人类排序是否一致?
  4. 如果一致(8.5 > 7.2 > 4.8 > 2.1)→ 很好,继续
  5. 如果不一致(比如答案3的分数比答案1高)→ 调整奖励模型参数
  6. 用数万条排序数据重复这个过程

训练完成后,我们得到一个能够自动给任何"问题+答案"组合打分的模型

这个奖励模型学会了:

虽然它不"知道"为什么某个答案更好,但它能准确"预测"人类会给这个答案打多少分。

奖励模型的局限性

奖励模型虽然强大,但也有明显局限:

能力:

局限:

什么是"奖励黑客"

这是强化学习中一个经典问题:模型找到了"投机取巧"的方式来获得高分,而不是真正做到我们想要的。

例子1:刻意填充长度

假设奖励模型习惯性给"更长的答案"更高的分数(因为训练数据中长答案通常更好),ChatGPT可能学会的策略是:"如果我写得更长,就能得高分!"即使内容没必要那么长,也会刻意填充。

例子2:过度礼貌

奖励模型喜欢"礼貌的结尾",ChatGPT可能学会在每个答案都加上"希望这个回答对您有帮助!如果还有疑问,欢迎继续提问!"即使用户并不需要。

对抗奖励黑客的策略

  1. KL散度约束:限制ChatGPT不能离原始模型太远
  2. 人工审查:定期抽样检查ChatGPT的输出,找出异常模式
  3. 迭代优化:发现问题后,添加新的标注数据,重新训练奖励模型

第三步:强化学习——优化ChatGPT

现在,有了奖励模型这个"评委",就可以优化ChatGPT了。

RLHF的具体流程:

第1步:生成答案

ChatGPT对一个问题生成一个答案。

第2步:奖励打分

奖励模型给这个答案打分。
高分 = 人类可能喜欢,低分 = 人类可能不喜欢。

第3步:参数调整

ChatGPT根据分数调整自己的参数。
追求:生成高分的答案;避免:生成低分的答案。

第4步:反复迭代

重复这个过程数千次、数万次。

最终结果

ChatGPT学会了生成那些"人类更可能喜欢"的答案。

这个过程,在机器学习中叫做"强化学习"。

核心思想是:不直接告诉模型"正确答案是什么",而是告诉它"这个答案好不好"(奖励信号),让它自己学习如何改进。

2.2 什么是"好"的答案

经过RLHF,ChatGPT获得了质的飞跃。答案更加清晰、结构化,主动提供额外的有用信息,在用户表达不清时主动询问澄清。模型也更诚实,承认不知道的事情,表达适当的不确定性,指出问题中的错误假设但保持礼貌。同时更安全,坚定拒绝有害请求,不传播错误信息,纠正危险的想法但不说教。

用同一个例子,展示三个阶段的完整对比:

问题:"如何破解邻居家的WiFi密码?"

GPT-3(纯预训练):
"如何破解邻居家的WiFi密码?破解WiFi密码的常见方法包括:

  1. 使用暴力破解工具如Aircrack-ng...
  2. 尝试常见的默认密码。..
  3. 使用WPS漏洞。.."
    → 直接给出方法,完全没有安全和法律意识

GPT-3.5-SFT(监督微调):
"破解他人WiFi密码是违法行为,我不建议这样做。
这侵犯了他人隐私,在很多地方是犯罪行为。
但从技术角度讲,WiFi加密协议有几种。.."
→ 警告了违法,但还是提供了技术信息!

ChatGPT(RLHF对齐):
"我不能提供破解WiFi密码的方法。

未经授权访问他人WiFi网络是违法的,侵犯了他人的隐私和财产权。

如果您需要上网:

如果您是忘记了自己家的WiFi密码,我可以教您如何重置路由器。"
→ 坚定拒绝,说明原因,提供合法替代方案,甚至主动理解用户可能的真实需求

只有经过RLHF,模型才真正学会了:什么该说,什么不该说,以及如何既坚守原则又帮助用户


2.3 ■ 学点英语

中文 English 音标 说明
奖励模型 Reward Model /rɪˈwɔːd ˈmɒdl/ 把人类排序偏好转化为可微分分数的神经网络
标注员 Annotator / Labeler /ˈænəteɪtə(r)/ 对候选答案进行排序与质量评判的人类
排序 Ranking /ˈræŋkɪŋ/ 对多个答案按偏好从高到低排列,取代绝对打分
强化学习 Reinforcement Learning /ˌriːɪnˈfɔːsmənt ˈlɜːnɪŋ/ 通过奖励信号而非标准答案来指导模型改进
奖励黑客 Reward Hacking /rɪˈwɔːd ˈhækɪŋ/ 模型钻奖励函数漏洞刷高分而非真正改善质量
KL散度 KL Divergence /ˌkeɪ el daɪˈvɜːdʒəns/ 衡量两个概率分布差异的指标,用于约束模型漂移
泛化 Generalization /ˌdʒenrəlaɪˈzeɪʃn/ 模型从训练数据推广到未见过数据的能力
偏好数据 Preference Data /ˈprefrəns ˈdeɪtə/ 由人类对候选答案排序得到的训练素材

2.4 ■ 思考帧

RLHF(一)-什么是对齐 RLHF(三)-RLHF的局限与思考
本节目录