本专栏按照 https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html 顺序进行总结 。
文章目录
原理解析
REINFORCE 和 一般的actor-critic方法 都是 on-policy:训练样本
根据 目标策略
收集—— 即是我们试图优化的策略。然而,离线策略(Off-Policy
)方法会带来一些额外的好处:
- off-policy 方法不需要完整的轨迹,并且可以重用任何过去的片段 (“experience replay”) 以获得更好的采样效率。
- 样本收集遵循与
目标策略
不同的行为策略
,从而带来更好的探索。
下面讲一下离线策略梯度是如何计算的。收集样本的行为策略是一个已知的策略(就像超参数一样预定义)记做: β ( a ∣ s ) \beta(a|s) β(a∣s)。目标函数 对 行为策略所定义的在状态分布上的reward 进行求和:
J ( θ ) = ∑ s ∈ S d β ( s ) ∑ a ∈ A Q π ( s , a ) π θ ( a ∣ s ) = E s ∼ d β [ ∑ a ∈ A Q π ( s , a ) π θ ( a ∣ s ) ] J(\theta) = \sum_{s \in \mathcal{S}} d^\beta(s) \sum_{a \in \mathcal{A}} Q^\pi(s, a) \pi_\theta(a \vert s) = \mathbb{E}_{s \sim d^\beta} \big[ \sum_{a \in \mathcal{A}} Q^\pi(s, a) \pi_\theta(a \vert s) \big] J(θ)=∑s∈Sdβ(s)∑a∈AQπ(s,a)πθ(a∣s)=Es∼dβ[∑a∈AQπ(s,a)πθ(a∣s)]
其中, d β ( s ) d^\beta(s) dβ(s) 是行为策略 β \beta β 的平稳分布,回顾一下: d β ( s ) = lim t → ∞ P ( S t = s ∣ S 0 , β ) d^\beta(s) = \lim_{t \to \infty} P(S_t = s \vert S_0, \beta) dβ(s)=limt→∞P(St=s∣S0,β); Q π Q^\pi Qπ 是关于目标策略 π \pi π(而不是行为策略) 估计的动作值函数。
假设训练观察值由 a ∼ β ( a ∣ s ) a \sim \beta(a \vert s) a∼β(a∣s) 采样,我们可以把梯度重写为:
∇ θ J ( θ ) = ∇ θ E s ∼ d β [ ∑ a ∈ A Q π ( s , a ) π θ ( a ∣ s ) ] = E s ∼ d β [ ∑ a ∈ A ( Q π ( s , a ) ∇ θ π θ ( a ∣ s ) + π θ ( a ∣ s ) ∇ θ Q π ( s , a ) ) ] ; 导数乘积法则. ≈ ( i ) E s ∼ d β [ ∑ a ∈ A Q π ( s , a ) ∇ θ π θ ( a ∣ s ) ] ; 忽略红色部分: π θ ( a ∣ s ) ∇ θ Q π ( s , a ) . = E s ∼ d β [ ∑ a ∈ A β ( a ∣ s ) π θ ( a ∣ s ) β ( a ∣ s ) Q π ( s , a ) ∇ θ π θ ( a ∣ s ) π θ ( a ∣ s ) ] = E β [ π θ ( a ∣ s ) β ( a ∣ s ) Q π ( s , a ) ∇ θ ln π θ ( a ∣ s ) ] ; 蓝色部分是重要性权重. \begin{aligned} \nabla_\theta J(\theta) &= \nabla_\theta \mathbb{E}_{s \sim d^\beta} \Big[ \sum_{a \in \mathcal{A}} Q^\pi(s, a) \pi_\theta(a \vert s) \Big] & \\ &= \mathbb{E}_{s \sim d^\beta} \Big[ \sum_{a \in \mathcal{A}} \big( Q^\pi(s, a) \nabla_\theta \pi_\theta(a \vert s) + \color{red}{\pi_\theta(a \vert s) \nabla_\theta Q^\pi(s, a)} \big) \Big] & \scriptstyle{\text{; 导数乘积法则.}}\\ &\stackrel{(i)}{\approx} \mathbb{E}_{s \sim d^\beta} \Big[ \sum_{a \in \mathcal{A}} Q^\pi(s, a) \nabla_\theta \pi_\theta(a \vert s) \Big] & \scriptstyle{\text{; 忽略红色部分: } \color{red}{\pi_\theta(a \vert s) \nabla_\theta Q^\pi(s, a)}}. \\ &= \mathbb{E}_{s \sim d^\beta} \Big[ \sum_{a \in \mathcal{A}} \beta(a \vert s) \frac{\pi_\theta(a \vert s)}{\beta(a \vert s)} Q^\pi(s, a) \frac{\nabla_\theta \pi_\theta(a \vert s)}{\pi_\theta(a \vert s)} \Big] & \\ &= \mathbb{E}_\beta \Big[\frac{\color{blue}{\pi_\theta(a \vert s)}}{\color{blue}{\beta(a \vert s)}} Q^\pi(s, a) \nabla_\theta \ln \pi_\theta(a \vert s) \Big] & \scriptstyle{\text{; 蓝色部分是重要性权重.}} \end{aligned} ∇θJ(θ)=∇θEs∼dβ[a∈A∑Qπ(s,a)πθ(a∣s)]=Es∼dβ[a∈A∑(Qπ(s,a)∇θπθ(a∣s)+πθ(a∣s)∇θQπ(s,a))]≈(i)Es∼dβ[a∈A∑Qπ(s,a)∇θπθ(a∣s)]=Es∼dβ[a∈A∑β(a∣s)β(a∣s)πθ(a∣s)Qπ(s,a)πθ(a∣s)∇θπθ(a∣s)]=Eβ[β(a∣s)πθ(a∣s)Qπ(s,a)∇θlnπθ(a∣s)]; 导数乘积法则.; 忽略红色部分: πθ(a∣s)∇θQπ(s,a).; 蓝色部分是重要性权重.
因为 Q π Q^{\pi} Qπ 是目标策略的函数,因此也是策略参数 θ \theta θ 的函数,所以根据乘积法则求出导数: ∇ θ Q π ( s , a ) \nabla_\theta Q^\pi(s, a) ∇θQπ(s,a);事实上,计算它非常难。幸运的是,如果我们使用一个不考虑 Q Q Q 的梯度的近似梯度,我们仍然保证了策略的改进,最终达到真正的局部最小值。这可以在 Off-Policy Actor-Critic (Degris, White & Sutton, 2012) 得到验证。
总的来说,当使用 离线策略 应用策略梯度的时候,我们可以简单使用一个加权和,即目标策略和行为策略的比值: π θ ( a ∣ s ) β ( a ∣ s ) \frac{\pi_\theta(a \vert s)}{\beta(a \vert s)} β(a∣s)πθ(a∣s)