0
点赞
收藏
分享

微信扫一扫

Optimization of DQN


Optimization of DQN

1.Experience Replay

Optimization of DQN_算法


Optimization of DQN_人工智能_02

回顾TD算法。

1.1普通TD算法的缺点

Optimization of DQN_python_03

我们直到每次更新网络参数 是通过一次transition,再使用后,我们便会丢弃该经验,这是一种浪费。

Optimization of DQN_神经网络_05

每次更新都是通过相邻两个状态转移,相邻两个状态具有强相关性,对实际动作的策略指导会存在问题。

1.2 介绍

Optimization of DQN_python_06

Experience Replay 采用一个Replay Buffer 存储个transition。

Optimization of DQN_优先级_08

buffer中的transition 保存的是最近的n个,类似LRU(?)

Optimization of DQN_优先级_09

再更新参数时,我们每次从buffer中随机抽样一个或多个(对应multi step) transition,然后计算TD error,然后SGD更新

1.3 优点

Optimization of DQN_优先级_11

1.减弱强相关性。

2.重复利用experience。

1.4 Prioritized Experience Replay

Optimization of DQN_python_12

因为每个transition 重要性是不同的,比如右边的transition 就很难学习到,因此更重要。

Optimization of DQN_优先级_13

可以考虑用TD error 近似优先级,因为越重要就越难学习到,因此error会 越大。

Optimization of DQN_优先级_14

第一种方法将其抽样概率 正比TD error 加上 超参数 ,该参数是保证概率

第二种是反比按照TD error 排序后的排名。

Optimization of DQN_python_18

为保证网络的均匀稳定,当使用优先经验回放时,学习率

Optimization of DQN_python_20

设置函数

Optimization of DQN_神经网络_22

如果新收集的transition,设置

Optimization of DQN_优先级_24

2.Target Network and Double DQN

Optimization of DQN_人工智能_25


Optimization of DQN_神经网络_26

使用DQN 中的函数得到 更新,会导致自举问题。

2.1 高估的原因

Optimization of DQN_神经网络_30

DQN高估动作价值的原因有:

1.最大化,在进行TD 算法时计算TD target 会对所有的

因此导致

2.自举,用估计值来反向传播。

Optimization of DQN_优先级_35

根据数学证明可知,在噪声均值为0的分布下得到的

Optimization of DQN_优先级_37

因此会导致高估

Optimization of DQN_优先级_39

而高估的 会进一步更新

Optimization of DQN_python_42

Optimization of DQN_优先级_43

两重影响。

2.2 高估有危害的原因

Optimization of DQN_优先级_44

如果是均匀的高估,对于动作的选择没有影响,因为动作的选择是根据动作打分的相对大小,选取相对最大的进行执行。

Optimization of DQN_神经网络_45

但是如果高估不是均匀的,则可能会导致选择错误的动作。

Optimization of DQN_神经网络_46

因为 在replay buffer中出现的频率不是均匀的,出现次数越多,的高估就越明显。

Optimization of DQN_优先级_49

2.3 Target Network

Optimization of DQN_python_50

用一个DQN 控制agent 执行动作和收集experience,再使用一个DQN

Optimization of DQN_python_52

Optimization of DQN_优先级_53

更新target network 有两种方法:

1.使用DQN之前的更新。

2.使用两者的加权平均。

Optimization of DQN_神经网络_55

相比naive update,target network 减缓了自举带来的高估。

2.4 Double DQN

Optimization of DQN_算法_56

这是target network 更新的方法,使用target network选择,用target network更新。但是不能完全消除高估。

Optimization of DQN_python_59

Double DQN类似于naive update 和 target network 的一种优化。

它使用DQN来选择 ,然后用target network 计算

使用Double DQN的
因此target network 使用自己的计算动作,选取的是最大的。

而Double DQN不是target network最大的,而是DQN里的最优的。

2.5 Summary

Optimization of DQN_算法_66


Optimization of DQN_人工智能_67

从该图可以看出,结合趋于平衡往往是最优的。

3.Dueling Network

3.1 相关定义

Optimization of DQN_算法_68

回顾几个定义。

Optimization of DQN_算法_69

这里定义最优优势函数

Optimization of DQN_神经网络_73

定理1,显然最优的 是取得所有 后的

Optimization of DQN_算法_77

因此可以得到

Optimization of DQN_人工智能_79

因此可以这样表示

Optimization of DQN_优先级_81

我们采用一个神经网络近似

Optimization of DQN_神经网络_83

一个神经网络近似

3.2 网络模型

因此可以用这两个网络近似

Optimization of DQN_人工智能_86


Optimization of DQN_优先级_87

Optimization of DQN_神经网络_88

因为两个网络的卷积层操作相同,所以可以公用。

Optimization of DQN_算法_89

该网络同样可以使用experience replay、Double DQN,Multi-step TD 这些trick。

3.3 使用max-0常量的必要性

Optimization of DQN_人工智能_90


Optimization of DQN_人工智能_91

显然若的变化和最后为0,其

但是会导致对的网络训练出现问题。

Optimization of DQN_python_96

而引用max后就不会出现评价的偏差。

在实际应用中采用mean效果更优。

Optimization of DQN_神经网络_97

两者是一起训练的,参数看成一个整体


举报

相关推荐

New Optimization

Optimization and Indexes

Road Optimization

Index Merge Optimization

Outer Join Optimization

DQN强化学习

WHERE Clause Optimization

0 条评论