强化学习的数学原理学习笔记 - 基于模型(Model-based)

文章目录

  • 概览:RL方法分类
  • 基于模型(Model-Based)
    • 值迭代(Value Iteration)
    • 🟦策略迭代(Policy Iteration)
    • 🟡截断策略迭代(Truncated Policy Iteration)


本系列文章介绍强化学习基础知识与经典算法原理,大部分内容来自西湖大学赵世钰老师的强化学习的数学原理课程(参考资料1),并参考了部分参考资料2、3的内容进行补充。

系列博文索引:

  • 强化学习的数学原理学习笔记 - RL基础知识
  • 强化学习的数学原理学习笔记 - 基于模型(Model-based)
  • 强化学习的数学原理学习笔记 - 蒙特卡洛方法(Monte Carlo)
  • 强化学习的数学原理学习笔记 - 时序差分学习(Temporal Difference)
  • 强化学习的数学原理学习笔记 - 值函数近似(Value Function Approximation)
  • 强化学习的数学原理学习笔记 - 策略梯度(Policy Gradient)
  • 强化学习的数学原理学习笔记 - Actor-Critic

参考资料:

  1. 【强化学习的数学原理】课程:从零开始到透彻理解(完结)(主要)
  2. Sutton & Barto Book: Reinforcement Learning: An Introduction
  3. 机器学习笔记

*注:【】内文字为个人想法,不一定准确

概览:RL方法分类

图源:https://zhuanlan.zhihu.com/p/36494307
*图源:https://zhuanlan.zhihu.com/p/36494307

RL算法中存在两种策略:

  • 行为策略(Behavior policy):与环境交互,生成experience采样
  • 目标策略(Target policy):迭代更新,直到收敛至最优策略

据此,可以将RL算法分为两类:

  • On-policy:Behavior policy即为Target policy,例如MC、Sarsa等
  • Off-policy:Behavior policy与Target policy可以不同,例如Q-learning等
    • 好处:从别的策略得到的经验中学习,允许更为广泛的探索而不必考虑利用

*On-policy可以看作是Off-policy的一种特殊情况,因为Off-policy允许两种策略相同。

基于模型(Model-Based)

基于模型:环境MDP的模型已知,基于动态规划(DP)求解

  • 优:提供了RL的理论基础
  • 劣:假设过强(完美的环境模型,比如状态转移矩阵),计算开销过高

基于模型的方法:

  • 策略迭代:收敛速度较快,适用于小状态空间
  • 值迭代:计算量较少,适用于大状态空间

*值迭代可以看作是策略迭代的一种特殊情况

值迭代(Value Iteration)

算法步骤:在第 k k k次迭代中

  • 策略更新:给定 v k v_k vk,求解对应的策略 π k + 1 = arg max ⁡ π ( r π + γ P π v k ) \pi_{k+1} = \argmax_\pi (r_\pi + \gamma P_\pi v_k) πk+1=argmaxπ(rπ+γPπvk)
  • 值更新:根据策略 π k + 1 \pi_{k+1} πk+1,计算 v k + 1 = r π k + 1 + γ P π k + 1 + v k v_{k+1} = r_{\pi_{k+1}} + \gamma P_{\pi_{k+1}} + v_k vk+1=rπk+1+γPπk+1+vk
    • *此处的 v k v_k vk并非状态值,只是一个值,因为其并不满足贝尔曼方程

*详细步骤见强化学习的数学原理学习笔记 - 基础知识中求解贝尔曼最优方程部分。

