【强化学习】强化学习数学基础:蒙特卡洛方法

news2024/11/24 22:41:44

强化学习数学方法:蒙特卡洛方法

  • 举个例子
    • 举个例子1:投掷硬币
  • The simplest MC-based RL algorithm
    • 举个例子2:Episode length
  • Use data more efficiently
  • MC without exploring starts
  • 总结
  • 内容来源

将value iteration和policy iteration方法称为model-based reinforcement learning方法,这里的Monte Carlo方法称为model-free的方法。

举个例子

如何在没有模型的情况下估计某些事情?最简单的想法就是Monte Carlo estimation。

举个例子1:投掷硬币

Flip a coin
目标是计算 E [ X ] \mathbb{E}[X] E[X]。有两种方法:
Method 1: Model-based
Model-based
这个方法虽然简单,但是问题是它不太可能知道precise distribution。
Method 2: Model-free
该方法的思想是将硬币投掷很多次,然后计算结果的平均数。
Model-free
问题:Monte Carlo估计是精确的吗?

  • 当N是非常小的时候,估计是不精确的
  • 随着N的增大,估计变得越来越精确
    仿真
    大数定理Law of Large Numbers):
    大数定理
    注意:样本必须是独立同分布的(iid, independent and identically distributed)

小结一下:

  • Monte Carlo estimation refers to a broad class of techniques that rely on repeated random sampling to solve appriximation problems.
  • Why we care about Monte Carlo estimation? Because it does not require the model!
  • Why we care about mean estimation? Because state value and action value are defined as expectations of random variables!

The simplest MC-based RL algorithm

Algorithm: MC Basic
理解该算法的关键是理解how to convert the policy iteration algorithm to be model-free

Convert policy iteration to be model-free
首先,策略迭代算法在每次迭代中分为两步:
policy iteration
其中policy improvement step的elementwise form如下:
policy improvement step
这里的关键是 q π k ( s , a ) q_{\pi_k}(s, a) qπk(s,a)!计算 q π k ( s , a ) q_{\pi_k}(s, a) qπk(s,a)有两种算法:
Expression 1 requires the model:
requires the model
Expression 2 does not require the model
not require the model
上面的式子针对实现model-free的RL的启发是:可以使用式子2,根据数据(samples或者experiences)去计算 q π k ( s , a ) q_{\pi_k}(s, a) qπk(s,a)。那具体是怎么做的呢?
The procedure of Monte Carlo estimation of action values

  • 首先,从一个组合 ( s , a ) (s,a) (s,a)出发,按照一个策略 π k \pi_k πk,生成一个episode;
  • 计算这个episode,return是 g ( s , a ) g(s, a) g(s,a)
  • g ( s , a ) g(s,a) g(s,a)是在下式中 G t G_t Gt的一个采样: q π k ( s , a ) = E [ G t ∣ S t = s , A t = a ] q_{\pi_k}(s,a)=\mathbb{E}[G_t|S_t=s, A_t=a] qπk(s,a)=E[GtSt=s,At=a]
  • 假设我们有一组episodes和hence { g ( j ) ( s , a ) } \{g^{(j)}(s,a)\} {g(j)(s,a)},那么 q π k ( s , a ) = E [ G t ∣ S t = s , A t = a ] ≈ 1 N ∑ i = 1 N g ( i ) ( s , a ) q_{\pi_k}(s,a)=\mathbb{E}[G_t|S_t=s, A_t=a]\approx \frac{1}{N}\sum_{i=1}^Ng^{(i)}(s, a) qπk(s,a)=E[GtSt=s,At=a]N1i=1Ng(i)(s,a)

所以,总的来说,一句话就是当我们没有模型的时候,我们要有数据,反正总得有一个。

到此时,算法也逐渐清晰,这个算法的名称是MC-Basic算法。下面描述这个算法:
给定一个初始策略 π 0 \pi_0 π0,在第k次迭代有两个步骤:

  • Step 1: policy evaluation
    策略评估
  • Step 2: policy improvemtn
    策略改善
    第二步和policy iteration algorithm基本上是一致的,除了上式是直接估计 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a),而不是求解 v π k ( s ) v_{\pi_k}(s) vπk(s)

MC Basic algorithm(a model-free variant of policy iteration)的伪代码
MC Basic algorithm
需要注意的是:

  • MC Basic算法是policy iteration algorithm的一个变体。
  • The model-free algorithms are built up based on model-based ones. 也就是说,在研究model-free算法之前,需要先了解对应的model-based算法。
  • MC Basic是非常有用的,它可以揭示MC-based model-free RL的核心思想,但是它并不实用,因为它的efficiency比较低。
  • 为什么MC Basic算法估计action values而不是state values?因为state values不能被用来直接改善policies。当模型不可用的时候,应该直接估计action values。
  • 由于policy iteration是收敛的,那么很自然地,MC Basic的收敛性也保证了给定足够多的episodes后,它也是收敛的。

