深度强化学习6——DQN的改进方法

在上一篇文章我们提到了DQN还存在的问题:

1) 目标Q值的计算是否准确?全部通过max Q来计算有没有问题?

2) 随机采样的方法好吗?按道理不同样本的重要性是不一样的。

3) Q值代表状态,动作的价值,那么单独动作价值的评估会不会更准确?

相应的改进方法是Double DQN、Prioritised Replay DQN、Dueling DQN,下面我们将一一介绍这些方法。

Double DQN

在DDQN之前,基本上所有的目标Q值都是通过贪婪法直接得到的,无论是Q-Learning, DQN(NIPS 2013)还是 Nature DQN,都是如此,在 DQN(NIPS 2013)中,会出现Q值估计偏高的情形,因为这是一种off-policy的策略,我们每次在学习时,不是使用下一次交互使用的真实动作,而是使用当前策略认为的价值最大的动作,所以会出现对Q值的过高估计。而在Nature DQN中,我们也会面临同样的问题,因为我们选择下一时刻的动作以及计算下一时刻状态-动作Q值时,使用的都是target-net。

最初Thrun & Schwartz开始探讨该问题,证明了在使用函数逼近器时overestimation可能导致非最优解。之后van Hasselt发现即使用表格表示法的情况下,环境中的噪声也能导致overestimation,为了将动作选择和价值估计进行解耦,提出了解决方案Double Q-learning,在上一节里,Nature DQN对于非终止状态,其目标Q值的计算式子是:

                                                                     y_{j}=\left\{\begin{matrix} r_{j} & teminal &is& true\\ r_{j}+\gamma max_{a^{'}}Q(s_{j}^{'},a_{j}^{'},w) & teminal &is&false \end{matrix}\right.

在DDQN这里,其定义是将动作的选择和动作的评估分别用不同的值函数来实现,而在Nature DQN中正好我们提出了两个Q网络(Q,Q^{'}),其计算目标值yj的步骤可以拆分为两步:

1)先在当前Q网络中先找出最大Q值对应的动作,即

                                                                                   a_{j}^{max}(s_{j}^{'},w)=arg \underset{a^{'}}{max}(Q(s_{j}^{'},a_{j},w))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值