当前位置: 首页 > news >正文

Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解

Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解

      • 一、批次处理的本质:共享上下文的比较对捆绑
        • (1)为什么同一prompt的比较对必须捆绑?
        • (2)InstructGPT的优化方案
      • 二、输入输出与损失函数的具体构造
        • (1)输入输出示例
        • (2)人工标注数据的处理
        • (3)损失函数的计算过程
        • (4)反向传播的核心逻辑
      • 三、为什么不需要人工标注分值?
        • (1)排序数据的天然属性
        • (2)避免主观评分的不一致性
        • (3)比较对的数学优势
      • 四、批次处理的计算效率提升
        • (1)显存占用对比
        • (2)计算量对比
      • 五、验证实验与效果
        • (1)过拟合控制
        • (2)人类评估
      • 六、总结

Instrct-GPT强化学习奖励模型的训练过程是不是有疑问,下面是其原理的实例化详解!解答你下面的问题:

  1. 为什么将同一 prompt 的所有 C (K,2) 对作为一个批次元素进行训练。例如,K=4 时,一个批次包含 6 对比较,但仅需对该 prompt 的 4 个响应各进行一次前向传播,而非 6 次。
  2. 奖励模型在训练过程中的输入和输出究竟是什么。
  3. 人工标注数据究竟怎么和输出的分值构造出损失函数,从而进行反向传播。
  4. 原本的训练数据集是否只是排序的顺序,而没有分值?

一、批次处理的本质:共享上下文的比较对捆绑

(1)为什么同一prompt的比较对必须捆绑?

假设我们有一个prompt:“如何提高代码可读性?”,SFT模型生成4个响应:

  • y₁:“使用清晰的变量命名和注释”
  • y₂:“遵循代码风格指南”
  • y₃:“增加单元测试覆盖率”
  • y₄:“减少嵌套层级”

标注者对这4个响应排序为 y₁ ≻ y₂ ≻ y₃ ≻ y₄。传统方法会将6个比较对(如(y₁,y₂)、(y₁,y₃)等)打散到不同批次中训练,但这样会导致两个问题:

  1. 过拟合:模型可能记住特定比较对的局部模式(例如"y₁优于y₂"),而无法泛化到同一prompt的其他比较对(如"y₁优于y₃")。
  2. 计算冗余:每个比较对需单独前向传播,对于K=4需6次推理,显存占用和计算量翻倍。
(2)InstructGPT的优化方案
  • 输入:将prompt和4个响应作为一个批次元素(形状为 [4, token_length])。
  • 前向传播:仅需一次推理得到4个响应的奖励值:
    r 1 = r θ ( x , y 1 ) , r 2 = r θ ( x , y 2 ) , r 3 = r θ ( x , y 3 ) , r 4 = r θ ( x , y 4 ) r_1 = r_\theta(x, y_1), \quad r_2 = r_\theta(x, y_2), \quad r_3 = r_\theta(x, y_3), \quad r_4 = r_\theta(x, y_4) r1=rθ(x,y1),r2=rθ(x,y2),r3=rθ(x,y3),r4=rθ(x,y4)
  • 比较对生成:根据排序生成所有6对比较,例如:
    • (y₁,y₂) → (r₁, r₂)
    • (y₁,y₃) → (r₁, r₃)
    • (y₃,y₄) → (r₃, r₄)

这种方法的核心是:同一prompt的比较对共享相同的上下文,模型需学习上下文依赖的相对偏好,而非独立处理每个比较对

二、输入输出与损失函数的具体构造

(1)输入输出示例
  • 输入
    • Prompt: “如何提高代码可读性?”
    • 响应集合: [y₁, y₂, y₃, y₄](token化后的序列)
  • 输出
    • 奖励值: [r₁=0.9, r₂=0.7, r₃=0.5, r₄=0.3](假设模型预测)
(2)人工标注数据的处理

标注者仅提供排序顺序 y₁ ≻ y₂ ≻ y₃ ≻ y₄,未给出具体分值。训练时需将排序转换为比较对:

  1. 比较对生成
    • 所有升序对:(y₁,y₂), (y₁,y₃), (y₁,y₄), (y₂,y₃), (y₂,y₄), (y₃,y₄)
    • 每个对中,前一个是winner(yw),后一个是loser(yl)。
(3)损失函数的计算过程

对于每个比较对(yw, yl),损失项为:
loss p a i r = − log ⁡ σ ( r w − r l ) \text{loss}_{pair} = -\log \sigma(r_w - r_l) losspair=logσ(rwrl)
其中, σ \sigma σ是sigmoid函数,将奖励差异转换为概率:
σ ( r w − r l ) = 1 1 + e − ( r w − r l ) \sigma(r_w - r_l) = \frac{1}{1 + e^{-(r_w - r_l)}} σ(rwrl)=1+e(rwrl)1

以比较对(y₁,y₂)为例:

  • 模型输出r₁=0.9,r₂=0.7
  • 奖励差异:0.9 - 0.7 = 0.2
  • 概率: σ ( 0.2 ) ≈ 0.55 \sigma(0.2) ≈ 0.55 σ(0.2)0.55
  • 损失项: − log ⁡ ( 0.55 ) ≈ 0.597 -\log(0.55) ≈ 0.597 log(0.55)0.597

所有6个比较对的损失求平均:
loss = 1 6 ∑ i = 1 6 loss p a i r i \text{loss} = \frac{1}{6} \sum_{i=1}^6 \text{loss}_{pair_i} loss=61i=16losspairi

