不是很清楚的可以先看看这篇简洁版DQN介绍
只讲思想,不讲原理

1.Over-estimate

一般的Q-Learning中总会存在一些问题,由于下图中maxamax_a的存在,总是会过大的估计Q-VALUE。
Double DQN and Dueling DQN
Double DQN and Dueling DQN
Q-value是一个神经网络,因此有偏差,可能高估,而Q-learning总是会选择那个被高估的值。

DQN

Double DQN and Dueling DQN
主要思想:有两个Q-network,Q(s,a)负责选择一个action,Q’()负责Q-value的计算,也就是Q负责提案,即使提案不好(高估了a),只要Q’不高估就好了。就算Q’会高估,Q不提案也能解决。
其实Q-learning中我们本来就有两个network,一个target,一个用于更新参数,我们使用更新参数的network来选择action,然后使用fixed target network来计算value。(根本不用增加元素,改动很少)。

Dueling DQN

如果说DDQN是使用了两个网络来减小,是一种新的思想,那么DUELing完全是对网络架构的改变
Double DQN and Dueling DQN
不直接output Q-value的值,(1)先计算出scale V(S)和parameter A(s,a),Q是二者之和。(2)V只是s的函数,而A是s与a的

详解一下这样修改网络的优势

Double DQN and Dueling DQN
想学习如图所示的Q值,在某一个state,即使我们没有sample到所有的action,更改了V之后,所有的action都会变化。
给A加constraint,使得更改A比较麻烦,倾向于更改V(使其每一列和固定)

一些常用技巧

1.Prioritized Reply-

采用TD进行Q-value的估计时,误差越大的估计值对应的状态,在下一次有更大的几率被sample到。误差特别大表示没有train好,因此从buffer中拿尽可能错的比较厉害的数据。并不只是改变了sample的方式,也改变了train的process。
Double DQN and Dueling DQN

2.Multi-step Balance between MC and TD。

Double DQN and Dueling DQN
一次sample多个step的value放进network进行训练,结合了MC和TD的优缺点。

Q-learning for Continuous Action

如果使用一张表来存储Q-value,显然它对应的action值必须是离散的,但是正常情况下,我们的action很多是连续的
Q-learning比policy-gradient更容易进行训练,你看着自己的Q-value,有个评判,而想要形成一系列有效的policy则没有那么容易。但他不太容易处理continuous的情况(角度等参数):
要使用在连续的场景,主要要解决下面这个式子
Double DQN and Dueling DQN

solution 1:Sample N action

采样,大量的采样希望足够逼近连续的值,但是这样做采样数目不足时很low,数目很大又很浪费资源
Double DQN and Dueling DQN

solution 2:Gradient ascent

采用梯度下降的方式来更新Q-function,运算量非常之大

solution 3:Network

神经网络是最好的解决方法,先将s输入得到三个函数,然后将a代入进行运算
Double DQN and Dueling DQN

相关文章: