强化学习——学习笔记3

一、强化学习都有哪些分类?

1、基于模型与不基于模型
根据是否具有环境模型,强化学习算法分为两种:基于模型与不基于模型
基于模型的强化学习(Model-based RL):可以简单的使用动态规划求解,任务可定义为预测和控制,预测的目的是评估当前策略的好坏,即求解状态价值函数 V π ( S ) V_π(S) Vπ(S),控制的目的则是寻找最优策略 π ∗ π_∗ π V ∗ ( s ) V_∗(s) V(s)
在这里“模型”的含义是对环境进行建模,具体而言,是否已知其P和R,即 p ( s ′ ∣ s , a ) p(s′|s,a) p(s′∣s,a) R ( s , a ) R(s,a) R(s,a)的取值。

如果有对环境的建模,那么智能体便可以在执行动作前得知状态转移的情况即 p ( s ′ ∣ s , a ) p(s′|s,a) p(s′∣s,a)和奖励 R ( s , a ) R(s,a) R(s,a),也就不需要实际执行动作收集这些数据;否则便需要进行采样,通过与环境的交互得到下一步的状态和奖励,然后仅依靠采样得到的数据更新策略。
无模型的强化学习(model-free):需要使用蒙特了卡洛法、时序差分法不断的探索环境。

2、基于价值、基于策略
在无模型的方法中,又有基于价值和基于策略的两种方法。
基于价值:智能体通过学习价值函数,隐式的策略,并贪婪的选择值最大的动作,即 a = a r g m a x Q ( s , a ) a=arg maxQ(s,a) a=argmaxQ(s,a),主要包络Q-learning和SARSA,这种方法一般得到的是确定性策略。
其有如下几点缺点:
1)对连续动作的处理能力不足;
2)对受限状态下的问题处理能力不足;
3)无法解决随机策略问题。包括Q-Learning、SARSA。

基于策略:没有价值函数,直接学习策略。其对策略进行进行建模 π ( s , a ) π(s,a) π(s,a)并优化,一般得到的是随机性策略。适用于随机策略、连续动作。主要包括Policy Gradient算法、TRPO、PPO。

对于以上两个分类的方法可以参照下图。
在这里插入图片描述

3、on/off-policy
On-policy:学习的 agent 跟和环境互动的 agent 是同一个。行为策略与目标策略相同。也就是说,行动遵循的行动策略与被评估的目标策略是同一个策略(如果要学习的智能体和与环境交互的智能体是相同的),则称之为同策略,比如Sarsa。其好处就是简单粗暴,直接利用数据就可以优化其策略,但这样的处理会导致策略其实是在学习一个局部最优,因为On-policy的策略没办法很好的同时保持即探索又利用。

Off-policy: 学习的 agent 跟和环境互动的 agent 不是同一个。将收集数据当做一个单独的任务。Off-policy将目标策略和行为策略分开,可以在保持探索的同时,更能求到全局最优值。行动遵循的行动策略和被评估的目标策略是不同的策略(或如果要学习的智能体和与环境交互的智能体不是相同的),则称之为异策略,比如Q-learning。但其难点在于:如何在一个策略下产生的数据来优化另外一个策略。
综上,强化学习的分类可以比喻为如下图:
在这里插入图片描述

二、基于价值强化学习方法简介