举个例子:step by step
举个例子
任务是:给定如图所示的一个初始策略,使用MC Basic算法找到一个最优策略,其中 r b o u n d a r y = − 1 , r f o r b i d d e n = − 1 , r t a r g e t = 1 , γ = 0.9 r_{boundary=-1}, r_{forbidden}=-1, r_{target}=1, \gamma=0.9 rboundary=1,rforbidden=1,rtarget=1,γ=0.9
MC Basic算法和policy iteration一样,也分为两步。给定当前策略 π k \pi_k πk

  • Step 1 ——policy evaluation: 计算 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a)。就这里而言,有多少个state-action pairs呢?一共有9 states × 5 actions =45 state-action pairs。
  • Step 2 ——policy improvement: 选择greedy action a ∗ ( s ) = a r g max ⁡ a i q π k ( s , a ) a^*(s)=arg\max_{a_i} q_{\pi_k}(s, a) a(s)=argaimaxqπk(s,a)

这里仅仅展示 q π k ( s 1 , a ) q_{\pi_k}(s_1,a) qπk(s1,a)
Step 1-policy evaluation:

  • 因为当前策略是确定性的,所以一个episode就可以得到action value!
  • 如果当前策略是随机性的,就需要无限个episodes(至少要很多次)。

( s 1 , a 1 ) (s_1, a_1) (s1,a1)出发:
s1, a1
( s 1 , a 2 ) (s_1, a_2) (s1,a2)出发:
s2, a2
( s 1 , a 3 ) (s_1, a_3) (s1,a3)出发:
s2,a3
( s 1 , a 4 ) (s_1, a_4) (s1,a4)出发:
s2, a4
( s 1 , a 5 ) (s_1, a_5) (s1,a5)出发:
s1, a5
Step 2-policy improvement:

  • 通过观察上面的action values,可以看到 q π 0 ( s 1 , a 2 ) = q π 0 ( s 1 , a 3 ) q_{\pi_0}(s_1,a_2)=q_{\pi_0}(s_1,a_3) qπ0(s1,a2)=qπ0(s1,a3)是最大值。
  • 因此,策略可以改进为 π 1 ( a 2 ∣ s 1 ) = 1  or  π 1 ( a 3 ∣ s 1 ) = 1 \pi_1(a_2|s_1)=1 \text{ or } \pi_1(a_3|s_1)=1 π1(a2s1)=1 or π1(a3s1)=1

不管怎样,新的策略对于 s 1 s_1 s1是最优的。在这个例子中一次迭代就足够了。

举个例子2:Episode length

检查episode长度的影响:

  • 需要采样episodes,但是the length of an episode cannot be infinitely long.
  • 应该设置多长的episode?

示例设定:一个5-by-5的网格世界,奖励设定为: r b o u n d a r y = − 1 , r f o r b i d d e n = − 1 , r t a r g e t = 1 , γ = 0.9 r_{boundary=-1}, r_{forbidden}=-1, r_{target}=1, \gamma=0.9 rboundary=1,rforbidden=1,rtarget=1,γ=0.9
基于不同的episode长度,使用MC Basic去搜索最优策略:
different episode
继续增加
我们的发现:

  • 当episode的长度较短的时候,只有离目标较近的状态具有非零的state values。
  • 随着episode长度的增加,越靠近target的states更早地变为nonzero values,与那些与target较远的states相比。
  • episode length必须要足够长
  • episode length也不需要是无限长。

Use data more efficiently

MC Basic算法的优点是清晰地解释了MC方法的核心思想,但是缺点是太简单以至于无法在实际中使用。因此需要将MC Basic算法扩展,使其更加高效。那么如何来做呢?

首先,考虑一个网格世界,根据一个策略 π \pi π,得到一个episode,如下:
episode
然后,引入一个概念,Visit:every time a state-action pair appears in the episode, it is called a visit of that state-action pair.
在MC Basic算法中用的一个策略是:Initial-visit method

  • 仅仅计算the return和估计 q π ( s 1 , a 2 ) q_{\pi}(s_1, a_2) qπ(s1,a2)
  • 这也是MC Basic算法的做法
  • 缺点是:不能完全利用数据

