AI学习笔记——强化学习之动态规划(Dynamic Programming)解决MDP(2)

简介: 求解最优MDP实际上就是找到最佳策略(Policy)π来最大化来最大化V函数(Value Function)。公式一1. 策略估算(Policy Evaluation)在MDP问题中,如何评估一个策略的好坏呢?那我们就计算这个策略的V函数(值函数),这里我们又要用到之前文章中提到的Bellman Equation了。

求解最优MDP实际上就是找到最佳策略(Policy)π来最大化来最大化V函数(Value Function)。

img_be1ffc0d5da778e9103097dd10b46d5c.png
公式一

1. 策略估算(Policy Evaluation)

在MDP问题中,如何评估一个策略的好坏呢?那我们就计算这个策略的V函数(值函数),这里我们又要用到之前文章中提到的Bellman Equation了。

img_8a3ed8c87cb4711216c31e1836f12773.png
公式二

这个等式可以通过下一个状态的值函数来求得当前状态的值函数。如果我们对上面这个Bellman Equation中的每一个状态不停地迭代,最终每个状态的V(值)函数都会收敛成一个固定的数值。公式如下
img_9a90a5ce2bb68c9b375ea25c03ee44bf.png
公式三

这个公式与公式二不同的是引入了k,k是指迭代的次数。Bellman等式左边表示k+1代s状态上的V函数,Bellman等式右边是k代中s下一个状态s'的的相关函数。第二个等式是Bellman等式的矩阵形式。我们使用这个公式将第k+1代的每一个状态s都更新之后,就完成了第k+1次迭代。

V函数真的会收敛到一个稳定的数值吗?我们不妨举一个例子。


img_d8058eb7adc734b5cd5fc49793d5ba52.png
图一

图中左上角和又下角是机器人的目标奖励为0,其他地方奖励为-1,策略是随机运动(上下左右移动的概率相等,为π=0.25)。价值函数的迭代过程如下:

img_ebb711e50dae0e5f93c21ae484063415.png
图二

可以看出在这个随机运动策略决策下,通过对Bellman 等式的不断迭代最终V函数会收敛到一个稳定的数值。

2. 策略迭代(Policy Iteration)

通过迭代Ballman函数的方式完成V函数的收敛,从而完成了对这个策略的评估。上面的例子即便收敛之后,就得到了随机运动的策略π的V函数。

接下来我们就要改进这个随机策略,改进的方法就是选择获取最大奖励的策略,而并不是跟之前一样随机运动。这种获取最大奖励的策略就叫做Greedy策略。

img_3442a20a018259b3003d6c8d97a34829.png
图三

所以策略迭代分为两步:

第一步:用迭代Bellman 等式的方法对策略进行评估,收敛V函数(公式三)
第二步:用Greedy的方法改进策略。

上面两个步骤不停循环,最终策略就会收敛到最优策略。

img_8aaa0c853914e7d11527db5eaac79c8e.png
图四

2. 值迭代(Value Iteration)

也许你已经发现了,如同上面的例子,如果想找到最佳策略,在用Bellman等式迭代的过程中,并不一定需要等到V函数完全收敛。或许可以设定一个迭代上限,比如k=3就停止迭代了。

那更加极端地,在迭代Bellman 等式的过程中,我们只迭代一次(k=1)就采取Greedy策略,而不必等到V函数收敛,这种特殊的策略迭代方法就叫做值迭代(Value Iteration)

img_a2a3be8b6d33548b488e5814883a20a0.png
公式四

值迭代简单粗暴,直接用Bellman等式更新V函数,每次更新的时候都用Greedy的策略,当V函数收敛的时候策略也就收敛了。这个时候得到的策略就是最佳策略。

3. 总结

策略迭代和值迭代是寻找最优策略的方法,策略迭代先评估策略用迭代Bellman等式的方式使V函数收敛,然后再用Greedy的策略对原策略进行改进,然后不断重复这两个步骤,直到策略收敛。

值迭代可以看成是策略迭代的一种特殊情况,只迭代Bellman函数一次便使用Greedy策略对V函数进行更新,然后重复这两个动作直到V函数收敛从而获得最佳策略。


相关文章
AI学习笔记——求解最优MDP
AI学习笔记——MDP(Markov Decision Processes马可夫决策过程)简介
AI学习笔记——Q Learning
AI学习笔记——Sarsa算法
AI学习笔记——卷积神经网络(CNN)


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

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