强化学习策略更新方法on-policy与off-policy(重要性采样,q-Learning,sarsa)

news2024/11/15 8:23:59

一 On-policy和Off-policy概念

策略更新方法可以分为两类:On-policy(在线策略)和Off-policy(离线策略)。
它们之间的主要区别在于如何使用经验(状态、动作、奖励和下一个状态)来更新智能体的策略。

on-policy: 行动策略和目标策略是同一个策略
off-policy: 行动策略和目标策略不是同一个策略

什么是行动策略和目标策略?
行动策略:就是每一步怎么选动作的方法,它产生经验样本
目标策略:我们选什么样更新方式,去寻找最好的Q表

1.1 On-policy方法

On-policy方法:仅使用当前策略生成的经验数据更新策略。这意味着智能体在每次更新策略后,必须使用新策略收集新的经验数据。想象一下,你在学习打篮球,每次学到新技能后,你必须重新练习,以便更好地掌握新技能。

On-policy方法的典型例子是:REINFORCE算法,Actor-Critic算法,PPO(Proximal Policy Optimization,近端策略优化)算法等。

On-policy方法通常需要更多的样本才能学习有效的策略,因为它们在每次策略更新后必须重新采样新数据。

1.2 Off-policy方法

Off-policy方法:可以使用任何策略(包括非当前策略)生成的经验数据来更新当前策略。这使得离线策略方法可以有效地重用之前收集的经验数据,从而降低数据采样的要求。这就像你在学习打篮球时,可以观察别人的比赛,从他们的经验中学习和提高。

Off-policy方法的典型例子是:Q-learning,DQN(Deep Q-Networks),DDPG(Deep Deterministic Policy Gradient),SAC(Soft Actor-Critic)等。
样本效率:

Off-policy方法由于可以利用历史经验数据,通常具有更高的样本效率。

为何要引入 Off-policy
为了避免不停地sample(这会很耗时间)
如果我们使用
在这里插入图片描述
来收集数据,那么参数θ被更新后,我们需要重新对训练数据进行采样,这样会造成巨大的时间消耗。
引入Off-policy后,可以利用 π θ ′来进行采样,将采集的样本拿来训练 θ , θ ′是固定的,采集的样本可以被重复使用,就避免了反复采样。

重要性采样
我们假设x来自于p分布,但是现在我们要用q分布来进行学习,那么可以将期望公式进行如下修正
在这里插入图片描述
什么时候需要重要性采样
到底需不需要重要性采样,需要判断在更新目标策略(Target Policy)的时候,是否涉及到不同分布的计算。拿贝尔曼方程进行策略更新的算法为例子,如果更新时使用的动作是行为策略 产生的,那么需要重要性采样;如果更新时使用的动作是目标策略 产生的,那么不需要重要性采样。
所以Q-Learning、DQN、DDPG不用重要性采样
注意事项
两个分布p,q之间的差别不能太大,否则方差会出现较大的差别
原因如下:
先基于原始的分布p计算函数的方差,然后计算引入不同分布q之后得到的函数方差,可以发现两者得出的方差表达式后面一项相同,主要差别在于前面那一项,如果分布p和q之间差别太大,会导致第一项的值较大或较小,于是造成两者较大的差别。
在这里插入图片描述
θ和θ ′是不能差太多的,不然结果会不好,那么怎么避免它们差太多呢?
这就是PPO所在做的事情。

1.3 探索-利用权衡:

On-policy方法中,智能体在每次更新策略后都会按照新策略探索环境。这使得智能体在学习过程中自然地进行探索和利用。在学习过程中,智能体需要平衡尝试新行为(探索)与利用已知优势(利用)之间的权衡。

Off-policy方法则需要额外的机制来确保探索,例如使用ε-greedy策略或其他随机策略进行行动选择。这些策略可以与当前策略分开,在学习过程中独立地进行探索。

总之,On-policy和Off-policy方法之间的最大区别在于它们如何使用经验数据来更新策略。On-policy方法仅使用当前

1.4 off-policy,on-policy各自优缺点

① off-policy学习的优点是:
它可以从任何来源的数据中学习,不需要每次都使用最新的策略来收集数据,这样可以提高数据利用率和学习效率
它可以同时探索和利用,因为它有两个策略:一个用于探索,一个用于利用。这样可以避免陷入局部最优解。
它可以更容易地实现函数逼近和经验回放,因为它不依赖于当前执行的策略。

