大语言模型训练阶段
LLM
⼴义的 LLM ⼀般覆盖了从⼗亿参数(如 Qwen-1.5B)到千亿参数(如 Grok-314B)的所有⼤
型语⾔模型。只要模型展现出涌现能⼒,即在⼀系列复杂任务上表现出远超传统预训练模型(如 BERT、T5)的能
⼒与潜⼒,都可以称之为 LLM。
预训练
微调
Q1 LLM微调和Pretrain Model微调有什么区别?
A: LLM微调是“指令微调”,而不是子任务微调,因为LLM在经过预训练阶段之后,能力已经非常强大,不需要对下游的各个子任务进行微调,只需要拟合用户的指令。SFT 的主要⽬标是让模型从多种类型、多种⻛格的指令中获得泛化的指令遵循能⼒,也就是能够理解并
回复⽤户的指令。
input:告诉我今天的天⽓预报?
output:根据天⽓预报,今天天⽓是晴转多云,最⾼温度26摄⽒度,最低温度9摄⽒度,昼夜温差⼤,请注意保暖哦
表现良好的开源 LLM SFT 数据量⼀
般在数 B token 左右。
SFT数据集
因为SFT的数据集属于有监督的数据集,需要标注,而且标注成本较高。所以也有利用已有LLM来生成SFT数据集的。
{
"instruction":"将下列⽂本翻译成英⽂:",
"input":"今天天⽓真好",
"output":"Today is a nice day!"
}
为了在SFT阶段学习到和预训练阶段不一样的知识,也会在SFT数据集中增加一些格式引导,例如。
Input: ### Instruction:\n将下列⽂本翻译成英⽂:今天天⽓真好\n\n### Response:\n
Output: ### Instruction:\n将下列⽂本翻译成英⽂:今天天⽓真好\n\n### Response:\nToday is a nice day!
这里可以看到,模型的输出包含了原有的输入,这是因为,模型的Decoder部分,需要先输入已有的指令+输入。做CLM训练,模型预测的结果依然是Input+Output,只不过Input不参与Loss的计算。
多轮对话
模型的多轮对话能力完全来自于SFT,因此需要将数据构造为多轮对话的形式。
RLHF(Reinforcement Learning from Human Feedback)系统
RLHF,即人类反馈的强化学习。从功能层面来区分LLM的训练阶段,可以分为两阶段,分别是预训练和对齐。预训练是赋予模型海量的知识,和推理能力。对齐则分为指令对齐(SFT)和价值观对齐(RLHF)。
在强化学习中,分为两个组件,智能体和环境,智能体做出行动,环境给出反馈,智能体再根据反馈修改自己行动的策略。
RM(Reward Model)
奖励模型,在大模型针对问题做出回答后,奖励模型需要给出一个符合人类便好的打分。大模型会根据这个打分优化自身。
RM从本质上就是一个文本分类模型,架构上就是LLM架构(Bert架构)加上一层分类层。
OpenAI 使⽤了 175B 的 LLM 和 6B 的
RM。同时,RM 使⽤的模型可以是经过 SFT 之后的 LM,也可以是基于偏好数据从头训练的 RM。哪⼀种更好,⾄
今尚没有定论。
也有研究认为,需要使用与待对齐模型规模相同或更大规模的奖励模型,这是因为较大规模的奖励模型可以更好地理解对齐模型的知识和能力范围。例如,LLaMA-2使用相同的检查点初始化“待对齐模型”和奖励模型。
奖励模型的训练数据,使用LLM对任务指令生成一定数量的候选输出,然后人类对齐标注,一般有三种标注形式。
- 打分式
- 对比式:对大模型的输出,两两对比,排名在前的为正例,最大化正例和负例的分数差异。
- 排序式:对同一个问题的K个输出,进行排序,然后对两两分别进行计算差异,使差异最大。
一般来说排序式效果更好,因为每个人的价值观也有差异,绝对的分数并不准确。
因为存在多种对齐标准,例如有用性、诚实性和无害性,因此,单一奖励模型很难同时反映所有优化目标。可以针对不同的对齐标准,训练多个特定的奖励模型,然后使用特定的组合策略(平均或者加权)计算最终得分。
奖励模型的目标函数:这里将奖励模型看作二元分类任务,因为可能出现过拟合,所以可以加入一个对最佳输出的语言建模损失作为正则项。即模型不光能正确判断正例,也能加强正例的预测输出。
核心原因是:奖励模型的训练目标(学习偏好排序)过于聚焦于有限的标注数据,缺乏对文本 “基础合理性”(如语言流畅度、语义连贯性)的约束。
强化学习
强化学习旨在训练一个智能体,该智能体与外部环境进行多轮交互,通过学习最佳策略以最大化从外部环境获得的奖励。在这一过程中,智能体是根据外部环境决定下一步行动的决策者,因此也被称为策略模型。
在智能体与外部环境的第t轮交互中,智能体根据外部环境的状态 s t s_t st选择合适的策略,决定下一步要做的行动 a t a_t at。做出行动后,外部环境的状态变为 s t + 1 s_{t+1} st+1。同时,会给智能体一个奖励分数 r t r_t rt。在与外部环境的交互中,智能体的最大目标是最大化所有决策 τ = [ a 1 , a 2 , . . . ] \tau = [a_1,a_2,...] τ=[a1,a2,...] 所获得的奖励总和 R ( τ ) = ∑ t = 1 T r t R(\tau)=\sum_{t=1}^{T}r_t R(τ)=∑t=1Trt。
形式化地,假设参数为 θ \theta θ的策略模型做出决策轨迹 τ \tau τ的概率为 P θ ( τ ) P_{\theta}(\tau) Pθ(τ),该决策轨迹在最终状态能累积获得的奖励为 R ( τ ) R(\tau) R(τ)。强化学习的目标为最大化所有轨迹的奖励的期望。
J ( θ ) = arg max θ E τ ∼ P θ [ R ( τ ) ] = arg max θ ∑ τ R ( τ ) P θ ( τ ) \mathcal{J}(\theta)=\underset{\theta}{\arg \max } \mathbb{E}_{\tau \sim P_{\theta}}[R(\tau)]=\underset{\theta}{\arg \max } \sum_{\tau} R(\tau) P_{\theta}(\tau) J(θ)=θargmaxEτ∼Pθ[R(τ)]=θargmaxτ∑R(τ)Pθ(τ)
策略梯度
有了目标函数后,可以对其计算梯度。
∇ J ( θ ) = ∑ τ R ( τ ) ∇ P θ ( τ ) \nabla \mathcal{J}(\theta)=\sum_{\tau} R(\tau) \nabla P_{\theta}(\tau) ∇J(θ)=τ∑R(τ)∇Pθ(τ)
其中 R ( π ) R(\pi) R(π)为外部环境根据决策轨迹给出的奖励,与模型无关,因此该项被看作常数项。因为我们的目标是使得奖励最大化,因此采用梯度上升的方法更新策略模型的参数。
θ = θ + η ∇ J ( θ ) \theta = \theta + \eta \nabla \mathcal{J}(\theta) θ=θ+η∇J(θ)
这里, η \eta η是学习率。在自然语言场景下,生成候选Token的决策空间非常大,很难对所有决策轨迹计算期望,因此这里使用采样算法生成多条决策轨迹,对其计算平均奖励来近似全局的期望。
注意,这里有两个环节,一个是与外部环境进行交互,一个是需要优化的策略模型。因此产生了两种训练方式。
- 同策略(on-policy):负责交互与负责学习的模型相同。为了保证采样得到的决策轨迹能够近似策略模型做出的决策期望,每次更新策略模型参数后,需要重新进行采样。因此数据利用率和鲁棒性较低
- 异策略(off-policy):专门有一个负责与环境进行交互的模型来产生轨迹,且该模型是固定的。
在这里,待对齐的大语言模型为策略模型,用户输入的问题和已经生成的内容为当前状态,生成下一个Token为动作,生成整个回复即决策轨迹。奖励模型会对回复进行打分。
PPO
Proximal Policy Optimization,近端策
略优化算法。是强化学习领域的一个重要的优化方法。也属于上面介绍的异策略训练方式。
之前介绍的策略梯度的方法有一些问题,例如在状态 s t s_t st,有三种决策, a t , 1 , a t , 2 , a t , 3 a_{t,1},a_{t,2},a_{t,3} at,1,at,2,at,3,其对应的奖励一次递增。
0 < Q ( s t , a t , 1 ) < Q ( s t , a t , 2 ) < Q ( s t , a t , 3 ) 0 < Q(s_t,a_{t,1}) < Q(s_t,a_{t,2}) < Q(s_t,a_{t,3}) 0<Q(st,at,1)<Q(st,at,2)<Q(st,at,3)。那如果采样到决策 a t , 1 a_{t,1} at,1。获得的奖励依然大于0,是正向的,策略模型会提高产生 a t , 1 a_{t,1} at,1的概率。但是对三个决策来说, a t , 1 a_{t,1} at,1是奖励最低的决策。 因此对与奖励分数的计算,重新引入了优势函数来估算。
A t ^ = Q ( s t , a t ) − V ( s t ) \hat{A_{t}} = Q(s_t,a_t) - V(s_t) At^=Q(st,at)−V(st)
这里 V ( s t ) V(s_t) V(st)表示从当前状态开始,所有决策得到的奖励的期望值, V ( s t ) V(s_t) V(st)由一个评价模型(Critic model)得到,评价模型可以使用奖励模型进行初始化,并且随着策略模型不断调整。优势函数的本质就是希望选择一个较高奖励的决策。
重要性采样
之前介绍到,因为全局的决策轨迹的期望无法计算,因此采用了一些轨迹,来估算全局的期望。这里可以形式化为,通过在一个分布p上采用得到的样本来近似另一个分布q上样本的分布,主要用于分布q难于计算或采样的情况。
RLHF 流程
-
模型初始化
Actor Model(策略模型):待对齐的语言模型,从经过监督微调(SFT)的大型语言模型(LLM)初始化,目标是生成符合目标分布的回复。
Reference Model(参考模型):与Actor Model同步初始化(如共享SFT后的权重),作为策略优化的参考基准(约束当前策略输出与原始分布的偏差,避免差异较大)。
Reward Model(RM,奖励模型):独立训练的模型,输入Prompt和回复,输出标量奖励值(量化人类偏好)。
Critic Model(评价模型):独立训练的价值函数(非复用RM参数),输入状态(含Prompt和部分回复),用于修正奖励得分。 -
根据参考模型采样得到若干轨迹
-
回复生成
给定输入Prompt,Actor Model和Ref Model分别生成候选回复 y a c t o r y_{actor} yactor 和参考回复 y r e f y_{ref} yref。两者的输出将用于后续的策略约束和奖励计算。 -
强化学习评分模块,计算优势估计
Actor Model生成的回复 y a c t o r y_{actor} yactor 分别输入Reward Model和Critic Model,获取两类评分:
Reward Model输出:即时标量奖励 r t r_t rt,直接反映人类对回复的偏好(如流畅度、信息量)。
Critic Model输出:状态价值 V t V_t Vt,表示从当前状态开始所有决策能得到的奖励期望值。 -
目标函数:策略约束或梯度裁剪:
KL散度计算。为了避免当前训练轮次的语言模型明显偏离初始的语言模型
r K L = − θ K L . D K L ( π a c t o r ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ) r_{KL} = - \theta_{KL}. D_{KL}(\pi_{actor}(y|x)||\pi_{ref}(y|x)) rKL=−θKL.DKL(πactor(y∣x)∣∣πref(y∣x))
- π m o d e l \pi_{model} πmodel :模型model输出的概率分布
- D K L D_{KL} DKL:KL散度,衡量两个分布的差异
- θ K L \theta_{KL} θKL :控制KL惩罚强度的超参数
- 梯度上升优化策略模型(Actor Model)
- 更新参考模型(reference model)