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

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

posted @ 2024-10-29 09:44  cxy8  阅读(10)  评论(0编辑  收藏  举报