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两项参数。