如何从梯度目标推导强化学习损失函数?以带基线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))的关联
这个损失的梯度直接对应理论上状态价值拟合目标的梯度无偏估计,并非“负逆”,二者是直接的推导关系:
推导过程(通用维度下)
- 定义Critic的理论目标:让(v_{\text{hat}}(s;w))逼近真实状态价值(V^\pi(s) = \mathbb{E}[G_t | S_t = s]),其中(G_t)是从时刻(t)开始的折扣回报。
- 损失函数的期望形式为:
J(w) = \mathbb{E}\left[ 0.5 \cdot (G_t - v_{\text{hat}}(S_t;w))^2 \right] - 对参数(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] - 当用梯度下降法最小化损失时,更新方向为(-\nabla J(w)),即:
这正是我们需要的更新方向:让价值网络向真实回报(G_t)的方向调整,等价于最小化价值估计与真实回报的误差,完全匹配理论上拟合状态价值的目标。-\nabla J(w) = \mathbb{E}\left[ (G_t - v_{\text{hat}}(S_t;w)) \cdot \nabla v_{\text{hat}}(S_t;w) \right]
三、误区澄清
你提到的“负逆”是误解,损失函数的梯度与理论目标梯度是相反数关系——梯度下降最小化损失,等价于让价值网络逼近真实状态价值,和理论目标完全一致。
四、入门文献推荐
- Reinforcement Learning: An Introduction(Sutton & Barto,第二版):第13章详细讲解策略梯度方法,包括带基线的REINFORCE和Critic的作用推导,是RL入门的核心教材。
- David Silver强化学习公开课笔记:第7讲聚焦策略梯度,对基线的作用、Critic的拟合逻辑有直观的推导和解释,适合快速建立理论框架。
- Deep Reinforcement Learning Hands-On:包含大量可运行的代码实例,能帮你直接对应理论推导与实践中的损失函数设计,理解代码背后的逻辑。
内容的提问来源于stack exchange,提问作者Alex Ramalho
相关产品推荐
相关产品推荐

