强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 5 | Part 2 | 蒙特卡洛方法(MC Basic 算法介绍)

目录

    • 前言
    • [1. Convert policy iteration to be model-free](#1. Convert policy iteration to be model-free)
    • [2. The MC Basic algorithm](#2. The MC Basic algorithm)
    • 结语
    • 参考

前言

学习赵老师讲授的强化学习的数学原理视频,本篇文章记录第五讲 Part 2:蒙特卡洛方法(MC Basic 算法介绍),记录个人学习笔记,和大家一起分享交流😄

videohttps://www.bilibili.com/video/BV1sd4y167NS

1. Convert policy iteration to be model-free

下面我们来介绍第二部分,也是本次课当中的第一个 基于蒙特卡洛方法的强化学习算法

要理解这个算法,有一个非常核心的问题要先想清楚:怎么把 policy iteration 这个算法变成 model-free 的

我们知道 policy iteration 是依赖于模型的,这个我们在上节课已经讲过了,但实际上我们可以把它里边依赖模型的那一部分给替换成一个 model-free 的模块 ,这样我们就得到了 model-free 的强化学习算法,这是它最本质的 idea,希望大家能够抓住。

要完成这种替换,首先需要大家熟悉 policy iteration ,如果不熟悉,可以回到上节课再看一下,另外就是我们要熟悉 Monte Carlo mean estimation ,这个通过刚才的 motivating example 我们也已经了解了,下面我们来看 policy iteration 这个算法究竟怎么变成 model-free 的?

policy iteration 包含两个步骤,在每一个 iteration 当中:

{ Policy evaluation: v π k = r π k + γ P π k v π k Policy improvement: π k + 1 = arg ⁡ max ⁡ π ( r π + γ P π v π k ) \left\{ \begin{array}{l} \textbf{Policy evaluation: } v_{\pi_k} = r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k} \\6pt \textbf{Policy improvement: } \pi_{k+1} = \arg \max_{\pi} \left( r_{\pi} + \gamma P_{\pi} v_{\pi_k} \right) \end{array} \right. {Policy evaluation: vπk=rπk+γPπkvπkPolicy improvement: πk+1=argmaxπ(rπ+γPπvπk)

第一个是 policy evaluation ,第二个是 policy improvementpolicy evaluation 做的是什么呢?就是给定策略 π k \pi_k πk ,通过求解上面这个 贝尔曼公式 ,得到 state value v π k v_{\pi_k} vπk 。

我知道 v π k v_{\pi_k} vπk 之后就可以做改进,怎么改进呢?就是求解 arg ⁡ max ⁡ π \arg \max_{\pi} argmaxπ 这样一个 最优化的问题 ,然后我得到一个新的策略 π k + 1 \pi_{k+1} πk+1 ,这个我们之前都已经介绍过了。

然后 policy improvement 这一步可以写成针对每一个 s s s 展开,得到下面这样一个式子:

π k + 1 ( s ) = arg ⁡ max ⁡ π ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) = arg ⁡ max ⁡ π ∑ a π ( a ∣ s ) q π k ( s , a ) , s ∈ S \begin{align*} \textcolor{blue}{\pi_{k+1}(s)} &= \arg \max_{\pi} \sum_{a} \pi(a \mid s) \left \\sum_{r} p(r \\mid s, a)r + \\gamma \\sum_{s'} p(s' \\mid s, a)v_{\\pi_k}(s') \\right \\ &= \textcolor{blue}{\arg \max_{\pi} \sum_{a} \pi(a \mid s)} \textcolor{red}{q_{\pi_k}(s, a)}, \quad s \in \mathcal{S} \end{align*} πk+1(s)=argπmaxa∑π(a∣s)r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(s′)=argπmaxa∑π(a∣s)qπk(s,a),s∈S

后边括号这一长串就是 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a) ,也就是 action value ,怎么样求解这个优化问题得到新的策略 π k + 1 \pi_{k+1} πk+1 呢?我们也已经知道了,就是 选择 q π k q_{\pi_k} qπk 最大的那个 action ,所以这里边 非常核心的一个量就是这个 q π k ( s , a ) \textcolor{red}{q_{\pi_k}(s,a)} qπk(s,a)

我们来看一下要计算 q π k q_{\pi_k} qπk 的话实际上有两种方法:

Expression 1 requires the model:

q π k ( s , a ) = ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) q_{\pi_k}(s,a) = \sum_{r} p(r \mid s, a)r + \gamma \sum_{s'} p(s' \mid s, a)v_{\pi_k}(s') qπk(s,a)=r∑p(r∣s,a)r+γs′∑p(s′∣s,a)vπk(s′)

第一种方法是 依赖于模型的 ,也就是 policy iteration 的 PI 步骤所使用的方法,先由 PE 得到 v π k v_{\pi_k} vπk ;然后因为模型已知,就可以算出 q π k q_{\pi_k} qπk 。

那除此之外,其实还有另一种 不依赖模型的 方法,它依据 q π k q_{\pi_k} qπk 最原始的定义(期望形式):

Expression 2 does not require the model:

q π k ( s , a ) = E G t ∣ S t = s , A t = a q_{\pi_k}(s,a) = \mathbb{E}G_t \\mid S_t=s, A_t=a qπk(s,a)=EGt∣St=s,At=a

也就是从 s s s 出发,执行 action a a a ,得到一个 return ,这个 return 是一个 random variable ,对它求平均(求 expectation ),这就是 action value 最初的定义

所以 model-free 强化学习和基于蒙特卡洛方法的核心的思想 是什么呢?就是用第二个式子、不用第一个式子,因为第一个式子依赖模型,而第二个不依赖。

这本质上就转化为了一个 mean estimation 问题,前面的 motivating example 已经说明 Monte Carlo estimation 正好可以求解这类问题。

那我们下面就来看一下具体是怎么求解的:

首先我们从任意一个 ( s , a ) (s,a) (s,a) 组合出发,根据当前策略 π k \pi_k πk 得到一个 episode,我计算出这个 episode 对应的 discounted return ,记作 g ( s , a ) g(s,a) g(s,a) 。

g ( s , a ) g(s,a) g(s,a) 是什么呢?下面是 action value 的定义

q π k ( s , a ) = E G t ∣ S t = s , A t = a q_{\pi_k}(s,a) = \mathbb{E}G_t \\mid S_t=s, A_t=a qπk(s,a)=EGt∣St=s,At=a

这个 G t G_t Gt 是得到的 discounted return ,这是一个 random variable ,然后 g ( s , a ) g(s,a) g(s,a) 就是这个 random variable 的一个 采样 。如果我们有很多这样的采样,有一个集合 { g ( i ) ( s , a ) } \{ g^{(i)}(s,a) \} {g(i)(s,a)} ,就可以用这些采样求 平均值 ,来估计 G t G_t Gt 的 期望

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 \\mid S_t=s, A_t=a \approx \frac{1}{N} \sum_{i=1}^N g^{(i)}(s,a). qπk(s,a)=EGt∣St=s,At=a≈N1i=1∑Ng(i)(s,a).

这就是刚才在 motivating example 中介绍的 Monte Carlo Estimation

所以总的来说一句话就是, 当你没有模型的时候,就得有数据;当你没有数据的时候,就得有模型,反正总得有一样 ,所以没有模型的时候我们就依赖于数据,这里的数据,在统计或概率论中叫 sample(样本) ,在强化学习当中,它有一个特殊的名字,叫 experience(经验)

2. The MC Basic algorithm

到此为止实际上已经逐渐清晰了,这个算法的名字叫 MC BasicMC 是 Monte Carlo(蒙特卡洛)的首字母缩写,我们来过一下这个算法。

首先我们从一个初始的策略 π 0 \pi_0 π0 出发,这个策略可能是不好的,会慢慢地改进。然后在第 k k k 个 iteration 它包含两个步骤,第一是 policy evaluation ,第二是 policy improvement

policy evaluation 这一步做的是什么呢?它计算的是 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a) ,对所有的 ( s , a ) (s,a) (s,a) 都要算出 q π k q_{\pi_k} qπk 。方法是什么呢?就是我们前面说的:从 ( s , a ) (s,a) (s,a) 出发,得到很多 episode ,对它们的 return 求平均。

然后第二个步骤是 policy improvement ,其核心为:基于前一步获得的 q π k q_{\pi_k} qπk ,求解 arg ⁡ max ⁡ π \arg \max_{\pi} argmaxπ 这个优化问题,得到一个新的策略。

到这里大家应该很清楚了,就是 MC Basic 和 policy iteration 实际上是类似的 ,第二步一模一样,唯一的区别在第一步:policy iteration 先求解 state value 再得到 action value ,而 MC Basic 直接通过数据得到 q π k q_{\pi_k} qπk

下面是 MC Basic 算法的一个伪代码,我们简要地过一下。


伪代码:MC 基本算法(策略迭代的一种无模型变体)

初始化 :初始策略 π 0 \pi_0 π0 。

目标:搜索最优策略。

价值估计尚未收敛时,在第 k k k 次迭代中,执行:

对于 每个状态 s ∈ S s \in \mathcal{S} s∈S ,执行:

对于 每个动作 a ∈ A ( s ) a \in \mathcal{A}(s) a∈A(s) ,执行:

收集足够多的从 ( s , a ) (s, a) (s,a) 出发并遵循 π k \pi_k πk 的片段(episodes)。

基于 MC 的策略评估步骤

q π k ( s , a ) = 从 ( s , a ) 出发的所有片段的平均回报 q_{\pi_k}(s, a) = \text{从 } (s, a) \text{ 出发的所有片段的平均回报} qπk(s,a)=从 (s,a) 出发的所有片段的平均回报

策略改进步骤

a k ∗ ( s ) = arg ⁡ max ⁡ a q π k ( s , a ) a_k^*(s) = \arg\max_a q_{\pi_k}(s, a) ak∗(s)=argmaxaqπk(s,a)

π k + 1 ( a ∣ s ) = { 1 若 a = a k ∗ 0 其他情况 \pi_{k+1}(a|s) = \begin{cases} 1 & \text{若 } a = a_k^* \\ 0 & \text{其他情况} \end{cases} πk+1(a∣s)={10若 a=ak∗其他情况


实际上它和 policy iteration 是非常类似的,首先在每一个 iteration 中要 遍历每一个状态 s s s ,然后还要遍历 s s s 对应的每个 action,接下来要干嘛呢?

从 ( s , a ) (s,a) (s,a) 出发,收集很多 episode ,计算它们的 average return ,把它作为 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a) 的估计,然后在下一个步骤当中去改进策略,新策略就是在该状态选择 action value 最大的那个 action

到此为止我们已经介绍完了 MC Basic,接下来我们会有一些例子,不过在此之前我要先强调几点。

第一点就是 MC Basic 是 policy iteration 的变体 ---把基于 model 的模块拿掉,换成不需要 model 的模块。所以学习 MC 算法前,一定要先理解 model-based 的 policy iteration。否则会有很多疑问,比如 "为什么要选择 action value 最大的动作作为新策略"。

其次就是 MC Basic 这个算法实际上是非常有用的 ,它能够非常清晰地揭示如何把 model-based 变成 model-free 的过程,但是它 并不实用 ,因为它的 efficiency 比较低,之后我们会介绍两个算法来逐渐提高它的 efficiency。

实际上 MC Basic 这个算法大家在其它地方应该是看不到的,因为这是我特意起的名字,为什么呢?这也是我的一个想法:学习时应把最核心的思想和那些让它看起来更复杂的东西剥离开来 。比如,把 policy iteration 中基于模型的部分替换掉,这就是最核心的思想;而怎么更高效地利用数据、怎么更高效地更新、怎么去掉实际中难以实现的假设---这些之后大家会看到,它们让算法看起来非常复杂,当然也更加实用。但首先要明白 最核心的 idea 才是最重要的

此外 MC Basic 当中大家也可能注意到了,它是 直接估计 action value ,而在 policy iteration 当中,它是先估计了 state value 然后再转成了 action value,为什么要直接估计 action value 呢?因为如果先估计 state value,之后还要再转换成 action value,而这个转换过程又依赖模型,肯定不行,所以就要直接估计 action value。

还有一点我们知道 policy iteration 是收敛的 ,而 MC Basic 与 policy iteration 的结构完全相同 ,区别只在于 action value 的估计方式不同,因此它的 收敛性仍然能够保证。未来随着算法变得越来越复杂,这种收敛性保证会逐渐消失,或者说,收敛性分析会变得越来越复杂。

结语

本讲第二部分揭示了 model-free 强化学习最核心的转换思想:policy iteration 中依赖模型的只有一处---计算 action value 时使用了 p ( r ∣ s , a ) p(r|s,a) p(r∣s,a) 和 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a) 。而 action value 的本质是期望 q π k ( s , a ) = E G t ∣ S t = s , A t = a q_{\pi_k}(s,a) = \mathbb{E}G_t \\mid S_t=s, A_t=a qπk(s,a)=EGt∣St=s,At=a ,恰好可以用蒙特卡洛估计来近似:从 ( s , a ) (s,a) (s,a) 出发采样大量 episode,对它们的 discounted return 求平均。正如赵老师总结的:没有模型就得有数据,没有数据就得有模型,总得有一个。

MC Basic 算法由此诞生---它本质上就是 policy iteration 的无模型版本,唯一的区别是直接估计 action value(而非先估计 state value 再转换,因为后者在转换时需要模型)。虽然 MC Basic 效率低下、实际中几乎不可用,但它完美剥离了 "去模型化" 这一核心思想,为后续更高效、更实用的算法(MC Exploring Starts、MC ε-Greedy)奠定了理解的基础。其收敛性也由 policy iteration 的收敛性直接保证🤗。

参考

相关推荐
爱听歌的周童鞋2 小时前
强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 5 | Part 3 | 蒙特卡洛方法(MC Basic 算法例子)
强化学习·example·monte carlo·mc basic·episode length
盼小辉丶1 天前
PyTorch强化学习实战——基于图像-文本融合的自动化网页导航
人工智能·pytorch·深度学习·自动化·强化学习
Mid_search1 天前
Dueling Network
人工智能·深度学习·强化学习·dueling network
爱听歌的周童鞋2 天前
强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 5 | Part 1 | 蒙特卡洛方法(通过例子介绍蒙特卡洛)
强化学习·大数定律·monte carlo·estimation·model-free·expectation
Mid_search2 天前
高估问题、Target Network、Double DQN
人工智能·深度学习·强化学习·double dqn·bootstrapping·target network
Mid_search2 天前
Experience Replay
人工智能·深度学习·强化学习·经验回放
爱听歌的周童鞋2 天前
强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 4 | Part 3 | 值迭代与策略迭代(截断策略迭代算法)
强化学习·iteration·policy·truncated·value iteration
爱听歌的周童鞋5 天前
强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 3 | Part 4 | 贝尔曼最优公式(最优策略的有趣性质)
强化学习·贝尔曼最优公式·optimal policy·invariance·shortest path
Mid_search5 天前
随机排列与Fisher-Yates算法
人工智能·深度学习·强化学习·随机排列·fisher-yates