Optimization of DQN
1.Experience Replay
回顾TD算法。
1.1普通TD算法的缺点
我们直到每次更新网络参数 是通过一次transition,再使用后,我们便会丢弃该经验,这是一种浪费。
每次更新都是通过相邻两个状态转移,相邻两个状态具有强相关性,对实际动作的策略指导会存在问题。
1.2 介绍
Experience Replay 采用一个Replay Buffer 存储个transition。
buffer中的transition 保存的是最近的n个,类似LRU(?)
再更新参数时,我们每次从buffer中随机抽样一个或多个(对应multi step) transition,然后计算TD error,然后SGD更新
1.3 优点
1.减弱强相关性。
2.重复利用experience。
1.4 Prioritized Experience Replay
因为每个transition 重要性是不同的,比如右边的transition 就很难学习到,因此更重要。
可以考虑用TD error 近似优先级,因为越重要就越难学习到,因此error会 越大。
第一种方法将其抽样概率 正比TD error 加上 超参数
,该参数是保证概率
第二种是反比按照TD error 排序后的排名。
为保证网络的均匀稳定,当使用优先经验回放时,学习率
设置函数
如果新收集的transition,设置
2.Target Network and Double DQN
使用DQN 中的函数得到
更新
,会导致自举问题。
2.1 高估的原因
DQN高估动作价值的原因有:
1.最大化,在进行TD 算法时计算TD target 会对所有的
取
。
因此导致
2.自举,用估计值来反向传播。
根据数学证明可知,在噪声均值为0的分布下得到的
因此会导致高估
而高估的 会进一步更新
两重影响。
2.2 高估有危害的原因
如果是均匀的高估,对于动作的选择没有影响,因为动作的选择是根据动作打分的相对大小,选取相对最大的进行执行。
但是如果高估不是均匀的,则可能会导致选择错误的动作。
因为 在replay buffer中出现的频率不是均匀的,出现次数越多,
的高估就越明显。
2.3 Target Network
用一个DQN 控制agent 执行动作和收集experience,再使用一个DQN
更新target network 有两种方法:
1.使用DQN之前的更新。
2.使用两者的加权平均。
相比naive update,target network 减缓了自举带来的高估。
2.4 Double DQN
这是target network 更新的方法,使用target network选择,用target network更新
。但是不能完全消除高估。
Double DQN类似于naive update 和 target network 的一种优化。
它使用DQN来选择 ,然后用target network 计算
使用Double DQN的
因此target network 使用自己的计算动作
,选取的是最大的。
而Double DQN不是target network最大的,而是DQN里的最优的。
2.5 Summary
从该图可以看出,结合趋于平衡往往是最优的。
3.Dueling Network
3.1 相关定义
回顾几个定义。
这里定义最优优势函数 为
与
定理1,显然最优的 是取得所有
后的
因此可以得到
因此可以这样表示
我们采用一个神经网络近似
一个神经网络近似
3.2 网络模型
因此可以用这两个网络近似
因为两个网络的卷积层操作相同,所以可以公用。
该网络同样可以使用experience replay、Double DQN,Multi-step TD 这些trick。
3.3 使用max-0常量的必要性
显然若的变化和最后为0,其
但是会导致对,
的网络训练出现问题。
而引用max后就不会出现评价的偏差。
在实际应用中采用mean效果更优。
两者是一起训练的,参数看成一个整体