第九篇:强化学习Q-learning算法 通俗介绍

你好,我是郭震(zhenguo)

今天介绍强化学习第九篇:Q-learning算法

前面我们介绍强化学习基本概念,马尔科夫决策过程,策略迭代和值迭代,这些组成强化学习的基础。

从今天开始逐步介绍常用强化学习算法,从最简单的Q-learning算法开始。简单并不代表不常用,有的简单会是经典,Q-learning算法就是这样的例子。

1 迷宫游戏

假设我们有一个迷宫地图,其中包含多个状态(格子),每个格子可以采取上、下、左、右四个动作进行移动。目标是从起始位置找到迷宫的出口,即到达终点位置。

首先,我们需要定义迷宫地图的状态和动作。状态可以表示为迷宫中的每个格子,动作可以表示为上、下、左、右四个方向。

如下图所示,对于图示白色格子,假定智能体走到这里,它只能向上、下运动,因为左右两侧是障碍物:

5851ef52973e85c82ffa4d0474ca3811.png

由此引出Q表,Q表用于存储每个状态动作对的Q值估计。

在图示迷宫中,Q表是一个二维表格,用于存储每个状态动作对的Q值估计。迷宫地图有4行4列,共有16个格子,且每个格子可以采取上、下、左、右四个动作,那么Q表的大小:[16,4] 二维表格。每一行对应着一个状态,每一列对应着一个动作。

Q表样子:

上     下     左     右
0  Q(0,0)  Q(0,1)  Q(0,2)  Q(0,3)
1  Q(1,0)  Q(1,1)  Q(1,2)  Q(1,3)
2  Q(2,0)  Q(2,1)  Q(2,2)  Q(2,3)
3  Q(3,0)  Q(3,1)  Q(3,2)  Q(3,3)
4  Q(4,0)  Q(4,1)  Q(4,2)  Q(4,3)
5  Q(5,0)  Q(5,1)  Q(5,2)  Q(5,3)
6  Q(6,0)  Q(6,1)  Q(6,2)  Q(6,3)
7  Q(7,0)  Q(7,1)  Q(7,2)  Q(7,3)
8  Q(8,0)  Q(8,1)  Q(8,2)  Q(8,3)
9  Q(9,0)  Q(9,1)  Q(9,2)  Q(9,3)
10 Q(10,0) Q(10,1) Q(10,2) Q(10,3)
11 Q(11,0) Q(11,1) Q(11,2) Q(11,3)
12 Q(12,0) Q(12,1) Q(12,2) Q(12,3)
13 Q(13,0) Q(13,1) Q(13,2) Q(13,3)
14 Q(14,0) Q(14,1) Q(14,2) Q(14,3)
15 Q(15,0) Q(15,1) Q(15,2) Q(15,3)

下面图是给每个状态编号后的示意图,更好帮助你理解Q表:

dbc1ac464b063325fa9feef117b1280b.png


Q表里的每个值代表什么意义?

Q值表示在该状态下采取该动作所获得的长期回报估计。比如Q(11,2)表示在状态11下,采取动作编号2后的长期回报值。

2 归纳

借助上面迷宫游戏,我们归纳出Q-learning算法相关的抽象解释。

Q值定义:

Q值是一个表格,用于存储每个状态动作对的估计价值。对于给定的状态s和动作a,Q值表示在状态s执行动作a所获得的长期回报估计。

Q-learning算法核心之更新规则:

Q-learning使用迭代的方式更新Q值,通过不断更新Q值来逐步逼近最优策略。更新规则如下:

其中,表示在状态s执行动作a的值, 是学习率(0 < α <= 1), 是执行动作a后获得的即时奖励, 是折扣因子(0 <= <= 1), 是执行动作a后转移到的下一个状态,是在下一个状态下选择的动作,表示在下一个状态下所有可能动作中选择值最大的动作。

更新规则的含义是,通过将当前Q值与新估计的Q值加权平均,使Q值逐步收敛到最优值。其中, 控制了新估计值的权重, 控制了对未来回报的重视程度。

通过不断地执行更新规则,Q-learning算法能够逐步学习到最优的Q值,并根据Q值选择最佳的动作来达到最优策略。

3 Q-learning算法

下面是完整的Q-learning算法:

