首页 > 其他分享 >强化学习的数学原理-05蒙特卡洛方法

强化学习的数学原理-05蒙特卡洛方法

时间:2024-10-29 09:43:48浏览次数:3  
标签:MC 05 mid policy 数学原理 Basic action 蒙特卡洛 pi

目录

MC Basic

从\(model \: base \:\)的\(Reinforcement \: learning \:\)过渡到\(model \: free \:\)的\(\: Reinforcement \: learning \:\)最难以理解的是怎么在没有模型的情况下去估计一些量。

这里面就有一个重要的\(\: idea \: Monte \: Carlo \: estimation\)

下面有一个抛硬币的例子:

用一个随机变量\((random \; variable \: )X\)来表示硬币的结果

如果正面朝上,\(X \; = \: +1\)

如果反面朝上,\(X \: = \: -1\)

我们的目标是计算\(\: \mathbb{E}\left[ X \right]\)

这里有两种方法去计算\(\: \mathbb{E}\left[ X \right]\)

一种方法是:\(Model-bases\)

假设随机变量模型已知:

\[p(X=1)= \: 0.5 \:, \quad p(X=-1)= \: 0.5 \: \]

根据数学期望的定义,就可以计算出随机变量\(X\)的期望\(\mathbb{E}\left[ X \right] = \sum_x{xp(x)}=1 \times 0.5+(-1) \times 0.5 = 0\)

这样期望计算起来就很简单了,但是问题是我们无法做到精确地知道这样的模型

另一种方法\(Model-free\)

idea:投掷硬币多次,然后计算结果的平均值

我们多次投掷硬币得到一系列结果\(\{x_1, x_2, ...,x_N\}\)

然后期望可以用上面的采样去估计

\[\mathbb{E}[X] \approx \bar{x} = \frac{1}{N}\sum_{j=1}^{N}x_j \]

第二种方法就是\(\: Monte \: Carlo \: estimation \:\)的基本思想

这里是近似就会存在一个问题,这样去近似得到的结果是否是精确的?

答案是:当\(N\)比较小的时候是不精确的,但当\(N\)足够大得到的结果就比较精确

1730105374392.png

1730105708932.png

经过上面的前置知识,接下来就是蒙特卡洛算法了。

\(Policy \; iteration \:\)有两步在每个\(iteration\)

\[\begin{cases} policy \: evaluation:v_{\pi_k}=r_{\pi_k}+\gamma P_{\pi_k}v_{\pi_k} \\ policy \: improvement:\pi_{k+1}=\arg \max (r_{\pi}+\gamma P_{\pi_k}v_{\pi_k}) \end{cases} \]

1730106297912.png

所以关键是计算\(q_{\pi_k}(s,a)\)

要计算\(q_{\pi_k}(s,a)\)实际上由两种方法;

第一种就是\(value \: iteration\)所用的\(require \: model\)的

