【强化学习篇】on-policy 和 off-policy 的区别

本质区别:

  • 学习的 agent和环境互动的 agent同一个,是on-policy(同策略)

  • 要学习的 agent 跟和环境互动的 agent 不是同一个,是off-policy(异策略)

on-policy 与 off-policy值函数:

  • on-policy与off-policy区别是:更新值函数时是否只使用当前策略所产生的样本.

先来看看on-policy值函数演算为off-policy的公式推导:

(1)on-policy的梯度为:

on-policy的训练策略是actor用当前policy跟环境交互采样数据data,即为

,然后用这些数据根据梯度公式进行更新policy参数,

从上面梯度公式,拿去跟环境做互动的policy(蓝色下划线)和要更新参数的policy是同一个。然而,一旦policy更新参数后,这时两个policy是不一样了,之前采样数据data则不能继续使用了,需要重新再采样数据,这样效率很低。

因此,off-policy就应运而生,目的是re-use采样数据。 on-policy→off-policy的目的是为提高数据利用效率。

(2)重要性采样

假设期望公式:

然而,此时我们只能从 q(x) 分布中采样 xi,其中 q(x) 为任何一种分布。

这时期望公式可以写成:

这时就转换为从q(x)分布去采样x来求期望。

实际操作中,p分布和q分布还是不能差太多,否则会导致一些问题出现。这是因为期望相等,方差Variance不一定相等,公式推导如下:

(3)off-policy的梯度

根据重要性采样的期望公式,on-policy梯度可以转换成以下的梯度公式

从on-policy梯度和off-policy梯度对比,很明显的是off-policy跟环境互动的是 θ‘ ,而不是θ,θ‘ 采样出来的数据与待更新的θ没有关系。

因而,可以实现θ’与环境互动产生大量数据以后,θ可以训练并更新很多次。待训练到一定程度后,θ‘=θ,θ’重新跟环境互动。

off-policy的目标函数

Aθ(st, at)是Accumulated Reward 减去 bias,用来估测动作的相对好坏,如果正就增加动作几率,如果负,就减少几率。

这里有个假设,pθ(st)和pθ′(st)分布是差不多的,比值接近1,可以略去。其中还有另外的原因是算不出来的。

off-policy 到 PPO

前面的假设是pθ与pθ′分布不能差太多,否则结果会不准确。那么,如何避免差太多,就是在训练的时候,多加了一个限制条件。这个限制条件就是θ和θ'这两个model 输出action的KL散度。这就是PPO。

KL 散度并不是θ和θ‘参数的距离,而是行为上的距离,即给同一个state的时候,action几率分布之间的差距。

可以对整到InstructGPT RLHF的PPO训练目标函数:

PPO训练流程:

Reference

[1] 【李宏毅】2020 最新强化学习课程 (完整版) - 5_哔哩哔哩_bilibili

[2] 李宏毅深度强化学习(国语)课程(2018) 笔记(二)Proximal Policy Optimization(PPO)_ppo 李宏毅_Interesting AI的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131458.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCU软核 2. Xilinx Artix7上运行tinyriscv

0. 环境 - ubuntu18 - win10 vivado 2018.3 - git desktop - XC7A35TV12核心板 - ft2232hl小板(用于程序烧录) 1. git克隆源码 Git Desktop -> File -> Clone repository -> -> URL: https://gitee.com/liangkangnan/tinyriscv/ -> Lo…

如何在Python爬虫程序中使用HTTP代理?

在进行网络爬虫时,我们经常需要使用代理服务器来隐藏自己的真实IP地址,以避免被目标网站封禁或限制访问。本文将介绍如何将HTTP代理配置到Python爬虫程序中使用。 什么是HTTP代理? HTTP代理是一种网络代理,它充当客户端和服务器之…

Redis-带你深入学习数据类型zset

目录 1、zset有序集合 2、zset相关命令 2.1、添加或更新指定的元素——zadd 2.2、获取有序集合zset的元素个数相关命令:zcard、zcount 2.3、返回指定区间元素相关命令:zrange、arevrange、zrangebyscore 2.4、删除相关命令:zpopmax、zp…

$ref赋值之后,子组件不渲染(刷新后,$ref父组件传值,子组件不更新数据问题)

在父组件中,点击搜索, 通过this.$refs传值给子组件 this.$refs.GoodsClassNav.paramsAll.keyword key; 子组件结果中不显示, 但是打印this.$refs.GoodsClassNav.paramsAll.keyword,可以打印到最新的值,点击子组件中…

PyQt5通过堆叠布局实现选项卡(多界面)功能

PyQt5通过堆叠布局实现选项卡(多界面)功能 1、创建一个MainWindow 加入Text Brower做标题,几个按钮。 然后在左侧containers中添加Stacked Widget这个控件,初步布局如下: 对窗口中的堆叠容器 “Stacked Widget”,选中后可以用…

