Reinforcement Learning(二)--on-policy和off-policy

2023-09-22 10:07:37

1.前言

强化学习(Reinforcement learning,RL)是机器学习的一个分析,特点是概念多、公式多、入门门槛高🥲(别问我怎么知道的)。本篇文章着重讲解RL最重要的概念之一,即on-policy和off-policy,这2个概念极易与online和offline混淆,为体现文章的独立性,online和offline于下篇blog讲解。话不多话,Let’s go😶!


2.on-policy和off-policy

首先,我们要理解RL大体的工作流程是什么。

  • (1)Data collection:智能体与环境进行交互,按照某种方式收集环境中采集的数据,这种收集数据的方式在RL领域称之为behavior policy
  • (2)Policy Improvement:根据收集的数据,智能体改进用于决策的策略,用于决策的策略称之为Target policy

那什么是on-policy和off-pocliy呢?
官方解释非常的简单直接,但极难理解。官方解释如下。

当behavior policy和target policy相同时,当前的RL算法是on-policy,也称为同策略。
当behavior policy和target policy不同时,当前的RL算法是off-policy,也称为异策略。

嗯……好像什么也没说,又好像什么也说了,留下一脸懵逼的自己,主打一个不理解😶‍🌫️。


我们来举例说明一下什么是on-policy,什么是off-policy?
以最经典的Sarsa和q-Learning为例。
首先,我们要理解behavior policy采集的数据具体表现是获取下一个状态action,只要谨记这句话,我们就能很轻易地理解on-policy和off-policy。


Sarsa:
在这里插入图片描述

Sarsa在选取下一状态的action时,直接使用当前策略执行了一个action选择,然后再用这个样本去更新当前的策略,所以,Sarsa的behavior policy和target policy是相同的,自然也就是on-policy了。


q-Learning:
在这里插入图片描述
而q-learning在选取下一状态的action时,使用max操作,它计算在当前状态下所有可能action的Q值,并选取回报最大的action(这也就是q-learning容易出现高估问题的根因所在),然后利用这个样本再去更新当前的策略,所以,q-learning的behavior policy和target policy是不同的,自然就是off-policy了。

更多推荐

【Linux】【网络】UDP、TCP 网络接口及使用

文章目录socket及相关补充0.netstat--查询当前服务器上网络服务器1.端口号(port)2.网络字节序3.sockaddr结构体一、socket常见APIUDP0.IP地址转化函数1.socket函数:创建socket文件描述符(TCP/UDP,客户端+服务器)2.bind函数:绑定端口号(TCP/UDP,

代码随想录算法训练营Day56 | 动态规划(16/17) LeetCode 583. 两个字符串的删除操作 72. 编辑距离

动态规划马上来到尾声了,当时还觉得动态规划内容很多,但是也这么过来了。第一题583.DeleteOperationforTwoStringsGiventwostringsword1andword2,returntheminimumnumberofstepsrequiredtomakeword1andword2thesa

基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)

TES745D是一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板。该核心板将复旦微的FMQL45T900(与XILINX的XC7Z045-2FFG900I兼容)的最小系统集成在了一个87*117mm的核心板上,可以作为一个核心模块,进行功能性扩展,能够快速的搭建起一个信号平台,方便用户进行产品开发。核心

vivo面试-Java

一、JAVA八股1、Java实现线程的三种方式(1)继承Thread类:创建一个新类,该类继承自Thread类,并重写run方法。然后创建该类的实例,并调用它的start方法来启动线程。publicclassMyThreadextendsThread{publicvoidrun(){System.out.println

UML的组成

UML的构造块在UML(统一建模语言)中,事物是指建模中的各种元素、概念和组件,用于描述软件系统的不同方面。以下是一些常见的UML事物:类(Class):用于表示系统中的对象类型或类别,包括属性和方法。对象(Object):表示系统中的实际对象实例。接口(Interface):描述类或组件的合同,规定了可以被其他类或组

PLC项目调试常见的8种错误类型

各种品牌PLC都具有自我诊断功能,但PLC修理的技巧在于,充分运用该功能进行分析,然后精确寻找问题所在。整理了当PLC呈现反常报警时,PLC修理人员需要了解的8种常见错误类型。CPU反常CPU反常报警时,应查看CPU单元衔接于内部总线上的一切器材。具体方法是顺次替换可能存在问题的单元,找出问题单元,并作相应处理。存储器

linux下特定usb设备的权限设置

文章目录背景查找资料解决方案背景目前我在Ubuntu下使用一个USB热成像摄像头,通过调用它的sdk进行图像的采集以及获取对应像素点的温度。假设我现在的测试程序名称为MyApp。当我用下面的命令运行时,程序是正常运行且能从热成像仪采集图像sudo./MyApp但是当我以下面的命令运行时,./MyApp会报错:libir

用例图学习

用例图是什么用例图(UseCaseDiagram)是UML(统一建模语言)中的一种行为图,用于描述系统的功能和用户(或其他外部实体)与系统之间的交互。用例图是一种高级图,通常用于捕捉系统的需求,展示系统的功能和用户需求之间的关系,以及不同用例之间的依赖。以下是用例图中常见的元素和概念:用例(UseCase):用例表示系

六角形锌饼的尺寸及其允许偏差

声明本文是学习GB-T3610-2010电池锌饼.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本标准规定了电池锌饼的产品分类、要求、试验方法、检验规则及标志、包装、运输、贮存、质量证明书和合同(或订货单)等内容。本标准适用于制造锌-锰干电池负极整体锌筒用的锌饼。2规范性引用文件下列文件对于

C语言之链表

C语言之链表定义:链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构。特点:链表由一系列节点(链表中每一个元素称为节点)组成,节点在运行时动态生成(malloc),每个节点包括两个部分:一个是存储数据元素的数据域另一个是存储下一个节点地址的指针域//链表的构成typedefs

解决方案| anyRTC远程检修应用场景

背景在这个科技飞速发展的时代,各行各业都要求高效运转。然而,当出现问题时,我们却常常因为无法及时解决而感到困扰,传统解决问题的方式是邀请技术人员现场解决问题,如果技术人员解决不了,还要邀请专家从其他城市到现场解决,这中间会流失很多时间,影响生产效率。现在,anyRTC推出一站式远程检修方案,让检修得到最专业、最快速的的

热文推荐