Files
easy-rl/papers/DQN/Deep Reinforcement Learning with Double Q-learning.md
2022-11-20 21:32:06 +08:00

224 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Deep Reinforcement Learning with Double Q-Learning 论文剖析
Hado van Hasselt 、Arthur Guez 、 David Silver from Google DeepMind
## . 文章信息
**Deep Reinforcement Learning with Double Q-learning**
作者Hado van Hasselt 、Arthur Guez 、 David Silver from Google DeepMind ,2015
https://arxiv.org/abs/1509.06461
## 一. 写作动机
高估问题overestimation一直是强化学习中存在的问题但是一直以来其来源有多种说法一是归因于不灵活的函数近似Thrun和Schwartz, 1993一是来自噪声van Hasselt, 2010, 2011。通过实验也表明高估问题的普遍性相较之前认识的要普遍的多需要找到方法缓解其影响。
本文的写作动机就是探索高估的产生验证高估问题对于Q-Learning是否不利并寻找缓解高估问题的方法。
## 二 . Q-Learning算法的进化历史
本文中作者总结了DQN的发展
### 1. Q-Learning——解决时序决策问题的方法
Q-Learning是一种**时序差分方法**,很好的被用在时序决策问题中(Watkins, 1989),其通过估计最优动作价值函数$$ Q_{\pi}(s,a)=\mathbb{E}[R_1+\gamma R_2+...|S_0=s, A_0=a,\pi],$$ 并对每个状态选择最优的动作价值函数所对应的动作,从而间接生成最优策略。
具体请参考Q-Learning文章此处给出迭代公式方便后续说明。
$$ Q(S_t,A_t)=Q(S_t,A_t)+ \alpha (Y_t^Q-Q(S_t,A_t)) \tag{1} $$
### 2. 价值函数拟合的Q-Learning
因为状态过多或者连续,无法遍历所有状态,需要使用参数化函数$ Q(s,a;\theta _t)$对现有值进行拟合,并对未知状态的价值函数进行预测,通过公式
$$\theta_{t-1}=\theta_t +\alpha(Y_t^Q-Q(S_t,A_t;\theta_t))\nabla Q(S_t, A_t,;\theta _t) \tag{2} $$
完成参数更新,其中$Y_t^Q =R_{t+1}+\gamma \substack{max\\a}Q(S_{t+1},a;\theta _t)$是TD-target, 主要思想就是使用类似梯度下降的方法,使得拟合出的参数化函数更加接近目标,也就是说更加符合真实值。
解决了传统Q-Learning中的无法解决的**未知状态**问题,即欠鲁棒的问题。
### 3.Deep Q NetworksDQN
Mnih et al. ,2015))——神经网络+Q-Learning
说到函数拟合就不得不提到神经网络,它具有极强的**函数拟合**能力DQN应运而生。
DQN针对传统Q-Learning有以下三点改进提高了算法的性能
1. #### 使用神经网络来代替参数化函数,增强了函数拟合能力
2. #### 使用目标网络
使用一个异步更新的目标网络,网络参数用$\theta^-$表示(每$\tau$次将Q-net的参数$\theta$赋值给目标网络)用来进行目标的计算。
$$Y_t^Q = R_{t+1}+\gamma\substack{max\\a}Q(S_t=s, A_t=a;\theta^-_t) \tag{3} $$
3. #### 使用**经验回放**(Lin, 1992):储存经验并重复使用,增加了利用率,减少采样成本
4. #### Double DQN
本文的重点,下一章介绍
## 三 . Double DQN
### 1. 具体操作
更换计算目标的方式,公式为:
$$Y_t^Q = R_{t+1}+\gamma Q(S_t=s, A_t=\substack{argmax\\{a \in \mathbb{A}}}Q(s,a|\theta_t^-);\theta_t) \tag{4} $$
### 2. 思想来源:解耦选取与计算
在传统DQN中,TD-target的计算可以分为两个步骤**最优动作的选取** 与 **最优动作价值函数的计算** 。该公式可以变形为以下分解形式:
$$ a^*=\substack{argmax\\{a \in \mathbb{A}}}Q(s,a|\theta_t)\\Y_t^Q=r+\gamma Q(S_t=s, A_t=a^*;\theta_t)$$
计算目标的任务就转换到了目标网络上:
$$
a^*=\substack{argmax\\{a \in \mathbb{A}}}Q(s,a|\theta_t^-)\\Y_t^Q=r+\gamma Q(S_t=s, A_t=a^*;\theta_t^-)
$$
使用上面提到的Double Q-Learning则变为以下形式
$$ a^*=\substack{argmax\\{a \in \mathbb{A}}}Q(s,a|\theta_t^-)\\Y_t^Q=r+\gamma Q(S_t=s, A_t=a^*;\theta_t)$$
***其实Q-Learning也有Double的形式分别训练两个模型$\theta$,$\theta'$ 操作一样只是这里Double DQN巧妙地使用了目标网络$\theta^-$ 作为第二个网络***
为了方便观看,使用表格形式展示
| | DQN | DQN+target network | Double DQN |
| :--------------------: | :--------------: | :----------------: | :----------------: |
| 最优动作的选取 | 策略网络$\theta$ | 目标网络$\theta^-$ | 目标网络$\theta^-$ |
| 最优动作价值函数的计算 | 策略网络$\theta$ | 目标网络$\theta^-$ | 策略网络$\theta$ |
由此可以看出如何解耦在传统的DQN+目标网络的方法上,最优动作的选取 与 最优动作价值函数的计算 两步是耦合的但是Double DQN解耦二者达到了缓解高估的效果。至于为什么要这么做就需要清晰的了解高估问题是如何产生的作者在下一部分明确的证明了高估现象的发生与高估的上下限并使用实验验证了理论。
## 四. 高估问题
本文另一贡献就是系统的分析了高估问题产生的原因和如何影响了Q-Learning。
### 1. 理论推导
#### (1) 为什么会产生高估?
简单来说,因为神经网络等估计方法存在误差,导致估计出的在某一固定状态$s$下,不同动作的动作价值函数$Q(A_t=a_i, S_t=s)$相对真实值$Q_*(A_t=a_i, S_t=s)$估计误差。假设估计噪声为高斯无偏均值为0误差可正可负到此并无大碍但是接下来的更新时的操作计算TD-target的时候如公式$(3)$使用了max操作这导致在这一步的误差始终为正的造成正的偏差这就是导致高估的原因。
举个形象生动的例子每天食堂拿盒饭每盒的量500g大致相等但是有的稍多为530g有的稍少为470g。你每天随机选择一盒作为午餐一个月下来你的体重没有变化因为吃到的盒饭期望是每盒的平均值500g。但是第二个月你通过灵敏的视觉每天都挑最多的那一盒一个月下来胖了三斤因为这时候吃到盒饭的期望为最大值530g。
选择最多的盒饭的过程就是max操作你吃进去的饭通过公式$(1)$消化(更新),更新了你的体重,也就是动作价值函数的估值。
#### (2) 高估指标的理论推导
Thrun and Schwartz (1993)首先发现了高估的现象,表明如果动作值包含均匀分布在区间$[-\epsilon,\epsilon]$中的随机误差,则每个目标被高估到上限 $\gamma \in \frac{m-1}{m+1}$ ,其中 m 是动作的数量。
由贝尔曼最优方程可以得出最优动作价值函数与最优状态价值函数之间的关系:
$$Q_*(s,a)=V_*(s) \tag{5} $$
因为环境固定,奖励固定时,状态价值函数为常量,假设:任意动作价值函数的无偏估计值为$Q_t(s,a)$,则有等式$(6)$成立
$$ \sum_a (Q_t(s,a)-V_*(s))=0 \tag{6} $$
即使定义估计是无偏的,平均误差为零,但不是每个估计的误差均为零,也会有以下情况的产生:
$$\frac{1}{m} \sum_a(Q_t(s,a)-V_*(s))^2=C (m>1为动作个数C>0为实数) \tag{7} $$
在这种假设下,使用$(3)$中的max操作利用$(2)$进行价值函数的更新时,$max_aQ_t(s,a) \geq V_*(s)+ \sqrt{\frac{C}{m-1}}$ ,得到了高估的下限。
文中特意提到Double Q-Learning的高估下限为0。
证明可以参考原文附录,很详细,在此不赘述。
#### (3) 为什么Double DQN可以解决高估
接着盒饭说。此时你感觉自己有点胖,命令你的室友替你拿盒饭,无论你的室友怎样拿,肯定不会比你自己拿的时候(挑最重的拿)多,即$Q(s,a_*;\theta^-) \leq \substack{max\\a}Q(s,a)$,也就减少了目标的高估影响,从而减少了对动作价值函数的估计。
### 2. 实验
本文共做两次实验验证以上理论推导
#### 实验一验证Q-Learning与Double Q-Learning在价值函数估计上的性能比较
![image-20221028212937860](img/Double_1.png)
作者实验证明上图中横坐标为动作数纵坐标为估计的Q值与最优值的误差重复100次取平均橙色为Q-learning蓝色为Double Q-learning可以看出随着动作数增加Q-learning误差逐渐增大而Double Q-learning基本无偏。
#### 实验二通过参数拟合对比试验验证高估来源并验证Double Q-Learning能有效缓解高估问题
![image-20221028214153916](img/Double_2.png)
证明了Double Q-learning能够减少过拟合后作者做了三组实验**模仿参数拟合**,以验证高估产生。
图表中横坐标为状态共有13个状态纵坐标为Q值的大小。共有十个动作。
- 左列中紫色的线代表每个状态真实的最优Q值绿线为动作价值函数的真实值绿点为真实的不包含噪声的采样点。动作仅仅在13个状态中的11上采样在未采样点上观察情况。第一行和第二行实验使用6阶多项式去拟合第三行实验使用9阶多项式。可以看出左图第二行在采样点上的逼近也不精确是由于多项式阶数低不够灵活左图第三行可以看出虽然在采样点上逼近都很好但在未采样的的地方误差很大过拟合。
- 中列三行图每幅图中10条绿线是10个动作分别对应的动作值函数虚线是每个状态下最大动作值。可以看出**最大动作值基本都比左边图中的真实最优Q值大**当我们使用这些动作价值函数的估计进行Q-Learning的更新时**使用公式$(2)$ 中$max_aQ_t(s,a) $, 高估现象产生**。
- 右列三行图橙线是中间图中黑色虚线与左边图中紫线作差的结果即高估蓝线是使用了Double Q-Learning的估计效果蓝线的平均值更接近0这表明**Double Q-Learning确实可以减少Q-Learning在函数逼近中的高估问题**。
通过实验发现不够灵活的函数逼近对Q值的估计不精确但是**足够灵活的函数逼近在未知状态中会产生更大误差****导致更高的高估**DQN就是一种非常灵活的函数逼近使用了神经网络来逼近价值函数。而高估最终会阻止学习到最优策略作者后面也通过Atari上的实验证明了这点且通过Double Q-Learning减少高估最终策略也会得到改善。
### 3.高估如何影响DQN
选择是相对的,均匀的高估不会对动作的选择造成影响。
真正造成影响的是:高估是非均匀的,回到吃盒饭的例子。你和我有一样的体质(吃-涨的比例相同我比你稍微重我们每次都只拿最多的盒饭530g一个月涨的体重都一样一个月之后还是我比你稍微重。但是你吃的是A种盒饭我吃的是B种盒饭这就会导致非均匀高估导致你可能长胖更快一点一个月之后甚至超过我**导致次最优解**。
重要的事情说三遍:**均匀高估无影响,真正产生影响的是非均匀高估**,此后将高估一词指代非均匀高估。
## 五. 基于Atari2006的实验
### 1. 训练细节
网络架构是一个卷积神经网络Fukushima, 1988; LeCun et al., 1998具有 3 个卷积层和一个全连接隐藏层(总共大约 150 万个参数)。网络将最后四帧作为输入,输出每个动作的动作值。在每场游戏中,网络都在单个 GPU 上训练 200M 帧,或大约 1 周。
### 2.实验结果
![image-20221029121314902](img/Double_3.png)
作者在6款游戏上重复进行实验得出以下结果
- 1 2行展示了六款游戏的真实价值与估计价值蓝色为DoubleDQN,红色为DQN。肉眼可见DoubleDQN的价值拟合更趋近于真实值相比DQN高估现象减弱明显。并且其中两家款游戏的高估十分严重。
- 选择高估现象作为严重的两款游戏(中下),展示其训练期间的得分情况:当高估开始时分数下降,证明了高估现象可以影响算法性能。使用 Double DQN 学习更加稳定。
最后为了证明算法的稳定性采用了不同的时间点开始切入学习让人先玩一段时间智能体再接手发现DDQN的结果更加稳定并且DDQN的解并没有利用到环境的相关特性。
##### 注:更多的实验结果篇幅原因这里不再做更多实验展示
## 六.本文的贡献
这篇论文有五个贡献。
- 首先,展示了为什么 Q-Learning存在高估的问题。
- 其次,通过分析 Atari 游戏的价值估计,发现这些高估在实践中比之前认为的更为普遍和严重。
- 第三证明可以使用Double Q-Learning 学习有效地减少高估,从而使学习更加稳定和可靠。
- 第四提出了一种Double DQN具体实现它使用 DQN 算法的现有架构和深度神经网络,无需额外的网络或参数。
- 最后,展示了 Double DQN 找到了更好的策略,在 Atari 2600 域上获得了当时最优的结果。
## 七.作者介绍
于天琪20多岁单身就读于哈尔滨工程大学陈赓实验班\
知乎主页https://www.zhihu.com/people/Yutianqi \
qq:2206422122 \
欢迎交流,互相学习