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

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

本节内容综述

  1. PPO 是 PG 的进阶方法,是 OpenAI 默认的强化学习方法。
  2. 首先复习 PG 。不再记录。有几个小技巧,记录一下。
  3. 要引出 PPO ,首先介绍 On-policy 同轨策略与 Off-policy 离轨策略。最后构造了 Jθ′(θ)J^{\theta'}(\theta)Jθ′(θ) ,并提出问题:两个分布相差太大时,就会产生偏差。那么,什么时候停下呢?引出 PPO 。
  4. 介绍 PPO / TRPO 。

文章目录

  • 本节内容综述
  • 小细节
    • Tips of PG
      • Tip 1: Add a Baseline
      • Tip 2: Assign Suitable Credit
    • On-policy v.s. Off-policy
      • Importance Sampling
      • Issue of Importance Sampling
      • On-policy → Off-policy
    • PPO / TRPO
      • PPO algorithm
      • PPO2
      • Experimental Results

小细节

Tips of PG

Tip 1: Add a Baseline


上节课讨论过,因为采样的缺失,容易导致一些采样少的 action 价值偏低。

为了解决这个问题,我们希望我的 R 并不总是正的。

可以设 b≈E[R(τ)]b \approx E[R(\tau)]b≈E[R(τ)] 。

Tip 2: Assign Suitable Credit


如上,有些行为是不好的,但可能最后结果是好的,但是我们不鼓励那些之前的不好的行为;反之亦然。这在采样不多时,问题尤其明显。
如上,我们只考虑执行完这个动作后,造成的影
响。

并且,会在未来的奖励值做一个折扣。

On-policy v.s. Off-policy

与环境交互即 On-policy ,但是比较消耗资源。

Off-policy 可以看别的策略(看别人玩)来学习。

Importance Sampling


如上,只能从 q(x)q(x)q(x) 采样,但是我们的式子是针对 Ex∼pE_{x\sim p}Ex∼p​ 的;经过重要性采样,得到 Ex∼qE_{x\sim q}Ex∼q​ 。

Issue of Importance Sampling


如上,尽管二者平均数一样,但是方差不同。


如上,假设 ppp 、 qqq 、 fff 分布如上。如果只进行大量采样,采样到了 p(x)p(x)p(x) 那里的数据,则其权重很大,可以修正在 q(x)q(x)q(x) 那里大量采样带来的偏差,让 EEE “回归正轨”。

但是如果采样不够,则 EEE 会“偏离正轨”。

On-policy → Off-policy


如上,将采样率引入。

如上,应该注意,我们的优势函数是来自于采样数据的。此外,我们假设状态的出现概率与 θ\thetaθ 即互动策略关系不大,因此约掉这项(此外,这项也不太可以用数学描述)。最终,我们总结出 Jθ′(θ)J^{\theta'}(\theta)Jθ′(θ)。

但是问题是,两个分布相差太大时,就会产生偏差。那么,什么时候停下呢?

PPO / TRPO 将解决这个问题。

PPO / TRPO

PPO 之前的文章做过一些推导,最终决定,要在 JJJ 中加一个约束。

PPO 的前身,TRPO 没有把这个约束直接放到 JJJ 中。但是这样有点难处理。

要注意,KLKLKL 描述的不是参数上的距离,而是行为上的距离。

PPO algorithm


如上,在 PPO 中,还要同态调整 β\betaβ ,即 Adaptive KL Penalty 。

但是这样算 KLKLKL 有点复杂。

因此引出 PPO2 。

PPO2


如上,用 PPO2 简化计算,无需计算 KLKLKL 。

clipclipclip 函数的意思其实很简单,如上。

min(clip())min(clip())min(clip()) 后,的效果如上图。

为什么其其效果?

  • 我们希望 pθp_\thetapθ​ 比 pθkp_{\theta^k}pθk​ 还要大,但是不要大太多。

Experimental Results


发现 PPO 效果是不错的。

【李宏毅2020 ML/DL】P110-111 Policy Gradient Proximal Policy Optimization相关推荐

  1. 【李宏毅2020 ML/DL】P1 introduction

    [李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...

  2. 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout

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

  3. 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM

    李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...

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

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

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

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

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

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

  7. 【李宏毅2020 ML/DL】P15 Why Deep-

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

  8. 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN

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

  9. 【李宏毅2020 ML/DL】P115-117 Actor-Critic Sparse Reward Imitation Learning

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...

  10. 【李宏毅2020 ML/DL】P107-109 Deep Reinforcement Learning | Scratching the surface

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...

最新文章

  1. ceph pg_num 数值计算
  2. 统计数据库每天的数据增长量的脚本
  3. 多重信号辅助音频分离,让你在嘈杂环境也能指哪听哪儿
  4. emoji表情过滤处理
  5. cut out数据增强_ChIP-Seq数据分析(PE型)
  6. MPLAB IDE 编译器文件归类整理
  7. 神经网络画图-ConvNetDraw(简单实用)
  8. python爬虫设计思路_python网络爬虫(9)构建基础爬虫思路
  9. hadoop源码学习(-)
  10. Java教程01.Java简介与环境配置
  11. 创邻科技荣登机器之心Pro·AI 趋势先锋 Insight 榜单
  12. PLC, LABVIEW,C#,浅谈自动化控制工程师编程语言的选择
  13. 考研复试之路:不努力怎敢轻易言弃
  14. Invalid watch source: undefined A watch source can only be a getter/effect function, a ref, a react
  15. 云队友丨对话“中国奥格威”:不要迷失在点击率上,销售才是根本
  16. python 股票行情_Python结合钉钉实时自动监控股票行情,上班炒股再也不怕老板发现...
  17. 做公关就是做产品:新媒体时代的公关怎么做
  18. 常用Java注释标签(Java comment tags)
  19. 洛谷P1085——不高兴的津津(c++)
  20. (附源码)计算机毕业设计SSM智慧校园防疫管理平台

热门文章

  1. 记Outlook插件与Web页面交互的各种坑 (含c# HttpWebRequest 连接https 的完美解决方法)
  2. MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法
  3. framework7的改进,以及与vue组合使用遇到的问题以及解决方法 (附vue的原理)
  4. 安装win8/win10提示无法在驱动器0分区上安装windows解决方法
  5. 使用pandas循环数据帧的最有效方法是什么? [重复]
  6. PHP期望T_PAAMAYIM_NEKUDOTAYIM?
  7. 找到的程序集的清单定义与程序集引用不匹配
  8. 在git 2.13之前,只保存多个已更改的文件中的一个文件
  9. win10卸载db2_如何在Linux下干净卸载db2数据库
  10. c++ string 长度限制_面试中要会的String相关问题