CS336 Lecture_15
现今很多后训练流程仍然是基于 Instruct GPT 论文的,构建一个遵循指令的模型需要三步流程

SFT
第一步就是在专家演示数据上进行 Supervised Fine-Tuning(监督微调)
目的:教会模型"怎么做",比如用户问"写首诗",模型学会输出一首诗,而不是单纯地续写
缺陷:它可能会教模型去尝试编造事实,来匹配那种深度的知识(幻觉)
注意:即使是少量数据,在这个阶段也能发挥巨大的作用,改变模型的行为方式(因此需要安全性微调 Safety-tuning 去辨别哪些指令是危险的,还需要在拒绝和不过度拒绝之间权衡)
让第一部分奏效所需的两个要素:(1)训练数据 / 专家演示数据(2)方法
Instruction-tuning data
接下来介绍构建指令遵循或后训练数据的三种不同范式

FLAN(Google)
通过聚合大量来自 NLP 的训练数据集来构建的,虽然数据量非常庞大,但是在一些方面显得不自然(不像是平时的那种聊天互动,而且回应通常很短)
Alpaca(Stanford)
这是一个非常早期的尝试,利用语言模型生成指令微调数据,这相比于 FLAN 就更像是一系列互动,而且回应几乎总是长篇的自然语言
Oasst(Volunteer)
这是由真实人类(志愿者)编写的对话数据集,更接近真实的聊天场景
How to fine-tune
如何进行微调:其实就是做梯度下降

但是如果有很好的配置,我们就希望扩大指令微调的规模,这其实就慢慢转向了预训练
现在流行的就是把指令微调数据混合到预训练中,通常是在预训练的尾声,特别是在对学习率退火时,开始放入很多高质量数据或者指令微调数据;然后在最后,可能还会进行一个短暂的第二轮指令微调(Mid-training)
在这个中国模型 miniCPM 例子中,第一阶段做的是纯预训练,用的全是预训练数据集(如 CommnCrawl);第二个阶段为衰减阶段(Decay stage),用到了很多高质量数据(如 Wikipedia),也混合了一些预训练数据,以及一些指令微调数据(如 Code SFT)
这也导致了一个问题:越来越不好区分预训练模型和后训练模型,而现在很多称之为基础模型(Base Model)的很有可能就是处在这个过程结尾,因此它基本上已经通过其中期训练过程隐含地经历了指令微调阶段

RLHF
第二步是在预训练和 SFT 基础上,进行 Reinforcement Learning from Human Feedback(基于人类反馈的强化学习)
目的:教会模型"哪个更好",先利用偏好数据(Preference Data)进行奖励模型训练(Reward Modeling),再进行强化学习微调(RL Fine-Tuning)
RLHF 把人类的主观偏好转化为数学上的 Loss 函数,从而指导模型进化
RLHF Data
Pairwise Feedback(成对反馈)是当前收集偏好数据的最主流方式,简单来说就是"二选一",与其让标注员打具体的分数,不如直接做出哪个是更好的选择(缺陷:价格昂贵,速度慢)
AI Feedback:不再由人类来判断,而是 AI 来判断
两种形式:(1)直接替代(RLAIF),(2)宪法 AI(Constitutional AI,Anthropic 的招牌),不仅让 AI 选,还让 AI 根据具体的原则(Constitution)来修改和反馈

PPO
如何进行 RLHF:找到一个策略(policy)来最大化奖励(rewards),所以有两个关键点:
(一)奖励函数是什么
第一个 RLHF 算法是 Proximal Policy Optimization(近端策略优化),目标函数(描述的是整个 PPO 训练过程中我们要最大化的目标)如下:
(1):奖励函数(Reward Function);就是一个神经网络,输入为问题 x + 回答 y,输出为分数;
(2):RL 策略除以 SFT 模型输出的对数比,也称为 RL 策略与原始 SFT 模型之间的 KL 散度(KL divergence);这是"约束",计算当前的 RL 模型
与 SFT 模型
之间的差距,让它在进行 RL 时,不要离最初的 SFT 模型太远 ;
(3):预训练梯度混合,这是"复习",表明在进行强化学习的同时,也要持续进行预训练,这样就不会发生灾难性遗忘;
(4)综上:综合评定 = 期末考分(Reward)- 旷课扣分(KL Penalty)+ 社团加分(Pretrain);

(1)第一部分讲的是我们怎么训练出这个 模型,让它评分更准:
假设有两个回答( 是好的,
是坏的),告诉
模型:
必须比
分数高(分差越大越好)
因此引出损失函数 ,其中
是变量,我们要训练它的参数,如果
模型给坏答案打分高,Loss 就会很大,从而来更新参数
所以这里是训练出了一个"裁判" ,且这个裁判要给上一页的"运动员"打分(Reward)
(2)第二部分讲的是 R(Full Reward),是真正到手的奖励(PPO 算法实际收到的反馈信号),而 (Raw Score) 是裁判的打分(模型的直接输出)
,既要'"好听"(
高),又要"正常"(Penalty 低)
为什么要"正常":因为模型为了拿高分,可能会尝试各种奇怪的句子,所以需要离 SFT 模型更近

