强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结

2023-11-18

基本概念:

  • 如果要学习的 agent和环境互动的 agent同一个的话, 这个叫做on-policy(同策略)。
  • 如果要学习的 agent 跟和环境互动的 agent 不是同一个的话, 那这个叫做off-policy(异策略)。

有趣的解释:古时候,优秀的皇帝都秉持着“水能载舟 亦能覆舟”的思想,希望能多了解民间百姓的生活。皇帝可以选择通过微服出巡,亲自下凡了解百姓生活(On-policy),虽然眼见为实,但毕竟皇帝本人分身乏术,掌握情况不全;因此也可以派多个官员去了解情况,而皇帝本人则躺在酒池肉林里收听百官情报即可(Off-policy)。

Q-learning VS Sarsa:

Q-learning vs. Sarsa
二者都是基于TD的强化学习策略,但是前者是off-policy(有目标网络和行为网络),后者是on-policy。

  1. 他们的更新方式(贝尔曼方程)是一样的,区别在target计算方式,Q-learning是选择最优action,Sarsa是实际action。因此更新的时候输入是不一样的(有无下一时刻的action)。
  2. Q-learning计算下一状态的预期收益时使用了max操作,直接选择最优动作,而当前policy并不一定能选择到最优动作,因此这里生成样本的policy和学习时的policy不同,为off-policy算法。
  3. SARAS算法,基于当前的policy直接执行一次动作选择,然后用这个样本更新当前的policy,因此生成样本的policy和学习时的policy相同,算法为on-policy算法。
  4. Q-learning更莽撞,Sarsa更胆小。
    在这里插入图片描述

DQN VS PPO:

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

  1. DQN有两个网络,policy_nettarget_net。因为有两个agent,一个表示当前policy,一个表示目标policy。replay buffer中存储的是很多历史样本,更新Q函数时的target用的样本是从这些样本中采样而来,因此更新时使用的可能是历史样本,所以是off-policy。(memory不会定时清理,只有达到容量上限时,会除掉开始的数据)
  2. PPO也有两个网络,actorcritic。因为学习的 agent 跟和环境互动的 agent是同一个。并且用于更新的样本是当前策略产生的样本,因此是on-policy。也有memory,不过更新一次就会clear。

区分on-policy 与 off-policy

以下是个人总结,不一定正确,如有错误还请各位大佬指出:

  • 法一:目标策略 target policy 和 行为策略 behavior policy是否是同一个策略
  • 法二:更新值函数时是否只使用当前策略所产生的样本. (新价值所使用的方法是沿着既定的策略(on-policy)抑或是新策略(off-policy))
    个人感觉从 behavior policy 与 target policy 角度解释不够准确(探索环境/交互的策略和学习/更新的策略是否为同一个),因为DQN就不能这样看呀!(target_policy固定不变,policy交互、更新参数,之后再同步参数)。

❗❗发现了一个从代码层面分辨的小技巧 -> 对于用到了memory存储数据的算法,观察memory存的数据是怎么变的:
1️⃣ 对于off-policy策略,memory会一直存数据,如果满了就替换前面的。因此每次更新的时候,可能会用到其他策略采样到的数据。
2️⃣ 对于on-policy策略,更新一次参数后memory会被清空。

但是!!!Q-learning和Sarsa不能这样分辨,二者都是单步更新没有用到memory。
Q-learning是传入(state, action, reward, next_state, done)更新,Sarsa是传入(state, action, reward, next_state, next_action,done)进行更新。

为什么前者是off-policy而后者是on-policy呢?

  • 在Sarsa中更新Q函数时用的action就是贪婪策略得出来的,下一回合也用的是这个action去进行step。两个action一定相同就是(同策略)on-policy。
  • 但是在Q_learning中,更新时的action是Q_max得到的,而下一回合的Action是用贪婪策略(在更新后的Qmax基础上有探索)得到的,这时的action和Action就有可能不一样,就是(异策略)off-policy。

