3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理

人工智能39

文章地址:
PPO: Proximal Policy Optimization Algorithms

一. PPO资料

PPO原理讲解BLOG①:这篇blog详细讲了PPO算法的产生过程及原理,包含部分理论推导,看完这篇blog基本就理解PPO了。
PPO原理讲解BLOG②:可参考,其中包含部分tensorflow实现代码。

二. PPO原理简述

2.1 背景

PPO是基于基本的Policy Gradient进行改进的算法,关于PG的更新过程这里不详细描述了,可以根据上述BLOG①或其他资料推导理解一下即可。总之,得到的关于PG的策略更新过程的loss可以写为:
L ( θ ) = E [ l o g π ( a ∣ s , θ ) f ( s , a ) ] = ∑ l o g π ( a ∣ s , θ ) f ( s , a ) L(\theta) = \mathrm{E} [log\pi(a|s,\theta)f(s,a)]= \sum log\pi(a|s,\theta)f(s,a)L (θ)=E [l o g π(a ∣s ,θ)f (s ,a )]=∑l o g π(a ∣s ,θ)f (s ,a ) L P G ( θ ) = E ^ t [ log ⁡ π θ ( a t ∣ s t ) A ^ t ] L^{P G}(\theta)=\hat{\mathbb{E}}{t}\left[\log \pi{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right]L P G (θ)=E ^t ​[lo g πθ​(a t ​∣s t ​)A ^t ​]
其中f ( s , a ) f(s,a)f (s ,a )是对状态动作对的价值评估,计算该值有多种方式(可查看BLOG①),通常采用Advantage的方式更优,但为了更好的平衡偏差和方差的问题,一般采用GAE即T D ( λ ) TD(\lambda)T D (λ)的形式

T D ( λ ) TD(\lambda)T D (λ)可以理解为对n个n-step 的估计值作加权平均得到的结果

2.2 原理

PG所存在的一个问题是在更新计算Advantage时并不准确,实际上是有偏差的,如果policy一次更新得太远,那么下次基于更新后的policy进行采样的动作就会存在很大的偏差,如此就会陷入一个恶性循环,TRPO的核心思想是将policy的更新约束在一个trust region内,这样就可保证policy整个更新过程是单调上升的。如下图所示:
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
这里注意TRPO的loss与之前所推导得到的PG的loss不一样,这是由于采用了importance sampling。TRPO是on-policy的,为什么这里采用IS?对于TRPO及PPO而言,虽然是基于on-policy的思想构建算法,但是对于on-policy而言,采样得到的数据仅训练一次就丢掉有些浪费,因此通常是将一次采样得到的经验数据分为多个minibatch进行训练,一般的还会sample reuse一下。如此一来,策略更新时所依赖的经验数据并非是实时采样得到的数据,这样就会造成一种off-policy的情况,因此就会引入importance sampling进行纠正。

IS实际上实现的过程就是用一种分布的采样均值来代替另一种分布的期望

PPO的主要贡献是提出了clipped surrogate objective,如下所示
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
note that the probability ratio r r r is clipped at 1 − ϵ 1-\epsilon 1 −ϵor 1 + ϵ 1+\epsilon 1 +ϵdepending on whether the advantage is positive or negative

ϵ \epsilon ϵ通常来说是一个比较小的值,论文中作者设置为0.2时在比较好的实验效果,这个clip操作实际上是限制了策略更新的幅度,避免策略的一次更新偏离太远。

PPO论文中还给出了对TRPO方法的一种近似/替代
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
即使用一个penalty代替TRPO中的constraint。这里作者引入了一个系数β \beta β,文中针对β \beta β又给出了两种情况,一种是β \beta β固定的情况一种是自适应调整β \beta β值的情况。具体查看论文即可

PPO最终的loss如下:
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
最终得到的PPO的算法伪代码如下:
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
这里借鉴BLOG①的资料讨论一下PPO在一次iteration中更新了多少次?一次sample reuse的概念和使用:
从算法伪代码中可以看出,PPO单次采样NT的经验数据,然后按照某个minibatch size训练K个epochs: 假设设置K=3,minibatch size = NT/4,因此就可以得到PPO在一次iteration中就更新了12次。 这里的K把它定义为sample reuse ratio,如果这个ratio=1,那么就相当于完全on-policy,使得经验数据利用率很低。最理想的情况下是一次采样多次训练更新,一直更新到clip函数的边界,这样就可以最大化的利用单次所采样的经验数据。
按照上述推导过程,也就是说actor或worker越大,单次采样的数据量也就越多,在控制训练次数前提下的batch size也就越大,对梯度的估计也就越准确,bias也就越小,效果越好。

openai dota five对sample reuse有不同的定义
3.深度强化学习——PPO(Proximal Policy Optimization)算法资料+原理整理
其含义就是每秒样本使用量除以样本的生成量

先写到这里吧,后续有好的资料或者代码实现再更新

Original: https://blog.csdn.net/qq_38587510/article/details/123463954
Author: EdenGabriel
Title: 3.深度强化学习------PPO(Proximal Policy Optimization)算法资料+原理整理

相关文章
Pytorch1.7.0—GPU安装教程 人工智能

Pytorch1.7.0—GPU安装教程

一. 软件配备 检查显卡驱动: nvidia-smi 可知,CUDA支持的最高版本为11.4,因为小编之前安装的tensorflow2.4.0用的是CUDA11.0,所以为避免安装其他版本,就沿用CU...
软件缺陷智能分析技术(1) - 技术地图 人工智能

软件缺陷智能分析技术(1) – 技术地图

软件缺陷智能分析技术(1) - 技术地图 随着业务越来越复杂,代码的规模和所需要的人手也在不停地增加,导致成本朝向规模不经济的方向发展。需求推动技术进步,应用各种技术去自动预测、理解、定位、修复bug...
opencv物体识别-识别水果 人工智能

opencv物体识别-识别水果

前言 玩一玩用opencv做一些简单的物体识别 1.思路讲解 我们基于简单的opencv的阈值分割,通过这个阈值分割,我们能把我们需要识别的物体在二值图里面变成白色,其余的变成黑色。然后对我们分割出来...
LSTM股票价格预测 人工智能

LSTM股票价格预测

ID:399899 注: 这里使用的数据源是Tushare LSTM股票价格预测实验 实验介绍 使用LSTM进行股票价格的预测,用到的框架主要包括:TensorFlow2.0,主要用于深度学习算法的构...
机器学习实验(三) 人工智能

机器学习实验(三)

一、实验目的 二、实验原理 本次实验采用两种均值聚类算法实现聚类 其主要工作原理是从某个核心点出发向外扩张,从而得到一个包含核心点和边界点的最大化区域。具体实现步骤如下: 三、聚类步骤 四、代码和执行...
使用 Visio 绘制卷积示意图 人工智能

使用 Visio 绘制卷积示意图

卷积操作是深度学习网络的基石,说到神经网络模型设计就免不了提起卷积。要想解释清楚卷积的原理,卷积操作的示意图就必不可少,那么如何能够快速绘制卷积示意图呢? 1. 卷积示意图分析 下图是百度飞桨讲解卷积...
关于主播表现能力的调研 人工智能

关于主播表现能力的调研

调研数据:美妆类的直播间 影响因子: 1.长相 2.音量 2.语速:单位时间内说话的字数 3.流畅度:衡量方式可以通过语义以及音频的停顿。 4.吐字清晰度:可以通过语音识别的置信度。 5.音色:可能能...