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

大模型中的Actor-Critic机制

在大模型的语境中,Actor-Critic 指的是一种强化学习算法,它是训练模型(特别是通过基于人类反馈的强化学习 - RLHF)使其输出更符合人类偏好的核心技术之一。

简单来说,Actor-Critic 结合了两种方法的优点:

  1. 策略梯度方法 (Policy Gradient Methods - 对应 Actor):直接学习一个策略(Policy),告诉大模型在给定状态下(当前对话历史、提示)应该采取什么动作(生成哪个词/Token)。目标是最大化预期的累积奖励。
  2. 价值函数方法 (Value Function Methods - 对应 Critic):学习一个价值函数(Value Function),评估在给定状态下遵循当前策略所能获得的预期累积奖励有多好。它不直接告诉模型该做什么动作,而是评估当前状态或状态-动作对的价值。

在 Actor-Critic 框架中:

  • Actor (演员/策略网络):
    • 这就是被训练的大语言模型本身
    • 它的“策略”就是根据当前的上下文(对话历史、提示)预测下一个最可能出现的Token(单词或子词)的概率分布
    • 在训练过程中,Actor 负责生成文本(采取动作)
    • 目标是学习一个策略,使得生成的文本序列能获得尽可能高的奖励。
  • Critic (评论家/价值网络):
    • 这是一个独立的神经网络(通常比 Actor 模型小得多)。
    • 它的任务是评估 Actor 当前策略的价值
    • 给定一个状态(通常是部分生成的文本序列),Critic 估计从该状态开始,按照 Actor 当前策略继续生成,最终能获得的总期望奖励是多少。这个估计值称为状态价值
    • 换句话说,Critic 告诉 Actor:“根据我(Critic)的评估,你现在所处的这个文本生成位置,按照你现在的写作风格(策略)继续写下去,大概能得多少分(总奖励)”。

Actor-Critic 如何协同工作(训练过程):

  1. Actor 生成样本: Actor 模型接收一个提示,并根据其当前策略(参数)生成一个完整的文本序列(例如一个回复)。
  2. 计算奖励: 将生成的文本序列输入到一个奖励模型。这个奖励模型通常是事先训练好的,其目标是模仿人类的偏好(例如,标注员认为哪个回复更好)。奖励模型给生成的序列输出一个标量奖励值,表示该序列的质量(符合人类偏好的程度)。
  3. Critic 进行评估:
    • 在生成过程中(或生成后),Critic 被用来评估生成序列中各个中间状态的价值
    • 例如,Critic 会估计在生成了前 t 个 Token 后的状态 s_t 的价值 V(s_t)
  4. 计算优势函数: 这是关键步骤。优势函数 A(s_t, a_t) 衡量在状态 s_t 下采取动作 a_t(生成了某个Token)相对于在该状态下采取平均动作(按照当前策略)有多好。它通常近似计算为:
    A(s_t, a_t) ≈ Q(s_t, a_t) - V(s_t)
    其中 Q(s_t, a_t) 是状态-动作价值(在 s_t 下采取 a_t 然后遵循策略的期望回报),但这很难直接计算。实践中常用时序差分误差 (TD Error) 来近似优势:
    A(s_t, a_t) ≈ r_t + γ * V(s_{t+1}) - V(s_t)
    • r_t:在 s_t 采取 a_t 后得到的即时奖励(可能只在序列结束时才有非零奖励,中间步骤奖励常为0)。
    • γ:折扣因子(未来奖励的衰减率)。
    • V(s_{t+1}):Critic 对下一个状态 s_{t+1}(生成了 a_t 后的状态)的价值估计。
    • V(s_t):Critic 对当前状态 s_t 的价值估计。
    • 优势 A(s_t, a_t) 为正 意味着在 s_t 生成 a_t 比该状态下策略的平均水平更好,应该增加生成这个Token的概率。
    • 优势 A(s_t, a_t) 为负 意味着生成 a_t 比平均水平更差,应该降低其概率。
  5. 更新 Actor (策略梯度): 使用计算出的优势函数来更新 Actor 的参数。策略梯度定理表明,为了最大化期望回报,应该沿着以下梯度的方向更新策略:
    ∇θ J(θ) ≈ E[∇θ log π_θ(a_t | s_t) * A(s_t, a_t)]
    • θ:Actor 策略的参数。
    • π_θ(a_t | s_t):Actor 策略在状态 s_t 下选择动作 a_t(生成某个Token)的概率。
    • 这个更新规则直观地看:如果一个动作 (a_t) 的优势 (A(s_t, a_t)) 是正的(好于平均水平),就增加在状态 s_t 下选择这个动作的概率(∇θ log π_θ(a_t | s_t) 指示了如何调整参数来增加这个概率)。如果优势是负的,就降低这个概率。优势的幅度决定了更新的步长。
  6. 更新 Critic (价值函数拟合): Critic 也需要被训练得更准确。通常使用均方误差损失来更新 Critic 的参数,使其对状态价值的预测 V(s_t) 尽可能接近实际观测到的回报(或基于观测回报和后续状态价值估计的目标值)。例如,最小化:
    Loss = (V(s_t) - (r_t + γ * V_target(s_{t+1})))^2
    • V_target(s_{t+1}) 可以是目标网络(一个较慢更新的 Critic 副本)的估计值,以提高稳定性。
  7. 迭代: 重复步骤 1-6,使用大量提示和生成样本来训练 Actor 和 Critic。随着 Critic 对价值的评估越来越准,它对 Actor 策略更新的指导也越来越有效;而 Actor 策略的改进又使得生成的数据分布发生变化,促使 Critic 学习评估新的状态。