② Off-policy学习的缺点是:
它可能需要更多的计算资源和内存空间,因为它需要维护一个数据缓冲区和两个策略。
它可能需要使用重要性采样或其他技术来纠正不同策略之间的偏差,这可能增加了复杂度和方差。
它可能难以保证收敛性和稳定性,特别是在非静态环境中。

③ On-policy学习的优点是:
它比较简单和直观,因为它只有一个策略,并且只从当前执行的策略中学习。
它可以保证收敛到最优策略或接近最优策略的结果,如果满足一定的条件(如足够多的探索)。
它可以适应动态变化的环境,因为它总是使用最新的数据来更新策略。

④ On-policy学习的缺点是:
它可能浪费了很多有价值的数据,因为它只从当前执行的策略中学习,并且每次都需要使用最新的策略来收集数据。
它可能难以平衡探索和利用之间的权衡,因为它只有一个策略,并且需要在每个状态下都进行一定程度的探索。
它可能容易陷入局部最优解,特别是当初始状态或动作选择不合理时。

1.5 区别汇总:

1.5.1 学习方式上的区别:

若agent与环境互动,则为On-policy(此时因为agent亲身参与,所以互动时的policy和目标的policy一致);
若agent看别的agent与环境互动,自己不参与互动,则为Off-policy(此时因为互动的和目标优化的是两个agent,所以他们的policy不一致)

1.5.2 采样数据利用上的区别:

On-policy:样所用的policy和目标policy一致,采样后进行学习,学习后目标policy更新,此时需要把采样的policy同步更新以保持和目标policy一致,这也就导致了需要重新采样。
Off-policy:采样的policy和目标的policy不一样,所以你目标的policy随便更新,采样后的数据可以用很多次

二. 典型算法:On-policy(SARSA)和Off-policy(Q-learning)对比

典型的 On-Policy 强化学习算法包括 SARSA(State-Action-Reward-State-Action)算法。
SARSA 算法是一种基于值函数的强化学习算法,
它通过学习动作值函数 Q(s, a) 来确定最优策略。
SARSA 使用贝尔曼方程进行迭代更新,通过不断探索和更新 Q 值,最终收敛到最优策略。

典型的 Off-Policy 强化学习算法包括 Q-Learning 算法。
Q-Learning 算法也是一种基于值函数的强化学习算法,
它通过学习动作值函数 Q(s, a) 来确定最优策略。
Q-Learning 使用贝尔曼方程进行迭代更新,通过不断探索和更新 Q 值,最终收敛到最优策略。

目标:更新S环境下,做出a动作后的Q(s,a)
① Q-learning算法和Sarsa算法都是从状态s开始,根据当前的Q表使用一定的策略( Epsilon gready​)选择一个动作a。
② 然后观测到下一个状态s’,此时这个状态下有个奖励r。
③ 并再次根据Q表选择动作a’。只不过两者选取a’的方法不同:
Q-learning: 使用贪心策略(gready​),即选取值最大的a’,此时只是计算出哪个a‘可以使Q(s,a)取到最大值,并没有真正采用这个动作a‘;
Sarsa : 仍使用策略策略(Epsilon gready​),并真正采用了这个动作a‘ 。

④ 然后带入式子进行更新

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
Q-learning: 行动策略是E-gready,但是目标策略,是gready,所以是off-policy
Sarsa: 行动策略是E-gready,但是目标策略,是E-gready,所以是on-policy

三. Q-learning详解【off-policy, 无模型,时间差分TD】

在这里插入图片描述

  • 初始化环境状态S
  • 将当前环境状态S输入到Q网络(即策略网络,保存了action和value对应关系的table),然后输出当前状态的动作A
  • 更新Q网络
    Qtarget = R + γ maxaQ(s’, a)表示Q真实值,简单理解就是我在S状态下采取了action,从环境中获得了R的奖励,然后对下一时刻的Q值应该也是有影响的,这个影响因子就是γ。另外这次是是一个递归的表达式,所以也可以看出离当前时刻越远,我所采取动作的影响力就越低。
    Qtarget - Q(S, A)就是常说的TD(temporal difference) error,这个error在后面的DQN中会作为损失函数。
  • 更新当前状态为S’
  • 返回第二步重复执行,直到满足限定条件

在这里插入图片描述

3.1 基本Q-learning

Q学习(Q-learning)是一种==无模型(model-free)==学习。
这个算法核心就是两个矩阵:Q表和R表。
Q表包含了用于实现策略的环境累积知识,R表每一行代表一个状态,每一列代表这一行状态向另一行状态迁移的奖励。
不知道大家有没有感觉,Q表就是地图,R表就是世界……
用这种算法,agent的每个action都能看到R表发现这个iteration能采取的动作,但是依然是短视的。
这就是Q表存在的理由。Q表是agent在探索过程中不断画完整的地图,所以它也就是机器要学习的东西。