算法公式:
v k + 1 ( s ) = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] v_{k+1} (s) = \max_a \sum_{s', r} p(s', r|s, a) [r + \gamma v_k(s')] vk+1(s)=amaxs,rp(s,rs,a)[r+γvk(s)]

伪代码:

v[0] = init_state_value()while ||v_[k] - v_[k-1]|| >= threshold:for s in StateSpace:for a in ActionSpace:q[a] = calculate_q_value(s, a, v_[k])a_star = get_optimal_action(q)# policy updatepi[k+1] = update_policy(a_star)# value updatev[k+1] = update_value(pi[k+1], v_[k])k = k + 1

值迭代可以看作将贝尔曼优化方程转为一个更新规则:先计算最优值函数,再从中提取对应的策略作为最优策略

🟦策略迭代(Policy Iteration)

反复执行策略评估(Policy Evaluation,PE)和策略提升(Policy Improvement,PI),直至收敛至最优策略。【*能够收敛的要求:有限MDP仅有有限个策略】

  • 策略评估:评价某个策略本身如何,即计算任意策略 π \pi π的状态值函数 v π v_{\pi} vπ,称之为预测问题(Prediction Problem )
    • v k + 1 ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] v_{k+1} (s) = \sum_a \pi (a|s) \sum_{s', r} p(s', r|s, a) [r + \gamma v_k(s')] vk+1(s)=aπ(as)s,rp(s,rs,a)[r+γvk(s)]
      • 注意这里与值迭代的区别:值迭代直接求解最优的状态值,而策略评估仅是计算当前策略的状态值(并不一定是最优)
  • 策略提升:寻找每个状态下的最好的动作
    • 考虑在状态 s s s下找到了一个优于现有策略 π \pi π的动作 a = π ′ ( s ) ≠ π ( s ) a = \pi'(s) \neq \pi(s) a=π(s)=π(s),则对应的动作值函数 q π ( s , a ) q_{\pi} (s, a) qπ(s,a)不低于状态值函数 v π ( s ) v_{\pi} (s) vπ(s),即: q π ( s , π ′ ( s ) ) ≥ v π ( s ) q_{\pi}(s, \pi'(s)) \geq v_{\pi} (s) qπ(s,π(s))vπ(s)
    • 新策略 π ′ \pi' π不差于现有策略 π \pi π,即满足: v π ′ ( s ) ≥ v π ( s ) v_{\pi'} (s) \geq v_{\pi} (s) vπ(s)vπ(s)
    • 那么策略提升就是以贪心的方式选择每个状态下能使动作值函数最大的动作,进而更新策略: π ′ ( s ) = arg max ⁡ a q π ( s , a ) = arg max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \pi'(s) = \argmax_a q_\pi (s, a) = \argmax_a \sum_{s', r} p(s', r|s, a) [r + \gamma v_\pi(s')] π(s)=argmaxaqπ(s,a)=argmaxas,rp(s,rs,a)[r+γvπ(s)]

算法步骤:在第 k k k次迭代中,给定策略 π k \pi_k πk(随机初始策略: π 0 \pi_0 π0

  • 策略评估:计算 π k \pi_k πk的状态值 v π k = r π k + γ P π k v π k v_{\pi_k} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k} vπk=rπk+γPπkvπk
    • *迭代中嵌套迭代,求解每次迭代策略的迭代状态值
  • 策略提升:根据 π k \pi_k πk的状态值 v π k v_{\pi_k} vπk,求解当前的最优策略 π k + 1 \pi_{k+1} πk+1

伪代码:

pi[0] = init_policy()while not pi[k].is_converged:# policy evaluationwhile ||v_[j] - v_[j-1]|| >= threshold:for s in StateSpace:v_[j+1][s] = calculate_state_value(pi[k], v_[j][s])j = j + 1# policy improvementfor s in StateSpace:for a in ActionSpace:q[a] = calculate_q_value(s, a, v[j])a_star = get_optimal_action(q)pi[k+1] = update_policy(a_star)k = k + 1

*策略迭代中,距离最终目标状态(考虑一个episode的最终状态)越近的状态的策略会越早收敛,离目标状态越远的状态的策略会越晚收敛

🟡截断策略迭代(Truncated Policy Iteration)

截断策略迭代是值迭代与策略迭代的一般化推广;反过来讲,值迭代与策略迭代都是截断策略迭代的特殊情况。

