admin 管理员组

文章数量: 887017

DQN的几个变种以及各自解决的问题

文章目录

    • 前言
    • 0. DQN存在的问题
    • 1. Target Network
    • 2. Double DQN
    • 3. Dueling DQN
    • 4. Prioritized Experience Reply
    • 5. Distributional Q-function
    • 6. Rainbow
      • multi-step learning
      • noisy net
      • Rainbow算法
    • 参考资料

前言

本文收录于强化学习工作准备专栏,回答了深度强化学习面试题汇总的第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​+γ⋅amax​Q(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​+γ⋅amax​Q(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∗=aargmax​Q(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越大表示该样本越重要,具有更高的优先级。优先级概率有两种计算方法:

1. p i = ∣ δ i ∣ + ϵ p_i=|\delta_i|+\epsilon pi​=∣δi​∣+ϵ

2. p i = 1 r a n k ( i ) p_i=\frac{1}{rank(i)} pi​=rank(i)1​

然后根据总体概率进行采样:
P ( i ) = p i α ∑ k p k α P(i)=\frac{p_i^{\alpha}}{\sum_k p_k^\alpha} P(i)=∑k​pkα​piα​​

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组合起来进行实验。

排列组合的实验效果:

消融实验(去掉某种方法后的实验效果):

参考资料

李宏毅深度强化学习课程:=7
深度强化学习课程:=11
知乎专栏:

本文标签: DQN的几个变种以及各自解决的问题