(可选) 策略梯度定理
在这一可选部分,我们将研究如何对我们将用于近似策略梯度的目标函数进行微分。
让我们首先回顾一下我们的不同公式
- 目标函数
- 轨迹的概率(给定动作来自πθ):
所以我们有∇θJ(θ)=∇θ∑τP(τ;θ)R(τ)
我们可以将和的梯度改写为梯度的和=∑τ∇θ(P(τ;θ)R(τ))=∑τ∇θP(τ;θ)R(τ)因为R(τ)不依赖于θ
然后我们将和中的每一项乘以P(τ;θ)P(τ;θ)(因为等于1,所以可以这样做)=∑τP(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)
我们可以进一步简化,因为P(τ;θ)P(τ;θ)∇θP(τ;θ)=P(τ;θ)P(τ;θ)∇θP(τ;θ).
因此我们可以将总和改写为P(τ;θ)P(τ;θ)∇θP(τ;θ)=∑τP(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)
然后我们可以使用导数对数技巧(也称为似然比技巧或REINFORCE技巧),这是一个简单的微积分规则,意味着∇xlogf(x)=f(x)∇xf(x)
所以鉴于我们有P(τ;θ)∇θP(τ;θ)我们将其转换为∇θlogP(τ∣θ)
这就是我们的似然策略梯度∇θJ(θ)=∑τP(τ;θ)∇θlogP(τ;θ)R(τ)
有了这个新公式,我们可以使用轨迹样本来估计梯度(如果您喜欢,我们可以用基于样本的估计来近似似然比策略梯度)。∇θJ(θ)=m1∑i=1m∇θlogP(τ(i);θ)R(τ(i))其中每个τ(i)都是一个采样轨迹。
但是我们还有一些数学工作要做:我们需要简化∇θlogP(τ∣θ)
我们知道∇θlogP(τ(i);θ)=∇θlog[μ(s0)∏t=0HP(st+1(i)∣st(i),at(i))πθ(at(i)∣st(i))]
其中:μ(s0)是初始状态分布,并且P(st+1(i)∣st(i),at(i))是 MDP 的状态转移动态。
我们知道积的对数等于对数的和∇θlogP(τ(i);θ)=∇θ[logμ(s0)+t=0∑HlogP(st+1(i)∣st(i)at(i))+t=0∑Hlogπθ(at(i)∣st(i))]
我们还知道和的梯度等于梯度的和∇θlogP(τ(i);θ)=∇θlogμ(s0)+∇θt=0∑HlogP(st+1(i)∣st(i)at(i))+∇θt=0∑Hlogπθ(at(i)∣st(i))
由于MDP的初始状态分布和状态转移动力学不依赖于θ,所以这两项的导数都是0。因此我们可以删除它们。
因为∇θ∑t=0HlogP(st+1(i)∣st(i)at(i))=0和∇θμ(s0)=0 ∇θlogP(τ(i);θ)=∇θ∑t=0Hlogπθ(at(i)∣st(i))
我们可以将和的梯度改写为梯度的和。∇θlogP(τ(i);θ)=∑t=0H∇θlogπθ(at(i)∣st(i))
因此,估计策略梯度的最终公式为:∇θJ(θ)=g^=m1∑i=1m∑t=0H∇θlogπθ(at(i)∣st(i))R(τ(i))
< > 在 GitHub 上更新