You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从梯度目标推导强化学习损失函数?以带基线REINFORCE为例

带基线REINFORCE中Critic损失的推导与关联分析

一、Critic损失的来源

Critic的核心任务是估计状态价值函数(V^\pi(s)),即从状态(s)出发遵循当前策略能获得的期望折扣回报。在实践中,我们用轨迹中每个状态对应的真实折扣回报(returns)作为监督标签——因为这是从环境中采样得到的真实回报样本,Critic本质上是在做回归任务:用参数为(w)的价值网络(v_{\text{hat}}(s;w))拟合真实的状态价值。

回归任务中最常用的损失是均方误差(MSE),乘以0.5是为了求导后抵消系数,让梯度形式更简洁,因此就得到了你看到的:

critic_loss = 0.5 * (returns - v_hat(states))**2

二、与理论目标梯度(\nabla J(w))的关联

这个损失的梯度直接对应理论上状态价值拟合目标的梯度无偏估计,并非“负逆”,二者是直接的推导关系:

推导过程(通用维度下)

  1. 定义Critic的理论目标:让(v_{\text{hat}}(s;w))逼近真实状态价值(V^\pi(s) = \mathbb{E}[G_t | S_t = s]),其中(G_t)是从时刻(t)开始的折扣回报。
  2. 损失函数的期望形式为:
    J(w) = \mathbb{E}\left[ 0.5 \cdot (G_t - v_{\text{hat}}(S_t;w))^2 \right]
    
  3. 对参数(w)求梯度(利用期望的线性性与链式法则):
    \nabla J(w) = \mathbb{E}\left[ (G_t - v_{\text{hat}}(S_t;w)) \cdot (-\nabla v_{\text{hat}}(S_t;w)) \right]
    
    整理后得到:
    \nabla J(w) = -\mathbb{E}\left[ (G_t - v_{\text{hat}}(S_t;w)) \cdot \nabla v_{\text{hat}}(S_t;w) \right]
    
  4. 当用梯度下降法最小化损失时,更新方向为(-\nabla J(w)),即:
    -\nabla J(w) = \mathbb{E}\left[ (G_t - v_{\text{hat}}(S_t;w)) \cdot \nabla v_{\text{hat}}(S_t;w) \right]
    
    这正是我们需要的更新方向:让价值网络向真实回报(G_t)的方向调整,等价于最小化价值估计与真实回报的误差,完全匹配理论上拟合状态价值的目标。

三、误区澄清

你提到的“负逆”是误解,损失函数的梯度与理论目标梯度是相反数关系——梯度下降最小化损失,等价于让价值网络逼近真实状态价值,和理论目标完全一致。

四、入门文献推荐

  • Reinforcement Learning: An Introduction(Sutton & Barto,第二版):第13章详细讲解策略梯度方法,包括带基线的REINFORCE和Critic的作用推导,是RL入门的核心教材。
  • David Silver强化学习公开课笔记:第7讲聚焦策略梯度,对基线的作用、Critic的拟合逻辑有直观的推导和解释,适合快速建立理论框架。
  • Deep Reinforcement Learning Hands-On:包含大量可运行的代码实例,能帮你直接对应理论推导与实践中的损失函数设计,理解代码背后的逻辑。

内容的提问来源于stack exchange,提问作者Alex Ramalho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:24:23