Pytorch深度强化学习1-6:详解时序差分强化学习(SARSA、Q-Learning算法)

news2024/12/23 18:21:37

目录

  • 0 专栏介绍
  • 1 时序差分强化学习
  • 2 策略评估原理
  • 3 策略改进原理
    • 3.1 SARSA算法
    • 3.2 Q-Learning算法

0 专栏介绍

本专栏重点介绍强化学习技术的数学原理,并且采用Pytorch框架对常见的强化学习算法、案例进行实现,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。

🚀详情:《Pytorch深度强化学习》


1 时序差分强化学习

在这里插入图片描述

在Pytorch深度强化学习1-5:详解蒙特卡洛强化学习原理中我们指出,在现实的强化学习任务中,转移概率、奖赏函数甚至环境中存在哪些状态往往很难得知,因此有模型强化学习在实际应用中不可行,而需要免模型学习技术,即假设转移概率和环境状态未知,奖赏也仅是根据经验或需求设计。蒙特卡洛强化学习正是免模型学习中的一种,其核心思想是使用蒙特卡洛方法来估计各个状态-动作对的值函数。通过对大量的样本进行采样,并根据它们的累积奖励来评估状态-动作对的价值,智能体可以逐步学习到最优策略。

本节介绍的时序差分强化学习(Temporal Difference Reinforcement Learning)则是另一类免模型学习算法,它结合了动态规划和蒙特卡洛强化学习的优点,用于在未知环境中进行决策。

2 策略评估原理

策略评估本质上是求解状态值函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s)或状态-动作值函数 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a),数值越大表明策略回报越高。从定义出发,蒙特卡洛强化学习核心是采样近似,基于采样的算法通常采用增量更新方式节省内存

Q π ( s , a ) = E [ R t ] ∣ s t = s , a t = a ≈ 1 n ∑ i = 1 n R t , i = n 次增量 Q π ( s , a ) × c o u n t ( s , a ) + R t c o u n t ( s , a ) + 1 = n 次增量 Q π ( s , a ) + 1 c o u n t ( s , a ) + 1 ( R t − Q π ( s , a ) ) \begin{aligned}Q^{\pi}\left( s,a \right) &=\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}\\&\approx \frac{1}{n}\sum_{i=1}^n{R_{t,i}}\\&\xlongequal{n\text{次增量}}\frac{Q^{\pi}\left( s,a \right) \times \mathrm{count}\left( s,a \right) +R_t}{\mathrm{count}\left( s,a \right) +1}\\&\xlongequal{n\text{次增量}}Q^{\pi}\left( s,a \right) +\frac{1}{\mathrm{count}\left( s,a \right) +1}\left( R_t-Q^{\pi}\left( s,a \right) \right)\end{aligned} Qπ(s,a)=E[Rt]st=s,at=an1i=1nRt,in次增量 count(s,a)+1Qπ(s,a)×count(s,a)+Rtn次增量 Qπ(s,a)+count(s,a)+11(RtQπ(s,a))

因为采样过程通常以万次计,因此可以用一个较小的正数 α \alpha α来描述,超参数 α \alpha α可理解为模型的学习率, R t − Q π ( s , a ) R_t-Q^{\pi}\left( s,a \right) RtQπ(s,a)称为蒙特卡洛误差

Q π ( s , a ) = n 次增量 Q π ( s , a ) + α ( R t − Q π ( s , a ) ) Q^{\pi}\left( s,a \right) \xlongequal{n\text{次增量}}Q^{\pi}\left( s,a \right) +\alpha \left( R_t-Q^{\pi}\left( s,a \right) \right) Qπ(s,a)n次增量 Qπ(s,a)+α(RtQπ(s,a))

动态规划强化学习核心是自我迭代

Q π ( s , a ) = E [ R t ] ∣ s t = s , a t = a = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q π ( s ′ , a ′ ) ] Q^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}=\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q^{\pi}\left( s',a' \right)} \right] Qπ(s,a)=E[Rt]st=s,at=a=sSPssa[Rssa+γaAπ(s,a)Qπ(s,a)]

