RL 基础 (待补充)

article/2025/6/21 4:21:54

注:本文仅用于自学习笔记备忘,不做任何分享和商业用途。

主要参考资料:

  1. 蘑菇书EasyRL
  2. A (Long) Peek into Reinforcement Learning | Lil'Log

第1章 强化学习基础

RL算法分类:

  • Model-based: Rely on the model of the environment; either the model is known or the algorithm learns it explicitly.
  • Model-free: No dependency on the model during learning.
  • On-policy: Use the deterministic outcomes or samples from the target policy to train the algorithm.
  • Off-policy: Training on a distribution of transitions or episodes produced by a different behavior policy rather than that produced by the target policy.

第2章 马尔可夫决策过程

强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得的奖励。

智能体得到环境的状态后,它会采取动作,并把这个采取的动作返还给环境。环境得到智能体的动作后,它会进入下一个状态,把下一个状态传给智能体。在强化学习中,智能体与环境就是这样进行交互的,这个交互过程可以通过马尔可夫决策过程来表示,所以马尔可夫决策过程是强化学习的基本框架。

2.1 马尔可夫过程

2.1.1 马尔可夫性质

如果某一个过程满足马尔可夫性质,那么未来的转移与过去的是独立的,它只取决于现在。马尔可夫性质是所有马尔可夫过程的基础。

马尔可夫过程:

2.1.2 马尔可夫链

我们可以用状态转移矩阵(state transition matrix)P 来描述状态转移

状态转移矩阵类似于条件概率(conditional probability),它表示当我们知道当前我们在状态 st​时,到达下面所有状态的概率。所以它的每一行描述的是从一个节点到达所有其他节点的概率。

2.2 马尔可夫奖励过程

马尔可夫奖励过程(Markov reward process, MRP)是马尔可夫链加上奖励函数。在马尔可夫奖励过程中,状态转移矩阵和状态都与马尔可夫链一样,只是多了奖励函数(reward function)。奖励函数 R 是一个期望,表示当我们到达某一个状态的时候,可以获得多大的奖励。这里另外定义了折扣因子 γ 。如果状态数是有限的,那么 R 可以是一个向量。

2.2.1 回报与价值函数

其中,T是最终时刻,γ 是折扣因子,越往后得到的奖励,折扣越多。这说明我们更希望得到现有的奖励,对未来的奖励要打折扣。当我们有了回报之后,就可以定义状态的价值了,就是状态价值函数(state-value function)。对于马尔可夫奖励过程,状态价值函数被定义成回报的期望,即

其中,Gt​ 是之前定义的折扣回报(discounted return)。我们对Gt​取了一个期望,期望就是从这个状态开始,我们可能获得多大的价值。所以期望也可以看成未来可能获得奖励的当前价值的表现,就是当我们进入某一个状态后,我们现在有多大的价值。

我们使用折扣因子的原因如下。第一,有些马尔可夫过程是带环的,它并不会终结,我们想避免无穷的奖励。第二,我们并不能建立完美的模拟环境的模型,我们对未来的评估不一定是准确的,我们不一定完全信任模型,因为这种不确定性,所以我们对未来的评估增加一个折扣。我们想把这个不确定性表示出来,希望尽可能快地得到奖励,而不是在未来某一个点得到奖励。第三,如果奖励是有实际价值的,我们可能更希望立刻就得到奖励,而不是后面再得到奖励(现在的钱比以后的钱更有价值)。最后,我们也更想得到即时奖励。有些时候可以把折扣因子设为 0(γ=0),我们就只关注当前的奖励。我们也可以把折扣因子设为 1(γ=1),对未来的奖励并没有打折扣,未来获得的奖励与当前获得的奖励是一样的。折扣因子可以作为强化学习智能体的一个超参数(hyperparameter)来进行调整,通过调整折扣因子,我们可以得到不同动作的智能体。

