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

news/2025/3/13 8:49:24/文章来源:https://www.cnblogs.com/cxy8/p/18512204

目录
  • MC Basic
  • MC Exploring Starts
  • MC Epsilon-Greedy

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\)逐渐减小,在开始时比较大,具有较好的探索能力,随着时间推移,逐渐减小,最后接近最优策略.

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

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

相关文章

关于我卖的苹果~(甘肃-天水-山区-结果之后没打农药)

尽快发货❗🍎一大箱纯红富士120(小箱60)。🍎一大箱三合一100(小箱50)。⛰️自家种的,昼夜温差大。味道比较甜。一箱大概15斤。纯大果。 本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/18512197

关于我卖的苹果~(甘肃-天水-山区)

尽快发货❗🍎一大箱纯红富士120(小箱60)。🍎一大箱三合一100(小箱50)。⛰️自家种的,昼夜温差大。味道比较甜。一箱大概15斤。纯大果。 本文来自博客园,作者:一石数字欠我15w!!!,转载请注明原文链接:https://www.cnblogs.com/52-qq/p/18512197

法律智能助手:思通数科开源NLP系统助力文档分类与检索加速

一、系统概述 思通数科AI平台是一款融合了自然语言处理和多标签分类技术的开源智能文档分类工具,特别适用于法律行业。平台采用深度学习的BERT模型来进行特征提取与关系抽取,实现了精准的文档分类和检索。用户可以在线训练和标注数据,使系统持续学习,准确率、召回率等指标随…

ClearCLIP:倒反天罡,删除两个组件反而可以提升密集预测性能 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: ClearCLIP: Decomposing CLIP Representations for Dense Vision-Language Inference论文地址:https://arxiv.org/abs/2407.12442 论文代码:https://github.com/mc-lan/ClearCLIP创新点发现两个关键因素在将CLIP适配密…

项目升级到.Net8.0 Autofac引发诡异的问题

前两天把项目升级到.Net8.0了,把.Net框架升级了,其他一些第三方库升级了一部分,升级完以后项目跑不起来了,报如下错误: An unhandled exception occurred while processing the request. DependencyResolutionException: None of the constructors found with Autofac.Cor…

GaussDB 数据导入导出工具介绍

一、数据导入导出场景划分gsql工具适用场景和使用方法适用场景 文本格式对象定义的创建 使用方法 gsql -d db1 -p 16000 -U u1 -W Huawei@123 -f/data/table.sql示例: ALTER SESSION SET CURRENT_SCHEMA = PUBLIC;ALTER TABLE "PUBLC".GA_COM_COLLECTION_ERROR_TABL…

tag 转 branch 前 记得 Fetch 一下 - git基础

tag 转 branch 前 记得 Fetch 一下 - git基础 遇到的问题 当直接在远程的gitlab创建一个新的tag的时候(非本人创建),你本地是没有这个tag,所以你直接用这个tag名称转branch,会出现找不到tag的情况,需要Fetch一下即可。--------------------------------------------- 生活…

GaussDB多租组件

云原生数据库支持多租户,通过多租户资源共享,一是降低租户的成本,二是通过共享资源的池化实现租户的资源弹性,提高租户业务的可用性。 租户的资源弹性支持两种模式,Scale Up和Scale Out。Scale Up是在单个计算节点上对租户的分配资源进行弹性处理,Scale Out是在计算节点之…

Attention mechanism目前有什么缺点和改进空间

Attention mechanism是自然语言处理和计算机视觉领域的一项重要技术,但存在一些缺点和改进空间。主要缺点包括:1.计算复杂性高;2.缺乏解释性;3.可能产生不必要的注意力分配;其中,计算复杂性高可能限制了在大规模数据上的应用。改进方向包括:1.优化算法效率;2.增强模型解…

PbootCMS登录后权限不足怎么办

登录后权限不足问题描述:登录后无法访问某些功能或页面,提示权限不足。 解决方案:检查用户角色和权限:确保当前用户的角色和权限设置正确。 检查权限配置:检查PBootCMS的权限配置文件,确保没有错误的配置。 重新分配权限:在后台管理中,重新分配用户的角色和权限。 检查…

PbootCMS网站打开提示:“无法连接到数据库!”

网站打开提示:“无法连接到数据库!”问题原因:数据库配置不正确或数据库服务未启动。 解决方法:检查 config/database.php 文件中的数据库配置信息是否正确,包括数据库地址、端口、用户名、密码和数据库名称。 确保数据库服务已启动,并且可以从 Web 服务器访问。扫码添加…

智子: Vue Vapor年底发布alpha版本,如果有资金支持

前言 在最近的Vue Fes大会上,Vue Vapor的作者智子大佬宣布,如果能够得到资金支持,那么Vue Vapor年底就能发布alpha版本了。 关注公众号:【前端欧阳】,给自己一个进阶vue的机会 智子也需要赚钱养活自己 根据尤大透露,过去一年以来智子接受赞助全职在为Vue Vapor工作。现在…