深度强化学习课程文档

(可选) 策略梯度定理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

(可选) 策略梯度定理

在这一可选部分,我们将研究如何对我们将用于近似策略梯度的目标函数进行微分

让我们首先回顾一下我们的不同公式

  1. 目标函数
Return
  1. 轨迹的概率(给定动作来自πθ\pi_\theta):
Probability

所以我们有θJ(θ)=θτP(τ;θ)R(τ)\nabla_\theta J(\theta) = \nabla_\theta \sum_{\tau}P(\tau;\theta)R(\tau)

我们可以将和的梯度改写为梯度的和=τθ(P(τ;θ)R(τ))=τθP(τ;θ)R(τ) = \sum_{\tau} \nabla_\theta (P(\tau;\theta)R(\tau)) = \sum_{\tau} \nabla_\theta P(\tau;\theta)R(\tau) 因为R(τ)R(\tau)不依赖于θ\theta

然后我们将和中的每一项乘以P(τ;θ)P(τ;θ)\frac{P(\tau;\theta)}{P(\tau;\theta)}(因为等于1,所以可以这样做)=τP(τ;θ)P(τ;θ)θP(τ;θ)R(τ) = \sum_{\tau} \frac{P(\tau;\theta)}{P(\tau;\theta)}\nabla_\theta P(\tau;\theta)R(\tau)

我们可以进一步简化,因为P(τ;θ)P(τ;θ)θP(τ;θ)=P(τ;θ)θP(τ;θ)P(τ;θ) \frac{P(\tau;\theta)}{P(\tau;\theta)}\nabla_\theta P(\tau;\theta) = P(\tau;\theta)\frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)} .

因此我们可以将总和改写为P(τ;θ)θP(τ;θ)P(τ;θ)=τP(τ;θ)θP(τ;θ)P(τ;θ)R(τ) P(\tau;\theta)\frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)}= \sum_{\tau} P(\tau;\theta) \frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)}R(\tau)

然后我们可以使用导数对数技巧(也称为似然比技巧REINFORCE技巧),这是一个简单的微积分规则,意味着xlogf(x)=xf(x)f(x) \nabla_x log f(x) = \frac{\nabla_x f(x)}{f(x)}

所以鉴于我们有θP(τ;θ)P(τ;θ)\frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)} 我们将其转换为θlogP(τθ)\nabla_\theta log P(\tau|\theta)

这就是我们的似然策略梯度θJ(θ)=τP(τ;θ)θlogP(τ;θ)R(τ) \nabla_\theta J(\theta) = \sum_{\tau} P(\tau;\theta) \nabla_\theta log P(\tau;\theta) R(\tau)

有了这个新公式,我们可以使用轨迹样本来估计梯度(如果您喜欢,我们可以用基于样本的估计来近似似然比策略梯度)。θJ(θ)=1mi=1mθlogP(τ(i);θ)R(τ(i))\nabla_\theta J(\theta) = \frac{1}{m} \sum^{m}_{i=1} \nabla_\theta log P(\tau^{(i)};\theta)R(\tau^{(i)})其中每个τ(i)\tau^{(i)}都是一个采样轨迹。

但是我们还有一些数学工作要做:我们需要简化θlogP(τθ)\nabla_\theta log P(\tau|\theta)

我们知道θlogP(τ(i);θ)=θlog[μ(s0)t=0HP(st+1(i)st(i),at(i))πθ(at(i)st(i))]\nabla_\theta log P(\tau^{(i)};\theta)= \nabla_\theta log[ \mu(s_0) \prod_{t=0}^{H} P(s_{t+1}^{(i)}|s_{t}^{(i)}, a_{t}^{(i)}) \pi_\theta(a_{t}^{(i)}|s_{t}^{(i)})]

其中:μ(s0)\mu(s_0)是初始状态分布,并且P(st+1(i)st(i),at(i)) P(s_{t+1}^{(i)}|s_{t}^{(i)}, a_{t}^{(i)}) 是 MDP 的状态转移动态。

我们知道积的对数等于对数的和θlogP(τ(i);θ)=θ[logμ(s0)+t=0HlogP(st+1(i)st(i)at(i))+t=0Hlogπθ(at(i)st(i))]\nabla_\theta log P(\tau^{(i)};\theta)= \nabla_\theta \left[log \mu(s_0) + \sum\limits_{t=0}^{H}log P(s_{t+1}^{(i)}|s_{t}^{(i)} a_{t}^{(i)}) + \sum\limits_{t=0}^{H}log \pi_\theta(a_{t}^{(i)}|s_{t}^{(i)})\right]

我们还知道和的梯度等于梯度的和θlogP(τ(i);θ)=θlogμ(s0)+θt=0HlogP(st+1(i)st(i)at(i))+θt=0Hlogπθ(at(i)st(i)) \nabla_\theta log P(\tau^{(i)};\theta)=\nabla_\theta log\mu(s_0) + \nabla_\theta \sum\limits_{t=0}^{H} log P(s_{t+1}^{(i)}|s_{t}^{(i)} a_{t}^{(i)}) + \nabla_\theta \sum\limits_{t=0}^{H} log \pi_\theta(a_{t}^{(i)}|s_{t}^{(i)})

由于MDP的初始状态分布和状态转移动力学不依赖于θ\theta,所以这两项的导数都是0。因此我们可以删除它们。

因为θt=0HlogP(st+1(i)st(i)at(i))=0\nabla_\theta \sum_{t=0}^{H} log P(s_{t+1}^{(i)}|s_{t}^{(i)} a_{t}^{(i)}) = 0 θμ(s0)=0 \nabla_\theta \mu(s_0) = 0 θlogP(τ(i);θ)=θt=0Hlogπθ(at(i)st(i))\nabla_\theta log P(\tau^{(i)};\theta) = \nabla_\theta \sum_{t=0}^{H} log \pi_\theta(a_{t}^{(i)}|s_{t}^{(i)})

我们可以将和的梯度改写为梯度的和。θlogP(τ(i);θ)=t=0Hθlogπθ(at(i)st(i)) \nabla_\theta log P(\tau^{(i)};\theta)= \sum_{t=0}^{H} \nabla_\theta log \pi_\theta(a_{t}^{(i)}|s_{t}^{(i)})

因此,估计策略梯度的最终公式为:θJ(θ)=g^=1mi=1mt=0Hθlogπθ(at(i)st(i))R(τ(i)) \nabla_{\theta} J(\theta) = \hat{g} = \frac{1}{m} \sum^{m}_{i=1} \sum^{H}_{t=0} \nabla_\theta \log \pi_\theta(a^{(i)}_{t} | s_{t}^{(i)})R(\tau^{(i)}) θlogπθ(at(i)st(i))R(τ(i))

< > 在 GitHub 上更新