【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction & Tips & Continuous Actions
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline 。我的强化学习资源仓库:
https://github.com/PiperLiu/Reinforcement-Learning-practice-zh
我的 **** 强化学习博客集合:
https://blog.****.net/weixin_42815609/category_9592110.html
本节内容综述
- 今天的内容分为 3 部分:Introduction of Q-Learning、Tips of Q-Learning 以及 Q-Learning for Continuous Actions 。
- Q-Learning 是一个 value-based 的方法,李老师将其比喻成,是在学习 Critic (毕竟李老师是先从 PG 开始讲的)。
- How to estimate ,可以用 Monte-Carlo based approach 或者 Temporal-difference approach 。比较了 MC 与 TD 的差别:MC 的 variance 较大;但是 TD 的 可能不准。
- 在 Q-Learning 中,没有所谓的 ,用的是 对 进行描述。
- 讲了几个基本的 Tips ,在 DQN 的原始文章中都有提到过。
- 接着,介绍了一些高阶的 DQN 的 tips 。
- 接下来,介绍了 Continuous Actions 。
文章目录
小细节
basic tips
Target Network
如上,在训练时,通常会使用一个 Target Network 。
Exploration
使用 进行探索,并不是一个好的选择,对于采样来说。
Replay Buffer
如上,值得注意的是,buffer 中有不同策略的经验;因此这是一个 Off-policy 的训练。
Tips of Q-Learning
Double DQN
如上,Q-value 容易被“高估”,超过实际的值。
Why
如上,为什么 Q-value 总是被高估呢?上面有四个动作,其总会选择被高估的动作。
如上,用两个 Q ,如果 Q 高估了,但是 Q’ 没有高估,二者互补。在实际操作中,目标网络就是第二个 Q 。
Dueling DQN
Dueling DQN 只是改了网络的架构。
如上,其将 与 拆开输出,并且 。
Why
我们在训练时,修正的是 的值,假设我们只修正了两个 action 的值,但是神经网络可能自动地修正了 的值,因此,这个状态下的其他动作的值也随之被泛化。
为了达到如上效果,一般来讲,我们会做一些约束,让其拥有泛化效果:让 A 的列的和为 0
。让网络倾向于改变 V 来解决问题。
How
如上,实作中,我们会在 前,对 的输出做一个 Normalization 。
Prioritized Reply
如上,有些数据,带来的 TD error 较大;实际上,这些数据是比较重要的,因此,要给其较高的可能性,让其容易被采样到。
此外,我们还可能因此更改更新式
。
Multi-step
如上,即 n 步自举,结合了 MC 与 TD 。
Noisy Net
在每一 episode 开始时,对 Q function 加 noise 。
如上,为网络添加参数,实际上是一种“有系统地尝试”。
Distributional Q-function
这个用的不多。
我们的 Q 是一个期望值,但是,不同的分布可能有同一个期望值。
因此,我们不输出 Q 值,直接输出 Q 的分布。
Rainbow
如上,Rainbow将上述方法结合,比较强。
Continuous Actions
如上,有两个直观的思路:
- 列出一些 a ,找最大的;
- 用梯度上升找最优解。
上述两个方法成本都很高,因此,提出第 3 种方法,设计一种结构。
Design a network
如上,输入,网络会输出 3 个东西:,与。
得到这 三个变量后,再进行如上公式的计算,其中带入了 , 是一个向量,代表一个动作。
最终, 是一个数,就是 Q-value 的值。
那么,如何求出最大的动作向量的值呢?
观察到上式中,第一项一定是小于等于 0 的
(因为之前输出是做了些正则,具体见原论文);那么我们令 即可,则最终 。
AC
此外,还有 AC 方法也可以解决这个问题。