AI学习笔记——MDP(Markov Decision Processes马可夫决策过程)简介

简介: 前面好几篇文章都在介绍强化学习(RL),以及强化学习的一些具体算法,但是强化学习中用到的最重要的理论MDP却还没提到。这篇文章就来说说MDP。讲MDP的文章和资料非常多,理论和数学公式也能轻易找到,所以本文并不是要严谨地推导MDP,而是想让读者感性地认识MDP以及它对强化学习的重要性。

前面好几篇文章都在介绍强化学习(RL),以及强化学习的一些具体算法,但是强化学习中用到的最重要的理论MDP却还没提到。这篇文章就来说说MDP。

讲MDP的文章和资料非常多,理论和数学公式也能轻易找到,所以本文并不是要严谨地推导MDP,而是想让读者感性地认识MDP以及它对强化学习的重要性。本文主要的参考资料来自于David Silver 教授(DeepMind 的创始人)在UCL的课程以及Richard S. Sutton and Andrew G. Barto的经典书籍:Reinforcement Learning: An Introduction

1. MDP需要满足的条件

RL是要通过对环境不停地试错来学习的,MDP就是用来描述RL中的环境。

  • 这个环境必须是完全可观测的(Fully Observable)。几乎所有的RL问题都可以转换成MDP的环境。
  • 未来只与当前的状态有关,与之前的历史没有关系。换句话说就是当前的状态一旦确定了,之前的历史就可以抛弃了,因为未来只与当前有关。
2. MP(Markov Process 马可夫过程)

注意,MDP除去决策"D",就是MP。MP是一个随机过程。从现在状态 S下一个状态 S' 通过Pss' 状态转移概率矩阵(State transition probability matrix)来完成这个过程, Pss'只是概率,所以MP还是随机的。

img_2de1d3996259c1b48c975315a0f7d136.png

举个栗子:
如下图,一个学生学习一门课程,有6个状态:从Class1 到 Class 3 的学习,到Pass再到去Sleep。中间可能去刷Facebook, 去Sleep或者去酒吧(Pub)喝酒。


img_151a192b20b06307dc3499a76f99ead8.png

其中,那些数字(0.9,0.1)和箭头就代表了Pss' 的数值和状态转移的方向。Pss' 实际上是一个矩阵,如下图:

img_bddcb112c8f282f3d237ecf663744102.png
3. 马可夫奖励过程(Markov Reward Process)

奖励R是环境的反馈,当然这个反馈是与行动A, 相关的。在还没引入行动这个概念之前,暂且认为只与状态S有关。下图是加上了奖励参数的样子:


img_cf431fb2e538bbc3ddaff8ff3cf0f166.png

我们的目标Gt是获得奖励,有了R,有了S,有了Pss' 矩阵,实际上我们就能够估算出每一个S上的Gt:E(Gt|St = S)。
Gt 是这样定义的:

img_a29fb0569619949c16acc6d3731857b5.png

G t的物理意义就是之后状态的所有R的总和。

γ为衰减值(0到1之间),我们在之前Q-Learning中已经介绍过了,就不多说了。

这个估算出来的Gt就叫做这个状态S上的Sate Value function(状态值函数): v(S)

4. Bellman 等式

v(S)很明显是一个递归的过程,也就是说知道了最终状态v(S最终)(上面那个例子是Sleep)就可以倒推到初始状态的v(S初始),这个关系就是用Bellman 等式表达出来的。

在任意一个状态S如何求v(S)呢?需要用到下面这个公式

img_557c673ae92ccdcc2c513fdc7d902143.png

R s是这个状态的奖励,S' 是下一个状态(下个可能的状态可能不止一个),P ss'就是之前提到的State transition probability matrix。