根据动态特性和当前 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a),具体计算出下一次迭代的 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)

动态规划强化学习的优点是计算准确且效率高,但无法适应无模型场景;蒙特卡洛强化学习的优点是克服无模型障碍,但有更新延迟现象。时序差分强化学习是动态规划与蒙特卡洛的折中

Q π ( s t , a t ) = n 次增量 Q π ( s t , a t ) + α ( R t − Q π ( s t , a t ) )    = n 次增量 Q π ( s t , a t ) + α ( r t + 1 + γ R t + 1 − Q π ( s t , a t ) )    = n 次增量 Q π ( s t , a t ) + α ( r t + 1 + γ Q π ( s t + 1 , a t + 1 ) − Q π ( s t , a t ) ) ⏟ 采样 \begin{aligned}Q^{\pi}\left( s_t,a_t \right) &\xlongequal{n\text{次增量}}Q^{\pi}\left( s_t,a_t \right) +\alpha \left( R_t-Q^{\pi}\left( s_t,a_t \right) \right) \\\,\, &\xlongequal{n\text{次增量}}Q^{\pi}\left( s_t,a_t \right) +\alpha \left( r_{t+1}+\gamma R_{t+1}-Q^{\pi}\left( s_t,a_t \right) \right) \\\,\, &\xlongequal{n\text{次增量}}{ \underset{\text{采样}}{\underbrace{Q^{\pi}\left( s_t,a_t \right) +\alpha \left( r_{t+1}+{ \gamma Q^{\pi}\left( s_{t+1},a_{t+1} \right) }-Q^{\pi}\left( s_t,a_t \right) \right) }}}\end{aligned} Qπ(st,at)n次增量 Qπ(st,at)+α(RtQπ(st,at))n次增量 Qπ(st,at)+α(rt+1+γRt+1Qπ(st,at))n次增量 采样 Qπ(st,at)+α(rt+1+γQπ(st+1,at+1)Qπ(st,at))

其中 r t + 1 + γ Q π ( s t + 1 , a t + 1 ) − Q π ( s t , a t ) r_{t+1}+\gamma Q^{\pi}\left( s_{t+1},a_{t+1} \right) -Q^{\pi}\left( s_t,a_t \right) rt+1+γQπ(st+1,at+1)Qπ(st,at)称为时序差分误差。当时序差分法只使用一步实际奖赏时称为 T D ( 0 ) TD(0) TD(0)算法,扩展为 T D ( n ) TD(n) TD(n)算法,当 n n n充分大时退化为蒙特卡洛强化学习

3 策略改进原理

类似地,时序差分强化学习同样分为同轨策略和离轨策略,前者的代表性算法是SARSA算法,后者的代表性算法是Q-learning算法

3.1 SARSA算法

SARSA算法流程图如下所示

在这里插入图片描述

3.2 Q-Learning算法

Q-Learning算法流程图如下所示

在这里插入图片描述


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

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

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

相关文章

摄像机镜头,家庭监控云台等安防监控系统镜头选型分析,低噪声,低振动,多通道

安防镜头步进驱动选用型号 GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208 GC6150 GC6151 GC6152 GC6125 GC6236采用5V的镜头驱动 。其中GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208关键特性两通道,256细分,低噪,内部和外部时钟…

【算法系列篇】递归、搜索和回溯(二)

文章目录 前言1. 两两交换链表中的节点1.1 题目要求1.2 做题思路1.3 代码实现 2. Pow(X,N)2.1 题目要求2.2 做题思路2.3 代码实现 3. 计算布尔二叉树的值3.1 题目要求3.2 做题思路3.3 代码实现 4. 求根节点到叶结点数字之和4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面为大…

解锁数据安全秘诀:医药企业选择上海迅软DSE,防范泄密威胁!

随着数字化和信息化程度的提高,医药企业存储了大量的患者医疗记录、药品研发数据、临床试验数据以及财务信息。但由于医药行业的特殊性和敏感性,其数据的变现价值非常高,在各种利益的非法驱动下,医药行业早已成为数据泄露的重灾区…