值迭代 vs. 策略迭代:

  • v 0 = v π 0 v_0 = v_{\pi_0} v0=vπ0,使得二者具有相同的初始值,便于比较
  • 发现:二者的区别在于第四步的 v π 1 ≠ v 1 v_{\pi_1} \neq v_1 vπ1=v1,因此后续的所有迭代中,二者结果均不相同(收敛前)
    • v π 1 v_{\pi_1} vπ1是由贝尔曼最优方程计算出的状态值,而 v 1 v_1 v1只是一个值(不是状态值)

image.png

可以发现,值迭代与策略迭代的根本差异,在于基于贝尔曼最优公式求解状态值的过程

  • 值迭代:仅基于初始状态值,求解一次贝尔曼最优公式
  • 策略迭代:在策略评估部分,每次迭代求解贝尔曼公式(∞次)
    • *实际中,当两次迭代的状态值差异不大的时候,可以认为已经收敛了

而截断策略迭代就是更一般化的情况:迭代 j j j次计算状态值,其中 1 ≤ j < ∞ 1\leq j < \infin 1j<
image.png
注:实际上,策略评估与策略提升是一种非常通用的强化学习思想(称为通用策略迭代,GPI),并在许多后续的强化学习方法(如蒙特卡洛方法、时序差分学习等)中有着广泛应用。

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

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

相关文章

EasyRecovery2024永久免费版电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序&#xff0c;它不会往源驱上写任何东西&#xff0c;也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件&#xff0c;其支持的媒体介质包括&#xff1a;硬盘驱动器、光驱、…

特征工程(一)

特征工程&#xff08;一&#xff09; 什么是特征工程 简单来讲将数据转换为能更好地表示潜在问题的特征&#xff0c;从而提高机器学习性能 特征工程包含的内容 转换数据的过程特征更好地表示潜在问题提高机器学习性能 数据和机器学习的基础知识 数据基础 以下为数据的一…

计算机网络(超级详细笔记)

使用教材计算机网络&#xff08;第8版&#xff09;&#xff08;谢希仁&#xff09; 第一章&#xff1a;概述 第二章&#xff1a;物理层 第三章&#xff1a;数据链路层 第四章&#xff1a;网络层 第五章&#xff1a;运输层 第六章&#xff1a;应用层 目…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统&#xff0c;该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度&#xff0c;市面上的培训机构管理系统收费越来越贵&#xff0c;为了给协会内培…

【陈老板赠书活动 - 21期】- Python树莓派编程从零开始(第3版)

陈老老老板&#x1f9d9;‍♂️ &#x1f46e;‍♂️本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f934;本文简述&#xff1a;活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f473;‍♂️上一篇文章&#xff…

微信小程序实战-01翻页时钟-1

文章目录 前言需求分析功能设计界面设计界面结构设计界面样式设计 逻辑设计 单页功能实现运行结果 前言 我经常在手机上用的一款app有一个功能是翻页时钟&#xff0c;基于之前学习的小程序相关的基础内容&#xff0c;我打算在微信小程序中也设计一个翻页时钟功能&#xff0c;J…

ArcGIS小技巧|四种计算图斑面积的方法

ArcGIS中有多种方法可计算出图斑面积&#xff0c;本文总结了四种方法&#xff0c;是否可堪称史上最全&#xff1f; 1、计算几何 这是最适合非专业人士的方法&#xff0c;直接利用ArcGIS中的计算几何功能进行计算。 a、首先添加一double类型字段&#xff0c;用来存储面积数值…

移动通信原理与关键技术学习(2)

1.多径信道滤波器表示&#xff0c;多径信道可以认为是线性时变滤波器&#xff0c;接收信号为发送信号与信道冲激响应的卷积。 2.调制就是对信号源的信息进行处理加到载波上&#xff0c;使其变为适合于信道传输的形式的过程&#xff0c;就是使载波随信号而改变的技术。 3.进行调…

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花&#xff0c;如教育、医疗、司法、金融等。 本项目立足医药领域&#xff0c;以垂直型医药网站为数据来源&#xff0c;以疾病为核心&#xff0c;构建起一个包含7类规模为4.4万的知识实体&#xff0c;…

【MIdjourney】图像角度关键词

