【李宏毅2020 ML/DL】P110-111 Policy Gradient Proximal Policy Optimization
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline 。我的强化学习资源仓库:
https://github.com/PiperLiu/Reinforcement-Learning-practice-zh
我的 CSDN 强化学习博客集合:
https://blog.csdn.net/weixin_42815609/category_9592110.html
本节内容综述
- PPO 是 PG 的进阶方法,是 OpenAI 默认的强化学习方法。
- 首先复习 PG 。不再记录。有几个小技巧,记录一下。
- 要引出 PPO ,首先介绍 On-policy 同轨策略与 Off-policy 离轨策略。最后构造了 Jθ′(θ)J^{\theta'}(\theta)Jθ′(θ) ,并提出问题:两个分布相差太大时,就会产生偏差。那么,什么时候停下呢?引出 PPO 。
- 介绍 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相关推荐
- 【李宏毅2020 ML/DL】P1 introduction
[李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM
李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...
- 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...
- 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P15 Why Deep-
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P82 Generative Adversarial Network | Improving Sequence Generation by GAN
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 这是我的李宏毅老师 GAN 系列第9篇笔记,GAN 系列: 1:Basic Idea 2:Conditiona ...
- 【李宏毅2020 ML/DL】P115-117 Actor-Critic Sparse Reward Imitation Learning
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...
- 【李宏毅2020 ML/DL】P107-109 Deep Reinforcement Learning | Scratching the surface
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...
最新文章
- ceph pg_num 数值计算
- 统计数据库每天的数据增长量的脚本
- 多重信号辅助音频分离,让你在嘈杂环境也能指哪听哪儿
- emoji表情过滤处理
- cut out数据增强_ChIP-Seq数据分析(PE型)
- MPLAB IDE 编译器文件归类整理
- 神经网络画图-ConvNetDraw(简单实用)
- python爬虫设计思路_python网络爬虫(9)构建基础爬虫思路
- hadoop源码学习(-)
- Java教程01.Java简介与环境配置
- 创邻科技荣登机器之心Pro·AI 趋势先锋 Insight 榜单
- PLC, LABVIEW,C#,浅谈自动化控制工程师编程语言的选择
- 考研复试之路:不努力怎敢轻易言弃
- Invalid watch source: undefined A watch source can only be a getter/effect function, a ref, a react
- 云队友丨对话“中国奥格威”:不要迷失在点击率上,销售才是根本
- python 股票行情_Python结合钉钉实时自动监控股票行情,上班炒股再也不怕老板发现...
- 做公关就是做产品:新媒体时代的公关怎么做
- 常用Java注释标签(Java comment tags)
- 洛谷P1085——不高兴的津津(c++)
- (附源码)计算机毕业设计SSM智慧校园防疫管理平台
热门文章
- 记Outlook插件与Web页面交互的各种坑 (含c# HttpWebRequest 连接https 的完美解决方法)
- MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法
- framework7的改进,以及与vue组合使用遇到的问题以及解决方法 (附vue的原理)
- 安装win8/win10提示无法在驱动器0分区上安装windows解决方法
- 使用pandas循环数据帧的最有效方法是什么? [重复]
- PHP期望T_PAAMAYIM_NEKUDOTAYIM?
- 找到的程序集的清单定义与程序集引用不匹配
- 在git 2.13之前,只保存多个已更改的文件中的一个文件
- win10卸载db2_如何在Linux下干净卸载db2数据库
- c++ string 长度限制_面试中要会的String相关问题