深度强化学习-带基线的策略梯度算法原理

引言

本文主要介绍策略梯度算法的一种改进——带基线的策略梯度算法(Reinforce with baseline)。通过引入基线,有效降低了学习过程中的方差,从而提升训练过程的稳定性。

1 基线

基线函数B(s)可以是任意随机函数或确定函数,它可以与状态s有关,但是不能和动作a有关。满足这样的条件后,基线函数自然满足

E\left [ \gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right )\triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]=E\left [ \gamma ^{t}G_{t}\triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]

 证明:

由于B(s)和动作a无关,所以

\sum_{a}^{}B\left ( S_{t} \right )\triangledown \pi _{\theta }(a\mid S_{t})=B\left ( S_{t} \right )\triangledown \sum_{a}^{}\pi _{\theta }(a\mid S_{t})=B\left ( S_{t} \right )\triangledown 1=0

进而

 E\left [ \gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right )\triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]

=\sum_{a}^{}\gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right )\pi _{\theta }(A_{t}\mid S_{t})\triangledown ln\pi _{\theta }(A_{t}\mid S_{t})

=\sum_{a}^{}\gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right )\triangledown \pi _{\theta }(A_{t}\mid S_{t})

=\sum_{a}^{}\gamma ^{t}G_{t}\triangledown \pi _{\theta }(A_{t}\mid S_{t})

=E\left [ \gamma ^{t}G_{t}\triangledown ln\pi _{\theta }(A_{t}\mid S_{t}) \right ]

得证。

2 如何选择基线

选择基线时,应当参照一下两个思想:

1.基线的选择应当有效降低方差。一个基线函数能不能降低方差不容易在理论上判别,往往需要通过实践获知。

2.基线函数应当是可以得到的。例如我们不知道最优价值函数,但是可以得到最优价值函数的估计。价值函数的估计也可以随着迭代过程更新。

一个能有效降低方差的基线是状态价值函数的估计,如Reinfoece_with_baseline算法所示。

3 Reinfoece_with_baseline算法伪代码 深度强化学习-带基线的策略梯度算法原理_第1张图片

 4 最佳基线的确定

接下来,我们来分析什么样的基线函数能最大程度地减小方差。根据方差与期望之间的联系:

D\left ( X \right )=E\left ( X^{2} \right ) - \left [E\left ( X \right ) \right ]^{2}

E\left [ \gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right ) \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]的方差为

E\left [\left [ \gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right ) \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]-\left [ E\left [ \gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right ) \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]\right ]^{2}

上式关于B\left ( S_{t} \right )求偏导,得到

E\left [ -2\gamma ^{t}\left ( G_{t}-B\left ( S_{t} \right ) \right )\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]

 其中求导时存在,

\frac{\partial }{\partial B\left ( S_{t} \right )}E\left [ \gamma ^{t}\left ( G_{t} -B\left ( S_{t} \right )\right ) \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right )\right ]

=\frac{\partial }{\partial B\left ( S_{t} \right )}E\left [ \gamma ^{t}G_{t}\triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]

=0

令上面求得的偏导数为0,并假设B\left ( S_{t} \right )\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2}相互独立

E\left [B\left ( S_{t} \right )\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]=E\left [ B\left ( S_{t} \right )\right ]E\left [\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]

可知

E\left [ B\left ( S_{t} \right ) \right ]=\frac{E\left [ G_{t}\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]}{E\left [ \left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2} \right ]}

这意味着,最佳的基线函数应当接近回报G_{t}以梯度\left [ \triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right ) \right ]^{2}为权重加权平均的结果。不过,由于梯度\triangledown ln\pi _{\theta }\left ( A_{t}\mid S_{t} \right )并不会预先知道,所以实际应用时无法使用这样的基线函数。

你可能感兴趣的:(深度强化学习,算法,深度学习,机器学习,强化学习,人工智能)