文章目录
1. Double DQN
Double DQN 解决的就是Q值的 over-estimated 问题。
2. Dueling DQN
Q: Dueling DQN 是怎么改了网络的架构呢?
A: 本来的 DQN 就是直接输出 Q 值的值。现在这个 dueling 的 DQN,就是下面这个网络的架构。它不直接输出 Q 值的值,它分成两条路径去运算:
- 第一条路径会输出一个 scalar,这个 scalar 叫做 V(s)。因为它跟输入 s 是有关系,所以叫做 V(s),V(s) 是一个 scalar。
- 第二条路径会输出一个 vector,这个 vector 叫做 A(s,a)。下面这个 vector,它是每一个动作都有一个值。
你再把这两个东西加起来就可以得到你的 Q 值。
即:
Q(s,a) = V(s) + A(s,a)
- 你不需要把所有的 state-action pair 都 sample 过,你可以用比较高效的方式去估计 Q 值出来。
- 因为有时候你更新的时候,不一定是更新下面这个表格。而是只更新了 V(s),但更新 V(s) 的时候,只要一改所有的值就会跟着改。这是一个比较有效率的方法,去使用你的数据,这个是 Dueling DQN 可以带给我们的好处。
实现时,你要给这个 A 一个约束。
3. Prioritized Experience Replay
Prioritized Experience Replay 对训练过程的调整有点类似 Adaboost 算法。
关于Adaboost :
- Adaptive boosting(自适应增强)是一种迭代算法,其核心思想是针对同一个训练集训练不同的弱分类器,然后把这些弱分类器集合起来,构成一个强分类器,Adaboost可处理分类和回归问题。
- 其中 Adaptive(自适应) 部分,只要体现在前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时在每一轮中加入一个新的弱分类器,直到得到某个预定的足够小的错误率或达到预定的最大迭代次数。
可以参考Adaboost
在 Prioritized Experience Replay 也会针对
TD error 特别大(TD error 就是网络的输出跟目标之间的差距)的数据进行调整:
- 那这些数据代表说你在训练网络的时候, 你是比较训练不好的。那既然比较训练不好, 那你就应该给它比较大的概率被 sample 到,即给它 priority。这样在训练的时候才会多考虑那些训练不好的训练数据。
- 实际上在做 prioritized experience replay 的时候,你不仅会更改 sampling 的 process,你还会因为更改了 sampling 的过程,更改更新参数的方法。所以 prioritized experience replay 不仅改变了 sample 数据的分布,还改变了训练过程。
就是说,Prioritized Experience Replay 在训练过程中也加入了 “Adaptive(自适应)” 部分,这部分体现在针对TD error 特别大大的数据,调整其priority——即概率分布。
4. Balance between MC and TD
这个方法就是 MC 跟 TD 的结合。
通过加入hyperparameter:“N”,调节每次学习的步长。
- 如果 N=1,就退回到了 TD 算法;
- 如果 N=一条轨迹长度,就等价于 MC 算法。
5. Noisy Net
关于噪声的加入:
- Epsilon Greedy,在动作空间加噪声。
- Noisy Net,在参数空间加噪声。
Q Q Q G a u s s i a n − n o i s e → \underrightarrow{Gaussian-noise} Gaussian−noise Q ~ \tilde{Q} Q~
6. 连续动作
(1)背景:
前面在介绍 DQN 方法时,都是以离散场景作为优化目标,而现实中的问题,连续场景居多:
- 举例来说假设智能体要做的事情是开自驾车,它要决定说它方向盘要左转几度, 右转几度,这是连续的。
- 假设智能体是一个机器人,它身上有 50 个 关节,它的每一个动作就对应到它身上的这 50 个关节的角度。而那些角度也是连续的。
- 所以很多时候动作并不是一个离散的东西,它是一个向量。在这个向量里面,它的每一个维度都有一个对应的值,都是实数,它是连续的。
这种情况下,做 DQN 就会有困难:离散场景下的穷举方式,在连续场景下就不太适用——连续场景下,很难穷举所有可能性。
举个简单的例子:现在有4,5,6 三个数,我们现在要从 4 和 6 之间抽取一个数。 离散场景下,4 和 6 之间只有一个数可取——“5”。 连续场景下,4 和 6 之间有无穷多个数可以取,如果限定精度,这个值的范围可能会缩小一些,但数量依然很大。
(2)四种解决方案
a. 方案一——做离散抽样
b. 方案二——按照优化问题去求解
- 思路:
设置目标函数(objective function)—— Q 函数,以 a 作为参数,用梯度上升策略,优化目标函数:
找一组 a 去最大化 Q 函数,就用梯度上升去更新 a 的值,最后看看能不能找到一个 a 去最大化Q函数,也就是目标函数。
- 缺点:
(1)全局最大值(global maximum)问题:有可能会陷入局部最优,找不到全局最优解。
(2)运算量大:在使用梯度上升策略做优化时,参数的每次优化都以完整训练一次网络为基础,而现实中的场景常常是非常复杂的,导致每次优化的计算量都很大。
c. 方案三——设计网络
d. 方案四——不使用DQN
基于策略的方法 PPO 和基于价值的方法 DQN,这两者其实是可以结合在一起的,如下图所示,也就是演员-评论员的方法。