一些总结:

  1. 更新策略
    单步更新:DDPG,DQN,Q-learning,Sarsa,PPO,TD3,Actor-Critic
    玩完一轮再更新:MC,PG
  2. policy结构
    Actor-Critic结构:DDPG(双份),PPO,TD3(双份)
    policy_net+target_net:DQN
    Q_table:MC,Q-learning,Sarsa
    MLP:PG
  3. 用到了ReplayBuffer:DDPG,DQN,Actor-Critic
  4. 同策略or异策略
    off-policy:DDPG,DQN,Q-learning,TD3
    on-policy:PG,PPO(更新一次后memory被clear了),Sarsa,MC,A2C,A3C
    A2C 和 A3C 都是 on-policy(同策略)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结 的相关文章

  • 简单两步解决Python的NLTK库DATA安装问题

    前言 本人使用Anaconda集成开发环境 已经安装有NLTK库 在使用NLTK最简单的分词功能时报错 查询错误 得知是没有安装NLTK的数据包 系统推荐使用以下命令 import nltk nltk download 用了之后弹出窗口 出
  • ROS 第四天 ROS中的关键组件

    1 Launch文件 通过XML文件实现多节点的配置和启动 可自动启动ROS Master
  • word文档中如何添加目录

    如果word文档的内容较多 结构复杂 那么在文档首页设置一个目录链接是非常有必要的 本文将介绍如何添加此目录 1 设置标题 在文档中选择将在目录中显示的内容 将之设置为 标题1 标题2 或 标题3 等 其中 标题1 代表一级标题 应为顶级目
  • 如何在 Java 中调用 MATLAB 代码

    文章目录 测评 完整源代码 运行环境 MATLAB R2022a Java 8 1 8 0 311 IntelliJ IDEA 2022 2 1 Ultimate Edition Maven 3 8 3 Windows 10 教育版 64位
  • ios 删除无用证书

    1 前往文件夹 Library MobileDevice Provisioning Profiles 然后可以删除里面的所有文件 然后就可以根据自己的需求重新下载了

