【强化学习】再读策略梯度

这几天在思考为什么策略梯度的目标函数会是这样的形式:
L=−∑k,tQk,tlog⁡(π(sk,t,ak,t)) \mathcal{L}=-\sum_{k, t} Q_{k, t} \log \left(\pi\left(s_{k, t}, a_{k, t}\right)\right) L=k,tQk,tlog(π(sk,t,ak,t))
主要奇怪于为什么突然冒出来log⁡\loglog。 尽管物理意义上我比较容易理解,反正就是鼓励QQQ值大的动作,打压QQQ值小的动作。但是还是比较较真其推导是如何来的。今天参考了DeepSeek的回答,加上一些自己的心得体会,用博客记录下。

策略梯度算法:原始目标函数、梯度、代理目标函数及其正确性

原始目标函数 (Original Objective Function)

在强化学习中,目标是最大化策略πθ(a∣s)\pi_\theta(a|s)πθ(as)下的期望累积奖励。令τ=(s0,a0,s1,a1,…,sT)\tau = (s_0, a_0, s_1, a_1, \dots, s_T)τ=(s0,a0,s1,a1,,sT)表示一个轨迹(trajectory),其中sts_tst是状态,ata_tat是动作,TTT是轨迹长度(可能无限)。轨迹的累积奖励定义为:
R(τ)=∑t=0Tγtr(st,at), R(\tau) = \sum_{t=0}^{T} \gamma^t r(s_t, a_t), R(τ)=t=0Tγtr(st,at),
其中γ∈[0,1]\gamma \in [0, 1]γ[0,1]是折扣因子,r(st,at)r(s_t, a_t)r(st,at)是即时奖励。

原始目标函数J(θ)J(\theta)J(θ)是策略参数θ\thetaθ下的期望累积奖励:
J(θ)=Eτ∼pθ(τ)[R(τ)]. J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ R(\tau) \right]. J(θ)=Eτpθ(τ)[R(τ)].
这里,pθ(τ)p_\theta(\tau)pθ(τ)是策略πθ\pi_\thetaπθ和环境动态p(st+1∣st,at)p(s_{t+1} | s_t, a_t)p(st+1st,at)共同定义的轨迹分布:
pθ(τ)=p(s0)∏t=0T−1πθ(at∣st)p(st+1∣st,at). p_\theta(\tau) = p(s_0) \prod_{t=0}^{T-1} \pi_\theta(a_t | s_t) p(s_{t+1} | s_t, a_t). pθ(τ)=p(s0)t=0T1πθ(atst)p(st+1st,at).
优化目标是通过调整θ\thetaθ来最大化J(θ)J(\theta)J(θ). 这个目标函数的定义非常直观,但是很难直接对θ\thetaθ求梯度。换言之,不太明确该如何套用到当前神经网络已经非常成熟的反向传播流程中。

梯度 (Gradient)

