1. 前言
由于Q-learning将最大值作为动作的价值,因此就难免出现过于乐观的情况,但是有时候乐观有助于更多的探索。作者为了测试overestimation是否会在实际情况中出现,调查了DQN算法的结果。发现,即使在一些相对很好的条件下,DQN依旧会过于放大一些动作的value值。
2. 介绍
在增强学习算法中,我们将动作的价值定义为:
最优的value值为:
2.1 Deep Q Network
deep q-learning就是使用一个神经网络作为估计函数来估计,DQN使用了两个关键的方法来增加效果,一是:使用一个target network,二是使用了experience replay,目的都是为了增强会价值函数拟合的稳定性。
2.2 Double Q-learning
在Q-learning中使用的最大值操作,使用相同的value来进行选择动作和估计动作,因此估计的价值会偏大,导致选择的动作高估了这个选择。为了防止这种情况,可以将选择和评估分开。在之前的double q-learning算法,使用agent的经验来随机地更新两个价值函数,它们的参数分别是:和,对比如下:
Q-learning
Double Q-learning
可以看到,使用
2.3 Overoptimism due to estimation errors
Q-learning会过于乐观,当action values包含了一个uniformly distributed的error时(在区间内),那么每一个target都会被高估。
作者证明了,任何形式的estimation error都会为结果增加一个正的偏置。作者证明了对于一个target的无偏估计,如果它和真实target的差存在一个大于零的方差,那么就会导致在某些情况下,。如下图:
橘黄色的条表示了bias。
作者还考察了函数估计的情况。如下图:
最左边一列,用紫色曲线表示真实的
中间一列绿色的线条是10个action的价值函数的估计,黑绿相间的是maximum action value。它一般比真实结果大。
最右边一列对比了Q-learning和Double Q-learning的结果,可以发现Double Q-learning可以有效地减少过于乐观的情况。、
Double DQN
类似于Double Q-learning,作者使用一个online network来进行greedy policy,使用一个target network来估计它的价值
note:我不是特别清楚Double DQN的算法和DQN有什么区别。。。
参考了 https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/blob/master/contents/5.1_Double_DQN/RL_brain.py
在代码实现中,Double Q-learning中是由当前online network的最大值来决定的,而Q-learning中是由target network的最大值来决定的。
这体现了target网络在两种算法中的区别。在DQN中,我认为目标网络是我们的拟合结果,online网络是为了sampling,当我sample 了一个样本后,由于目标网络才是那个agent,我使用目标网络来计算下一个状态的最大的Q值。然后使用online网络得到的Q值和最大的Q值,来计算error来更新现在的online网络。这个更新在一定的步骤后,将它作为真实的一个估计,替代目标网络的参数。
而在Double Q-learning中,我们使用了两个网络,目标网络用于action的选择,online网络用于value的估计。那么,在计算error的时候,就应该使用online网络得到的最大的Q(因为它用于估计value)。