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

目录

  • 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.rhkb.cn/news/214815.html

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

相关文章

【论文极速读】LVM,视觉大模型的GPT时刻?

【论文极速读】LVM,视觉大模型的GPT时刻? FesianXu 20231210 at Baidu Search Team 前言 这一周,LVM在arxiv上刚挂出不久,就被众多自媒体宣传为『视觉大模型的GPT时刻』,笔者抱着强烈的好奇心,在繁忙工作之…

class073 背包dp-01背包、有依赖的背包【算法】

class073 背包dp-01背包、有依赖的背包【算法】 算法讲解073【必备】背包dp-01背包、有依赖的背包 code1 P1048 [NOIP2005 普及组] 采药 // 01背包(模版) // 给定一个正数t,表示背包的容量 // 有m个货物,每个货物可以选择一次 // 每个货物有自己的体积…

ChatGPT 应用开发(一)ChatGPT OpenAI API 免代理调用方式(通过 Cloudflare 的 AI Gateway)

前言 开发 ChatGPT 应用,我觉得最前置的点就是能使用 ChatGPT API 接口。首先我自己要能成功访问,这没问题,会魔法就可以本地调用。 那用户如何调用到我的应用 API 呢,我的理解是通过用户能访问到的中转服务器向 OpenAI 发起访问…

带阻滤波器:原理、应用及性能分析?|深圳比创达电子EMC

在现代电子技术和通信领域中,滤波器是一种常见的电路元件,用于处理信号,去除不需要的频率成分或者增强感兴趣的频率成分。本文将重点探讨带阻滤波器,它是一种特殊类型的滤波器,具有在特定频率范围内抑制信号的功能。我…

JVM Optimization Learning(五)

目录 一、JVM Optimization 1、G1 1、G1内存模型 2、基础概念 3、G1特点: 4、CMS日志分析 5、G1日志分析 2、GC参数 2.1、GC常用参数 2.2、Parallel常用参数 2.3、CMS常用参数 2.4、G1常用参数 一、JVM Optimization 1、G1 G1官网说明:Gar…

【微软技术栈】发布自己造的轮子 -- 创建Nuget包(分布操作)

目录 1、您的项目 2、创建 .nuspec 文件 3、一张图片胜过一千个拉取请求 4、包括自述文件 MD 文件 5、构建软件包 6、将包部署到 Nuget.Org 7、手动上传软件包 8、自动化和脚本化部署 9、我们如何构建和部署 ErrLog.IO Nuget 包 10、Nuget统计数据 11、最后的思考 创建 Nuget 包…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse,否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进【NO.83】将主干特征提取网络Backbone改为RevCol

前言 作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目…

Vue3: 给表格多个字段添加排序功能

问题 在Vue3项目中,使用element-plus的表格组件绘制表格后,需要令表格的多个字段可以进行选择排序(选择升序或者降序)但是排序功能好像有时候会出错,需要排序的字段多了之后,排序功能有时候会不起作用 解…

分子生成领域的stable diffusion - GEOLDM

一、关于stable diffusion 很多人都知道stable diffusion,stable diffusion的出现改变了机器生成领域,让AI技术第一次无比的接近正常人。大语言模型,AIGC概念于是兴起。基于stable diffusion 大家开发了lora, hyperwork等微调技术…

JDK 9 模块化系统 (Module System) 和 多版本兼容 Jar (Multi-Release Jar)

博文目录 文章目录 Module System原因JDK 模块化模块描述文件关键字 启用模块化测试结论 Multi-Release jar (MRJAR)原因原理结论用 IDEA 创建多版本兼容 Jar项目结构pom.xml测试 Module System 原因 Java 9引入了模块化系统的主要原因是为了解决Java平台面临的复杂性和可维…

从电商API接口谈电商ERP系统介绍

部分网友反馈小红书APP出现闪退问题。对此,小红书客服微博发文称,如遇到小红书APP无法启动的情况,用户可前往App Store下载最新版本(详情可见: )小红书闪退崩溃出bug,IT人员要背故障吗&#xff…

【计算机网络实验】实验三 IP网络规划与路由设计(头歌)

目录 一、知识点 二、实验任务 三、头歌测试 一、知识点 IP子网掩码的两种表示方法 32位IP子网掩码,特点是从高位开始连续都是1,后面是连续的0,它有以下两种表示方法: 传统表示法,如:255.255.255.0IP前…

windows下oracle透明网关安装

上一次说了如何在Linux下安装oracle到sqlserver之间的透明网关,现在给大家继续介绍如何在windows下安装。 本文实验环境: 数据库类型 数据库版本 IP oracle 11204 192.168.238.122 MSSQL MSSQL 2008 192.168.239.40 一、oracle服务器配置ODBC源…

linux软件管理

八、软件管理 RPM相关命令 8.1 RPM包管理 8.1.1 RPM概述 RPM Package Manager (原Red Hat Package Manager,现在是一个递归缩写) ​ 由Red Hat公司提出,被众多 Linux 发行版所采用也称二进制( binary code) 无需编译,可以直接使用 ​ 无法设…

重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉

目录 中国计算机大赛-人工智能创意赛现场C4-AI大赛颁奖及留影800个AI应用?这届大学生真能“搞事情”AI原生时代,百度要再培养500大模型人才 中国计算机大赛-人工智能创意赛现场 12月8日,杭州,一位“白发老人”突然摔倒在地&#…

Verilog学习 | 用initial语句写出固定的波形

initial beginia 0;ib 1;clk 0;#10ia 1; #20ib 0;#20ia 0; endalways #5 clk ~clk; 或者 initial clk 0;initial beginia 0;#10ia 1; #40ia 0; endinitial beginib 1;#30 ib 0; endalways #5 clk ~clk;

深入探索C语言中的二叉树:数据结构之旅

引言 在计算机科学领域,数据结构是基础中的基础。在众多数据结构中,二叉树因其在各种操作中的高效性而脱颖而出。二叉树是一种特殊的树形结构,每个节点最多有两个子节点:左子节点和右子节点。这种结构使得搜索、插入、删除等操作…

強強联手!M88明陞宣布与G2 电子竞技俱乐部成为官方合作伙伴!

M88明陞作为亚洲领先的在线游戏平台,正式宣布与G2电子竞技俱乐部建立具有突破性意义的官方合作伙伴关系,G2电子竞技俱乐部是全球领先的电子竞技品牌之一。作为官方合作伙伴关系,双方将合作开展一系列活动。 M88明陞将在G2 电子竞技俱乐部追求…

推荐4个优秀的 Python 时间序列分析库

时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库…