Step1:初始化Q表:对于每个状态-动作对(s, a),将Q(s, a)初始化为一个随机值或者初始值。

Step2:迭代更新Q值:

  • Step2.1 选择一个初始状态s。

  • Step2.2 在当前状态s下,根据一定策略选择一个动作a。例如可以使用ε-greedy策略,在一定概率ε内选择随机动作,否则选择具有最大Q值的动作。

  • Step2.3 执行动作a,观察获得的奖励r以及转移到的下一个状态s'。

  • Step2.4 根据Q值的更新规则,更新Q(s, a):

  • 将状态更新为下一个状态s',并重复以上步骤直到到达终止状态。

Step3 重复步骤Step2,直到达到指定的迭代次数或者满足停止条件。

Step4 返回学习到的Q表作为最优策略。

这个算法的核心是通过不断与环境的交互,根据即时奖励和未来奖励更新Q值,从而逐步学习到最优策略。在训练过程中,智能体通过不断尝试并观察结果,不断调整Q值,直到找到最优的动作选择策略。

感谢你的点赞和转发,让我更新更有动力

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SparkCore的相关概念

1、Spark的RDD算子 RDD算子的概念和分类 1、1 Transformation算子 定义&#xff1a;RDD算子&#xff0c;返回值仍是一个RDD的&#xff0c;称之为转换算子 特性&#xff1a;这类算子是lazy懒加载的。如果没有Action算子&#xff0c;转换算子是不工作的。 1、2 Action算子 定义&…

做了一个日内信号可视化系统

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;半年过去了。松鼠Quant计划6月内发布本年度最重要的一个策略:盘口策略。这个策略群友们的呼声很高&#xff0c;也是花了比较多时间去弄。整个策略有多个python脚本: CTP数据生成order…

部署和配置DHCP服务器实验:自动分配IP地址和网络配置

部署和配置DHCP服务器实验&#xff1a;自动分配IP地址和网络配置 【实验目的】 部署DHCP服务器。熟悉DHCP服务器的配置方法。验证拓扑。 【实验拓扑】 实验拓扑如图所示。 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 DHCPSERVE F0/0 172.16.10.1 25…

数据安全--16--数据采集阶段安全防护措施

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/131033616 一、引子 数据采集阶段的安全防护措施主要是从三个方面来开展的&#xff0c;第一个是从个人数据主体采集方面&#xff0c;第二个是从外部机构采集方面&#xff0c;以上两个方面基本涵盖了数…

Bitmiracle Docotic.Pdf 9.015 Crack

Docotic.Pdf 库是正确的法语和强大的编程和界面&#xff0c;可以让用户和开发人员创建专业和高质量的 PDF 文件&#xff0c;甚至可以阅读和修改那些已经存在的。它具有干净而强大的编程接口&#xff0c;能够帮助用户创建质量非常好的 PDF 文档。在这个库的帮助下&#xff0c;用…

CMake学习(1): CMake基本使用

https://subingwen.cn/cmake/CMake-primer/ 1. CMake 概述 CMake是一个项目构建工具&#xff0c;并且是跨平台的。Cmake跟Makefile其实是差不多的&#xff0c;只不过makefile更底层些。大多是 IDE 软件都集成了 make&#xff0c;比如&#xff1a;VS 的 nmake、linux 下的 GNU…

python之函数(参数,匿名函数,局部变量和全局变量)

文章目录 前言一、函数的参数 1、形参和实参2、必传参数&#xff08;也叫&#xff1a;必须参数&#xff09;3、关键字传参4.、默认参数5、不定长参数6、传参的顺序二、匿名函数&#xff08;lambda函数&#xff09; 1. 定义及特点语法格式2. lambda函数的特点三、函数返回值retu…

【测试开发】实训记录日志

软件测试系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 了解测试开发和软件测试 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 …

SSD源码总结

一、生成默认框 默认框的宽高 默认框的宽高是相对于原图的尺寸计算出来的。 默认框的中心 默认框的中心是相对于特征图的尺寸计算出来的。 二、将真实框分配给默认框 1、区分正负样本 1.1、选取正样本 计算真实框&#xff08;bboxs&#xff09;与每个默认框&#xff08;…

SpringMVC-【回顾】

