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

前言

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

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

排列组合的实验效果:
排列组合的实验效果
消融实验(去掉某种方法后的实验效果):
去除某些方法后的性能表现

参考资料

李宏毅深度强化学习课程:https://www.bilibili.com/video/BV1UE411G78S?p=7
深度强化学习课程:https://www.bilibili.com/video/BV1rv41167yx?p=11
知乎专栏:https://zhuanlan.zhihu.com/p/336723691

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郁同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值