2 大语言模型基础-2.2 生成式预训练语言模型GPT-2.2.2 有监督下游任务微调-Instruct-GPT强化学习奖励模型的结构改造与维度转换解析
2 大语言模型基础-2.2 生成式预训练语言模型GPT-2.2.2 有监督下游任务微调-1.Instruct-GPT强化学习奖励模型的结构改造与维度转换解析
- 一、预训练模型(如GPT-3)的原始结构 vs 奖励模型结构
- 二、维度转换实例:以GPT-3小型模型为例
- 三、为什么可以这样改造?原理逻辑
- 四、补充:隐藏状态的聚合方式
一、预训练模型(如GPT-3)的原始结构 vs 奖励模型结构
RLHF阶段要先在预训练模型基础上微调一个SFT模型出来,然后在SFT基础上做奖励模型,奖励模型把SFT模型的最后一个线性层+softmax层移除,换成一个 d_model × 1
的线性层,从而输出标量的打分值。下面是详细的介绍。
1. 原始GPT-3分类头结构
- 输入:最后一个编码器输出的隐藏状态向量,维度为
d_model
(如GPT-3中小模型d_model=768)。 - 分类头:
- 线性层(维度转换):
d_model × vocab_size
(如768 × 50257,vocab_size为词表大小)。 - Softmax层:将线性层输出转换为概率分布(和为1),用于预测下一个token。
- 线性层(维度转换):
2. 奖励模型的回归头改造
- 输入:同上,最后一个编码器的隐藏状态向量(维度
d_model
)。 - 回归头:
- 移除:原分类头的线性层和Softmax层。
- 替换:添加一个新的线性层,维度为
d_model × 1
,直接输出一个标量值(奖励分数)。

二、维度转换实例:以GPT-3小型模型为例
场景:假设GPT-3小型模型的参数如下:
- 最后一个编码器输出维度:
d_model = 768
- 原词表大小:
vocab_size = 50257
1. 原始分类头的维度转换
输入向量维度:768(隐藏状态)
↓
线性层权重矩阵维度:768 × 50257
↓
线性层输出维度:50257(每个token的未归一化分数)
↓
Softmax输出:50257(概率分布,和为1)
2. 奖励模型回归头的维度转换
输入向量维度:768(隐藏状态)
↓
新线性层权重矩阵维度:768 × 1
↓
输出维度:1(标量奖励分数,无Softmax)
核心区别:
- 原分类头的目标是“多分类预测”,需要映射到词表大小维度并归一化概率;
- 奖励模型的目标是“回归评分”,直接映射到1维标量,无需概率归一化。
三、为什么可以这样改造?原理逻辑
-
任务性质的一致性:
预训练模型的隐藏状态已包含语义、语法等高层特征,奖励模型只需在此基础上学习“人类偏好”的评分规则,无需预测token分布。 -
线性层的灵活性:
线性层可将高维语义空间映射到1维评分空间,本质是学习一个“偏好函数”,输入为模型输出的语义表示,输出为分数。 -
与强化学习的兼容性:
标量奖励分数可直接作为强化学习的反馈信号(如PPO算法中的奖励值),而无需像概率分布一样进行额外处理。
四、补充:隐藏状态的聚合方式
上述例子假设直接使用“最后一个token的隐藏状态”作为线性层输入,但实际中可能采用:
- 池化操作:对整个序列的隐藏状态取平均或最大值,综合评估输出整体质量;
- 特殊token标识:在输出序列末尾添加“奖励标识token”,取其隐藏状态作为评分依据。
无论哪种方式,最终维度转换均为 d_model → 1
,核心逻辑不变。