我已经有两年 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)Vπ(s) ,可以用 Monte-Carlo based approach 或者 Temporal-difference approach 。比较了 MC 与 TD 的差别:MC 的 variance 较大;但是 TD 的 VVV 可能不准。
  4. 在 Q-Learning 中,没有所谓的 π\piπ ,用的是 QQQ 对 π\piπ 进行描述。
  5. 讲了几个基本的 Tips ,在 DQN 的原始文章中都有提到过。
  6. 接着,介绍了一些高阶的 DQN 的 tips 。
  7. 接下来,介绍了 Continuous Actions 。

文章目录

  • 本节内容综述
  • 小细节
    • basic tips
      • Target Network
      • Exploration
      • Replay Buffer
    • Tips of Q-Learning
      • Double DQN
        • Why
      • Dueling DQN
        • Why
        • How
      • Prioritized Reply
      • Multi-step
      • Noisy Net
      • Distributional Q-function
      • Rainbow
    • Continuous Actions
      • Design a network
      • AC

小细节

basic tips

Target Network


如上,在训练时,通常会使用一个 Target Network 。

Exploration


使用 a=argmax⁡aQ(s,a)a = arg \max_a Q(s,a)a=argmaxa​Q(s,a) 进行探索,并不是一个好的选择,对于采样来说。

Replay Buffer


如上,值得注意的是,buffer 中有不同策略的经验;因此这是一个 Off-policy 的训练。

Tips of Q-Learning

Double DQN


如上,Q-value 容易被“高估”,超过实际的值。

Why


如上,为什么 Q-value 总是被高估呢?上面有四个动作,其总会选择被高估的动作。

如上,用两个 Q ,如果 Q 高估了,但是 Q’ 没有高估,二者互补。在实际操作中,目标网络就是第二个 Q 。

Dueling DQN

Dueling DQN 只是改了网络的架构。

如上,其将 V(s)V(s)V(s) 与 A(s,a)A(s,a)A(s,a) 拆开输出,并且 Q(s,a)=A(s,a)+V(s)Q(s,a) = A(s,a) + V(s)Q(s,a)=A(s,a)+V(s) 。

Why


我们在训练时,修正的是 QQQ 的值,假设我们只修正了两个 action 的值,但是神经网络可能自动地修正了 VVV 的值,因此,这个状态下的其他动作的值也随之被泛化。

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

How


如上,实作中,我们会在 A+VA+VA+V 前,对 AAA 的输出做一个 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


如上,输入sss,网络会输出 3 个东西:μ\muμ,Σ\SigmaΣ与VVV。

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)Q(s,a)=−(a−μ(s))TΣ(s)(a−μ(s))+V(s)

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

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

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

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

AC


此外,还有 AC 方法也可以解决这个问题。

【李宏毅2020 ML/DL】P112-114 Q-Learning: Introduction Tips Continuous Actions相关推荐

  1. 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  2. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  3. 【李宏毅2020 ML/DL】P66 Self-supervised Learning

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课四十分钟,由助教 Chi-Liang Liu 讲解 Self-Supervised Lea ...

  4. 【李宏毅2020 ML/DL】P88-96 Meta Learning – MAML | Reptile

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 元学习就是 Learn to learn ,让机器变成 a better learner .Me ...

  5. 【李宏毅2020 ML/DL】P85 Transfer Learning

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 要做一项任务,但是数据不直接与任务相关.这就涉及到了迁移学习.在现实生活中,我们其实不断在做&q ...

  6. 【李宏毅2020 ML/DL】P60-61 Unsupervised Learning - Deep Generative Model

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  7. 【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA Matrix Factorization

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  8. 【李宏毅2020 ML/DL】P22 Unsupervised Learning - Word Embedding

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  9. 【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第6篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...

  10. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...

最新文章

  1. js 跨页面的全局变量
  2. 找出数组中不重复的值php_PHP查找数值数组中不重复最大和最小的10个数的方法...
  3. deploy java eclipse_使用eclipse的mvn deploy部署本地包到maven私有库
  4. linux双机ssh互信方法总结
  5. PHP 入门 - 2.函数
  6. 用积木做了个无人机。
  7. C# 常用接口学习 IEnumerableT
  8. Vue3项目 --- Mock.js模拟数据测试
  9. 【Plesk经验分享】无法创建备份怎么办?
  10. matlab 简介_MATLAB简介
  11. 小米便签源码分析——data包
  12. 本科生毕业论文(设计)撰写规范
  13. TDSQL TCA 分布式实例特点初探--分布表和SQL透传
  14. 常微分方程各种类型方程表格汇总
  15. WDM和OTN技术简介
  16. 多点触摸画板(MultiTouchCanvas)
  17. 北斗GPS系统在车辆管理系统中的运用与北斗GPS车辆管理调度系统平台建设方案硬件设备
  18. MFC C++知道当前日期,求昨天或前天的日期
  19. opc读取ab的plc数据_AB PLC通过opc方式连接的方法
  20. 人工智能之高等数学1

热门文章

  1. 关于LIMIT(超出界限时,SQL执行也没有问题,而且结果集中只会到有数据的最后一条记录,不会出现空,已经过测试)
  2. 学html需要什么软件,在上海学html需要学什么软件?
  3. 【Oracle】分区表中索引状态为N/A
  4. 解决导出CSV后在EXCEL打开纯数字前面0丢失问题
  5. mysql union (all) 后order by的排序失效问题解决
  6. LINUX下解决netstat查看TIME_WAIT状态过多问题
  7. 为什么我们使用volatile关键字? [重复]
  8. Laravel 5无法打开所需的bootstrap /../ vendor / autoload.php
  9. 生成主键ID,唯一键id,分布式ID生成器雪花算法代码实现
  10. history.go(-1)返回页面后,此页面中的input标签隐藏域中的值消失