充分利用数据:The episode also visits other state-action pairs.
state-action
可以估计 q π ( s 1 , a 2 ) q_{\pi}(s_1, a_2) qπ(s1,a2), q π ( s 2 , a 4 ) q_{\pi}(s_2, a_4) qπ(s2,a4), q π ( s 2 , a 3 ) q_{\pi}(s_2, a_3) qπ(s2,a3), q π ( s 5 , a 1 ) q_{\pi}(s_5, a_1) qπ(s5,a1)
Data-efficient methods:

  • first-visit method
  • every-visit method

除了怎么样让数据的利用更加高效之外,Another aspect in MC-based RL is when to update the policy。 这里有两个方法:

  • 第一种方法:
    the first method
  • 第二种方法:
    The second method

那么问题来了,第二种方法会造成一些问题吗?

  • 有人会认为一个episode的return不能准确估计相应的action value
  • 事实上,we have done that in the truncated policy iteration algorithm,因此,就算不精确,也没有关系.

上述方法的名称是Generalized policy iteration, 简称为GPI:

  • 它不是一个特定的具体的算法
  • 它表示the general idea or framework of switching between policy-evaluation and policy-improvement processes.
  • 许多model-based和model-free RL算法都能fall into this framework。

有了上面的过程,我们可以得到一个新的算法:Algorithm: MC Exploring Starts,即更加高效的使用数据和更新估计。
MC Exploring Starts
那么,为什么需要考虑exploring starts?

  • 理论上,only if every action value for every state is well explored, can we select the optimal actions correctly. 相反,如果有一个action没有被explored, 那么可能会把这个action漏掉,而它刚好有可能是最优的。
  • 实际上,exploring starts是非常难以实现的。对于许多应用,尤其是涉及和环境交互的物理场景中,难以从每一个state-action pair中收集episodes starting。

因此,在理论和实际中存在一个gap。那么能否将exploring starts这个条件去掉,或者转化掉,用其他的形式实现呢?答案是可以的,需要用到soft policies

MC without exploring starts

什么是Soft policies?如果一个策略采取的每一个action的概率是positive,也就是这些action都有可能被采取,那么这个策略就称为soft

那么为什么要引入soft policies呢?

  • 基于soft policy,a few episodes that are sufficiently long can visit every state-action pair for sufficiently many times.
  • Then,我们不需要从every state-action pair得到大量的episodes。因此,上一节中的exploring starts就可以被removed.

那么我们使用什么样的soft policies呢?答案是 ϵ \epsilon ϵ-greedy policies
什么是 ϵ \epsilon ϵ-greedy policy?
soft policy
这里有一个性质,就是选择这个greedy action的概率始终比其他的任何一个action的概率都要大。
greedy action
为什么要使用 ϵ \epsilon ϵ-greedy?因为它能够平衡exploitation(充分利用现有的)和exploration(探索未知的)

  • ϵ = 0 \epsilon = 0 ϵ=0,它变为了greedy!与exploitation相比,exploration就会弱一些!
  • ϵ = 1 \epsilon = 1 ϵ=1,它变为了一个均匀分布,exploration更强,exploitation更弱。