策略梯度定理(Policy Gradient Theorem)提供了J(θ)J(\theta)J(θ)的梯度表达式。REINFORCE算法直接使用该梯度进行随机梯度上升。梯度的推导基于似然比技巧(Likelihood Ratio Trick):
∇θJ(θ)=∇θEτ∼pθ(τ)[R(τ)]=Eτ∼pθ(τ)[R(τ)∇θlog⁡pθ(τ)]. \nabla_\theta J(\theta) = \nabla_\theta \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ R(\tau) \right] = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ R(\tau) \nabla_\theta \log p_\theta(\tau) \right]. θJ(θ)=θEτpθ(τ)[R(τ)]=Eτpθ(τ)[R(τ)θlogpθ(τ)].
其中,∇θlog⁡pθ(τ)\nabla_\theta \log p_\theta(\tau)θlogpθ(τ)是轨迹的对数似然梯度。由于环境动态p(st+1∣st,at)p(s_{t+1} | s_t, a_t)p(st+1st,at)θ\thetaθ无关,我们有:
∇θlog⁡pθ(τ)=∑t=0T−1∇θlog⁡πθ(at∣st). \nabla_\theta \log p_\theta(\tau) = \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t). θlogpθ(τ)=t=0T1θlogπθ(atst).
代入梯度表达式:
∇θJ(θ)=Eτ∼pθ(τ)[(∑t=0T−1∇θlog⁡πθ(at∣st))R(τ)]. \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \left( \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t) \right) R(\tau) \right]. θJ(θ)=Eτpθ(τ)[(t=0T1θlogπθ(atst))R(τ)].
在实际中,R(τ)R(\tau)R(τ)通常替换为从时间步ttt开始的折扣累积奖励Gt=∑k=tTγk−tr(sk,ak)G_t = \sum_{k=t}^{T} \gamma^{k-t} r(s_k, a_k)Gt=k=tTγktr(sk,ak)(称为回报),以减小方差。这是因为动作ata_tat只影响未来奖励,因此:
∇θJ(θ)=Eτ∼pθ(τ)[∑t=0T−1∇θlog⁡πθ(at∣st)⋅Gt]. \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot G_t \right]. θJ(θ)=Eτpθ(τ)[t=0T1θlogπθ(atst)Gt].
这是REINFORCE算法的核心梯度公式。这里我们先在数学上推导了梯度的准确形式。

等效的代理目标函数 (Equivalent Surrogate Objective Function)

直接优化J(θ)J(\theta)J(θ)困难,因为其涉及期望计算。因此,REINFORCE使用一个代理目标函数J~(θ)\tilde{J}(\theta)J~(θ),其梯度与∇θJ(θ)\nabla_\theta J(\theta)θJ(θ)相同。

代理目标函数定义为:
J~(θ)=Eτ∼pθ(τ)[∑t=0T−1log⁡πθ(at∣st)⋅Gt]. \tilde{J}(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=0}^{T-1} \log \pi_\theta(a_t | s_t) \cdot G_t \right]. J~(θ)=Eτpθ(τ)[t=0T1logπθ(atst)Gt].
注意:

  • log⁡πθ(at∣st)\log \pi_\theta(a_t | s_t)logπθ(atst)是动作的对数概率,而非其梯度。
  • GtG_tGt是从时间ttt开始的折扣累积奖励。
  • J~(θ)\tilde{J}(\theta)J~(θ)J(θ)J(\theta)J(θ)的代理(surrogate),因为优化J~(θ)\tilde{J}(\theta)J~(θ)能间接优化J(θ)J(\theta)J(θ)

代理函数的关键在于其梯度:
∇θJ~(θ)=∇θEτ∼pθ(τ)[∑t=0T−1log⁡πθ(at∣st)⋅Gt]=Eτ∼pθ(τ)[∑t=0T−1∇θlog⁡πθ(at∣st)⋅Gt]. \nabla_\theta \tilde{J}(\theta) = \nabla_\theta \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=0}^{T-1} \log \pi_\theta(a_t | s_t) \cdot G_t \right] = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot G_t \right]. θJ~(θ)=θEτpθ(τ)[t=0T1logπθ(atst)Gt]=Eτpθ(τ)[t=0T1θlogπθ(atst)Gt].
这与∇θJ(θ)\nabla_\theta J(\theta)θJ(θ)完全一致:
∇θJ~(θ)=∇θJ(θ). \nabla_\theta \tilde{J}(\theta) = \nabla_\theta J(\theta). θJ~(θ)=θJ(θ).
因此,J~(θ)\tilde{J}(\theta)J~(θ)J(θ)J(\theta)J(θ)的等效代理目标函数。

注意到 J~(θ)\tilde{J}(\theta)J~(θ) 可以很容易通过已有样本计算得到, 相较于原始目标J(θ)J(\theta)J(θ), 无疑更适配当前的AI训练架构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值