0


基于Pytorch的强化学习(DQN)之 Baseline 基本概念

1. 引言

我们前面讲过策略梯度下降算法 ,现在来介绍一种加快收敛速度的方法:设置Baseline。

2. 数学推导

我们之前推导过状态价值函数梯度的公式 \frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}Q_{\pi}(s,a)],以下证明源于这个公式。

2.1 引理

我们先证明一个引理:E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b]=0 其中 b 是不依赖于 a 的量

Proof:E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b]=\sum_a{\pi}(a|s_t,\theta) \frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b=b\cdot \sum_a\frac{\partial \,\sum_a{\pi}(a|s;\theta)}{\partial \,\theta}=b\cdot \frac{\partial \,1}{\partial \,\theta}=0

这个 引理告诉我们:只要我们找到一个不依赖于 a 的量 b ,就有 E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b]=0

2.2 改进的策略梯度

\frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}Q_{\pi}(s,a)]E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b]=0 我们得到 \frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}Q_{\pi}(s,a)]-E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}\cdot b]=0=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}(Q_{\pi}(s,a)- b)]=0

这样我们便得到了策略梯度的新的表达式 \frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}(Q_{\pi}(s,a)- b)]

这里的 b 不依赖于 a ,我们称之为baseline,过这种方法我们可以降低方差同时不改变均值来使算法收敛更快

2.3 蒙特卡罗模拟

类似于之前训练策略网络,由于表达式 \frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}(Q_{\pi}(s,a)- b)]含有期望,不好计算,于是我们使用蒙特卡罗近似这个期望,引入g(a)=\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}(Q_{\pi}(s,a)- b)

由于a\sim \pi(a|s)g(a) 本质上是一个随机梯度,且是 \frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta} 的一个unbiased estimation,所以我们利用随机梯度上升更新参数\theta\leftarrow\theta+\beta g(a),这样状态价值函数就会变大,也就是策略变得更优。

3. baseline的选择

我们知道只要 b 接近 Q_{\pi}(s,a)\frac{\partial \,V_{\pi}(s_t,\theta)}{\partial \,\theta}=E_A[\frac{\partial \,\ln{\pi}(a|s;\theta)}{\partial \,\theta}(Q_{\pi}(s,a)- b)]的方差就会变小,收敛速度就会加快,因此我们要选取合适的 b 来加快收敛速度,有两种常见的baseline的选取

第一种是 b=0 也就是原始的策略梯度,之前已经讲过,就不再赘述。另一种是 b=V_{\pi}(s) ,由于 s 先于 a 出现,于是b=V_{\pi}(s)不依赖于 a ,又由我们之前推导过的公式 V_{\pi}(s)=E_A[Q_{\pi}(s,a)]

我们知道 b=V_{\pi}(s) 是接近 Q_{\pi}(s,a) 的,这样便达到了减小方差的目的。

标签: 深度学习

本文转载自: https://blog.csdn.net/ZDDWLIG/article/details/123960675
版权归原作者 ZDDWLIG 所有, 如有侵权,请联系我们删除。

“基于Pytorch的强化学习(DQN)之 Baseline 基本概念”的评论:

还没有评论