这个公式的物理意义也很简单,就是这个状态的奖励加上所有可能的下一个状态的v(S')和对应的Pss' 的乘积之和,再乘以衰减值γ。

我们可以轻易验证4.3这个v(s) 是否正确,如下图(γ=1)


img_795c12fdc4c083470be0f3e16e4f28ed.png
5. MDP(Markov Decision Processes马可夫决策过程)

有了前面MP的铺垫,加上D(Decision)就是MDP(马可夫决策过程了)。这个决策是要决策什么呢?就是要决策行动(Action)

正如之前提到的,行动A的奖励R不仅跟状态S相关,而且与行动A也是相关的,还是之前学生学习课程的例子,加上行动和与行动相关的R,如图:


img_23c86864072a3e690820f83981ba9fc1.png

(注意pub 那个黑点这里变成了行动,而不是状态,主要是为了后面区分sate-value function 和 action-value function)

6. 策略(Policy)

DP是一个随机的过程,在有了策略 (policy)π之后才整个过程才有了规律,策略也是一个概率分布,体现了在给定状态下采取行动的概率。


img_e25f538e9b359f0453dda97e1f603e21.png

策略是用来指导行动的,不要与描述状态间的Pss' 混淆了。当然两者是有联系的,后面将会提到。

7. Value Function(值函数)

这是MDP最重要的的概念。前面已经提到了状态值函数(State-Value Function)v(S)(后面简称V函数),但是没有机器人,没有策略指导机器人的行动。

有了策略π之后vπ(s)的物理意义就是,在该策略的指导下,在目前这个状态下,之后能够预期的到的的奖励是多少。

img_883ea4068de25a6cb0d7b6a097f369f2.png

当然我们更关心策略是如何指导行动的,我们引入行动值函数(Action-Value Function) qπ(s,a) 的概念。看起来是不是很眼熟,因为我们通常又叫他q函数,参见之前的文章Q-Learning

因为加入了行动,所以q函数的物理意义就是,在当前策略的指导下,在当前状态下,采取行动a之后所能预期得到的奖励是多少。


img_cb739165d1f714c44b48c8666bdb48ef.png
8. V函数和Q函数的关系

V函数和Q函数都是递归关系,这个通过Bellman 等式也可以证明,这里也不再赘述。


img_896c061dbe373536ff18637ac441cdc9.png

img_6af5a348d00d70ea33a24c0aa80b2ed8.png

通过Q函数来求V函数:


img_fe9633d8ec6177b66b1be7aa62f85b78.png

上图,空心代表状态,实心代表行动。所有行动的策略π(a|s)与Q函数qπ()的乘积之和就能得到V函数。

img_0a5e8db75457ee8f3f2666b3a014645f.png

同样的,所有下一个状态的V函数与对应的Pss'乘积之和再加上采取该行动的奖励就能求得Q函数。

再次注意,Pss'反映的是状态间的转移概率,π(a|s)是状态和行动间的策略概率

当然上面两图组合(公式的带入)就能反映该状态的V函数和下一个状态的V函数的递归关系。


img_6c989721f660be88f2af126ad95f19b9.png

倒过来组合(公式带入)就能反映该行动下的Q函数和下一个行动的Q函数的递归关系。


img_372cdd096a0712cc9920846f86a9a1bb.png

利用上面的公式我们可以轻易验证例子中pass的V函数:
注意:π(a|study)= π(a|pub) =0.5


img_581173e9966970342caae66415a2c156.png
总结

本文介绍了MDP的基本概念,然而我们了解MDP的概念是为了指导我们的行动,从而得到最优的结果。换句话说就是选择最优的策略,得到最多的奖励。再换句话说就是求最大的V函数和Q函数,这些内容将放到下一篇文章再做介绍。


文章首发steemit.com 为了方便墙内阅读,搬运至此,欢迎留言或者访问我的Steemit主页

目录
相关文章
|
3天前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
3天前
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
|
3天前
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
|
4天前
|
机器学习/深度学习 人工智能 PyTorch
AI计算机视觉笔记三十二:LPRNet车牌识别
LPRNet是一种基于Pytorch的高性能、轻量级车牌识别框架,适用于中国及其他国家的车牌识别。该网络无需对字符进行预分割,采用端到端的轻量化设计,结合了squeezenet和inception的思想。其创新点在于去除了RNN,仅使用CNN与CTC Loss,并通过特定的卷积模块提取上下文信息。环境配置包括使用CPU开发板和Autodl训练环境。训练和测试过程需搭建虚拟环境并安装相关依赖,执行训练和测试脚本时可能遇到若干错误,需相应调整代码以确保正确运行。使用官方模型可获得较高的识别准确率,自行训练时建议增加训练轮数以提升效果。
|
4天前
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记三十:yolov8_obb旋转框训练
本文介绍了如何使用AUTODL环境搭建YOLOv8-obb的训练流程。首先创建虚拟环境并激活,然后通过指定清华源安装ultralytics库。接着下载YOLOv8源码,并使用指定命令开始训练,过程中可能会下载yolov8n.pt文件。训练完成后,可使用相应命令进行预测测试。
|
3天前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二十二:基于 LeNet5 的手写数字识别及训练
本文介绍了使用PyTorch复现LeNet5模型并检测手写数字的过程。通过搭建PyTorch环境、安装相关库和下载MNIST数据集,实现了模型训练与测试。训练过程涉及创建虚拟环境、安装PyTorch及依赖库、准备数据集,并编写训练代码。最终模型在测试集上的准确率达到0.986,满足预期要求。此项目为后续在RK3568平台上部署模型奠定了基础。
|
3天前
|
人工智能 TensorFlow 算法框架/工具
AI计算机视觉笔记十七:实例分割
本文介绍了计算机视觉中的实例分割技术,通过结合目标检测和语义分割的方法,实现对图像中不同实例的精确区分与标记。以识别多只猫为例,详细描述了使用Mask R-CNN模型进行实例分割的过程,并提供了相关代码及环境搭建指南。通过实例演示,展示了如何利用该技术成功识别并分割出图像中的各个对象。
|
3天前
|
人工智能 并行计算 测试技术
AI计算机视觉笔记三十一:基于UNetMultiLane的多车道线等识别
该项目基于开源数据集 VIL100 实现了 UNetMultiLane,用于多车道线及车道线类型的识别。数据集中标注了六个车道的车道线及其类型。项目详细记录了从环境搭建到模型训练与测试的全过程,并提供了在 CPU 上进行训练和 ONNX 转换的代码示例。训练过程约需 4 小时完成 50 个 epoch。此外,还实现了视频检测功能,可在视频中实时识别车道线及其类型。
|
4天前
|
传感器 人工智能 算法
AI计算机视觉笔记二十七:YOLOV8实现目标追踪
本文介绍了使用YOLOv8实现人员检测与追踪的方法。通过为每个人员分配唯一ID,实现持续追踪,并可统计人数,适用于小区或办公楼出入管理。首先解释了目标检测与追踪的区别,接着详细描述了使用匈牙利算法和卡尔曼滤波实现目标关联的过程。文章提供了基于IOU实现追踪的具体步骤,包括环境搭建、模型加载及追踪逻辑实现。通过示例代码展示了如何使用YOLOv8进行实时视频处理,并实现人员追踪功能。测试结果显示,该方法在实际场景中具有较好的应用潜力。
|
3天前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。