强化学习——基于策略梯度的强化学习算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41679411/article/details/82414400

在前面的章节里,我们已经学习了基于值函数的强化学习算法,他的核心思想是利用当前的策略 π 与环境进行交互,得到数据之后,利用得到的信息来更新值函数,得到一个新的值函数之后,我们可以利用这个值函数产生一个新的策略 π ,这个新的策略 π 比原来的策略有着更大的期望回报,以此迭代,最终我们将得到一个期望回报很高的策略。从这里可以看出,基于值函数方法得强化学习算法的核心是对值函数有一个好的评估,下面将介绍的基于策略梯度得强化学习算法则是从另外一个角度考虑一个MDP的,他的想法会更加自然一些。
在开始介绍直接策略搜索的强化学习算法之前,我们有必要了解一下这种方法相比于我们之前介绍的基于值函数的方法的优缺点。
1. 直接策略搜索是对策略进行参数化表示,与值函数相比,策略化参数的方法更简单,更容易收敛。
2. 值函数的放法无法解决状态空间过大或者不连续的情形
3. 直接策略的方法可以采取随机策略,随机策略可以将探索直接集成到算法当中

当然值函数的方法也有一些优点:
1. 策略搜索的方法更容易收敛局部极值点
2. 在评估单个策略时,评估的并不好,方差容易过大


上图是一个完整的MDP过程对于一个完整的采样轨迹 τ
我们有

(3979) p θ ( τ ) = p ( s 1 ) t = 1 T p θ ( a t | s t ) p ( s t + 1 | s t , a t )

这个式子中用到了马氏性,认为一个状态只与与之相邻的前一个状态有关。
其中 θ 是策略的参数,一个策略完全由其参数决定。在实际应用中,这种关系是由神经网路刻画的。
在定义了一条采样轨迹的概率之后,我们来定义期望回报:
(3980) R ¯ θ = τ R ( τ ) p θ ( τ ) = E τ p θ ( τ ) [ R ( τ ) ]

其中 R t = t = 1 T r t
过程如下图所示,


得到期望回报关于策略的表达式之后,我们的目标变得非常明确了,我们只需要优化这个函数,使之最大化即可。我们可以使用最常用的梯度下降的方法。
注意到:

(3981) R ¯ θ = τ R ( τ ) p θ ( τ ) (3982) = τ R ( τ ) p θ ( τ ) p θ ( τ ) p θ ( τ ) (3983) = E τ p θ ( τ ) [ R ( τ ) l o g p θ ( τ ) ] (3984) = 1 / N n = 1 N R ( τ n ) l o g p θ ( τ n ) (3985) = 1 N n = 1 N t = 1 T n R ( τ n ) l o g p θ ( a t n | s t n )

自此需要对上式做一些解释,上式做变换的目的是为了凑出一个数学期望的形式,只有有了数学期望的形式才能借助采样求均值对梯度进行估计。
接下的操作也就很简单了,我们穷举 τ ,利用得到的样本来做估计。
具体来说就是,我们利用当前的 θ 决定的策略 π 去与环境交互,得到的数据来帮助我们估计梯度,进而进行梯度下降。对统计比较了解的读者可能已经可以感受到了,这里用到了重要的统计思想:Bootstrap。
直接进行上述过程会发现得到的估计的方差会比较大,那有没有什么好的方法能降低我们估计的方差呢?我们观察这个式子,对原式的括号里面减一个常数求梯度是完全不改变梯度大小的。同时,这种方法能影响我们的方差,因此我们对上式求导,找到一个最优的常数b用来降低我们的方差。

在基于值函数的方法里,我们讲过on-policy和off-policy的方法,在策略搜索的算法里同样会遇到这个问题,对于on-policy的策略,假设我们拿一个策略 π 去与环境交互得到样本,那么一旦我们更新了 θ ,之前与环境交互收集到的数据就作废了,这样很浪费资源,我们于是希望采用off-policy的策略,同时利用重要性采样来提升我们的估计。注意到重要性采样需要两次采样的分布差距比较小,因此我们希望对每次的更新做一些限制,不希望两次更新差距比较大,在这种思想下于是就有了TRPO系的方法。我们将在信赖域系方法里详细介绍这类方法。

猜你喜欢

转载自blog.csdn.net/weixin_41679411/article/details/82414400
今日推荐