核心概念:奖励模型、策略模型、强化学习基础(PPO算法简介)
好,咱们进入第二章。说实话,RLHF 这个技术栈里,最绕不开的就是这三个东西:奖励模型、策略模型,还有那个让它们能一起工作的 PPO 算法。我当年刚接触时,也被这些概念搞得晕头转向。今天咱们就把它们拆开,揉碎了讲清楚。
2.1 奖励模型:给 AI 一个「好恶」
奖励模型,说白了就是一个打分器。它不生成文字,它只负责判断「这段回答好不好」。我个人习惯把它想象成一个严厉的语文老师——你写一段话,它给你打个分。
为什么需要它?因为大模型自己不知道什么是对错。你让它「写一段礼貌的回复」,它可能写得很客气,也可能写得很阴阳怪气。奖励模型就是用来告诉它:「嗯,这样写不错,给 8 分;那样写不行,给 2 分。」
核心要点:奖励模型的输入是「提示 + 回答」,输出是一个标量分数。分数越高,代表回答越符合人类偏好。
我在项目中遇到过一个问题:奖励模型训练不好,整个 RLHF 流程就全崩了。因为策略模型会「钻空子」——它发现某些句式能拿到高分,就会疯狂生成那种句式,哪怕内容空洞。所以,奖励模型的质量直接决定了最终效果的上限。
奖励模型的训练数据长什么样?
训练数据通常是成对出现的。比如给模型同一个问题,让它生成两个回答,然后让人去标注哪个更好。数据格式大概是这样:
{
"prompt": "如何向一个 5 岁孩子解释什么是重力?",
"chosen": "重力就像一只看不见的大手,把你往地上拉。",
"rejected": "重力是质量体之间相互吸引的万有引力现象。"
}
你想想看,第一个回答明显更适合孩子。奖励模型就是要学会这种偏好。
2.2 策略模型:那个真正干活的
策略模型,就是咱们平时说的那个大模型本身。它负责根据你的输入,生成输出。在 RLHF 的语境下,策略模型就是那个「被调教」的对象。
嗯,这里要注意一个细节:策略模型在 RLHF 过程中,参数是不断更新的。它一开始可能是个预训练模型,然后经过 SFT(监督微调),再进入 RLHF 阶段。在 RLHF 阶段,它每生成一段文字,奖励模型就给个分,然后 PPO 算法根据这个分去调整它的参数。
我的经验:策略模型在 RLHF 阶段不要更新得太猛。我曾经把学习率设得太大,结果模型直接「失忆」了,连基本的语法都忘了。后来我学乖了,学习率通常设在 1e-6 到 5e-6 之间,稳扎稳打。
2.3 强化学习基础:为什么是 PPO?
强化学习,说白了就是「试错学习」。让模型自己去尝试,做对了给奖励,做错了给惩罚。但大模型有个问题——它的动作空间太大了。词汇表里几万个 token,每一步都要选一个,这要是用传统的强化学习算法,训练到天荒地老也收敛不了。
PPO(Proximal Policy Optimization,近端策略优化)就是来解决这个问题的。它最大的特点是:每次更新参数时,不要改得太狠。为什么?因为改得太狠,模型可能一下子就崩了。
PPO 的核心思想
PPO 的核心就一句话:在保证策略不「跑偏」的前提下,最大化奖励。它通过一个「裁剪」机制,限制每次参数更新的幅度。具体来说,它计算新旧策略的比值,如果这个比值超出某个范围(比如 0.8 到 1.2),就把它裁掉。
我曾经犯过一个错误:把裁剪范围设得太大(比如 0.5 到 2.0),结果模型训练到一半就开始震荡,奖励忽高忽低。后来我把范围缩到 0.8 到 1.2,训练就稳定多了。
PPO 的损失函数长什么样?
这里我直接给个简化版的代码,方便你理解:
def ppo_loss(old_log_probs, new_log_probs, advantages, clip_epsilon=0.2):
# 计算新旧策略的比值
ratio = torch.exp(new_log_probs - old_log_probs)
# 未裁剪的损失
surr1 = ratio * advantages
# 裁剪后的损失
surr2 = torch.clamp(ratio, 1 - clip_epsilon, 1 + clip_epsilon) * advantages
# 取最小值,保证更新不越界
loss = -torch.min(surr1, surr2).mean()
return loss
你看,核心就是那个 torch.clamp。它把 ratio 限制在 [0.8, 1.2] 之间,这样不管优势函数(advantages)多大,参数更新都不会太激进。
2.4 三者如何协同工作?
好,现在咱们把这三个东西串起来。整个 RLHF 的训练流程是这样的:
- 策略模型根据提示生成一段回答。
- 奖励模型给这段回答打分。
- PPO 算法根据这个分数,计算损失,更新策略模型的参数。
- 重复步骤 1-3,直到策略模型的输出质量稳定。
这里有个关键点:奖励模型本身是不更新的。它就像一个固定的裁判,只负责打分。真正在变的是策略模型。
避坑指南:我曾经在训练时发现奖励越来越高,但生成的内容却越来越差。后来排查发现,是奖励模型过拟合了——它只对某些特定句式给高分,策略模型就「投其所好」,反而忽略了内容质量。所以,奖励模型的泛化能力非常重要。
2.5 知识体系总览
下面这张图,是我自己整理的 RLHF 核心概念关系图。你可以看到,奖励模型和策略模型通过 PPO 算法连接起来,形成一个闭环。
从这张图你可以看到,整个流程是一个闭环。策略模型生成回答,奖励模型打分,PPO 根据分数更新策略模型。循环往复,直到模型输出越来越符合人类偏好。
2.6 本章小结
咱们这一章讲了三个核心概念:
- 奖励模型:负责打分,告诉模型什么好什么不好。
- 策略模型:负责生成,是真正被训练的对象。
- PPO 算法:负责更新,保证训练稳定不跑偏。
我个人觉得,理解这三者的关系,是掌握 RLHF 的关键。很多人在实际落地时翻车,都是因为没搞清楚「谁在更新、谁在打分、怎么更新」。你只要把这张图刻在脑子里,后面再讲具体实现时,就不会迷路了。
一个小建议:如果你刚开始接触 RLHF,可以先在小型模型上跑通流程。比如用 1.5B 的模型做实验,等流程稳定了再上大模型。这样调试成本低,迭代也快。