文章目录
前言
本文收录于强化学习工作准备专栏,回答了深度强化学习面试题汇总的第2题。
0. DQN存在的问题
强化学习中bootstrapping,定义如下:
In RL, bootstrapping means “using an estimated value in the update step for the same kind of estimated value”
中文一般称为自举,即左脚踩右脚上天。DQN会有高估的问题,原因主要来自于:
1.最大化:
y
t
=
r
t
+
γ
⋅
max
a
Q
(
s
t
+
1
,
a
;
w
)
y_t=r_t+\gamma\cdot\max \limits_{a}Q(s_{t+1},a;w)
yt=rt+γ⋅amaxQ(st+1,a;w),当具有误差时,最大化会导致高估。
2.Bootstrapping:如果当前时刻高估了Q值,则进行更新时,会用高估的值更新Q值,导致高估更严重。
为了解决过估计问题,DQN提出了多个变种:
1. Target Network
DQN原团队为了解决高估问题,又添加了Target Network结构。即训练两个Q网络:原有Q网络和Target Q network,原Q网络参数为
w
w
w,Target Q network的参数为
w
−
w^-
w−。在计算原有Q网络的更新目标时采用Target Q network,更新公式
y
t
=
r
t
+
γ
⋅
max
a
Q
(
s
t
+
1
,
a
;
w
−
)
y_t=r_t+\gamma\cdot\max \limits_{a}Q(s_{t+1},a;w^-)
yt=rt+γ⋅amaxQ(st+1,a;w−),而Target Q network则隔一段时间更新一次,更新方式:
1.
w
−
←
w
w^-\leftarrow w
w−←w,
2.
w
−
←
τ
⋅
w
+
(
1
−
τ
)
⋅
w
−
w^- \leftarrow\tau\cdot w+(1-\tau)\cdot w^-
w−←τ⋅w+(1−τ)⋅w−
Target network 避免了自举,减缓高估程度,但无法避免高估。因为仍然存在最大化操作,以及Target network和原Q网络仍有一定联系,不能完全避免bootstrapping。
2. Double DQN
为了解决过估计问题,Double DQN也采用两套Q网络进行网络参数更新,Q网络负责选择动作,参数为 w w w;Target Q网络负责计算更新目标值,参数为 w − w^- w−。
动作选择采取Q网络中值最大的动作
a
∗
=
arg max
a
Q
(
s
t
+
1
,
a
;
w
)
a^*=\argmax\limits_{a}Q(s_{t+1},a;w)
a∗=aargmaxQ(st+1,a;w)
动作值评估采用Target Q网络
y
t
=
r
t
+
γ
⋅
Q
(
s
t
+
1
,
a
∗
;
w
−
)
y_t=r_t+\gamma\cdot Q(s_{t+1},a^*;w^-)
yt=rt+γ⋅Q(st+1,a∗;w−)
相比于Target network直接选择Target Q网络中值最大的动作来计算更新目标,Double DQN中Q网络中值最大的动作不一定时Target Q网络中值最大的动作,所以能够更加有效的缓解过估计的问题。
3. Dueling DQN
Dueling DQN改变了网络的架构,网络的输出从
Q
(
s
,
a
)
Q(s,a)
Q(s,a)改成了
V
(
s
)
+
A
(
s
,
a
)
V(s)+A(s,a)
V(s)+A(s,a)
A(s,a)需要添加一定的约束,如每列的和为0,A(s,a)需要进行一定的归一化操作,如:A=A-mean(A)。
将传统的Q值分解为V值和优势函数A(s,a),可以区分哪些是状态引起的奖励,哪些是动作得到的奖励。由于A有约束,所以网络通常会优先更新V值,再调整A值。
4. Prioritized Experience Reply
DQN中的experience Replay采用的Buffer采用的是队列结构,先进先出,容量满后丢弃最早的轨迹,并且从整个Buffer中均匀分布选择轨迹训练模型。
Prioritized Experience Replay对Buffer中的样本进行排序,依据TD-error的大小,TD-error越大表示该样本越重要,具有更高的优先级。优先级概率有两种计算方法:
然后根据总体概率进行采样:

5. Distributional Q-function
Q(s,a)是对(s,a)的累计奖励的分布算期望(平均值),所以同一个Q值可能对应多种分布。Distributional Q-function直接输出Q的分布,把每个Q(s,a)的可能值拆成多个堆(bin)。
6. Rainbow
multi-step learning
将MC和TD结合,采用多步的奖励来估计当前的Q值,得到更加准确的估计,当然复杂性也随之提高。
noisy net
为了让模型更具有探索性,还可以在Q网络的参数上加上高斯噪声,每次sample noise的时候是在episode开始的时候,一个episode之后才会重新选取noise。同一个episode中,noise是固定的。
在action上加Noise,会导致动作的不确定;在参数上加noise可以得到确定的策略。虽然进行了explore,但还是保持一致性。
Rainbow算法
Rainbow将doube DQN、Prioritized Replay Buffer、Dueling DQN、Multi-step learning、Distributional Q-function、noisy net组合起来进行实验。
排列组合的实验效果:
消融实验(去掉某种方法后的实验效果):
参考资料
李宏毅深度强化学习课程:https://www.bilibili.com/video/BV1UE411G78S?p=7
深度强化学习课程:https://www.bilibili.com/video/BV1rv41167yx?p=11
知乎专栏:https://zhuanlan.zhihu.com/p/336723691