1、Q-Learning
先上图:
在这里插入图片描述
在上述流程图中所说的Q表即为下表:
假设我们在玩一个小游戏,该游戏有上下左右不同的动作,同时也会有不同的状态,比如游戏结束等。Q表也可以称为状态-价值函数 Q ( s , a ) Q(s,a) Q(s,a):这个表格的每一行代表每个 state上述例子中的游戏结束等,每一列代表每个 action上述例子中的上下左右,表格的数值就是在各个 state 下采取各个 action 时能够获得的最大的未来期望奖励。
在这里插入图片描述
通过上述的Q table 就可以找到每个状态下的最优行为,进而通过找到所有最优的action得到最大的期望奖励。
Q表更新公式如下:
在这里插入图片描述
Q-learning在更新Q值时下一步动作是不确定的,它会选取Q值最大的动作来作为下一步的更新。
2、SARSA
SARSA(State-Action-Reward-State-Action)是一个学习马尔可夫决策过程策略的算法。至于马尔可夫决策过程策略是什么可以见上一篇文章。
它的算法和公式和 Q learning 很像,但是 Q-Learning 是Off-Policy的,SARSA 是On-Policy 的。
SARSA的Q表更新公式如下:
在这里插入图片描述
从上式中可以看出,Sarsa使用下一步的实际动作来作为更新,而在Q-learning算法中,使用确定性策略选出的新动作只用于动作价值函数,而不会被真正执行,当动作价值函数更新后,得到新状态,并基于新状态由ε贪心策略选择得到执行行动,这意味着行动策略与目标策略不属于同一个策略。
上述两种方法最先提出的时候是没有引入时序差分方法的,而是在计算奖励的过程中一条路走到头,直到状态变为结束为止。而这种方式的计算是会消耗大量的时间。因此有了将时序差分方法与Sarsa/Q-learning或者其他算法结合的新方法。
3、TD(0)控制/Sarsa(0)算法与TD(n)控制/n步Sarsa算法
在这里插入图片描述
TD每过一个时序p就利用奖励 R t + 1 R_{t+1} Rt+1和值函数 V ( S t + 1 ) V(S_{t+1}) V(St+1)
更新一次,当然,这里所说的one-step TD 方法,也可以两步一更新,三步一更新”,这个所谓的多步一更新我们便称之为N步时序差分法。如上图。
回报公式的定义,即为(根据前几项可以看出:γ的上标加t+1即为R的下标,反过来,当最后一项R的下标T确定后,自然便可以得出γ的上标为T−t−1)。因此有如下式:
在这里插入图片描述
从而有:
单步回报: G t : t + 1 = R t + 1 + γ V t ( S t + 1 ) G_{t:t+1}=R_{t+1}+γV_t(S_{t+1}) Gt:t+1=Rt+1+γVt(St+1),即为TD(0)控制/Sarsa(0)算法
两步回报: G t : t + 2 = R t + 1 + γ R t + 2 + γ 2 V t + 1 ( S t + 2 ) G_{t:t+2}=R_{t+1}+γR_{t+2}+γ^2V_{t+1}(S_{t+2}) Gt:t+2=Rt+1+γRt+2+γ2Vt+1(St+2)
n步回报: G t : t + n = R t + 1 + γ R t + 2 + ⋯ + γ n − 1 R t + n + γ n V t + n − 1 ( S t + n ) G_{t:t+n}=R_{t+1}+γR_{t+2}+⋯+γ^{n−1}R_{t+n}+γ^nV_{t+n−1}(S_{t+n}) Gt:t+n=Rt+1+γRt+2++γn1Rt+n+γnVt+n1(St+n)
类似的,当用n步时序差分的思路去更新Q函数则就是所谓的n步Sarsa算法,当我们重新根据动作价值的估计定义如下的b步方法的回报为:
在这里插入图片描述
如此,便可以得到如下Q的更新方式:
在这里插入图片描述
4、Sarsa算法与Q-learning更新规则的对比

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

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

相关文章

cesium 实现自定义弹窗并跟随场景移动

cesium 添加点位自定义弹窗跟随场景移动 完整代码演示可直接copy使用 1 效果图&#xff1a; 2 深入理解 就是原始点位的数据 id>property 点位真实渲染到球体上的笛卡尔坐标系 id>_polyline 的路径下 可以通过 3 代码示例 <!DOCTYPE html> <html lang"…

【数据分享】2017-2023年全球范围10米精度土地覆盖数据

土地覆盖数据是我们在各项研究中都非常常用的数据&#xff0c;土地覆盖数据的来源也有很多。之前我们分享过欧空局发布的2020年和2021年的10米分辨率的土地覆盖数据,也分享过我国首套1米分辨率的土地覆盖数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; …

dwc3 DR_MODE 处理初始化 OTG gadget

