Task04: DQN进阶

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} Gaussiannoise 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,这两者其实是可以结合在一起的,如下图所示,也就是演员-评论员的方法。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值