强化学习-蒙特卡洛方法

强化学习-数学理论

  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. 蒙特卡洛方法视频版

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【专题一 递归】21. 合并两个有序链表

1.题目解析 2.讲解算法原理 解法:递归-> 重复的子问题 重复子问题 ->函数头的设计 合并两个有序链表--->Node dfs(l1,l2) 只关心某一个子问题在做什么事情 ->函数体的设计 比大小l1→next dfs( l1.next, l2)return l1 递归的出口 if(l1null)return l2…

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解: 一、Last-Modified 头部 定义:Last-Modified 表示服务器上资源的最后修改时间。 作…

FPGA车牌识别

基于FPGA的车牌识别主要包含以下几个步骤:图像采集、颜色空间转换、边缘检测、形态学处理(腐蚀和膨胀)、特征值提取、模板匹配、结果显示。先用matlab对原理进行仿真,后用vivado和modelsim进行设计和仿真。 一、1.图像采集采用ov…

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…

怎么修复损坏的U盘?而且不用格式化的方式!

当你插入U盘时,若电脑弹出“需要格式化才能使用”提示,且无法打开或读取其中的数据,说明U盘极有可能已经损坏。除此之外,若电脑在连接U盘后显示以下信息,也可能意味着U盘出现问题,需要修复损坏的U盘&#x…

贪心算法(题1)区间选点

输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…

2.使用Spring BootSpring AI快速构建AI应用程序

Spring AI 是基于 Spring Boot3.x 框架构建&#xff0c;Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEASpring Boot 3.4Spring AI 1.0.0-SNAPSHOTMaven。 1.创建Spring Boot项目 …

【Linux】Socket编程-TCP构建自己的C++服务器

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; Socket 编程 TCP &#x1f98b; TCP socket API 详解&#x1f98b; 多线程远程命令执行&#x1f98b; 网络版计算器&#xff08;应用层自定义协议与序列化…

森林网络部署,工业4G路由器实现林区组网远程监控

在广袤无垠的林区&#xff0c;每一片树叶的摇曳、每一丝空气的流动&#xff0c;都关乎着生态的平衡与安宁。林区监控正以强大的力量&#xff0c;为这片绿色家园筑起一道坚固的防线。 工业 4G 路由器作为林区监控组网的守护者&#xff0c;凭借着卓越的通讯性能&#xff0c;突破…

数据库管理-第284期 奇怪的sys.user$授权(20250116)

数据库管理284期 20245-01-16 数据库管理-第284期 奇怪的sys.user$授权&#xff08;20250116&#xff09;1 问题2 CDB与PDB3 跨实例3.1 通过scanip访问数据库3.2 通过节点1的VIP访问数据库3.3 通过节点3的VIP访问数据库3.4 在节点3赋权后测试3.5 小结 总结 数据库管理-第284期 …

vue2配置跨域后请求的是本机

这个我来说明一下&#xff0c;因为我们公司的后端设置解决了跨域问题&#xff0c;所以我有很久没有看相关的内容了&#xff0c;然后昨天请求了需要跨域的接口&#xff0c;请求半天一直不对&#xff0c;浏览器显示的是本机地址&#xff0c;我以为是自己配置错了&#xff0c;后面…

从玩具到工业控制--51单片机的跨界传奇【3】

在科技的浩瀚宇宙中&#xff0c;51 单片机就像一颗独特的星辰&#xff0c;散发着神秘而迷人的光芒。对于无数电子爱好者而言&#xff0c;点亮 51 单片机上的第一颗 LED 灯&#xff0c;不仅仅是一次简单的操作&#xff0c;更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…

Java技术栈 —— 如何把项目部署到公网?

如何把项目部署到公网&#xff1f; 一、准备工作1.1 获得一台云服务器1.2 安装SSH客户端 二、云服务器部署2.1 配置云服务器2.2 使用nginx部署1个或多个前端项目 三、访问测试四、访问控制 平常大部分人都是本地写写项目&#xff0c;然后通过localhost的方式去访问&#xff0c;…

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通…

基于微信小程序教学辅助系统设计与实现(LW+源码+讲解)

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

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(六)

文章目录 一、考试管理模块实现1、添加考试功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、考试管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码下载…

计算机网络 (43)万维网WWW

前言 万维网&#xff08;World Wide Web&#xff0c;WWW&#xff09;是Internet上集文本、声音、动画、视频等多种媒体信息于一身的信息服务系统。 一、基本概念与组成 定义&#xff1a;万维网是一个分布式、联机式的信息存储空间&#xff0c;通过超文本链接的方式将分散的信息…

如何学习数学 | 数学家如何思考

学习数学的关键在哪里&#xff1f; 原创 遇见数学 不少人面对数学都会觉得高深莫测&#xff0c;甚至非常枯燥乏味。 只有当你真正走入它的世界&#xff0c;才会发现里面蕴含着无尽的智慧和美感。要想推开这座数学的大门&#xff0c;需要的不仅仅是背公式&#xff0c;或者做一…

【Python通过UDP协议传输视频数据】(界面识别)

提示&#xff1a;界面识别项目 前言 随着网络通信技术的发展&#xff0c;视频数据的实时传输在各种场景中得到了广泛应用。UDP&#xff08;User Datagram Protocol&#xff09;作为一种无连接的协议&#xff0c;凭借其低延迟、高效率的特性&#xff0c;在实时性要求较高的视频…

ZNS SSD垃圾回收优化方案解读-2

四、Brick-ZNS 关键设计机制解析 Brick-ZNS 作为一种创新的 ZNS SSD 设计&#xff0c;聚焦于解决传统 ZNS SSDs 在垃圾回收&#xff08;GC&#xff09;过程中的数据迁移低效问题&#xff0c;其核心特色为存储内数据迁移与地址重映射功能。在应用场景中&#xff0c;针对如 Rock…