复习回顾
策略梯度:
策略梯度是状态价值函数关于θ的梯度,θ是策略网络的参数,策略梯度可以写成期望的形式,期望是关于A求的,A是随机变量,其概率密度是策略网络π,期望里面是关于A的函数,记作g(A),相当于一个随机梯度,由于求期望很困难,实践中总是用随机梯度代替期望,也就是蒙特卡洛近似。
g(a)称为随即策略梯度,其中a是策略网络随机抽样得到的,实践中都是用g(a)去更新策略网络,做梯度上升更新参数θ。
随机策略做连续控制
本次我们将构建一个策略网络做连续控制,然后用随即策略梯度来更新策略网络。
策略网络
跟之前学习的策略网络区别非常大,先说明自由度为1的例子(动作为一个实数的例子):
代表均值,
代表标准差,两者都是关于状态s的函数,我们用正态分布的概率密度函数作为策略函数。
实际问题中,自由度通常大于1,比如机器手臂的例子。把自由度记作d,那么动作a就是d维的向量,和
也是代表均值和标准差,两者的输入是s,输出都是d维向量。
和
表示
和
输出的第i个元素,用特殊的正态函数作为策略函数。假设动作a都是独立的,那么概率密度就可以写作连乘的形式:
需要解决的问题是我们不知道 和
具体长什么样,解决办法其实很简单,就是用神经网络来做函数近似。用神经网络
来近似
,同理也可以用同样的方法处理
,但是不太好,具体的方法如下图所示::
构建网络,两个网络共享输入和卷积层,将输入状态s映射到均值向量和方差对数ρ:
可以用这个神经网络来做连续控制了。
算法原理
1.观测到状态s。
2.输入状态s,并输入,得到 均值向量和方差对数ρ,它们都是d维的向量。
3.根据ρ计算。
4.已知策略函数是正态分布,已经得到正态函数的参数,那么我们就可以做随机抽样,得到动作a,让agent做出相应的动作。
训练策略网络
1.构造一个辅助神经网络,目的是为了计算策略梯度。
2.然后是用策略梯度方法训练策略网络,这里由两种方法。