想知道修改图片dpi会影响清晰度吗?点击这里找答案

很多人都对图片dpi分辨率有不少疑问,比如dpi对图片清晰的影响,还有哪些地方需要修改图片dpi?其实dpi是指每英寸墨点的数量。对同一张图像来说,一般使用300dpi比使用72dpi打印出来的效果要清晰很多 ,一般只有在打印照片或者上传证件…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装,仅限Windows环境。 以下下载链接均来自官网,网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

java学习part42反射

187-反射机制-反射的理解与使用举例_哔哩哔哩_bilibili

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

应用程序清理和卸载缓存清理软件:App Cleaner Uninstaller Pro Mac中文

App Cleaner & Uninstaller Pro是一款专为Mac电脑设计的应用程序清理和卸载工具。它帮助用户彻底删除不需要的应用程序、插件和残留文件,从而有效释放磁盘空间并提高系统性能。其强大的搜索功能和批量卸载特性使得管理应用程序变得轻而易举。同时,用…

PETS渗透测试标准流程

PTES组织 PETS渗透测试标准流程原文 http://www.pentest-standard.org/index.php/Main_Page学习一下渗透测试国际规范流程 英文不好的师傅可以使用浏览器插件沙拉查词或者整页翻译。 浏览器扩展中添加划词翻译 非常好用

建行账单导出的手工操作

文章目录 建行账单导出的手工操作概述笔记END 建行账单导出的手工操作 概述 自己的电商账单分析程序初步搞定. 支付宝/微信/京东导出的账单都是csv格式. 我开始做的时候, 建行的账单选的是xls(旧版excel)格式. 没注意看. 程序中用的excel库操作, 只能处理.xlsx格式(新版exce…

电气小课堂:智能电表怎么选

随着科学技术的发展,工业和家用电表的功能在不断地改进。用电管理和计费方式也在不断的改进。普通的电表只能计量用电数据,而带有复费率的电表可以根据不同用电时段的电价进行计费,可以更加准确地反映用户的用电情况,同时也可以帮…

成都工业学院Web技术基础(WEB)实验二:HTML5表格、表单标签的使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

Windows 安全基础——NetBIOS篇

Windows 安全基础——NetBIOS篇 1. NetBIOS简介 NetBIOS(Network Basic Input/Output System, 网络基本输入输出系统)是一种接入服务网络的接口标准。主机系统通过WINS服务、广播及lmhosts文件多种模式,把NetBIOS名解析对应的IP地址&#xf…

ubuntu修改系统默认启动的内核

一、问题和解决办法 1、要解决的问题 希望修改系统more进入的内核,比如下图中当前进入到了88,希望进入58 2、第一步:查看系统的内核版本有哪些以及顺序 大致分为2种情况,只有一级菜单,所有内核顺序排列;…

centos7中的计划任务

一次调度执行-----at 安装&#xff1a; [rootzaotounan ~]# yum -y install at ​ 启动&#xff1a; [rootzaotounan ~]# systemctl start atd ​ 开机自启动&#xff1a; [rootzaotounan ~]# systemctl enbale atd ​ 语法&#xff1a; at <时间规格> 时间规格参数&…

Chrome浏览器中访问http会自动跳转https下,导致请求和文件不能正常访问

网上查了很多解决方案&#xff0c;例如清楚缓存等等其他方法&#xff0c;都不能解决该问题 例如&#xff1a; 地址栏输入&#xff1a; chrome://net-internals/#hsts找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 搞定了…

成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…

【性能测试】并发用户数+电商软件性能压测重要指标分析...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试如何选…

外包干了3个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

LinuxBasicsForHackers笔记 -- 通过作业调度实现任务自动化

安排事件或作业自动运行 cron 守护进程和 cron 表 (crontab) 是用于安排常规任务的最有用的工具。 第一个是 crond&#xff0c;是在后台运行的守护进程。 cron 守护进程检查 cron 表以了解在指定时间运行哪些命令。 我们可以更改 cron 表来安排任务或作业在特定的一天或日期、…