基本Q学习用到了epsilon-greedy算法。
我们对Q学习的目标是,由于经过了大量iteration,Q表的质量会越来越好,最后agent直接用Q表就行。
为了实现这个目标,我们希望Q算法利用Q表的信息少于探索的信息(不然就没有信息进入Q表)。
这就是著名的**探索 (Exploration) v.s. 利用(Exploitation)**折中问题。由于我们用epsilon控制这个权衡,所以叫做epsilon-greedy。
这里有一个非常好的比喻,假如你是餐馆经营者,要让客户吃菜:

  • Exploration的代价是要不停的拿用户去试菜,影响客户的体验,但有助于更加准确的估计每道菜好吃的概率
  • Exploitation会基于目前的估计拿出“最好的”菜来服务客户,但目前的估计可能是不准的(因为试吃的人还不够多)

epsilon-greedy算法用参数epsilon确定什么时候探索,什么时候利用:
算法认为,每当客人到来时:

  • 以epsilon的概率选择探索 (Exploration) ,从N道菜中随机选择(概率为 )一个让客人试吃,根据客人的反馈更新菜的做的好吃的概率 { }
  • 以1-epsilon的概率选择利用 (Exploitation),从N道菜{ }中选择好吃的概率最高的菜推荐给用户

3.2 深度Q-learning

深度Q学习(Deep Q-Learning,DQL)近似处理Q表的值,而不尝试手动填充Q表。
换句话说,DQL希望寻找到无限逼近最优解的次优解。
也可以理解为,DQL(DQN)就是自动学习Q表。
DQL依然要用到epsilon-greedy算法,这是用来权衡探索和利用的。
不同的是,DQL希望将“达到目标”和“采取动作”间的损失最小化,而这可以用梯度下降完成。
从DNN角度来看就是这幅图:
在这里插入图片描述

四. Sarsa(on-policy,时间差分TD)

在这里插入图片描述

和Q-learning的区别
其实可以看到Q-learning和Sarsa的最大区别就是对Q网络的更新策略,Sarsa使用的是使用下次状态所采取的的动作所对应的Q值来更新Q值,而Q-learning使用下次状态S2的最大Q值用于更新。
感性的理解就是Sarsa会探索更多的可能性,而Q-learning会铁定心地选择最大可能性的选择。因此,Q-learning虽然具有学习到全局最优的能力,但是其收敛慢;而Sarsa虽然学习效果不如Q-learning,但是其收敛快,直观简单。因此,对于不同的问题,我们需要有所斟酌。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP宠物爱好者交流网站-计算机毕业设计源码65481

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 注册流程 2.2.1 登录流程 2.2.3 数据删除流程 2.3 系统功能分析 2.4 系统用例分析 3 系统总体设计 3.1 系统架构设计 3.2 系统功能模块设…

跑腿代购app系统开发产品分析

跑腿代购APP的开发案例分析可以从多个维度进行,包括市场需求、功能设计、技术实现、用户体验以及市场推广等方面。编辑:qawsed2466。以下是一个基于当前行业趋势和技术发展的跑腿代购APP开发案例分析概要: 一、市场需求分析 1. 用户群体 忙…

01【python+playwright测试自动化】之定位方式

playwright系列文章目录 00Mac安装playwright 00Mac 安装配置Python3虚拟环境(VirtualEnv、virtualenvwrapper扩展包) 文章目录 playwright系列文章目录前言一、实现一个demo二、通过CSS、XPath定位三、通过文本定位四、通过角色定位五、通过标题定位六…

【最新推荐】雨林木风Windows10系统:极速下载!

今日系统之家小编给大家分享2024年最新发布的雨林木风Windows10系统下载,该版本系统基于微软官方最新Windows10 22H2 19045.4842 64位专业版展开离线制作,确保安全无毒,全新升级的优化方案,显著提升了系统的性能,运作变…

新能源汽车的充电基础发展规划

公共充电基础设施建设进展 公共充电基础设施作为新能源汽车发展的关键支撑,其建设进展在近年来显著加快。各地和企业纷纷投入资源,建立了大量的充电站和充电桩。这些设施不仅覆盖了城市主要区域,也逐渐扩展到高速公路服务区和城际连接点。除…

机器学习 第10章 降维与度量学习