\[q_{\pi_k}(s,a)=\sum_rp(r|s,a)r+\gamma \sum_{s^{'}}p(s^{'}|s,a)v_{\pi_k}(s^{'}) \]

第二种是从\(q_{\pi_k}(s,a)\)的定义出发:

\[q_{\pi_k}(s,a)=\mathbb{E}\left[G_t |S_t=s,A_t=a \right] \]

然后这就是一个\(mean \: estimation\)的问题,我们可以用\(monte \: carlo \: estimation\)的方法依赖于数据\(data(samples或者experiences)\)

下面详细看一下是如何做到的

  • 首先从任意一个\((s,a)\)出发,然后根据当前的策略\(\pi_k\)生成一个\(episode\)
  • 然后计算出这个\(episode\)的\(return\)用\(g(s,a)\)表示
  • \(g(s,a)\)是\(G_t\)的一个采样\(Sample \:\) \(q_{\pi_k}(s,a)=\mathbb{E}\left[ G_t \mid S_t=s, A_t=a \right]\)
  • 假设我们有一个\(episodes\)的集合\(g^{(j)}(s,a)\),那么我们就可以用这个集合去求一个平均值去估计这个\(G_t\)的期望\(q_{\pi_k}(s,a)=\mathbb{E}\left[ G_t \mid S_t = s, A_t = a\right] \approx \frac{1}{N} \sum^N_{i=1}g^(i)(s,a)\)

总结:当模型未知的时候,我们就需要知道数据.没有数据的时候,需要有模型,反正两者需要其中的一个

数据在统计或者概率里面叫\(sample\),在强化学习中叫\(experience\)

然后这个算法就比较清楚了

\(MC \: Basic \: algorithm\)

首先给定一个初始的策略\((policy)\pi_0\),这里有两步在第\(k\)次迭代中

第一步是:\(Policy \: evaluation\)

这一步就是对所有的\((s,a)\)求得\(q_{\pi_k}(s,a)\),更具体来讲就是对于每一个\((s,a)\)的\(pair\)去采样尽可能多\((infinite)\)个\(episodes\),平均的\(return\)就用来估计\(q_{\pi_k}(s,a)\)

第二步是:\(Policy \: improvement\)

这一步就是去解决\(\pi_{k+1}(s) = \arg \max_{\pi} \sum_a \pi(a|s)q_{\pi_k}(s,a), for \: all \: s \in S \:\)贪心的最优策略就是\(\pi_{k+1}(a^*_k \mid s) = 1, where \: \arg \max_a q_{\pi_k}(s,a)\)

实际上\(MC \: basic\)算法和\(Policy \: iteration\)是一样的,唯一的区别就是在第一步\(Policy \: evaluation(PE)\)的时候,\(Policy \: iteration\)第一步先求解\(state \: value\)然后再根据\(state \: value\)去求解\(action \: value\),而\(MC \: Basic\)算法是直接根据数据\((data)\)得到\(q_{\pi_k}\)

bd29cb7c47594b787544cc4e1bf8c65.png

总结:

  1. \(MC \: Basic\)是\(policy \: iteration\)的一个变型,把\(PE\)部分基于\(model\)计算的部分去掉,换成不需要\(model\)
  2. 所以要学习基于蒙特卡洛的强化学习算法首先要学习基于\(policy \: iteration\)的强化学习算法
  3. \(MC \: Basic\)这个算法是很重要的,他清楚地揭示了怎么把\(model \: base\)的算法变为\(model \; free\)但是\(MC \; Basic\)这种算法并不适用,因为\(MC \; Basic\)的效率\((efficiency)\)低

例子:

1730116761958.png

第一步:\(PE\)计算\(q_{\pi_{k}}(s,a)\),对于上面的例子一共有9个状态\((state)\),5个\(action\),所以一共有\(9 \times 5\)个\(state-action \: pairs\),对于每个\(state-action \: pairs\)都需要进行\(N\)次采样

第二步:\(PL\):贪心地选择\(action \quad a^{*}(s)=\arg\max_{a_i}q_{\pi_k}(s,a)\)

MC Exploring Starts

是\(MC \; Basic\)算法的推广,可以让\(MC \; Basic\)算法变得更加高效

下面是\(MC \: Exploring \: Starts\)如何做使得\(MC \; Basic\)更高效的

考虑一个网格世界,按照一个策略\(\pi\),我们可以得到一个\(episode\)

\[s_1 \xrightarrow{a_2} s_2 \xrightarrow{a_4} s_1 \xrightarrow{a_2} s_2 \xrightarrow{a_3} s_5 \xrightarrow{a_1} ... \]

首先引入一个\(visit\)的定义:在一个\(episode\)中每个上面的一个\(state-action \; pair\)被称为对这个\(state-action \; pair\)有了一次访问\(visit \; of \; that \; state-action \; pair\)

在\(MC \; Basic\)算法中采用的是\(Initial-visit \; method \;\):对于上面的\(episode\),只考虑\((s_1,a_2)\),用剩下的得到的\(return\)来估计\((s_1,a_2)\)的\(action \; value\),这样做实际上是没有充分利用这个\(episode\)d的

1730129734459.png

事实上还是有两种方法

  1. \(first-visit \; method\):只在第一次\(visit\)的时候估计\(action-value\)
  2. \(every-visit \; method\):在每一次\(visit\)的时候都估计\(action-value\)

除了让数据的使用更加\(effient\)外还可以让策略的更新更加高效.

\(MC-Basic\)是等待所有的\(episode\)都被计算出之后才做一个\(average \; return\)估计\(action \; value\)进行更新\(policy\),而等待的过程就会浪费很多时间.

而还有一种方法就是在计算出一个\(episode的return\)时就立刻用这个\(episode\)的\(return\)来估计\(action \; value\)然后就直接去改进策略

这里会有一个问题就是用一个\(episode\)去估计\(action \; value\)是不准的,但是根据之前的\(truncated \; policy \; iteration \; algorithm\)告诉我们这样做虽然不是很精确但依然可行。

1730130630301.png

070572f750a72e8b0c52696bd430bd0.png

解释\(exploring \; starts\)

\(exploring\):是指从每一个\((s,a)\)出发都要有\(episode\),如果恰恰有一个\(action\)没有被\(visit\)到,而那个\(action\)恰恰又是最优的,为了能得到最优的策略,我们还是要确保每一个\((s,a)\)都能被访问到

\(starts\):是指从一个\((s,a)\)生成\(reward\)有两种方法,一种是从\((s,a)\)开始一个\(eposide\)就是\(start\),另一种是从其他的\((s^{'}, a^{'})\)开始也能经过\((s,a)\)用后面的数据也可以估计当前\((s,a)\)的\(return\),但是第二种\(visit\)是没办法确保的,因为它依赖于策略和环境,没办法保证从一个\((s,a)\)开始经过其他所有剩下的\((s,a)\)

MC Epsilon-Greedy

\(MC \; without \; exploring \; starts\)

\(soft \; policy\)是对每一个\(action\)都有可能做选择

policy分为两种,一种是\(determinstic\)的,\(gready \; policy\)就是其中之一,还有一种是\(stochastic \; policy\) 如\(soft \; policy\)以及下面的\(\epsilon-gready\)

引入\(soft \; policy \;\)的原因是如果从一个\((s,a)\)出发,如果\(episode\)特别长,就能确保任何一个\((s,a)\)都能被\(visit\)到于是就可以去掉\(exploring \; starts\)这个条件了,不需要从每一个\((s,a) \; start\)

然后\(soft \; policy\)里面要用的就是其中的\(\epsilon-gready\)

\[\pi(a \mid s) = \begin{cases} 1 - \frac{\epsilon}{\mid \mathcal{A}(s) \mid}(\mid \mathcal{A}(s) \mid - 1),for \; the \; gready \; action \\ \frac{\epsilon}{\mid \mathcal{A}(s) \mid}, for \; the \; other \; \mid \mathcal{A}(s) \mid -1 \; actions\\ \end{cases} \]

\(where \; \epsilon \in [0,1] \; and \; |\mathcal{A}(s)|\)是 状态\(s\)对应的\(action\)的数量

虽然给其他\(action\)了一些选择概率,但是还是把大概率留给了\(gready \; action\)

为什么使用\(\epsilon-gready \; ?\)

平衡了\(exploitation\)(剥削充分利用)和\(exploration\)(探索)

1730134576220.png

aef000b7e56a859d900613f8dfc0ff3.png

实际中,我们可以让\(\epsilon\)逐渐减小,在开始时比较大,具有较好的探索能力,随着时间推移,逐渐减小,最后接近最优策略.

标签:MC,05,mid,policy,数学原理,Basic,action,蒙特卡洛,pi
From: https://www.cnblogs.com/cxy8/p/18512204

相关文章

  • “惠捷”自然灾害救灾物资管理系统 毕业设计程序源码61050
    摘要自然灾害是人类面临的重大挑战之一,它给人们的生命财产安全造成严重威胁。在自然灾害发生后,及时的救灾物资管理是保障人民群众安全的重要举措之一。然而,传统的救灾物资管理方式存在一些问题,如信息不流通、物资分配不公、数据统计不准确等。因此,研究和开发一种高效、便捷......
  • 强化学习的数学原理-04值迭代与策略迭代
    目录ValueiterationalgorithmPolicyiterationalgorithmTruncatedpolicyiterationalgorithmValueiterationalgorithm\[v_{k+1}=f(v_k)=\max_{\pi}\left(r_{\pi}+\gammaP_{\pi}v_k\right)\:,\:k\:=\:1,2,3,...\]算法可以被分为两步去做:\(Step1......
  • java+SSM+mysql缴税管理系统70555-计算机毕设 原创毕设选题推荐(免费领源码)
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,缴税管理系统的信息通过网络进行信息管理掀起了热潮,所以针对管理的用户需求......
  • # 学期(如2024-2025-1) 学号(:20241405) 《计算机基础与程序设计》第5周学习总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05这个作业的目标Pep/9虚拟机、机器语言与汇编语言、算法与伪代码、测试:黑盒,白盒作业正文https://www.cnbl......
  • 代码随想录算法训练营day27| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃
    学习资料:https://programmercarl.com/0122.买卖股票的最佳时机II.html#算法公开课贪心PART2学习记录:122.买卖股票的最佳时间2(求最大利润,贪心:把所有正数相加;后一天与当天的股票价格差值,若为正就加入利润,若为负,则不加)点击查看代码classSolution:defmaxProfit(self,pr......
  • 基于java的智慧物业管理系统,计算机毕业设计源码 005,计算机程序开发定制
    摘 要随着信息化时代的蓬勃发展,小区业主对智能化.网络化的智能服务需求越来越大。如今的社区服务存在功能简单、灵活性较差等问题,难以满足社区业主多样化的住房需求。针对以上所说的问题.我们要将传统的小区改成“互联网+”的小区管理模式。本课题设计并开发了一个包含楼......
  • 【代码随想录Day53】图论Part05
    并查集理论基础题目链接/文章讲解:并查集理论基础|代码随想录寻找存在的路径题目链接/文章讲解:代码随想录importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){intnumberOfElements,numberOfConnections;Scann......
  • Jetson_MPU6050_DMP_Python读取
    编译动态链接库I2CDevLib仓库选用Linux上驱动I2C和MPU6050的代码,克隆LinuxI2CDev文件夹到本地,然后进入到文件夹中,创建一个main.cpp用来创建与Python的函数接口,可以自定义。这里的代码没有考虑零偏,只是从DMP取出四元数换算得到结果的,实际用的时候有不小的零偏,可以添加上初始化时......
  • 未来的智能家居:2050年的家庭机器人管家与智能家电
    未来的智能家居:2050年的家庭机器人管家与智能家电关键词:智能家居,家庭机器人管家,智能家电,物联网,机器学习,自然语言处理,运动控制算法摘要:随着科技的飞速发展,智能家居行业迎来了前所未有的机遇和挑战。本文将从2050年智能家居的愿景和背景出发,详细探讨家庭机器人管家与智......
  • 【配电网优化】基于蒙特卡洛法的电动汽车充电负荷计算
    摘要随着电动汽车(EV)的普及,电动汽车充电负荷对配电网运行的影响逐渐增大。为了有效评估电动汽车充电负荷对配电网的影响,本文采用蒙特卡洛法对电动汽车的充电负荷进行计算与模拟。通过蒙特卡洛随机采样模拟不同时间段电动汽车的充电行为,得出不同时段、不同规模的充电负荷分布......