基础知识

1.策略网络

策略网络通过当前的状态得到动作的概率分布
2.动作价值函数

这里的$U_t$是$t$时刻之后奖励累积的估计
$Q_{\pi}$的作用是消除了$s_{t+1}, a_{t+1}$以及以后的变量,通过数学期望来代替他们
3.状态价值函数
在动作价值函数的基础上,我们再对动作通过策略网络$\pi(\cdot|s_t,\theta)$进行随机抽样

4.目标函数
最后,我们再对状态求数学期望,让结果只依赖于状态价值函数中提到的策略网络$\pi(\cdot|s_t,\theta)$

我们的目标是最大化$\mathbb{J}(\theta)$,在此基础上做梯度上升即可
5.策略梯度定理
我们需要求解$\frac{\partial \mathbb{J}(\theta)}{\partial \theta}$
这部分证明比较复杂,我们直接得到结果:

我们这里用蒙特卡洛近似的方法进行求解(其他方法都不可能直接求解出来)
将当前观测到的环境状态s作为环境观测值,然后用策略网络$\pi(\cdot|s_t,\theta)$抽样得到一个动作a
用$g(s,a,\theta)$代替$Q_{\pi}(S,A)\cdot\nabla_{\theta}ln\pi(A|S;\theta)$
最后得到

显然根据数学期望的性质,我们知道$g(s,a,\theta)$是对$\nabla_\theta \mathbb{J}(\theta)$的无偏估计

方法

REINFORCE

REINFORCE是同策略方法,行为策略和目标策略一致
将游戏从头玩到结束,得到一个完整轨迹,从中可以得到每一时刻的马尔科夫链,并且基于$r_{1\ldots n}$求出$u_{1\ldots n}$

注意之前的公式中不包含$\gamma^{t-1}$,这在严格的推导中是需要加上的

actor-critic

这里我们用一个价值网络$q(s,a,\omega)$来近似$Q_{\pi}(s,a)$

1.策略网络更新

其中$\hat{g}(s,a;\theta)$就是借助价值网络来生成的
因为$g(s,a,\theta)=q(s,a;\omega)\cdot\nabla_{\theta}ln\pi(a|s;\theta)$

2.价值网络更新
让$q(s_t,a_t;\omega)$逼近$r_t+\gamma \cdot q(s_{t+1},a_{t+1};\omega)$即可

3.训练步骤如下:

根据$s_t$通过$\pi$做决策得到a_t
观察到奖励$r_t$和$s_{t+1}$后继续做模拟决策(不执行),得到$\hat{a}_{t+1}$
扔到相同价值网络$q(s,a;\omega)$打分,求td误差
更新价值和策略网络,下一次决策用新的网络完成

并且用目标网络改进
alt text

改进

当然以上的方法效果还是不够好的,因为我们通过抽样得到的$g(s,a;\theta)$虽然是对策略梯度的无偏估计,但是方差比较大。因此,我们需要通过添加baseline的方式减小方差。

增加的基线$b$如果和动作A没有关系,我们可以证明右式的数学期望是成立的
这里我们就令$b=V_{\pi}(s)$

其他策略梯度的证明方法

上面讲的是王树森书上的理解思路,而我在网上查到的大部分资料证明思路是和李宏毅ppt上类似的
这里直接搬运别人的博客文章
策略梯度: https://www.cnblogs.com/xingzheai/p/15826847.html
PPO: https://www.cnblogs.com/xingzheai/p/15931681.html