在马尔可夫奖励过程里面,我们如何计算价值呢?如图 2.4 所示,马尔可夫奖励过程依旧是状态转移,其奖励函数可以定义为:智能体进入第一个状态 s1​ 的时候会得到 5 的奖励,进入第七个状态 s7​ 的时候会得到 10 的奖励,进入其他状态都没有奖励。我们可以用向量来表示奖励函数,即

我们对 4 步的回合(episode)(γ=0.5)来采样回报 G:

后面会介绍MC方法,以及其他方法。

2.2.2 贝尔曼方程

贝尔曼方程的推导过程如下:

贝尔曼方程就是当前状态与未来状态的迭代关系,表示当前状态的价值函数可以通过下个状态的价值函数来计算。贝尔曼方程因其提出者、动态规划创始人理查德 ⋅⋅ 贝尔曼(Richard Bellman)而得名 ,也叫作“动态规划方程”。

贝尔曼方程定义了状态之间的迭代关系,即 

假设有一个马尔可夫链如图 2.5a 所示,贝尔曼方程描述的就是当前状态到未来状态的一个转移。如图 2.5b 所示,假设我们当前在 s1​, 那么它只可能去到3个未来的状态:有 0.1 的概率留在它当前位置,有 0.2 的概率去到 s2​ 状态,有 0.7 的概率去到 s4​ 状态。所以我们把状态转移概率乘它未来的状态的价值,再加上它的即时奖励(immediate reward),就会得到它当前状态的价值。贝尔曼方程定义的就是当前状态与未来状态的迭代关系。

我们可以把贝尔曼方程写成矩阵的形式:

 我们可以直接得到解析解(analytic solution)

2.2.3 计算马尔可夫奖励过程价值的迭代算法


http://www.hkcw.cn/article/EYbGLrXyjE.shtml

相关文章

Redis7底层数据结构解析

