当前位置: 代码迷 >> 综合 >> 强化学习6——policy gradient的优化( Use temporal causality,Baseline and Critic)
  详细解决方案

强化学习6——policy gradient的优化( Use temporal causality,Baseline and Critic)

热度:50   发布时间:2023-12-27 10:53:06.0

policy gradient的优化

听周博雷教授的课程有感

为什么优化

因为基于MC policy gradient的优化,方差较大

方法1: Use temporal causality

使用时序上的因果关系Use temporal causality(不要纠结公式,体会思想,这些等式都是可以严格推导的):取一条轨迹t=0,…,t=T-1。
?
  (原始的梯度):?θJ(θ)=?θEτ?πθ[R]=Eτ[(∑t=0T?1rt)(∑t=0T?1?θlog?πθ(at∣st))]\nabla_{\theta} J(\theta)=\nabla_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}}[R]=\mathbb{E}_{\tau}\left[\left(\sum_{t=0}^{T-1} r_{t}\right)\left(\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right)\right]?θ?J(θ)=?θ?Eτ?πθ??[R]=Eτ?[(t=0T?1?rt?)(t=0T?1??θ?logπθ?(at?st?))]
?
  (一个点的回报的梯度,推导略):?θEτ?πθ[rt′]=Eτ[rt′∑t=0t′?θlog?πθ(at∣st)]\nabla_{\theta} \mathbb{E}_{\tau\sim \pi_{\theta}}\left[r_{t^{\prime}}\right]=\mathbb{E}_{\tau}\left[r_{t^{\prime}} \sum_{t=0}^{t^{\prime}} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?Eτ?πθ??[rt?]=Eτ?[rt?t=0t??θ?logπθ?(at?st?)]
?
  (原始的梯度就变成):(根据期望的可加性:E(X+Y)=EX+EY)得?θJ(θ)=?θEτ?πθ[R]=∑t=0T?1?θEτ?πθ[rt′]=∑t=0T?1Eτ[rt′∑t=0t′?θlog?πθ(at∣st)]=Eτ[∑t′=0T?1rt′∑t=0t′?θlog?πθ(at∣st)]=Eτ[∑t=0T?1?θlog?πθ(at∣st)∑t′=tT?1rt′]=Eτ[∑t=0T?1Gt??θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=\nabla_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}}[R]=\sum_{t=0}^{T-1}\nabla_{\theta} \mathbb{E}_{\tau\sim \pi_{\theta}}\left[r_{t^{\prime}}\right]=\sum_{t=0}^{T-1}\mathbb{E}_{\tau}\left[r_{t^{\prime}} \sum_{t=0}^{t^{\prime}} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]=\mathbb{E}_{\tau}\left[\sum_{t^{\prime}=0}^{T-1} r_{t^{\prime}} \sum_{t=0}^{t^{\prime}} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \sum_{t^{\prime}=t}^{T-1} r_{t^{\prime}}\right]=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?J(θ)=?θ?Eτ?πθ??[R]=t=0T?1??θ?Eτ?πθ??[rt?]=t=0T?1?Eτ?[rt?t=0t??θ?logπθ?(at?st?)]=Eτ?[t=0T?1?rt?t=0t??θ?logπθ?(at?st?)]=Eτ?[t=0T?1??θ?logπθ?(at?st?)t=tT?1?rt?]=Eτ?[t=0T?1?Gt???θ?logπθ?(at?st?)]
?
  (最后的梯度公式)?θJ(θ)=Eτ?πθ[∑t=0T?1Gt??θlog?πθ(at∣st)]≈1m∑i=1m∑t=0T?1Gt(i)??θlog?πθ(ati∣sti)\nabla_{\theta} J(\theta)=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]\approx \frac{1}{m} \sum_{i=1}^{m} \sum_{t=0}^{T-1} G_{t}^{(i)} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t}^{i} \mid s_{t}^{i}\right)?θ?J(θ)=Eτ?πθ??[t=0T?1?Gt???θ?logπθ?(at?st?)]m1?i=1m?t=0T?1?Gt(i)???θ?logπθ?(ati?sti?)(这里的约等于是因为采用了MC蒙特卡洛采样的方法,采样了m条轨迹,进行平均)

  从上面的式子可以看出来,G(t)G_(t)G(?t)(从t到T-1的奖励回报)只与t时刻的策略概率有关,而与t之前的策略概率无关。相反原始的梯度中t后面的策略概率也会影响t前面的奖励,这就导致了训练的不稳定性,导致方差较大。

基于此的一个MC策略梯度算法是REINFORCE:参考下面这个paper
Classic paper: Williams (1992). Simple statistical gradient-following
algorithms for connectionist reinforcement learning: introduces
REINFORCE algorithm

方法2:Using a Baseline

这里用上面方法1处理出来的梯度?θJ(θ)=Eτ?πθ[∑t=0T?1Gt??θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?J(θ)=Eτ?πθ??[t=0T?1?Gt???θ?logπθ?(at?st?)]进行Baseline优化:
加上一个baseline:?θJ(θ)=Eτ?πθ[∑t=0T?1(Gt?b(st))??θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{T-1}\left(G_{t}-b\left(s_{t}\right)\right) \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?J(θ)=Eτ?πθ??[t=0T?1?(Gt??b(st?))??θ?logπθ?(at?st?)]
这里这个baseline可以选择b(st)=E[rt+rt+1+…+rT?1]b\left(s_{t}\right)=\mathbb{E}\left[r_{t}+r_{t+1}+\ldots+r_{T-1}\right]b(st?)=E[rt?+rt+1?++rT?1?],也可以选择带有参数的bw(st)b_w(s_t)bw?(st?),只是这样我们就需要优化θ和w两项参数\theta和w两项参数θw
基于此的一个MC策略梯度算法Vanilla Policy Gradient Algorithm with Baseline:
Sutton, McAllester, Singh, Mansour (1999). Policy gradient methods
for reinforcement learning with function approximation

方法3:Using a Critic

这里用上面方法1处理出来的梯度?θJ(θ)=Eτ?πθ[∑t=0T?1Gt??θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?J(θ)=Eτ?πθ??[t=0T?1?Gt???θ?logπθ?(at?st?)]进行Critic优化:由于采样出来的GtG_tGt?实际上是无偏且有噪音的Qπθ(st,at)Q^{\pi_{\theta}}\left(s_{t}, a_{t}\right)Qπθ?(st?,at?),所以这里如果想要减小方差,那么就可以直接用Qπθ(st,at)Q^{\pi_{\theta}}\left(s_{t}, a_{t}\right)Qπθ?(st?,at?)来代替GtG_tGt?即可。

那么梯度就变为:?θJ(θ)=Eπθ[∑t=0T?1Qw(st,at)??θlog?πθ(at∣st)]\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\sum_{t=0}^{T-1} Q_{w}\left(s_{t}, a_{t}\right) \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]?θ?J(θ)=Eπθ??[t=0T?1?Qw?(st?,at?)??θ?logπθ?(at?st?)],只不过这种情况,我们需要优化θ\thetaθwww两项参数。

  相关解决方案