回顾

传统的策略梯度算法以下式作为策略网络的损失:
g^=E^t[∇θlog⁡πθ(at∣st)A^t]\hat{g}=\hat{\mathbb{E}}_{t}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right]g^​=E^t​[∇θ​logπθ​(at​∣st​)A^t​]
具体在代码实现中就是计算log⁡πθ(at∣st)A^t\log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}logπθ​(at​∣st​)A^t​(蒙特卡洛近似)后反向传播更新策略网络。
容易出现:log⁡πθ(at∣st)A^t\log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}logπθ​(at​∣st​)A^t​是一个绝对值特别大的数,这将导致πθ(at∣st)\pi _\theta ( a _ { t } | s _ { t } )πθ​(at​∣st​)与πθnew(at∣st)\pi _{\theta_{new}} ( a _ { t } | s _ { t } )πθnew​​(at​∣st​)差别较大,这不利于收敛:

PPO使用clip解决这个问题

首先PPO在clip前的策略网络损失值如下:
LCPI(θ)=E^t[πθ(at∣st)πθold(at∣st)A^t]=E^t[rt(θ)A^t]L^{C P I}(\theta)=\hat{\mathbb{E}}_{t}\left[\frac{\pi_{\theta}\left(a_{t} \mid s_{t}\right)}{\pi_{\theta_{\mathrm{old}}}\left(a_{t} \mid s_{t}\right)} \hat{A}_{t}\right]=\hat{\mathbb{E}}_{t}\left[r_{t}(\theta) \hat{A}_{t}\right]LCPI(θ)=E^t​[πθold​​(at​∣st​)πθ​(at​∣st​)​A^t​]=E^t​[rt​(θ)A^t​]
这个式子其实和传统策略梯度算法的log⁡πθ(at∣st)A^t\log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}logπθ​(at​∣st​)A^t​大同小异,紧接着对上式做如下操作:
LCLIP(θ)=E^t[min⁡(rt(θ)A^t,clip⁡(rt(θ),1−ϵ,1+ϵ)A^t)]L^{C L I P}(\theta)=\hat{\mathbb{E}}_{t}\left[\min \left(r_{t}(\theta) \hat{A}_{t}, \operatorname{clip}\left(r_{t}(\theta), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t}\right)\right]LCLIP(θ)=E^t​[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1+ϵ)A^t​)]
我们分析LCLIP(θ)L^{C L I P}(\theta)LCLIP(θ)和rt(θ)r_t(\theta)rt​(θ)的关系,可以绘制出如下两张图:

首先我们需要明确优势函数(advantage function)的定义及含义:
Aπ(st,at)=Qπ(st,at)−Vπ(st)A ^ { \pi } ( s _ { t} ,a_t ) = Q ^ { \pi } ( s _ { t },a_t ) - V ^ { \pi } ( s _ { t } )Aπ(st​,at​)=Qπ(st​,at​)−Vπ(st​)
又因为Vπ(st)V ^ { \pi } ( s _ { t } )Vπ(st​)是状态sts _ { t }st​下对Qπ(st,at)Q ^ { \pi } ( s _ { t },a_t )Qπ(st​,at​)的加权平均,因此Vπ(st)V ^ { \pi } ( s _ { t } )Vπ(st​)反映的是在当前策略下做出动作的平均累计折扣回报的期望,可以理解为平均水平,因此Aπ(st,at)A ^ { \pi } ( s _ { t} ,a_t )Aπ(st​,at​)反映的是做动作ata_tat​带来的优势,因此Aπ(st,at)>0A ^ { \pi } ( s _ { t} ,a_t )>0Aπ(st​,at​)>0的情况下策略梯度算法将向着提高π(at∣st)\pi(a_t|s_t)π(at​∣st​)的方向前进,当Aπ(st,at)<0A ^ { \pi } ( s _ { t} ,a_t )<0Aπ(st​,at​)<0时策略梯度算法将向着减小π(at∣st)\pi(a_t|s_t)π(at​∣st​)的方向前进(这里也可以这么理解:最大化loss,当A>0,自然是要增大r,就是增大π\piπ,当A<0,要最大化loss就要最小化r,因此减小π\piπ)。

分析第一张图:只要当前策略在动作ata_tat​下的π\piπ相对于上次更新前πold\pi_{old}πold​之比过大,即超过1+ϵ1+\epsilon1+ϵ,根据图中函数关系可知loss关于r的梯度为0,这次反向传播不会对权重产生影响,如果小于1+ϵ1+\epsilon1+ϵ正常更新。
第二张图:A<0,说明这个动作不够好,r是往小的方向更新,但是如果之前更新的比例r已经小于了1−ϵ1-\epsilon1−ϵ,说明更新幅度之前已经比较大了,不建议再往这个方向更新,根据图中函数关系此时loss关于r的梯度为0,不会对权重产生影响。