那么如何将 ϵ \epsilon ϵ-greedy整合到MC-based RL算法中呢?
之前在MC Basic和MC Exploring Starts中policy improvement step是求解:
policy improvement step
其中的 Π \Pi Π表示所有可能的选择的集合。求解出来的最优的策略是: π k + 1 ( a ∣ s ) = { 1 a = a k ∗ 0 a ≠ a k ∗ \pi_{k+1}(a|s)=\begin{cases}1 & a = a^*_k \\0 & a\ne a^*_k\end{cases} πk+1(as)={10a=aka=ak其中 a k ∗ = arg max ⁡ a q π k ( s , a ) a^*_k=\text{arg}\max_aq_{\pi_k}(s,a) ak=argmaxaqπk(s,a)
现在,the policy improvement step变为求解:
now
其中 Π ϵ \Pi_\epsilon Πϵ表示在一个固定的 ϵ \epsilon ϵ值条件下的所有 ϵ \epsilon ϵ-greedy policies的集合。这时得到的最优策略是
新的优化策略
实际上,这里就得到了MC ϵ \epsilon ϵ-greedy算法,与MC Exploring Starts算法相同,除了MC ϵ \epsilon ϵ-greedy算法使用 ϵ \epsilon ϵ-greedy策略。因为使用这样一个策略,就不需要exploring starts这样的条件了,但是仍然要求visit all state-action pairs in a different form。

Algorithm: MC ϵ \epsilon ϵ-Greedy的伪代码
MC GREEDY

现在,我们分析该算法的探索能力,一个单独的episode可以visit所有的state-action pairs吗?
ϵ = 1 \epsilon = 1 ϵ=1,the policy(均匀分布)具有最强的探索能力。
探索能力
随着步数的增加,网格中几乎所有的位置都探索到了(绿色线),每个state-action被访问的次数也比较高。
ϵ \epsilon ϵ比较小的时候,策略的探索能力也会弱一些。
探索能力

举个例子:利用 ϵ \epsilon ϵ-greedy结合蒙特卡洛算法,看一下这个算法能够带来什么样的最优策略。
在每一个iteration中:

  • 在episode generation step,用当前的 ϵ \epsilon ϵ-greedy策略生成一个episode,这个episode非常长,只有100万步。
  • 然后,用这一个episode去更新剩下所有的state-action pair和policy
  • 这个算法避开了exploring starts这样一个条件,只要episode足够长,即使它从一个state-action pair出发,它仍然能够访问所有的其他的state-action pair。

estimate based on one episode
这里 r b o u n d a r y = − 1 , r f o r b i d d e n = − 10 , r t a r g e t = 1 , γ = 0.9 r_{boundary=-1}, r_{forbidden}=-10, r_{target}=1, \gamma=0.9 rboundary=1,rforbidden=10,rtarget=1,γ=0.9,两次迭代就得到了一个optimal ϵ \epsilon ϵ-greedy policy。所以 ϵ \epsilon ϵ-greedy通过探索性得到了一些好处,但是牺牲的是它的最优性。实际使用中,设置一个比较小的 ϵ \epsilon ϵ值,当它趋向于0的时候, ϵ \epsilon ϵ-greedy接近于greedy,所以此时找到的最优的greedy的策略也就接近最优的greedy的策略。实际当中也可以让这个 ϵ \epsilon ϵ逐渐减小。
Compared to greedy policies
接下来,通过例子证明这个过程,设定为 r b o u n d a r y = − 1 , r f o r b i d d e n = − 10 , r t a r g e t = 1 , γ = 0.9 r_{boundary=-1}, r_{forbidden}=-10, r_{target}=1, \gamma=0.9 rboundary=1,rforbidden=10,rtarget=1,γ=0.9
最优性(Optimality)
给定一个 ϵ \epsilon ϵ-greedy policy,它的state value是什么?
optimality
最优的策略就是有最大的state value的策略。当 ϵ \epsilon ϵ增加的时候,the optimality of the policy becomes worse! 为什么目标state的state value变为了negative?因为它在这个地方有比较大的概率进入到forbidden area,得到负数的reward会非常多。

一致性(Consistency)
找到最优的 ϵ \epsilon ϵ-greedy policies和它们的state values?直接给出一个最优策略,用MC ϵ \epsilon ϵ-greedy 算法,设置 ϵ \epsilon ϵ为0.1。一致性也就是当 ϵ \epsilon ϵ-greedy得到的策略与greedy得到的策略是一致的。
一致性
结论是如果想用 MC ϵ \epsilon ϵ-greedy的时候, ϵ \epsilon ϵ不能太大。从探索性比较大,逐步减小 ϵ \epsilon ϵ,最终得到一个最优的策略。

总结

关键点:

  • 基于Monte Carlo方法的Mean estimation
  • 三个算法:
    • MC Basic
    • MC Exploring Starts
    • MC ϵ \epsilon ϵ-Greedy
  • 这三个算法之间的关系
  • ϵ \epsilon ϵ-greedy policies的最优性和探索性

内容来源

  1. 《强化学习的数学原理》 西湖大学工学院赵世钰教授
  2. 《动手学强化学习》 俞勇 著

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无线耳机哪个品牌好一点?2023四款好用的无线耳机排行

随着蓝牙耳机的普及,越来越多的耳机厂商加入蓝牙耳机这条竞争赛道。不同品牌的蓝牙耳机又有着不同的价位区间,不同的性能配置,不同的外观设计,可以说现在的蓝牙耳机多到让人在选择时眼花缭乱。那么,无线耳机哪个品牌好…

云端需求助力跑赢周期,金山办公有望借助ChatGPT加速腾飞

与微软在办公领域“搏杀”了三十年的金山办公,或许正在迎来自己的“第二春”。2月25日,金山办公(688111)发布2022年度业绩快报,全年营收38.85亿元人民币(单位下同),同比增加18.44%&a…

智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力

我国制造业正处于产业升级的关键时期,基于数据进行生产策略制定与管理是大势所趋,而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模,真实复现设备设施外观、结构、运转…

基于卷积神经网络CNN的分类研究,基于卷积神经网络的手写体识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,各种人工智能都要求对图像拥有识别…

Linux内核4.14版本——drm框架分析(1)——drm简介

目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 1.4.1 DRM Framebuffer 1.4.2 CRTC 1.4.3 Encoder 1.4.4 Connector 1.4.5 Bridge 1.4.6 Panel 1.4.…

双指针法将时间复杂度从 O(n^2) 优化到 O(n)

[1] 什么是双指针法 双指针法(Two Pointers)是一种常见的算法技巧,常用于数组和链表等数据结构中。 双指针法的基本思想是维护两个指针,分别指向不同的位置,通过它们的移动来解决问题。在某些情况下,使用双…

【Leetcode】移除链表元素 链表的中间节点 链表中倒数第k个节点

目录 一.【Leetcode203】移除链表元素 1.链接 2.题目再现 A.双指针法 B.类尾删法 C.哨兵位 二.【Leetcode876】链表的中间节点 1.链接:链表的中间节点 2.题目再现 3.解法:快慢指针 三.链表中倒数第k个节点 1.链接:链表中倒数第k个…

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…

企业为什么需要做APP安全评估?

近几年新型信息基础设施建设和移动互联网技术的不断发展,移动APP数量也呈现爆发式增长,进而APP自身的“脆弱性”也日益彰显,这对移动用户的个人信息及财产安全带来巨大威胁和挑战。在此背景下,国家出台了多部法律法规,…

【架构师】跟我一起学架构——微服务分层监控

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

机器学习与目标检测作业:安装pytorch

机器学习与目标检测作业:安装pytorch一、 进入官网复制下载命令二、 下载的过程2.1 conda命令运行三、 测试pytorch是否安装成功安装pytorch教程 一、 进入官网复制下载命令 进入官网复制下载命令如下图所示 二、 下载的过程 下载的过程如下图所示 2.1 conda命令运…

vue3中引入初始化样式

1、创建一个reset.css文件 2、文件内容为: css charset “utf-8”;html{background-color:#fff;color:#000;font-size:12px} body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding…

华为机试题:HJ100 等差数列(python)

文章目录(1)题目描述(2)Python3实现(3)知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

芯驰(E3-gateway)开发板环境搭建以及调试遇到问题的解决

1-Windows下环境配置 可以在Windows上使用命令行或者IAR IDE编译SSDK项目。Windows编译依赖的工具已经包含在 prebuilts/windows 目录中,包括编译器、Python和命令行工具。 1.1.1 CMD SSDK集成 msys 工具,可以在Windows命令行中完成SDK的配置、编译和…

零入门kubernetes网络实战-19->golang编程netlink包方式操作tun设备

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章介绍一下,使用 github.com/vishvananda/netlink 来操作tun设备 1、安装github.com/vishvananda/netlink go get github.com/vishvanan…

Java的Groovy执行器内存泄露(MetaSpace)问题分析与解决办法

环境与背景 在java程序中通过GroovyScriptEvaluator执行器创建脚本Script对象调用Groovy脚本语言来完成某些功能, ,会通过AppClassLoader或者GroovyClassLoader去生产一个随机的名称的Groovy的Script类对象,导致元数据,产生的class类会被AppClassLoader或者GroovyClassLoader内…

软件测试必备知识

一、软件测试的基本概念①需求IEEE规定:软件需求是(1)用户解决问题或达到目标所需 条件或权能。(2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能。一种反应上面(1&#xf…

MyBatisPlus 批量添加

文章目录现状优化效果现状 一般来说,批量插入可以使用 MyBatisPlus 中 ServiceImpl 自带的方法 saveBatch 打开 sql 日志,application.yml 添加配置,mapper-locations 配置 mapper 路径 mybatis-plus:configuration:log-impl: org.apache.i…

LEAP模型的能源环境发展、碳排放建模预测及不确定性分析

LEAP(Long Range Energy Alternatives Planning System/ Low emission analysis platform,长期能源可替代规划模型)是一种自下而上的能源-环境核算工具,由斯德哥尔摩环境研究所和美国波士顿大学联合研发。该模型与情景分析法紧密结…

基于Jetson Tx2 Nx的Qt、树莓派等ARM64架构的Ptorch及torchvision的安装

前提 已经安装好了python、pip及最基本的依赖库 若未安装好点击python及pip安装请参考这篇博文 https://blog.csdn.net/m0_51683386/article/details/129320492?spm1001.2014.3001.5502 特别提醒 一定要先根据自己板子情况,找好python、torch、torchvision的安…