(4)反向传播的核心逻辑
  • 梯度计算
    对每个比较对,计算梯度:
    ∂ loss p a i r ∂ θ = − 1 1 + e − ( r w − r l ) ⋅ ( 1 − 1 1 + e − ( r w − r l ) ) ⋅ ( r w − r l ) ′ ⋅ ∂ r w ∂ θ + ⋯ \frac{\partial \text{loss}_{pair}}{\partial \theta} = -\frac{1}{1 + e^{-(r_w - r_l)}} \cdot (1 - \frac{1}{1 + e^{-(r_w - r_l)}}) \cdot (r_w - r_l)' \cdot \frac{\partial r_w}{\partial \theta} + \cdots θlosspair=1+e(rwrl)1(11+e(rwrl)1)(rwrl)θrw+
    (注:实际计算涉及链式法则,此处简化)
  • 参数更新
    累加所有比较对的梯度,通过Adam等优化器更新模型参数 θ \theta θ,使得:
    • 偏好响应的奖励值更高(如r₁ > r₂ > r₃ > r₄)
    • 非偏好响应的奖励值更低

三、为什么不需要人工标注分值?

(1)排序数据的天然属性

排序本身隐含了相对偏好关系。例如,标注者认为y₁优于y₂,等价于希望模型学习到 r 1 > r 2 r₁ > r₂ r1>r2。这种相对关系可以通过比较对直接建模,无需具体分值。

(2)避免主观评分的不一致性

若要求标注者给出具体分值(如1-5分),可能导致:

  1. 评分标准不统一:不同标注者对"3分"的理解可能差异很大。
  2. 数据稀疏性:高分和低分样本不足,模型易过拟合。
(3)比较对的数学优势

比较对的损失函数直接优化奖励差异的对数几率(log odds),与人类偏好的概率模型一致。例如,若人类选择y_w的概率是y_l的2倍,则:
log ⁡ ( P ( y w ) P ( y l ) ) = r w − r l \log \left( \frac{P(y_w)}{P(y_l)} \right) = r_w - r_l log(P(yl)P(yw))=rwrl
这种映射关系使得模型能更准确地捕捉人类偏好的概率分布。

四、批次处理的计算效率提升

(1)显存占用对比
  • 传统方法:K=4时,每个比较对需单独前向传播,显存占用为 6 × [batch_size, token_length]
  • InstructGPT方法:只需一次前向传播,显存占用为 1 × [4, token_length],降低至原来的1/6。
(2)计算量对比
  • 传统方法:6次前向传播 + 6次反向传播。
  • InstructGPT方法:1次前向传播 + 1次反向传播(梯度累加)。

这种优化对于K=9的情况更显著,计算量从36次减少到1次,提升36倍效率。

五、验证实验与效果

(1)过拟合控制
  • 传统方法:验证集log loss较高,模型倾向于记忆特定比较对。
  • InstructGPT方法:验证集log loss显著降低(如从0.8降至0.4),表明模型真正学习到了上下文依赖的偏好模式。
(2)人类评估

在人工评估中,使用批次处理训练的奖励模型引导的RL策略,其输出被人类偏好的比例比传统方法高15%~20%。

六、总结

InstructGPT的批次处理机制通过共享上下文的比较对捆绑,实现了三大突破:

  1. 计算效率跃升:单次前向传播处理所有比较对,显存和计算量显著降低。
  2. 抗过拟合能力增强:强制模型学习上下文依赖的相对偏好,而非局部模式。
  3. 与人类偏好的精准对齐:通过Pairwise Ranking Loss,将排序数据直接映射到奖励差异的对数几率,避免主观评分的缺陷。

这一设计不仅解决了大规模训练的工程挑战,更从理论上建立了人类偏好与可微分损失函数的直接联系,为后续RLHF阶段提供了可靠的价值函数基础。非常棒的工作!

http://www.lryc.cn/news/578202.html

相关文章:

  • beforeRouteLeave 的触发本质
  • 2025年6月个人工作生活总结
  • 字节跳动 C++ QT PC客户端面试
  • 机器人仿真(1)Ubuntu24.04下CLion的ROS2开发环境配置
  • C++ 快速回顾(五)
  • 接口测试之接口关联
  • OpenCV CUDA模块设备层----- 正切(tangent)运算函数tan()
  • 一文讲清楚React中类组件与函数组件的区别与联系
  • C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)
  • 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程
  • 零成本接入+企业级部署:2025年AI大模型实战指南
  • Linux云计算基础篇(2)
  • 对称非对称加密,https和http,https通讯原理,Charles抓包原理
  • 三态门Multisim电路仿真——硬件工程师笔记
  • 大模型在多发性硬化预测及治疗方案制定中的应用研究
  • Python 安装使用教程
  • 探索未来AI的无限可能:使用oTTomator Live Agent Studio平台上的开源AI代理!
  • JSON-LD 开发手册
  • 衡石科技chatbot分析手册--钉钉数据问答机器人配置
  • 衡石科技使用手册-企业即时通讯工具数据问答机器人用户手册
  • java中agent的作用
  • 免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成
  • 云手机主要是指什么?
  • 纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)
  • DAY 45 Tensorboard使用介绍
  • 2 大语言模型基础-2.2 生成式预训练语言模型GPT-2.2.2 有监督下游任务微调-Instruct-GPT强化学习奖励模型的结构改造与维度转换解析
  • 高效读取文件中指定行段的两种方法
  • 矩阵方程 线性代数
  • EA自动交易完全指南:从策略设计到实盘部署
  • 区块链技术有哪些运用场景?