综上所述: PPO在该动作是好动作的情况下限制它往好的方向(概率增大)过度更新,在该动作是差动作的情况下限制它往差的方向(概率减小)过度更新,从而达到限制更新幅度的想法。

如何理解PPO算法的核心操作clip相关推荐

  1. Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

    近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一.本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如R ...

  2. 基于飞桨PARL实践PPO算法,让“猎豹”学会奔跑!

    点击左上方蓝字关注我们 [飞桨开发者说]陈懿,西交利物浦大学计算机研一,研究方向为:强化学习在游戏领域的应用. 项目背景 20世纪90年代以来,随着计算机技术和数据量的爆发式增长,算力和神经网络得到了 ...

  3. 强化学习组队学习task03—— 策略梯度及 PPO 算法

    文章目录 一.策略梯度 1.策略梯度理论实现 R的梯度算法: 对于该公式的理解: 在计算完R的梯度后,我们就使用策略梯度对参数进行更新 2.策略梯度实现的小技巧 (1)添加一个基准值 (2)分配合适的 ...

  4. ChatGPT通俗导论:从RL之PPO算法、RLHF到GPT-N、instructGPT

    前言 自从我那篇BERT通俗笔记一经发布,然后就不断改.不断找人寻求反馈.不断改,其中一位朋友倪老师(之前我司NLP高级班学员现课程助教老师之一)在谬赞BERT笔记无懈可击的同时,给我建议到,&quo ...

  5. 【数据结构与算法】之深入解析KMP算法的核心原理和实战演练

    一.简介 ① 概念 KMP 算法是一种改进的字符串匹配算法,由 D.E.Knuth,J.H.Morris 和 V.R.Pratt 提出的,因此称它为克努特-莫里斯-普拉特操作,简称 KMP 算法. K ...

  6. 从头到尾彻底理解傅里叶变换算法(上)

    从头到尾彻底理解傅里叶变换算法(上) 前言 第一部分.  DFT 第一章.傅立叶变换的由来 第二章.实数形式离散傅立叶变换(Real DFT) 从头到尾彻底理解傅里叶变换算法.下 第三章.复数 第四章 ...

  7. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

     经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...

  8. 从头到尾彻底理解傅里叶变换算法

    经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide to ...

  9. 信息流广告的核心是什么(信息流推广的核心操作和优化思路)

    一.核心操作 信息流的操作比竞价要简单,可操作的地方其实不是很多.这其中,操作方面分为基础操作.重点操作和平台差异操作.下面一个一个来说. 1.基础操作 基础操作主要是指账户搭建.物料制作. 来看账户 ...

最新文章

  1. [剑指offer] 两个链表的第一个公共结点
  2. 到底什么是MiddleWare(中间件),请用plain English描述
  3. 在SQL Server上该做的和不该做的
  4. ElasticSearch下载安装教程详解【7.10版本】
  5. Windows下编译配置Caffe的GPU版本
  6. 怎样的高管才能得到下属的信任?
  7. 为suse 12.3桌面系统安装金山WPS OFFICE
  8. FL2440-学习记录(三)
  9. MPC控制笔记(一)
  10. HealthKit Swift 教程: 开始
  11. 规划风险应对-规划过程组
  12. utf-8 html转chm,把ANSI格式的TXT文件批量转换成UTF-8文件类型
  13. MySQL从删库到跑路(6):子查询
  14. 【JAVAEE框架】浅谈 Spring 框架的两大核心思想 AOP 与 IOP
  15. 带库的pydroid安装与使用。
  16. 求一个整数的各个位数
  17. An unexpected error prevented the server from fulfill your request.(HTTP500)
  18. SQL中查询MySQL的版本
  19. python 天天基金数据接口
  20. Java使用@Value获取不到值

热门文章

  1. 【笔记】Polygon mesh processing 学习笔记(7)
  2. 冬战柴达木的压裂“将士”
  3. Servlert 下 (HttpServletRequest 类和 HttpServletResponse 类)
  4. MyEclipse更换主题皮肤
  5. 信用卡迎来史上最强风控?利用数据挖掘进行信用卡评分,提高银行的客户风险识别能力
  6. solidworks2020绿色精简版
  7. 无人驾驶汽车的快速发展,主要运用了哪项新技术
  8. TCP/IP详解 第二章 Internet地址结构
  9. 最近设计的一个无人机app的界面
  10. 串口助手测试NB-IoT模块与华为OceanConnect平台通信(BC35-G模块、非常详细)