redisObject 在 Redis 的源码中,Redis 会将底层数据结构(如 SDS、hash table、skiplist 等)统一封装成一个对象,这个对象叫做 redisObject,也简称 robj。 typedef struct redisObject {unsigned type : 4; // 数…

Kafka 的 ISR 机制深度解析:保障数据可靠性的核心防线

在 Kafka 的消息处理体系中,数据的可靠性和高可用性是至关重要的目标。而 ISR(In-Sync Replicas,同步副本)机制作为 Kafka 实现这一目标的关键技术,在消息复制、故障容错等方面发挥着核心作用。接下来,我们…

cusor无限续杯

githut开源网址:https://github.com/yuaotian/go- 敲黑板下面是主要步骤和注意事项! step1:cursor软件退出登录 step2:cursor网页端删除账号 step3:运行命令(注意:用管理员身份运行windows powershell,不能用cmd&…

360浏览器设置主题

设置默认主题: 1.右上角有个皮肤按钮 进来后,右边有个回复默认皮肤按钮。 换成彩色皮肤后,找按钮不太好找了。

DAY 17 常见聚类算法

目录 DAY 17 常见聚类算法1.聚类的指标2.聚类常见算法:kmeans聚类、dbscan聚类、层次聚类3.三种算法对应的流程作业: 对心脏病数据集进行聚类。 DAY 17 常见聚类算法 import seaborn as sns from sklearn.decomposition import PCA from sklearn.prepro…

MySQL存储架构深度解析:从引擎选型到云原生实践(2025最新版)

引言 在数字经济时代,MySQL作为全球使用最广泛的关系型数据库,其存储技术直接影响着全球70%以上互联网企业的数据处理能力。2025年云原生数据库市场规模预计突破$50B,而MySQL存储引擎的选型与优化仍是DBA的核心课题。本文将结合最新行业实践…

Cesium快速入门到精通系列教程

一、打造第一个Cesium应用 1、官方渠道下载Cesium(可选择历史版本) ​​GitHub Releases页面​​ 访问 Cesium GitHub Releases,此处列出了所有正式发布的版本。 通过标签(如 v1.95.0)选择目标版本,下载…

Unity 模拟高度尺系统开发详解——实现拖动、范围限制、碰撞吸附与本地坐标轴选择

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity 模拟高度尺系统开发详解——实现拖动、范围限制、碰撞吸附与本地坐标轴选择 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不…

Spark核心:单跳转换率计算全解析

目录 代码功能解释与问题分析 关键问题分析 修正与拓展方案 1. 修正分子计算逻辑 2. 修正分母计算逻辑 3. 完善转换率计算 4. 优化代码结构 5. 性能优化 修正后的代码示例 关键改进点说明 测试与验证建议 package core.reqimport org.apache.spark.rdd.RDD import o…

基于STM32单片机CO气体检测

基于STM32单片机CO检测 (仿真+程序+原理图) 功能介绍 具体功能: 1.MQ-7传感器检测CO气体浓度; 2.LCD1602实时显示气体浓度及上限值; 3.气体浓度超过设定对应上限值,电机转动&…

MySQL事务

事务(Transaction)是数据库管理系统中一组操作的集合,作为一个单元要么全部成功,要么全部失败,确保数据的一致性和完整性。它像一个“原子操作单元”,遵循ACID原则(原子性、一致性、隔离性、持久…

C# 反射与特性:深入探索运行时类型系统与元数据编程

在C#开发中,我们通常编写静态类型的代码——编译器在编译时就知道所有类型信息。然而,.NET框架提供了一套强大的机制,允许我们在运行时检查、发现和使用类型信息,这就是反射(Reflection)。而与反射密切相关的另一项技术是特性(Att…

腾讯面试手撕题:返回行递增有序矩阵第k小的元素

题目 给定一个n行n列的矩阵,这个矩阵的每一行是递增有序的,求这个矩阵中第k小的元素。 解答 优解 基于二分查找和按行统计小于等于目标值的元素个数。算法的时间复杂度为,其中D是矩阵中元素值域的范围(即最大值与最小值的差&a…

【PostgreSQL 02】PostgreSQL数据类型革命:JSON、数组与地理信息让你的应用飞起来

PostgreSQL数据类型革命:JSON、数组与地理信息让你的应用飞起来 关键词 PostgreSQL高级数据类型, JSONB, 数组类型, PostGIS, 地理信息系统, NoSQL, 文档数据库, 空间数据, 数据库设计, PostgreSQL扩展 摘要 PostgreSQL的高级数据类型是其区别于传统关系数据库的核心…

[Windows] 剪映 视频编辑处理

附链接:夸克网盘分享(点击蓝色字体自行保存下载)

NW994NX734美光固态闪存NX737NX740

NW994NX734美光固态闪存NX737NX740 在数字化浪潮汹涌澎湃的今天,数据存储技术如同一座坚实的基石,支撑着科技世界的大厦。美光固态闪存以其卓越的性能和创新的技术,在存储领域占据着重要的地位。本文将深入剖析NW994、NX734、NX737以及NX740…

C# 类和继承(使用基类的引用)

使用基类的引用 派生类的实例由基类的实例和派生类新增的成员组成。派生类的引用指向整个类对象,包括 基类部分。 如果有一个派生类对象的引用,就可以获取该对象基类部分的引用(使用类型转换运算符把 该引用转换为基类类型)。类…

VMvare 创建虚拟机 安装CentOS7,配置静态IP地址

创建虚拟机 安装CentOS7 设置网络模式 设置静态ip vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network

python:PyMOL 能处理 *.pdb 文件吗?

PyMOL 完全可以打开并处理 PDB(Protein Data Bank)文件,这是 PyMOL 最主要的功能之一。PDB 格式是结构生物学领域的标准文件格式,专门用于存储生物大分子(如蛋白质、核酸)的三维结构数据。 在 PyMOL 中打开…

【数据治理】要点整理-信息技术数据质量评价指标-GB/T36344-2018

导读:指标为数据质量评估提供了一套系统化、标准化的框架,涵盖规范性、完整性、准确性、一致性、时效性、可访问性六大核心指标,助力组织提升数据处理效率、支持决策制定及业务流程优化,确保数据在数据生存周期各阶段的质量可控。…