【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline 。我的强化学习资源仓库:
https://github.com/PiperLiu/Reinforcement-Learning-practice-zh
我的 CSDN 强化学习博客集合:
https://blog.csdn.net/weixin_42815609/category_9592110.html

本节内容综述

  1. 今天的内容分为 3 部分:Introduction of Q-Learning、Tips of Q-Learning 以及 Q-Learning for Continuous Actions 。
  2. Q-Learning 是一个 value-based 的方法,李老师将其比喻成,是在学习 Critic (毕竟李老师是先从 PG 开始讲的)。
  3. How to estimate Vπ(s)V^\pi (s) ,可以用 Monte-Carlo based approach 或者 Temporal-difference approach 。比较了 MC 与 TD 的差别:MC 的 variance 较大;但是 TD 的 VV 可能不准。
  4. 在 Q-Learning 中,没有所谓的 π\pi ,用的是 QQπ\pi 进行描述。
  5. 讲了几个基本的 Tips ,在 DQN 的原始文章中都有提到过。
  6. 接着,介绍了一些高阶的 DQN 的 tips 。
  7. 接下来,介绍了 Continuous Actions 。

小细节

basic tips

Target Network

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,在训练时,通常会使用一个 Target Network 。

Exploration

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
使用 a=argmaxaQ(s,a)a = arg \max_a Q(s,a) 进行探索,并不是一个好的选择,对于采样来说。

Replay Buffer

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,值得注意的是,buffer 中有不同策略的经验;因此这是一个 Off-policy 的训练。

Tips of Q-Learning

Double DQN

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,Q-value 容易被“高估”,超过实际的值。

Why

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,为什么 Q-value 总是被高估呢?上面有四个动作,其总会选择被高估的动作。
【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,用两个 Q ,如果 Q 高估了,但是 Q’ 没有高估,二者互补。在实际操作中,目标网络就是第二个 Q 。

Dueling DQN

Dueling DQN 只是改了网络的架构。
【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,其将 V(s)V(s)A(s,a)A(s,a) 拆开输出,并且 Q(s,a)=A(s,a)+V(s)Q(s,a) = A(s,a) + V(s)

Why

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
我们在训练时,修正的是 QQ 的值,假设我们只修正了两个 action 的值,但是神经网络可能自动地修正了 VV 的值,因此,这个状态下的其他动作的值也随之被泛化。

为了达到如上效果,一般来讲,我们会做一些约束,让其拥有泛化效果:让 A 的列的和为 0 。让网络倾向于改变 V 来解决问题。

How

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,实作中,我们会在 A+VA+V 前,对 AA 的输出做一个 Normalization 。

Prioritized Reply

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,有些数据,带来的 TD error 较大;实际上,这些数据是比较重要的,因此,要给其较高的可能性,让其容易被采样到。

此外,我们还可能因此更改更新式

Multi-step

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,即 n 步自举,结合了 MC 与 TD 。

Noisy Net

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
在每一 episode 开始时,对 Q function 加 noise 。
【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,为网络添加参数,实际上是一种“有系统地尝试”。

Distributional Q-function

这个用的不多。
【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
我们的 Q 是一个期望值,但是,不同的分布可能有同一个期望值。
【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
因此,我们不输出 Q 值,直接输出 Q 的分布。

Rainbow

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,Rainbow将上述方法结合,比较强。

Continuous Actions

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,有两个直观的思路:

  • 列出一些 a ,找最大的;
  • 用梯度上升找最优解。

上述两个方法成本都很高,因此,提出第 3 种方法,设计一种结构。

Design a network

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
如上,输入ss,网络会输出 3 个东西:μ\muΣ\SigmaVV

Q(s,a)=(aμ(s))TΣ(s)(aμ(s))+V(s)Q(s,a) = - (a-\mu(s))^T \Sigma(s)(a-\mu(s))+V(s)

得到这 三个变量后,再进行如上公式的计算,其中带入了 aaaa 是一个向量,代表一个动作。

最终,QQ 是一个数,就是 Q-value 的值。

那么,如何求出最大的动作向量的值呢?

观察到上式中,第一项一定是小于等于 0 的(因为之前输出Σ\Sigma是做了些正则,具体见原论文);那么我们令 aμ(s)=0a-\mu(s)=0 即可,则最终 μ(s)=argmaxaQ(s,a)\mu(s)=arg \max_a Q(s,a)

AC

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
此外,还有 AC 方法也可以解决这个问题。