强化学习-蒙特卡洛方法

强化学习-数学理论

  1. 强化学习-基本概念
  2. 强化学习-贝尔曼公式
  3. 强化学习-贝尔曼最优公式
  4. 强化学习-值迭代与策略迭代
  5. 强化学习-蒙特卡洛方法

文章目录


一、蒙特卡洛方法理论(Monte Carlo, MC)

  上一篇博客介绍的是model-base的方法,本篇博客开始介绍model-free的方法,model-free的核心思想是基于数据来估计出一个模型。
  如何在没有模型的情况下去进行估计,有一个重要的思想:Monte Carlo estimation。下面以抛硬币的例子为大家讲解该思想。

假设我们正在进行抛硬币游戏,将其结果用 X X X来表示,结果是正面时 X = 1 X=1 X=1;结果是反面时 X = − 1 X=-1 X=1,我们的目的是去求解 E [ X ] \mathbb E[X] E[X],有如下两种方法:

方法一:model-base
假设我们知道有一个概率模型, p ( X = 1 ) = 0.5 , p ( X = − 1 ) = 0.5 p(X=1)=0.5, p(X=-1)=0.5 p(X=1)=0.5,p(X=1)=0.5,那么 E [ X ] = Σ x x p ( x ) = 1 × 0.5 + ( − 1 ) × 0.5 = 0 \mathbb E[X] = \underset{x}\Sigma xp(x)=1\times0.5 + (-1)\times0.5=0 E[X]=xΣxp(x)=1×0.5+(1)×0.5=0,然而事实上我们可能没有办法获取这么精确的概率模型。
方法二:model-free(Monte Carlo estimation
投掷硬币很多次(做多次试验)得到很多采样结果,把所有的采样结果求平均。具体如下:假如做了N次实验,这N次实验的结果是${x_1,x_2,x_3,…,x_N}$,把结果相加再除于N得到 x ‾ \overline{\text{x}} x,当N足够大时 x ‾ \overline{\text{x}} x 近似等于 E [ X ] \mathbb E[X] E[X],等式为: E [ X ] ≈ x ‾ = 1 N Σ N j = 1 x j \mathbb E[X]\approx\overline{\text{x}}=\frac{1}{N}\underset{j=1}{\overset{N}\Sigma}x_j E[X]x=N1j=1ΣNxj。这个思想就是 Monte Carlo estimation

  Monte Carlo estimation思想的数学理论支撑如下图所示,相关证明这里不再给出,感兴趣的朋友可以查阅相关参考资料。
数学原理


二、MC Basic

2.1 算法拆解

  上一篇博客我们讲过policy iteration这个算法,在上一篇中它是模型确定的,本篇的核心是如何将policy iteration转变成model-free的方法。

policy iteration算法有如下两部分:

{ p o l i c y e v a l u a t i o n : v π k = r π k + γ P π k v π k v a l u e i m p r o v e m e n t : π k + 1 = a r g m a x π ( r π + γ P π v k ) \begin{cases} policy\ evaluation:\ v_{\pi_k}=r_{\pi_k}+ \gamma P_{\pi_k} v_{\pi_k}\\ value\ improvement:\ \pi_{k+1}=argmax_\pi(r_\pi+\gamma P_\pi v_k) \end{cases} {policy evaluation: vπk=rπk+γPπkvπkvalue improvement: πk+1=argmaxπ(rπ+γPπvk)

policy improvementelementwise form如下:

π k + 1 ( s ) = a r g m a x π Σ a π ( a ∣ s ) [ Σ r p ( r ∣ s , a ) r + γ Σ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) ] ⏟ q π k ( s , a ) , s ∈ S \begin{aligned} \pi_{k+1}(s)=\underset{\pi}{argmax}\underset{a}\Sigma\pi(a|s)\underbrace{[\underset{r}\Sigma p(r|s,a)r+\gamma\underset{s'}\Sigma p(s'|s,a)\textcolor{red}{v_k(s')}]}_{\textcolor{red}{q_{\pi_k}(s,a)}}, \quad s\in S \end{aligned} πk+1(s)=πargmaxaΣπ(as)qπk(s,a) [rΣp(rs,a)r+γsΣp(ss,a)vk(s)],sS
算法的关键在于如何计算 q π k ( s , a ) \textcolor{red}{q_{\pi_k}(s,a)} qπk(s,a)!

同样求解 q k ( s , a ) \textcolor{red}{q_k(s,a)} qk(s,a)有如下两种方式:

方案一:model-base
q π k ( s , a ) = Σ r p ( r ∣ s , a ) r + γ p s ′ ( s ′ ∣ s , a ) v π k ( s ′ ) q_{\pi_k}(s,a) = \underset{r}\Sigma p(r|s,a)r+\gamma\underset{s'}p(s'|s,a)v_{\pi_k}(s') qπk(s,a)=rΣp(rs,a)r+γsp(ss,a)vπk(s)
方案二:model-free【本篇博客的方法】
q π k ( s , a ) = E [ G t ∣ S t = a , A t = a ] q_{\pi_k}(s,a) = \mathbb E[G_t|S_t=a,A_t=a] qπk(s,a)=E[GtSt=a,At=a]

如何基于数据去求解 q k ( s , a ) \textcolor{red}{q_k(s,a)} qk(s,a)?答案:采用章节一中提到的 Monte Carlo estimation,具体步骤如下所示:

首先我们从任意的一个s和a的一个组合出发,然后根据当前的策略得到一个episode并计算出该episode对应的discounted return 为 g ( s , a ) g(s,a) g(s,a),这里的 g ( s , a ) g(s,a) g(s,a) G t G_t Gt的一个采样。假设我们有很多这样的词啊样集合: { g ( j ) ( s , a ) } \{g^{(j)}(s,a)\} {g(j)(s,a)},那么根据Monte Carlo estimation思想我们可以得到:
q k ( s , a ) = E [ G t ∣ S t = a , A t = a ] ≈ 1 N Σ N i = 1 g i ( s , a ) q_k(s,a) = \mathbb E[G_t|S_t=a,A_t=a] \approx\frac{1}{N}\underset{i=1}{\overset{N}\Sigma}g^{i}(s,a) qk(s,a)=E[GtSt=a,At=a]N1i=1ΣNgi(s,a)

总之,没有数据时得有模型,没有模型时得有数据!!!

2.2 MC Basic算法

  给定一个初始策略 π 0 \pi_0 π0,这个策略可能是不好的,慢慢地对其进行改进,然后在第k个iteration它包含两个步骤:

1️⃣ policy evaluation:计算出所有 ( s , a ) (s,a) (s,a)对应的 q π k q_{\pi_k} qπk,其计算方法是:从 ( s , a ) (s,a) (s,a)出发得到很多的episode,求得episode的return并求平均;
2️⃣ policy improvement:在步骤一中我们得到了 q π k q_{\pi_k} qπk,这个步骤主要求解一个最优化问题得到一个新的策略。

  伪代码如下图所示:
伪代码


三、MC Exploring Starts

3.1 算法拆解

  该算法是MC Basic算法的一个推广,使得MC Basic算法更加高效,下面通过一个例子为大家讲解。

3.1.1 高效利用数据

在一个网格世界里,假如有一个策略 π \pi π,我们可以得到一个episode,如下所示:
s 1 → a 2 s 2 → a 4 s 1 → a 2 s 2 → a 3 s 5 → a 1 . . . s_1\overset{a_2}\rightarrow s_2\overset{a_4}\rightarrow s_1\overset{a_2}\rightarrow s_2\overset{a_3}\rightarrow s_5\overset{a_1}\rightarrow ... s1a2s2a4s1a2s2a3s5a1...
这里引入一个新的概念visit,每出现一次state-action pair我们就认为有了一次访问。前面所讲到的MC Basic算法也叫Initial-visit method,即对于某个episode我们只考虑 ( s 1 , a 2 ) (s_1,a_2) (s1,a2),然后利用该episode剩下所得到的return来估计 ( s 1 , a 2 ) (s_1,a_2) (s1,a2)的action value。因此,我们可以清楚的知道MC Basic算法的问题在于它没有充分利用这个episode,因为里面有很多的数据被浪费掉了。
如下图所示,我们可以利用episode所得的return去估计前一个 q π ( s 2 , a 4 ) q_\pi(s_2,a_4) qπ(s2,a4),如此依赖就可以充分利用该episode中的数据。这里也有两种方法:

  • first-visit method:如下图所示,在第三次的时候又出现了一次 ( s 1 , a 2 ) (s_1,a_2) (s1,a2),该方法的意思是:只要出现过一次的state-action pair 后面再次出现就不在进行估计了。
  • every-visit method:与上面的方案截然相反,出现第二次时就用第二次后面的📄进行估计,出现第三次时就用第三次后面的值进行估计,如此类推。

浪费过程

3.1.2 高效更新策略

  上面所提到的方案是如何让数据利用更加高效,下面将为大家讲解如何让策略更新的更高效,这里也有两种方案。

第一种【原始法】:MC Basic算法在进行策略更新的时候,其原理是:收集从 state-action pair 开始的所有episode,然后使用return的平均值来近似action value。原始方案的缺点在于“要等”,要等所有的episode,这就造成了性能的低效。
第二种【改进法】:针对上述方案的缺点,该方法的核心是:我得了一个episode时就用这个episode的return立刻去估计action value,然后就直接开始改进策略,后面都采用这样及时的方法从而提高性能。该方案的支撑理论见:truncated policy iteration

3.2 MC Exploring Starts算法

  MC Exploring Starts方法的伪代码如下:
伪代码

3.3 为什么必须要有exploring starts这个条件呢?

  • exploring代表:指的是从每一个 ( s , a ) (s,a) (s,a)出发都要有episode,只有这样才能用后面生成的这些return去计算 q π ( s , a ) q_\pi(s,a) qπ(s,a),假设有一个state action没有被访问到,就无法确保所选的action是最优的了。
  • starts代表:要访问每一个 ( s , a ) (s,a) (s,a)从它后面能够生成reward的这些数据,有两种方案:1) 从 ( s , a ) (s,a) (s,a)开始一个episode就是start,2)visit方法,即我从其他状态出发,得到的episode经过了 ( s , a ) (s,a) (s,a)这个状态,但目前来说visit这个方法无法确保一定能够经过剩下的这些 ( s , a ) (s,a) (s,a)
  • 理论上,只有对每个状态的每个 action value 都进行了很好的探索,我们才能正确地选择最优 action。否则,如果未探索某个操作,则此操作可能恰好是最佳操作,因此会错过。在实践中,exploring starts很难实现。对于许多应用程序,尤其是那些涉及与环境物理交互的应用程序,很难从每个state-action pair 对开始收集episode。

四、MC Epsilon-Greedly

  MC Epsilon-Greedly算法通过soft policy的方式对MC Exploring Starts算法进行改进,从而拿掉MC Exploring Starts算法中的硬性条件exploring starts。

4.1 soft policy理论

  前几章提到的greedy policy是deterministic的,而soft policy是stochastic的。如果我从一个state-action pair如 ( s , a ) (s,a) (s,a)出发,假设后面的episode特别特别长,因为它是探索性的,因此就能够确保任何一个s和a被这个episode访问到。基于这个理论,我们就可以去掉exploring starts这个条件了。

4.2 ε \varepsilon ε-greedy policy(soft policy的一种)

π ( a ∣ s ) = { 1 − ε ∣ A ( s ) ∣ ( ∣ A ( s ) ∣ − 1 ) , f o r t h e g r e e d y a c t i o n ε ∣ A ( s ) ∣ , f o r t h e o t h e r ∣ A ( s ) ∣ − 1 a c t i o n \pi(a|s) = \begin{cases}1-\frac{\varepsilon}{|\mathcal A(s)|}(|\mathcal A(s)|-1), &for\,the\,greedy\,action \\ \frac{\varepsilon}{|\mathcal A(s)|}, &for\,the\,other\,|\mathcal A(s)|-1\,action \end{cases} π(as)={1A(s)ε(A(s)1),A(s)ε,forthegreedyactionfortheotherA(s)1action
其中 ε ∈ [ 0 , 1 ] \varepsilon \in [0,1] ε[0,1] ∣ A ( s ) ∣ |\mathcal A(s)| A(s)为状态 s 的动作数量。 ε \varepsilon ε-greedy policy可以平衡 exploitation 和 exploration。从上式也可得出,当 ε = 0 \varepsilon = 0 ε=0时, policy 就是 greedy的,充分利用性强,探索性弱; 当 ε = 1 \varepsilon = 1 ε=1时, 此时策略就是随机的且其探索性就很强。

4.3 MC Epsilon-Greedly算法

4.3.1 如何将 ε \varepsilon ε-greedy policy引入MC Basic?

先前,MC Basic和MC Exploring Starts算法在解决policy improvement时,计算公式如下:
π k + 1 ( s ) = a r g m a x π ∈ Π Σ a π ( a ∣ s ) q π k ( s , a ) \pi_{k+1}(s)=\underset{\pi \in \Pi}{argmax}\underset{a}\Sigma\pi(a|s)q_{\pi_k}(s,a) πk+1(s)=πΠargmaxaΣπ(as)qπk(s,a)
这里的 Π \Pi Π代表了所有可能的policy。最大策略计算方式如下:
π ( a ∣ s ) = { 1 , a = a k ∗ , 0 , a ≠ a k ∗ , \pi(a|s) = \begin{cases}1,&a=a_k^*,\\ 0, &a \neq a_k^*, \end{cases} π(as)={10,a=aka=ak
这里 a k ∗ = a r g m a x a q π k ( s , a ) a_k^*=argmax_a q_{\pi_k}(s,a) ak=argmaxaqπk(s,a).

现在,只需要把原来的 π ∈ Π \pi \in \Pi πΠ ε \varepsilon ε-greedy policy替代即可,即 π ∈ Π ε \pi \in \Pi_\varepsilon πΠε,具体公式如下所示:
π k + 1 ( s ) = a r g m a x π ∈ Π ε Σ a π ( a ∣ s ) q π k ( s , a ) \pi_{k+1}(s)=\underset{\pi \in \Pi_\varepsilon}{argmax}\underset{a}\Sigma\pi(a|s)q_{\pi_k}(s,a) πk+1(s)=πΠεargmaxaΣπ(as)qπk(s,a)
这里的 Π \Pi Π只包含一部分的策略,最大策略计算如下:

π ( a ∣ s ) = { 1 − ∣ A ( s ) ∣ − 1 ∣ A ( s ) ∣ ε , a = a k ∗ 1 ∣ A ( s ) ∣ ε , a ≠ a k ∗ \pi(a|s) = \begin{cases}1-\frac{|\mathcal A(s)|-1}{|\mathcal A(s)|}\varepsilon, &a=a_k^* \\ \frac{1}{|\mathcal A(s)|}\varepsilon, &a\neq a_k^* \end{cases} π(as)={1A(s)A(s)1ε,A(s)1ε,a=aka=ak

4.3.2 MC Epsilon-Greedly算法伪代码

伪代码


总结

内容小结

  • Monte Carlo estimation:将大量的数据采样求平均进行估计;
  • MC Basic:基于Monte Carlo estimation思想,将policy iteration算法从model-base的方法转为model-free的方法;
  • MC Exploring Starts:是对MC Basic算法的优化,从数据和策略两个方面进行优化;
  • MC Epsilon-Greedly:通过soft policy的方式对MC Exploring Starts算法进行改进,拿掉了硬性条件exploring starts。

参考资料

  1. 蒙特卡洛方法视频版

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

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

相关文章

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录: 2. 进一步挖掘 2.1. 现状 目前是在职还是离职,如果离职,从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚,可以根据简历上的信息再进一步了解 面试记…

eBay账号安全攻略:巧妙应对风险

在跨境电商的浪潮中,eBay宛如一座璀璨的灯塔,照亮了无数买卖双方的交易之路。但别忘了,网络安全的阴霾也在悄然蔓延,让eBay账号时刻处于黑客攻击、数据泄露、钓鱼诈骗等风险的阴影之下。别担心,今天就来为你支支招&…

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块(上) 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…

【Uniapp-Vue3】uni-api交互反馈showToast的使用方法

如果想要显示弹窗,就可以使用showToast去显示弹窗。 uni.showToast({ title:"显示内容", icon:"标志样式" }) 其中,title只能显示7个字符的内容,如果想要显示全,只能不设置icon。 icon默认是success&#xf…

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式(如 WPS 文档或表格)。然而,可以通过几种间接的方式实现这一目标,确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案: ​ 导出…

如何异地远程访问本地部署的Web-Check实现团队远程检测与维护本地站点

文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 在日常开发和维护过程中,确保Web应用稳定运行是至关重要的。…

nginx 修改内置 404 页面、点击劫持攻击。

1、在部署前端项目的目录下增加 404.html 页面:/opt/web/404.html。 2、在 nginx 配置中增加 404 配置: root /opt/web; # 设置根目录的配置error_page 404 404.html; location /404.html {root /opt/web;# 指定 404 页面所在的根目录internal;# 确保…

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了,这时的a2l文件还没有地址,所以紧接着会去通过elf文件更新地址,一直以为这是固定的流程和方法,今天无…

浅谈云计算20 | OpenStack管理模块(下)

OpenStack管理模块(下) 五、存储管理5.1 存储管理概述 5.2 架构设计5.2.1 Cinder块存储架构5.2.2 Swift对象存储架构 六、网络管理6.1 网络管理概述6.2 架构解析6.2.1 Neutron网络服务架构6.2.2 网络拓扑架构 6.3 原理与流程6.3.1 网络创建原理6.3.2 网络…

Kafka常用命令

如何进行到Docker容器中运行Kafka: docker ps 找到CONTAINER ID 去前三位 执行docker exec -it bbd bin/bash进入到docker中进入到/opt/bitnami/kafka/bin中执行kafka脚本 ------------------------------------------------------------------------------------…

仿射密码实验——Python实现(完整解析版)

文章目录 前言实验内容实验操作步骤1.编写主程序2.编写加密模块3.编写解密模块4.编写文件加解密模块 实验结果实验心得实验源码scirpt.pyusefile.py 前言 实验目的 1)初步了解古典密码 2)掌握仿射密码的实现 实验方法 根据下图仿射密码(变换…

回归预测 | MATLAB实SVM支持向量机多输入单输出回归预测

效果一览 基本介绍 回归预测 | MATLAB实SVM支持向量机多输入单输出回归预测 …………训练集误差指标………… 1.均方差(MSE):166116.6814 2.根均方差(RMSE):407.5741 3.平均绝对误差(MAE):302.5888 4.平均相对百分误…

Oracle 批量投入数据方法总结

目录 零. 待投入数据的表结构一. INSERT INTO ... SELECT投入数据1.1 普通的方式投入数据1.2 并行插入(Parallel Insert)投入数据 二. PL/SQL 循环投入数据2.1 脚本介绍2.2 效果 三. 💪PL/SQL FORALL 批量操作💪3.1 脚本介绍3.2 效…

Git学习笔记

Git学习笔记 目录 版本控制 本地版本控制 集中版本控制 分布式版本控制 基本使用方式 Git Config Git Remote Git Add Objects Refs Annotation Tag 追溯历史版本 修改历史版本 Git GC Git Clone & Pull & Fetch Git Push 常见问题 不同的工作流 集…

【Block总结】掩码窗口自注意力 (M-WSA)

摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…

卷积神经05-GAN对抗神经网络

卷积神经05-GAN对抗神经网络 使用Python3.9CUDA11.8Pytorch实现一个CNN优化版的对抗神经网络 简单的GAN图片生成 CNN优化后的图片生成 优化模型代码对比 0-核心逻辑脉络 1)Anacanda使用CUDAPytorch2)使用本地MNIST进行手写图片训练3)…

怎么在iPhone手机上使用便签进行记录?

宝子们,在这个快节奏的时代,灵感的火花总是一闪而过,待办事项也常常让人应接不暇。好在咱们的 iPhone手机便签超给力,能满足各种记录需求!今天就来给大家分享一下,如何在 iPhone 手机上巧用便签&#xff0c…

基于微信小程序的摄影竞赛系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)

StyleGAN2 是英伟达团队 NVIDIA 提出的生成对抗网络(GAN)的一种改进版本。 它通过创新的网络架构,能够生成细节丰富、逼真的图像,特别在高频细节(如皮肤纹理、光照等)的表现上表现卓越。与传统 GAN 相比&am…

redis(2:数据结构)

1.String 2.key的层级格式 3.Hash 4.List 5.Set 6.SortedSet