随机推荐

  • STM32之_keil 编译内存大小解析

    Program Size Code 28784 RO data 6480 RW data 60 ZI data 3900 的含义 1 Code 程序所占用的FLASH大小 存储在FLASH 2 RO data Read only data
  • 简单的c++ UDP类 + 多线程 win32编程

    UdpClient h include Thread h class IUdpRecvCallback public virtual void OnRecv const char buf USHORT len const char from
  • 基恩士PLC KV8000+XH16EC总线控制,全ST程序实例

    基恩士PLC KV8000 XH16EC总线控制 全ST程序实例 本人自己开发全程序无加密 公司级框架 功能齐全 提供项目源码框架FB源码 触摸屏源码 需要一定ST基础才能看懂 重在分享编程思想 没用过该控制器的请慎拍 请使用11 10版本
  • 图像的二值化分割,otsu类间方差法

    二值化图像指图像中的每个像素只取两个离散的值之一 用数学公式表示为 公式中 f x y 表示一幅数字图像 X Y表示该图像中某像素的坐标值 T为 二值化的阈值 表示经过阈值运算后的二值化图像 这里0和1仅仅是一个抽象表示 并非实际像素值 它
  • python 实现百度关键字自动爬虫

    coding utf 8 In 3 import requests from lxml import etree import re from sqlalchemy import create engine engine create en
  • IDEA中快捷键大全

    Alt 回车 导入包 自动修正 Ctrl N 查找类 Ctrl Shift N 查找文件 Ctrl Alt L 格式化代码 Ctrl Alt O 优化导入的类和包 Alt Insert 生成代码 如get set方法 构造函数等 Ctrl
  • 【Linux】Linux下的自动化构建工具——make/makefile

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 make和makefile的区别 二 makefile
  • 3. 形状和转换

    文章目录 形状和转换 改变形状 np expand dims np squeeze np reshape arr reshape 反序 转置 arr T np transpose 形状和转换 array 大多数情况下都是以多维的形式出现的
  • combotree 只能选中叶子节点

    combotree 只能选中叶子节点 一 Aphorism 人之所恶在好为人师 慎言之 二 summary 应该分为两种情况 1 第一种情况 单选 multiple false tt combotree nultiple false onB
  • edge浏览器打开出现ref A ref B refC

    打开edge浏览器 设置 或地址栏输入 edge settings privacy 进入 隐私 搜索和服务 选择 cleanbrowsing 重启浏览器 活清理浏览器缓存 第5步里 我是将所有历史都清除了 如果历史或cookie有重要的东西
  • IBM AppScan使用随想

    公司的一个客户让我对他的一个网站进行安全性测试 该网站刚刚完成一期开发 从他给我的别的网站的测试报告中 我发现了IBM AppScan 最后安装了8 0版并成功破解 What s IBM AppScan It s a famous test
  • 第二十章 Chisel基础——生成Verilog与基本测试

    经过前三章的内容 读者已经了解了如何使用Chisel构建一个基本的模块 本章的内容就是在此基础上 把一个Chisel模块编译成Verilog代码 并进一步使用Verilator做一些简单的测试 一 生成Verilog 前面介绍Scala的内
  • 云服务器 宝塔部署SpringBoot前后端分离项目

    博主介绍 小黄鸭技术 擅长领域 Java 实用工具 运维 系列专栏 开发工具 Java之路 八股文之路 如果文章写作时有错误的地方 请各位大佬指正 一起进步 欢迎大家点赞 收藏 评论 支持博主 目录 前言 环境 部署 查看面板地址和用户名以
  • Java设计模式-单例模式

    单例模式 在有些系统中 为了节省内存资源 保证数据内容的一致性 对某些类要求只能创建一个实例 这就是所谓的单例模式 单例模式的定义与特点 单例 Singleton 模式的定义 指一个类只有一个实例 且该类能自行创建这个实例的一种模式 例如
  • MySQL之事务与引擎

    目录 一 事物 1 事务的概念 2 事务的ACID特点 3 事务之间的相互影响 4 Mysql及事务隔离级别 四种 1 查询会话事务隔离级别 2 查询会话事务隔离级别 3 设置全局事务隔离级别 4 设置会话事务隔离级别 5 事务控制语句 6
  • ssm+mysql+小程序+ssm智慧社区管理系统 毕业设计源码101635

    基于SSM的智慧社区管理小程序 摘 要 随着互联网大趋势的到来 社会的方方面面 各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去 而其中最好的方式就是建立网络管理系统 并对其进行信息管理 由于现在网络的发达 社区管理通过网
  • Vue JeecgBoot 下拉选使用数据字典,设置默认值,默认选中第一个值 - 附完整示例

    效果 一 使用步骤 1 导入依赖文件 import initDictOptions filterDictText from components dict JDictSelectUtil 2 声明变量 data return dataVal
  • 巧妙利用unbuffer实时写入

    大家好 我是早九晚十二 目前是做运维相关的工作 写博客是为了积累 希望大家一起进步 我的主页 早九晚十二 场景描述 我们常常在写脚本时 会涉及到一些比较耗时的操作 当要输出日志时 没办法实时获取命令的进度 进而不好判断脚本的流程 这时 就引
  • C# 画坐标,graphics,C# 坐标自定义X轴、Y轴

    先看效果 其中X轴 Y轴都是可以自定义的 可以从零开始 也可以从任意位置开始 看坐标的画法 下面通过五个函数 来分别说明 注意这里坐标的定位是通过外层的Panel来实现的 using System using System Collecti
  • 强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结

    目录 基本概念 Q learning VS Sarsa DQN VS PPO 区分on policy 与 off policy 一些总结 基本概念 如果要学习的 agent 跟和环境互动的 agent 是同一个的话 这个叫做on polic