强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法
强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法
1.核心词汇
同策略(on-policy):要学习的智能体和与环境交互的智能体是同一个时对应的策略。
异策略(off-policy):要学习的智能体和与环境交互的智能体不是同一个时对应的策略。
重要性采样(important sampling):使用另外一种分布,来逼近所求分布的一种方法,在强化学习中通常和蒙特卡洛方法结合使用,公式如下:
$$
\int f(x) p(x) \mathrm{d} x=\int f(x) \frac{p(x)}{q(x)} q(x) \mathrm{d} x=E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}]=E_{x \sim p}[f(x)]
$$
我们在已知 $q$ 的分布后,可以使用上式计算出从 $p$ 这个分布采样 $x$ 代入 $f$ 以后得到的期望值。近端策略优化(proximal policy optimization,PPO):避免在使用重要性采样时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 与在 $\theta '$ 下的 $p_{\theta'}\left(a_{t} | s_{t}\right)$ 相差太多,导致重要性采样结果偏差较大而采取的算法。具体来说就是在训练的过程中增加一个限制,这个限制对应 $\theta$ 和 $\theta'$ 输出的动作的KL散度,来衡量 $\theta$ 与 $\theta'$ 的相似程度。
2.常见问题汇总
2.1 基于同策略的策略梯度有什么可改进之处?或者说其效率较低的原因在于什么?
经典策略梯度的大部分时间花在数据采样上,即当我们的智能体与环境交互后,我们就要进行策略模型的更新。但是对于一个回合我们仅能更新策略模型一次,更新完后我们就要花时间重新采样数据,然后才能再次进行如上的更新。
所以我们可以使用异策略的方法,即使用另一个不同的策略和演员,与环境进行交互并用所采样的数据进行原先策略的更新。这样等价于使用同一组数据,在同一个回合,我们对整个策略模型更新了多次,这样会更加有效率。
2.2 使用重要性采样时需要注意的问题有哪些?
我们可以在重要性采样中将 $p$ 替换为任意的 $q$,但是本质上要求两者的分布不能差太多,即使我们补偿了不同数据分布的权重 $\frac{p(x)}{q(x)}$ 。 $E_{x \sim p}[f(x)]=E_{x \sim q}\left[f(x) \frac{p(x)}{q(x)}\right]$ ,当我们对于两者的采样次数都比较多时,最终的结果会是较为接近的。但是通常我们不会取理想数量的采样数据,所以如果两者的分布相差较大,最后结果的方差将会很大。
2.3 基于异策略的重要性采样中的数据是从 $\theta'$ 中采样出来的,从 $\theta$ 换成 $\theta'$ 有什么优势?
使用基于异策略的重要性采样后,我们不用 $\theta$ 与环境交互,而是由另外一个策略 $\theta'$ 进行示范。 $\theta'$ 的任务就是示范给 $\theta$ 看,它和环境交互,告诉 $\theta$ 它与环境交互会发生什么事,以此来训练 $\theta$ 。我们要训练的是 $\theta$ ,$\theta'$ 只负责做示范,负责与环境交互,所以采样出来的数据与 $\theta$ 本身是没有关系的。所以就可以让 $\theta'$ 与环境交互采样大量数据,$\theta$ 可以更新参数多次。一直到 $\theta$ 训练到一定的程度、参数更新多次以后,$\theta'$ 再重新采样,这就是同策略换成异策略的妙处。
2.4 在本节中近端策略优化中的KL散度指的是什么?
本质来说,KL散度是一个函数,其度量的是两个动作(对应的参数分别为 $\theta$ 和 $\theta'$ )间的行为距离,而不是参数距离。这里的行为距离可以理解为在相同状态下输出动作的差距(概率分布上的差距),概率分布即KL散度。
3.面试必知必答
3.1 友善的面试官:请问什么是重要性采样呀?
使用另外一种分布,来逼近所求分布的一种方法,算是一种期望修正的方法,公式如下:
$$
\int f(x) p(x) \mathrm{d} x=\int f(x) \frac{p(x)}{q(x)} q(x) \mathrm{d} x=E_{x \sim q}[f(x){\frac{p(x)}{q(x)}}]=E_{x \sim p}[f(x)]
$$
我们在已知 $q$ 的分布后,可以使用上式计算出从 $p$ 分布的期望值。也就可以使用 $q$ 来对 $p$ 进行采样了,即重要性采样。
3.2 友善的面试官:请问同策略和异策略的区别是什么?
我可以用一句话概括两者的区别,即生成样本的策略(价值函数)和网络参数更新时的策略(价值函数)是否相同。具体来说,同策略,生成样本的策略(价值函数)与网络更新参数时使用的策略(价值函数)相同。Sarsa算法就是同策略的,其基于当前的策略直接执行一次动作,然后用价值函数的值更新当前的策略,因此生成样本的策略和学习时的策略相同,算法为同策略算法。该算法会遭遇探索-利用窘境,仅利用目前已知的最优选择,可能学不到最优解,不能收敛到局部最优,而加入探索又降低了学习效率。 $\varepsilon$-贪心算法是这种矛盾下的折中,其优点是直接了当、速度快,缺点是不一定能够找到最优策略。异策略,生成样本的策略(价值函数)与网络更新参数时使用的策略(价值函数)不同。例如,Q学习算法在计算下一状态的预期奖励时使用了最大化操作,直接选择最优动作,而当前策略并不一定能选择到最优动作,因此这里生成样本的策略和学习时的策略不同,即异策略算法。
3.3 友善的面试官:请简述一下近端策略优化算法。其与信任区域策略优化算法有何关系呢?
近端策略优化算法借鉴了信任区域策略优化算法,通过采用一阶优化,在采样效率、算法表现以及实现和调试的复杂度之间取得了新的平衡。这是因为近端策略优化算法会在每一次迭代中尝试计算新的策略,让损失函数最小化,并且保证每一次新计算出的策略能够和原策略相差不大。换句话说,其为在避免使用重要性采样时由于在 $\theta$ 下的 $p_{\theta}\left(a_{t} | s_{t}\right)$ 与在 $\theta'$ 下的 $p_{\theta'}\left(a_{t} | s_{t}\right)$ 差太多,导致重要性采样结果偏差较大而采取的算法。
更多优质内容请关注公号:汀丶人工智能
相关链接以及码源见文末
强化学习从基础到进阶-案例与实践含码源-强化学习全系列超详细算法码源齐全
强化学习从基础到进阶-常见问题和面试必知必答[8]:近端策略优化(proximal policy optimization,PPO)算法的更多相关文章
- 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)
深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO) 2018-07-17 16:54:51 Reference: https://b ...
- [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...
- 迈向高阶:优秀Android程序员必知必会的网络基础
1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...
- .NET零基础入门09:SQL必知必会
一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...
- 第3节:Java基础 - 必知必会(上)
第3节:Java基础 - 必知必会(上) 本篇是基础篇的第一小节,我们从最基础的java知识点开始学习.本节涉及的知识点包括面向对象的三大特征:封装,继承和多态,并且对常见且容易混淆的重要概念覆盖和重 ...
- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
- 【MySQL 基础】MySQL必知必会
MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...
- 《SQL必知必会》学习笔记整理
简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- 学习《SQL必知必会(第4版)》中文PDF+英文PDF+代码++福达BenForta(作者)
不管是数据分析还是Web程序开发,都会接触到数据库,SQL语法简洁,使用方式灵活,功能强大,已经成为当今程序员不可或缺的技能. 推荐学习<SQL必知必会(第4版)>,内容丰富,文字简洁明快 ...
随机推荐
- python中的代码运行时间获取方式
python中的代码运行时间获取方式 我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈就是电脑运行代码所需要的时间. 使用time模块对代码 ...
- xv6book阅读 chapter1
xv6book主要研究了xv6如何实现它的类Unix接口,但是其思想和概念不仅仅适用于Unix.任何操作系统都必须将进程多路复用到底层硬件上,相互隔离进程,并提供受控制的进程间通信机制. 1 了解xv ...
- DNS--主从
操作系统:centos7.8 DNS-master:192.168.198.128 DNS-slave:192.168.198.129 一 主从同步过程 master修改完成重启后 将传送notify ...
- <vue 基础知识 8、购物车样例>
代码结构 一. 效果 1. 展示列表v-for 2. 购买数量增加减少,使用@click触发回调函数. 减少的时候如果已经为1了就不让继续减少,使用了v-bind绑定属性 3. 移除也是使用@ ...
- 最简单的http文件服务器
概述 需求来了,部署一个简单方便的文件服务器,可以查看.下载文件,不需要鉴权,越简单越好. 环境 centos:CentOS release 7.0 (Final)或以上版本 httpd:2.4.6 ...
- zzuli 1023
java 读入单个字符 import java.util.Scanner; public class Main{ public static void main(String args[]){ Sca ...
- Oracle数据库学习总结
SQL 笔记 ch3_cn 1.数据类型记录 char(n) 定长字符 varchar(n) 可变长字符 numeric(p,d) 定点数,总位数p,小数点后位数q float(n) n位浮点数 2. ...
- linux 开机默认进入命令行模式
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 使用Spring Data JPA实现审计功能,记录创建人、创建时间、最后修改时间和最后修改人
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- [转帖]彻底搞明白 GB2312、GBK 和 GB18030
https://zhuanlan.zhihu.com/p/453675608 日常工作的过程中,关于字符编码的问题经常让人头疼不已,这篇文章就来捋一捋关于 GB2312.GBK.GB18030 相关的 ...