dwc3控制器是怎么处理otg-CSDN博客 dwc3_probe static int dwc3_probe(struct platform_device *pdev) {struct device *dev &pdev->dev;struct resource *res, dwc_res;struct dwc3 *dwc;int ret;void __iomem …

管道液位传感器可以检测哪些液体?

管道液位传感器是一种专门用于检测流动性比较好的液体的传感器装置。它采用光学感应原理&#xff0c;不涉及任何机械运动&#xff0c;具有长寿命、安装方便和微功耗的特点。相比传统机械式液位传感器&#xff0c;光电管道传感器有效解决了低精度和卡死失效等问题&#xff0c;同…

Django 解决 CSRF 问题

在 Django 出现 CSRF 问题 要解决这个问题&#xff0c;就得在 html 里这么修改 <!DOCTYPE html> <html><head></head><body><form action"/login/" method"post">{% csrf_token %}</form></body> </…

C++基础知识之类和对象

一、类 类是一种用户自定义的数据类型&#xff0c;用于封装数据和方法。它定义了一组属性&#xff08;数据成员&#xff09;和方法&#xff08;成员函数&#xff09;&#xff0c;并且可以被多个对象共享。在面向对象编程中&#xff0c;类是一种用于创建对象的蓝图或模板。它定义…

短视频脚本创作的五个方法 沈阳短视频剪辑培训

说起脚本&#xff0c;我们大概都听过影视剧脚本、剧本&#xff0c;偶尔可能在某些综艺节目里听过台本。其中剧本是影视剧拍摄的大纲&#xff0c;用来指导影视剧剧情的走向和发展&#xff0c;而台本则是综艺节目流程走向的指导大纲。 那么&#xff0c;短视频脚本是什么&#xf…

探析GPT-4o:技术之巅的跃进

如何评价GPT-4o? 简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 随着人工智能领域的不断发展&#xff0c;GPT系列模型一直处于行业的前沿。最近&#xff0c;GPT-4…

前端实习记录——git篇(一些问题与相关命令)

1、版本控制 &#xff08;1&#xff09;版本回滚 git log // 查看版本git reset --mixed HEAD^ // 回滚到修改状态&#xff0c;文件内容没有变化git reset --soft HEAD^ // 回滚暂存区&#xff0c;^的个数代表几个版本git reset --hard HEAD^ // 回滚到修改状态&#xff…

生态农业:引领未来农业新篇章

生态农业&#xff0c;正以其独特的魅力和创新理念&#xff0c;引领着未来农业发展的新篇章。在这个充满变革的时代&#xff0c;我们需要更加关注农业的可持续发展&#xff0c;而生态农业正是实现这一目标的重要途径。 生态农业产业的王总说&#xff1a;生态农业强调生态平衡和可…

python基础-内置函数3-类与对象相关内置函数

文章目录 python基础-内置函数3类与对象getattr()hasattr()setattr()delattr()vars()dir()property()super()classmethod()staticmethod()isinstance()issubclass()callable()object()repr()ascii()id()hash()type() python基础-内置函数3 类与对象 getattr() getattr(objec…

以讲师能力提升,优路教育促学员拓宽职业原野

在建设教育强国的过程中&#xff0c;加强教师队伍建设被视为重要的基础工作。当前&#xff0c;我国正大力推进高素质“双师型”职业教育教师队伍建设&#xff0c;以培养更多既具备理论教学能力&#xff0c;又拥有实践教学经验的教师。在这一背景下&#xff0c;优路教育积极响应…

【文档+源码+调试讲解】古典舞在线交流平台的设计与实现

摘 要 随着互联网技术的发展&#xff0c;各类网站应运而生&#xff0c;网站具有新颖、展现全面的特点。因此&#xff0c;为了满足用户古典舞在线交流的需求&#xff0c;特开发了本古典舞在线交流平台。 本古典舞在线交流平台应用Java技术&#xff0c;MYSQL数据库存储数据&…

构建一个简单的情感分析器:使用Python和spaCy

构建一个简单的情感分析器&#xff1a;使用Python和spaCy 引言 情感分析是自然语言处理&#xff08;NLP&#xff09;中的一项重要技术&#xff0c;它可以帮助企业和研究人员理解公众对特定主题或产品的看法。 在本篇文章中&#xff0c;我们将使用Python编程语言和 spaCy 库来构…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作&#xff0c;为了方便代码的维护&#xff0c;各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的&#xff0c;例如一个主线程接收信息&#xff0c;会把接收的信息并发到其他线程&#xff0c;即主线程不阻塞&…

[LitCTF 2023]yafu (中级) (素数分解)

题目&#xff1a; from Crypto.Util.number import * from secret import flagm bytes_to_long(flag) n 1 for i in range(15):n *getPrime(32) e 65537 c pow(m,e,n) print(fn {n}) print(fc {c})n 152412082177688498871800101395902107678314310182046454156816957…

3D模型展示适合哪些类型的产品?

3D模型展示特别适合那些需要全面展示产品细节和特性的商品&#xff0c;产品3D交互展示具有直观性、动态性、交互性等显著优势&#xff0c;可以通过51建模网一站式完成商品3D建模、3D展示、3D定制、AR试穿等功能&#xff0c;以下是一些适合使用3D模型展示的产品类型&#xff1a;…

Compose第三弹 列表

目标&#xff1a; 1.根据列表数据&#xff0c;生成列表 一、列表控件 使用 Compose 的 LazyColumn 和 LazyRow。这些可组合项只会呈现屏幕上显示的元素&#xff0c;因此&#xff0c;对于较长的列表&#xff0c;使用它们会非常高效。 LazyListScope.items会延迟创建列表视图&…

npm镜像源管理、nvm安装多版本node异常处理

查看当前使用的镜像源 npm config get registry --locationglobal 设置使用官方源 npm config set registry https://registry.npmjs.org/ --locationglobal 设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org/ --locationglobal 需要更改淘宝镜像源地址…

Java培训后找不到工作,现在去培训嵌入式可行吗?

最近java 工作还是比较好找&#xff0c;不知道你是对薪资要求太高&#xff0c;还是因为其他原因&#xff0c;如果你真的面试了很多都还找不到工作&#xff0c;那么一定要知道找不到工作的原因是啥&#xff0c;一定不是因为java 太卷&#xff0c;你说那个行业&#xff0c;那个职…