本篇仅是我个人在使用过程中的一些经验之谈&#xff0c;不代表一定是对的&#xff0c;如有任何问题欢迎在评论区指正&#xff0c;如有补充也欢迎在评论区留言。 1.侧面视角(from side) 侧面视角观察或拍摄的主体通常以其侧面的特征为主要焦点&#xff0c;以便更好地展示其轮廓…

Linux文件系统和日志分析

一、inode表结构 1. inode表 inode号在同一个设备上是唯一的。 inode号是有限资源&#xff0c;它的大小和磁盘大小有关。 访问文件的基本流程 根据文件夹的文件名和inode号的关系找到对应的inode表&#xff0c;再根据inode表&#xff08;属主 属组&#xff09;当中的指针找到磁…

Python 全栈体系【四阶】(十一)

第四章 机器学习 机器学习&#xff1a; 传统的机器学习&#xff1a;以算法为核心深度学习&#xff1a;以数据和计算为核心 感知机 perceptron&#xff08;人工神经元&#xff09; 可以做简单的分类任务掀起了第一波 AI 浪潮 感知机不能解决线性不可分问题&#xff0c;浪潮…

c# 学习笔记 - 委托(Delegate)

文章目录 1. 委托1.1 委托概述1.2 委托使用1.3 委托的传播 2. 匿名方法2.1 匿名方法概述2.2 匿名方法 1. 委托 1.1 委托概述 委托简介 委托就是对方法的引用&#xff0c;可以理解为例如整型变量的容器可以存储整形数据&#xff0c;委托就是某种方法的容器&#xff0c;可以用来…

解决Android AAPT: error: resource android:attr/lStar not found. 问题

错误信息 /xxx/gjc/.gradle/caches/transforms-2/files-2.1/930c42acd29d295ce5bc495c3b84423e/core-1.9.0/res/values/values.xml:104:5-113:25: AAPT: error: resource android:attr/lStar not found. not found 资源位置 场景 原Android studio中的项目都是在git上面拉的老项…

React Admin 前端脚手架之ant-design-pro

文章目录 一、React Admin 前端脚手架选型二、React Admin 前端脚手架之ant-design-pro三、ant-design-pro使用步骤四、调试主题五、常用总结(持续更新)EditableProTable组件 常用组件EditableProTable组件 编辑某行后,保存时候触发发送请求EditableProTable组件,添加记录提…

关于简单的数据可视化

1. 安装数据可视化必要的openpyxl、pandas&#xff0c;matplotlib等软件包 使用清华源&#xff0c;命令如下&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pandaspip install -i https://pypi.tuna.tsingh…

uni-app 从入门到精通 3天快速掌握 文字版 学习专栏

大家好&#xff0c;我是java1234小锋老师。 近日锋哥又卷了一波课程&#xff0c;uni-app 从入门到精通 3天快速掌握教程&#xff0c;文字版视频版。三天掌握。 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从…

7.27 SpringBoot项目实战 之 整合Swagger

文章目录 前言一、Maven依赖二、编写Swagger配置类三、编写接口配置3.1 控制器Controller 配置描述3.2 接口API 配置描述3.3 参数配置描述3.4 忽略API四、全局参数配置五、启用增强功能六、调试前言 在我们实现了那么多API以后,进入前后端联调阶段,需要给前端同学提供接口文…

网安面试三十到题(结束)

121 有文件上传了漏洞了&#xff0c;linux下怎么找xx.conf的文件 目录遍历,目录扫描 122 反序列化漏洞原理 ## 你要把别人序列化好的文件进行反序列化进行利用&#xff0c;但是在序列化的过程中&#xff0c;被别人注入了攻击代码、魔 法函数之类的&#xff0c;当你反序列化的时…

大数据可视化Web框架——飞致云Dataease在Windows端的安装指南(多图说明版)V2.2最新版

DataEase开源代码在Windows系统开发环境搭建与调试指南_怎么部署dataease 2.0-CSDN博客https://blog.csdn.net/tllhc01/article/details/135220598?spm1001.2014.3001.5502参考这一篇&#xff0c;基于dataease2.2源码进行构建 需要先下载三个文件&#xff0c;且版本一一对应均…