【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)

目录 1 Pandas 可视化功能 2 Pandas绘图实例 2.1 绘制线图 2.2 绘制柱状图 2.3 绘制随机散点图 2.4 绘制饼图 2.5 绘制箱线图A 2.6 绘制箱线图B 2.7 绘制散点图矩阵 2.8 绘制面积图 2.9 绘制热力图 2.10 绘制核密度估计图 1 Pandas 可视化功能 pandas是一个强大的数…

常驻巨噬细胞诱导的纤维化在胰腺炎性损伤和PDAC中具有不同的作用

介绍一篇2023年8月10日发表在Nature Immunology的文章 标题: Fibrosis induced by resident macrophages has divergent roles in pancreas inflammatory injury and PDAC 影响因子:30.5 DOI:https://doi.org/10.1038/s41590-023-01579-x …

web端动效 PAG

之前写过一篇lottie动效的文章:web端动效 lottie-web 使用,本篇写一下PAG-web的基础使用。 PAG是腾讯开发,支持移动端、桌面端以及Web端的动效工作流解决方案。目标是降低或消除动效相关的研发成本,能够一键将设计师在 AE&#x…

TensorFlow 03(Keras)

一、tf.keras tf.keras是TensorFlow 2.0的高阶API接口,为TensorFlow的代码提供了新的风格和设计模式,大大提升了TF代码的简洁性和复用性,官方也推荐使用tf.keras来进行模型设计和开发。 1.1 tf.keras中常用模块 如下表所示: 1.2 常用方法 …

Ei Scopus检索 | 2024年第四届能源与环境工程国际会议(CoEEE 2024)

会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间:2023年5月22日-24日 召开地点:意大利米兰 大会官网:www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、…

VSCODE 使用技巧

vscode批量去掉代码中空行的方法 1、在vscode中使用ctrl f组合快捷键打开替换窗口. 2、输入下面的正则表达式 ^\s*(?\r?$)\n https://mp.weixin.qq.com/s/ZKV2sZWszxBLNTNLEWhsng

springboot redisTemplate.opsForValue().setIfAbsent返回null原理

一、版本 springboot版本:spring-boot-starter-data-redis 2.1.6 redisson版本:redisson-spring-boot-starter 3.11.5 二、场景 Boolean res redisTemplate.opsForValue().setIfAbsent("key","value");以上代码同一时间多次执行…

Sentinel控制台配置 持久化到nacos

sentinel控制台,使用方便,功能强大。使用官方的jar包,配置不会持久化,sentinel重启后会导致,之前的规则全部丢失,下面一起改造源码实现规则数据的持久化 sentinel源码地址 (github访问太慢&am…

嵌入式学习笔记(25)串口通信的基本原理

三根通信线:Tx Rx GND (1)任何通信都要有信息作为传输载体,或者有线的或则无线的。 (2)串口通信时有线通信,是通过串口线来通信的。 (3)串口通信最少需要2根&#xff…

MCU芯片测试:性能指标测试痛点是什么?ATECLOUD能否解决?

MCU芯片测试指标的核心是性能指标,包括处理器性能、存储器容量和读写速度,外设性能等。芯片测试对自动化测试的要求很高,ATECLOUD-IC不仅解决了传统测试方法的问题,而且也可以满足芯片测试的高要求,高效地完成MCU芯片性…

ChartJS使用-环境搭建(vue)

1、介绍 Chartjs简约不简单的JavaScript的图表库。官网https://chart.nodejs.cn/ Chart.js 带有内置的 TypeScript 类型,并与所有流行的 JavaScript 框架 兼容,包括 React 、Vue 、Svelte 和 Angular 。 你可以直接使用 Chart.js 或利用维护良好的封装程…

SpringBoot课堂笔记20230913

本篇文章为SpringBoot学习笔记,方便自己再复习。 Maven:jar包管理工具 注解: Controller:处理http请求,返回的视图 RestController: 相当于ResponseBody和Controller一起用,返回的是json ResponseBody:返回响应内容 …

自动化监控系统PrometheusGrafana

Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,数据采集→数据处理→数据存储→数据展示→告警 Prometheus 特点展开…

摩洛哥6.9级地震 网络出现轻度中断

北京时间2023年9月9日6时11分(当地时间8日23时11分),摩洛哥发生6.9级强震。埃文科技的监测数据显示,受地震影响,摩洛哥地区的网络也出现了轻度中断。 9月9日6时10分后,摩洛哥地区活跃前缀数量开始减少,在6时50分左右达…

利用 Python 中的地理空间数据与 GeoPandas

推荐:使用 NSDT编辑器快速搭建3D应用场景 空间数据的真正潜力在于它能够连接数据点及其各自的位置,为高级分析创造无限的可能性。地理空间数据科学是数据科学中的一个新兴领域,旨在利用地理空间信息并通过空间算法和机器学习或深度学习等先进…