目录 k近邻学习低维嵌入主成分分析(PCA)核化线性降维(KPCA)流形学习等度量映射(Isomap)局部线性嵌入 度量学习 k近邻学习 k 近邻(KNN)学习是一种常用的监督学习方法,其工…

太炸裂!AI绘画赚钱机会,多到你无法想象!

家人们,AI绘画带来的变现方式真的太多了! 很多人会认为AI还没有落地,也有很多人认为这些宣扬AI红利的自媒体就是想割韭菜,那只能说可能认知太浅薄了。 新的事物出现,总会有善于捕捉信息和透过表层看清事物本质的人冲在…

格式化的硬盘能恢复数据吗?拯救数据的可能性

在信息技术高速发展的今天,硬盘作为计算机的核心存储部件,承载着大量的数据和文件。然而,有时因为误操作或其他原因,我们可能需要对硬盘进行格式化,这往往导致重要数据的丢失。 那么,格式化后的硬盘数据是否…

护网期间社区同好的一些问题总结

本文来自无问社区,更多网安知识分享可前往查看http://www.wwlib.cn/index.php/artread/artid/7560.html 一,SQL注入 分类: 从注入参数类型分:数字型注入、字符型注入 从注入效果分:报错注入、布尔注入、延时注入、联合注入、堆…

固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?

在当今数据时代,硬盘作为电脑里的存储设备在我们的生活和工作中扮演着十分重要的角色。随着存储技术的进步,市场上出现了两种主流硬盘:固态硬盘和机械硬盘。它们各有优劣,那么二者究竟有什么区别?我们又该如何选择呢&a…

Linux驱动(六):Linux2.6驱动编写之平台设备总线

目录 前言一、平台设备总线1.是个啥?2.API函数 二、设备端驱动端1. 匹配机制2. 实现代码 三、设备树驱动端1.匹配机制2.代码实现 前言 本文主要介绍了一下两种驱动编写方法: 1.比较原始的设备端驱动端编写方法。 2.效率较高的设备树驱动端编写方法。 最…

echarts 5.3.2 折线图 tooltip设置trigger为axis无效

在使用echarts5.3.2过程中,发生一个不应该发生的bug,希望效果如下 现实中如下 代码中设置了tooltip: {trigger: ‘axis’}不生效啊。查阅文档,应该是这样设置的啊,可是为什么无效呢。改成tooltip: {trigger: ‘item’}虽能显示弹…

合宙低功耗4G模组Air724UG ——产品规格书

Air724UG 是合宙通信推出的超小封装 LTE Cat.1 bis 模块;采用紫光展锐的UIS8910平台,支持 LTE 3GPP Rel.13 技术。是4G全网通模块,可适应不同的运营商和产品,确保产品设计的最大灵活性。 模块主要特点: 超小封装&…

‘“node“‘ �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���

错误信息 使用vscode提交前端代码到git时,报下面的错,一直不知道啥原因,后来找到了个临时解决方案。。。 vscode解决方案 package.json文件中,去掉hooks的配置。 Idea解决方案 网上有说idea的解决方案的:就是提…

【Qt网络编程基础】Tcp服务器和客户端(只支持一对一)

目录 一、编写思路 1、服务器 总体思路 详细思路 1. 构造函数 (Widget::Widget) 2. 启动监听 (Widget::on_btn_start_clicked) 3. 停止监听 (Widget::on_btn_cease_clicked) 4. 发送消息 (Widget::on_btn_info_clicked) 5. 接收消息 (Widget::receive_message) 6. 处…

顶象图标点选模型识别

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 (水文一篇)使用resnet分类模型配合yolo训练的图标点选验证码,用于顶象图标点选,案例如下图:

类型参数传值问题

一、基本数据类型传参问题 public static void main(String[] args) throws Exception {Integer number null;method01(number);}private static void method01(int number){System.out.println("number " number);}Ps: 基于int基本数据类型传参的时候&#xff0c…

常用的Adobe XD插件就看这10款!

Adobe XD是为 UI/UX 设计量身定制的协作工具,它与 Adobe 其他产品的无缝集成使得设计工作更加高效。与专注于 MacOS 的 Sketch不同,Adobe XD支持多平台操作,这种灵活性让它在原型设计领域备受瞩目。为了更高效地使用 Adobe XD,插件…

【大模型专栏—入门篇】机器学习与深度学习基础测试

大模型专栏介绍 😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文为大模型专栏子篇,大模型专栏将持续更新,主要讲解大模型从入门到实战打怪升级。如有兴趣,欢迎您的阅读。 &#x1f4…