深度强化学习系列之(5)前言———策略梯度(Policy Gradient)

对于DQN来说使用一个网络直接逼近了值函数,最后取得了非常不错的效果, 但是对于一些连续性控制或者动作空间特别大的环境来说,很难全部计算所有的值函数来得到最好的策略,那么直接计算策略的方法就别提出来了。

回顾一下前面几篇,所谓的策略,其实就是状态到动作的映射数学表达为 π s a
我们用 τ 表示状态s到最后一个状态的一个序列,表示为:

τ s t , s t + 1 . . . . s T

那么奖励 R ( τ ) 是一个随机变量,没法直接作为目标函数被优化,因此采用了随机变量的期望作为目标函数:
(1) J = r ( τ ) P π ( τ ) d τ

因此强化学习的目标是找到最好的 max π R ( τ ) P π ( τ ) d τ ,从最优策略的角度来说,对于序列 s t , s t + 1 . . . . s T , 最优的策略序列为: u 0 u 1 u 2 . . . u T ,总结为:找到最优策略: π : s u

继续从目标函数说起, 由于要用神经网络来计算策略梯度,需要用一个网络结构去逼近策略,在此处我们假设神经网络的结构参数为 θ ,将目标函数由公式-1变为:

(2) J ( θ ) = E τ π θ ( τ ) [ r ( τ ) ] = τ π θ ( τ ) π θ ( τ ) r ( τ ) d τ

推导原因: f ( x ) 关于某分布 P ( x ) 的期望,对于连续性变量,期望通过积分求得:
(3) E x P [ f ( x ) ] = p ( x ) f ( x ) d x

在数学中梯度的含义就是对函数求取导数,在监督学习中,我们求取损失函数的时候经常求取目标函数的梯度。同理,对于策略的目标函数,我们同样对目标函数 J ( ) 公式(2)求取梯度:

(4) θ J ( θ ) = τ π θ ( τ ) θ π θ ( τ ) r ( τ ) d τ

到这里,我们发现并没有方法直接计算,通过导数求导变换得到:
(5) θ π θ ( τ ) = π θ ( τ ) θ log π θ ( τ )

将公式(5)代入(4)得到策略梯度:

(6) θ J ( θ ) = E τ π θ ( τ ) [ θ log π θ ( τ ) r τ ] = τ π θ ( τ ) π θ ( τ ) θ log π θ ( τ ) r ( τ ) d τ

终于通过变化计算得到了策略梯度的计算方法,但是发现 θ log π θ ( τ ) 并没法直接求取。那么该怎样计算呢?
通过前面我们知道对于序列 τ ,策略 π ( τ ) = π ( s 0 , a 0 , s 1 , a 1 , . . . , s T , a T ) ,我们将 π ( τ ) 通过最原始的方法展开得到

(7) π ( τ ) = p ( s 0 ) t = 0 T π θ ( a t | s t ) p ( s t + 1 | s t , a t )

于是将公式(7)代入公式(6)得到

(8) θ log π θ ( τ ) = θ log ( p ( s 0 ) t = 0 T π θ ( a t | s t ) p ( s t + 1 | s t , a t ) ) = θ ( log p ( s 0 ) + t = 0 T log π θ ( a t | s t ) + t = 0 T log p ( s t + 1 | s t , a t ) ) = t = 0 T θ log π θ ( a t | s t )

这样公式已经和监督学习中的最大似然有相同点了,因此我们对其进行蒙特卡洛处理,最终将公式(6)(7)(8)组合,并对公式(6)中的期望用蒙特卡洛进行替换,得到最终策略梯度:

θ J ( θ ) = E τ π θ ( τ ) [ t = 0 T θ log π θ ( a t | s t ) ( t T r ( s t , a t ) ) ] = 1 N t = 0 N [ t = 0 T θ log π θ ( a t | s t ) ( t = 0 T r ( s t | a t ) ) ]

终于我们得到了策略梯度的计算公式,接下来就是更新了梯度,和监督学习是一个方式
θ ^ = θ + α θ J ( θ )

到这里,策略梯度的理论和公式部分计算讲完了,
其实说了这么多,最终只是服务于策略网络的逼近和参数更新,在后面的博客(DDPG等算法的的使用中都会用到)

参考文献:
1.强化学习原理及入门
2.强化学习核心算法讲解

猜你喜欢

转载自blog.csdn.net/gsww404/article/details/80705950
今日推荐