为什么 Actor-Critic 在大模型 (RLHF) 中至关重要?

  1. 处理稀疏奖励: 在文本生成中,通常只有在整个序列生成完毕后才能得到一个奖励信号(比如回复是否有帮助)。Actor-Critic 中的 Critic 提供了中间步骤的评估(状态价值),通过优势函数将最终的、稀疏的奖励信号有效地传递回序列中的每一个生成步骤(Token)。这极大缓解了信用分配问题。
  2. 降低方差: 相比纯策略梯度方法(如 REINFORCE),Critic 提供的基线(V(s_t))显著降低了策略梯度估计的方差,使训练更稳定、更高效。
  3. 引导策略改进: Critic 持续评估 Actor 策略的“价值”,为 Actor 提供了比单纯依靠最终奖励更丰富、更及时的反馈信号,指导策略朝获得更高期望回报的方向改进。
  4. 实现 PPO: RLHF 中最常用的算法 PPO (Proximal Policy Optimization) 就是一种非常成功的 Actor-Critic 算法。它通过引入重要性采样、裁剪等技巧,在保证 Actor 更新稳定性的同时,利用 Critic 计算的优势函数进行高效优化。

总结:

在大模型(特别是 RLHF)的背景下,Actor-Critic 是一种核心的强化学习框架

  • Actor 是被训练的大语言模型本身,负责根据策略生成文本。
  • Critic 是一个辅助的价值网络,负责评估 Actor 在生成文本过程中各个中间状态的价值(预期总回报)。
  • 优势函数(基于 Critic 的评估和实际奖励计算)是关键桥梁,它量化了在特定状态下生成某个 Token 相对于策略平均水平的优劣程度。
  • Actor 根据优势函数的信号更新其策略(增加好动作的概率,减少坏动作的概率)。
  • Critic 自身也不断更新,以更准确地预测状态价值

这种 Actor 和 Critic 协同训练、相互促进的机制,使得大模型能够有效地利用来自奖励模型(代表人类偏好)的稀疏反馈信号,逐步学习生成更高质量、更符合人类期望的文本。PPO 作为 Actor-Critic 的成功代表,是当前 RLHF 流程中的标准工作组件。

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

相关文章:

  • 直播专用域名租用全解析:开启直播新境界
  • 计算机史前时代:从原始计数到机械曙光
  • 什么是GNN?——聚合、更新与循环
  • 计算机发展史:集成电路时代的微缩革命
  • 2025 最好的Coze入门到精通教程(上)
  • 时序顶会基础创新知识点-小波变换篇上
  • 设计系统搭建:大型 Pad 应用的协同开发解决方案
  • 优测发布IoT云联解决方案,赋能生态应用创新跨端体验!
  • 一文详解REST风格
  • WSL如何安装docker?
  • 人生的意义
  • 培生生成式人工智能(GAI)认证职场应用白皮书
  • CMakeLists.txt 中一些最常见和核心的命令
  • 三大工厂设计模式
  • Oracle自治事务——从问题到实践的深度解析
  • mcu中的调试接口是什么?
  • 阿里思想学习-如何优化大事务提交
  • JAVA后端开发—— JWT(JSON Web Token)实践
  • c语言----文件操作
  • 上海RISC-V峰会-香山开源RISC-V CPU随想随记
  • 软件测试 —— A / 入门
  • 从0开始学习R语言--Day53--AFT模型
  • react-window 大数据列表和表格数据渲染组件之虚拟滚动
  • Spring关于依赖注入的几种方式和Spring配置文件的标签
  • 面试总结第54天微服务开始
  • Spring处理器和Bean的生命周期
  • 线程池与ThreadPoolExecutor源码解析(上)
  • 暴力破解练习
  • Pandas - JSON格式数据操作实践
  • AV1平滑缓冲区