(二)如何最大化
我们现在已经得到了奖励函数,定义了"我们要去哪里"(目标),现在要解决"我们要怎么走"(方法),应该如何调整参数,所以引出了 PPO 优化器
(1)第一代尝试:梯度下降
参数: 为模型参数,
为模型生成序列
后得到的奖励,
为模型生成这个序列的对数概率,
为梯度
公式解析:用奖励 作系数,去放大或缩小梯度的方向(奖励越大,梯度越大)
问题:只要有一个数据点的奖励稍微有点偏差,模型就会猛地更新一大步,且会出现灾难性遗忘
(2)第二代尝试:TRPO(信任区域策略优化)
参数: 是概率比率(新策略比旧策略强多少),A(Advantage)是优势,等于"获得的奖励 - 预期的基准线"(这个动作比平均水平好多少),乘起来(如果动作好(A > 0)就拼命提高它的概率比率),约束
(新策略(
)和旧策略(
)之间的差距(KL 散度)不能超过
)
公式解析:为了防止像第一代那样"跨步太大",TRPO 强行加了一个硬约束,也就是说要进步但不能离原来的样子变太多,必须处在一个"信任区间"
问题:太难算了,计算量大,训练慢
(3)第三代:PPO(近端策略优化)
参数: 是概率比率,A 是优势,
是超参数,通常取 0.1,0.2(允许变动的偏差)
公式解析:不需要那些复杂的数学约束了,直接用一个简单的 min 和 clip 函数,把更新的幅度"切断",例如概率比率为 3,PPO 就会直接切断而只给 1.2 倍的奖励(1 - , 1 +
)

DPO
第二个 RLHF 算法是 Direct Preference Optimization(直接偏好优化)
大道至简:对好的结果的对数损失进行梯度更新,对坏的结果的对数损失进行负梯度更新

既然我们觉得训练一个 Reward Model 再跑 PPO 很麻烦,那么能不能利用数学公式把它消掉
回顾 RLHF 的目标:最大化 R;以前的做法是先训练一个神经网络来拟合 ,再利用复杂的 PPO 算法去优化
(1)如果不考虑神经网络的参数限制,那个目标函数的"理论最优解"是可以直接写出来的,公式如下:
公式解析:优化后的完美模型 ,本质上就是把原始模型
的概率分布,进行了一次"加权调整",乘以
因子说明:奖励
越高的回答
,再完美模型里出现的概率越高;
是一个归一化常数,确保概率和为 1;这个公式建立了"奖励"和"策略"之间的直接数学关系;
(2)通过移项我们可以反解 ,这说明
根本不是一个独立的模型(神经网络),本质上就是新旧模型概率比值(如果新模型
生成
的概率比
高很多,奖励就越高)

(3)既然我们推出了 的表达式,就可以代入到前面的 Loss 里面,得到最终的损失函数
所以现在把一个"强化学习问题"转化成了一个"最大似然估计问题",在概念上与预训练非常相似

(4)根据 Loss 求导就得到了梯度方程:右半部分表明"方向",是"增加胜者 概率,同时减少败者
概率",左半部分表明"力度",是"判定败者分数高为正数(经过 sigmoid 趋于 1),判定败者分数高为负数(经过 sigmoid 趋于 0)"

Variants
这里的 PO 变体中提出了一个很实用的方法:长度归一化
由于模型往往会误以为"写得越长"就是"写得越好",而加入长度归一化就能避免模型通过"堆砌字数"降低平均质量,学会"短小精悍"

PPO VS DPO
核心区别:PPO 是"显式"的强化学习(有中间商),DPO 是"隐式"的强化学习(没有中间商)
PPO 训练流程
(1)SFT:微调一个会说话的模型
(2)Reward Modeling(RM):训练一个独立的打分模型,让它学会分辨好坏
(3)PPO:让 SFT 模型(学生)不断生成回答,RM 模型(老师)不断打分,通过 PPO 算法更新学生的参数;
DPO 训练流程
(1)SFT:微调一个会说话的模型
(2)DPO:直接拿人类偏好数据对模型进行训练,不需要显式训练一个 RM,它利用数学推导把 RM 内置到了 Loss 中;
Things to watch out
(1)第一个问题是"过度优化"
x 轴为训练的程度,数值越大说明模型离原始的 SFT 模型越远,y 轴为分数,因此需要 KL 惩罚项
(2)第二个问题是"模式坍塌 / 熵减"
核心现象:模型变得"死板"且"迷之自信",x 轴为模型对自己回答的信心,y 轴为实际的准确率,虚线为理想情况
模式坍塌:预训练模型通常很有创造力,但是 RLHF 后为了追求高奖励,往往会收敛到唯一的标准答案,导致模型失去了多样性,变得像个复读机,对错误的回答也缺乏自知之明

更多推荐
所有评论(0)