回顾MVC架构 什么是mvc&#xff1a;模型、视图、控制器 -----软件设计规范 回顾servlet maven项目导入依赖&#xff08;webmvc,servlet-api,jsp-api,jstl,junit&#xff09;创建子模块&#xff0c;在子模块中添加框架支持&#xff08;在子模块中导入依赖jsp、servlet【因为父…

2018 年一月联考逻辑真题

2018 年一月联考逻辑真题 三、逻辑推理&#xff1a;第 26-55 小题&#xff0c;每小题 2 分&#xff0c;共 60 分。下列每題给出的A.、 B.、C.、D.五个选项中&#xff0c;只有一项是符合试题要求的。请在答题卡上将所选项的字母涂黑。 真题&#xff08;2018-26&#xff09;-翻译…

区块链的基本介绍

目录 1、简介 2、区块链的分类 2.1 公有链 2.2 联盟链 2.3 私有链 3、区块链特征 4、区块链结构 5、区块链对记账权利的分配方式 5.1 POW 5.2 PoS 5.3 DPoS 6、Defi、NFT、 gameFi 7、DAPP 7.1 DAPP 的核心要素 8、比特币 8.1 比特币简介 8.2 比特币数字签名…

基站机房:保障通信网络稳定,如何解决安全隐患?

基站机房作为无线通信网络的关键组成部分&#xff0c;承载着大量的网络设备和通信设施&#xff0c;对于运营商和通信服务提供商来说具有重要意义。 无论是大型运营商还是通信服务提供商&#xff0c;动环监控系统都将成为他们成功运营和管理通信网络的关键工具。 客户案例 案例…

Java学习路线(22)——测试框架Junit

一、单元测试概念 单元测试就是针对最小的功能单元编写测试代码&#xff0c;Java程序最小的功能单元是方法&#xff0c;因此&#xff0c;单元测试就是针对Java方法的测试&#xff0c;进而检查方法正确性。 二、Junit测试框架 &#xff08;一&#xff09;概念&#xff1a; Jun…

HBase:(三)HBase API

HBase:(一)安装部署_只爱大锅饭的博客-CSDN博客hbase部署安装https://blog.csdn.net/qq_35370485/article/details/130988364?spm1001.2014.3001.5501 1.创建maven项目 2.添加依赖 <dependency><groupId>org.apache.hbase</groupId><artifactId>hba…

【Java基础】注解与反射

一、学习笔记 &#xff08;本文内容基本源自参考链接1视频教程&#xff09; 1、注解的含义 1&#xff09;注解&#xff08;annotation)是从jdk5.0开始引入的新技术&#xff0c;其作用&#xff1a;不是程序本身&#xff0c;可对程序作解释&#xff08;该作用与注释comment相同…

MFC(十二)多个对话框

我们来制定多个对话框&#xff0c;每个对话框都有不同的功能&#xff0c;单击下一步&#xff0c;即可跳转到下一个对话框 1.新建一个启动按钮 2.在资源视图&#xff0c;Dialog里面&#xff0c;右键-->添加资源---->dialog>选择IDD PROPPAGE_SMALL新建 属性页&#…

同浏览器下多窗口进行跨源通信、同源通信

同浏览器下多窗口进行跨源通信、同源通信 多页面通信运用到了“发布订阅”的设计模式&#xff0c;一个页面发布指令&#xff0c;其他页面进行订阅并进行相应的行为操作&#xff01; 一、跨源通信 window.postMessage() window.postMessage() 方法可以安全地实现跨源通信。通常…

Vue.js 中的数据双向绑定是如何实现的?

Vue.js 中的数据双向绑定是如何实现的&#xff1f; Vue.js 是一款流行的前端框架&#xff0c;它的核心功能之一是数据双向绑定。本文将介绍 Vue.js 中数据双向绑定的实现原理&#xff0c;并附上相关代码实例。 什么是数据双向绑定&#xff1f; 在传统的前端开发中&#xff0c…

智能应用搭建平台——LCHub低代码表单 vs 流程表单 vs 仪表盘

1. LCHub低代码如何选择 「流程表单」:填报数据,并带有流程审批功能,适合报销、请假申请或其他工作流; 「表单」:填报数据,并带有数据协作功能,如修改、删除、导入、导出,并可以给不同的人不同的管理权限; 「仪表盘」:数据分析处理、结果展示功能,如数据汇总、趋…
最新文章