David Silver 增强学习——Lecture 5 不基于模型的控制(一)

David Silver 增强学习——Lecture 5 不基于模型的控制(一)

其他lecture

【1】搬砖的旺财:David Silver 增强学习——笔记合集(持续更新)


目录

1、前言
····1.1 预测
····1.2 控制
····1.3 采样策略和目标策略
····1.4 在策略学习 On-policy Learning
····1.5 离策略学习 Off-policy Learning
2、在策略蒙特卡洛控制 On-Policy Monte-Carlo Control
····2.1 广义策略迭代
····2.2 基于蒙特卡洛的广义策略迭代
····2.3 使用行为价值函数进行不基于模型的策略迭代
····2.4 示例——Greedy Action Selection
····2.5 \epsilon-{\textrm{greedy}} 探索
········2.5.1 \epsilon-{\textrm{greedy}} 贪婪提升定理
····2.6 蒙特卡洛控制 Monte-Carlo Control
····2.7 无限探索下的极限贪婪 GLIE
········2.7.1 基于GLIE的蒙特卡洛控制
····2.8 示例——二十一点游戏的最优策略
3、参考文献

1、前言

Lecture 5的主要内容如下:

先来回顾一下预测(prediction)和控制(control)的区别:

  • 1.1 预测
input:
MDP <{\cal S}, {\cal A},{\cal P},{\cal R}, \gamma> 和策略 \pi or MRP <{\cal S}, {\cal P}^\pi, {\cal R}^\pi, \gamma>
output:
价值函数 V_\pi(基于当前策略 \pi
  • 1.2 控制
input:
MDP <{\cal S}, {\cal A},{\cal P},{\cal R}, \gamma>
output:
最优价值函数 V_* 和最优策略 \pi_*

Lecture 4主要讲了MC learning,TD learning, {\textrm{TD}}\left( \lambda \right) 。这三个方法都是为了在给定策略下去估计价值函数 V(s)。只不过MC learning需要得到一个完整的episode才能进行一次 v 值更新,而TD learning则不用,它可以每走一步就更新一次 v 值。 但我们的目标是想得到最优策略,所以Lecture 5就是为了通过价值函数,反过来改进策略。两者互相迭代改进,最终收敛到最优策略与最优价值函数。

现实中有很多此类的例子,比如控制一个大厦内的多个电梯使得效率最高,控制直升机的特技飞行,机器人足球世界杯上控制机器人球员,围棋游戏等等。

这些问题的存在,

一是因为MDP模型运行机制未知,不过可以通过采样去经历、去试;
二是因为虽然MDP模型已知,但问题的规模太大以至于计算机无法高效的计算,除非使用采样的办法。

不基于模型的控制(Model-free control)就是专注于解决这些问题。

  • 1.3 采样策略和目标策略
采样策略是智能体与环境交互的策略
目标策略是我们要学习的策略,即 v_\piq_\pi 时的下标
  • 1.4 在策略学习 On-policy Learning

“Learn on the job”,即采样策略 \pi目标策略 \pi 一致,根据该策略产生的一系列行为去获得奖励,然后更新状态函数,最后根据该更新的价值函数来优化策略得到较优的策略。

直接使用样本统计属性去估计总体
更简单,且收敛性更好
数据利用性更差(只有智能体当前交互的样本能够被利用)
限定了学习过程中的策略是随机性策略
  • 1.5 离策略学习 Off-policy Learning

“Look over someone's shoulder——站在别人的肩膀上可以看得更远”,即用于采样策略 \mu目标策略 \pi 不一致。\mu 可以是先前学习到的策略,也可以是人类的策略等一些较为优化成熟的策略。通过观察基于策略 \mu 的行为(或者说通过对策略 \mu 进行采样,得到策略 \mu 下的各种行为),继而获得奖励,然后更新价值函数,即在自己的策略形成的价值函数的基础上观察别的策略产生的行为,以此达到学习的目的。

一般采样策略 \mu 选用随机性策略,目标策略 \pi 选用确定性策略
需要结合重要性采样才能使用样本估计总体
方差更大,收敛性更差 数据利用性更好(可以使用其他智能体交互的样本)
采样策略需要比目标策略更具备探索性。即,在每个状态下,目标策略的可行动作是采样策略可行动作的子集。

2、在策略蒙特卡洛控制 On-Policy Monte-Carlo Control

  • 2.1 广义策略迭代 Generalised Policy Iteration

回顾Lecture 3,广义策略迭代(Generalized Policy iteration,GPI)指让策略评估和策略改善交互的一般概念,它不依赖于两个过程的粒度(granularity)和其他细节。几乎所有强化学习方法都可以被很好地描述为GPI。

如果评估过程和改善过程都稳定下来,即不再发生变化,那么价值函数和策略必须都是最优的,如上图(右)所示。

人们还可以用两个目标来考虑GPI中评估和改善过程的相互作用,如上图(左)所示,上面的线代表目标 v=v_\pi,下面的线代表目标 \pi={\textrm{greedy}}\left( v \right)。目标会发生相互作用,因为两条线不是平行的。从一个策略 π 和一个价值函数 v 开始,每一次箭头向上代表着利用当前策略进行价值函数的更新,每一次箭头向下代表着根据更新的价值函数贪婪地选择新的策略,说它是贪婪的,是因为每次都采取转移到可能的、状态函数最高的新状态的行为。最终将收敛至最优策略和最优价值函数。

  • 2.2 基于蒙特卡洛的广义策略迭代 Generalised Policy Iteration With Monte-Carlo Evaluation

Lecture 3中策略评估用的是贝尔曼方程,策略改进用的是{\textrm{greedy}}方法,价值函数和策略都是最优时,贝尔曼最优方程

v_*(s) = \mathop{\Bbb{max}}_{a}{\Bbb E}\left[ R_{t+1}+\gamma v_*\left( S_{t+1}|S_t=s,A_t=a \right) \right] \\= \mathop{\Bbb{max}}_{a}\sum_{s',r}p\left( s^{'},r|s,a \right)\left[ r+\gamma v_*\left( s' \right) \right]

成立。

但是,使用动态规划算法来改善策略是需要知道某一状态的所有后续状态及状态间转移概率,即: \pi'(s)=\mathop{\textrm {argmax}}_{a \in \cal{A}}\left( {\cal{R}}_s^a+{\cal{P}}_{ss'}^aV(s') \right)

比如,Lecture 2中的学生MDP过程例子,假如需要在贪婪策略下确定学生处在Class3时的价值,你需要比较学生在Class3后所能采取的全部两个行为“Study”和“Pub”后状态的价值。选择“Study”比较简单,在获得一个价值为10的即时奖励后进入价值恒为0的“Sleep”状态,此时得到在“第三节课”后选择“Study”的价值为+10;而选择“Pub”时,计算就没那么简单了,因为在“Pub”过后,学生自己并不确定将回到哪个状态,因此无法直接用某一个状态的价值来计算“Pub”行为的价值。环境按照一定的概率(分别为 0.2, 0.4, 0.4)把学生重新分配至“第一节课”、“第二节课”或“第三节课”。也只有再知道这三个概率值后,我们才能根据后续这三个状态的价值计算得到“Pub”行为的价值为+8.4(详细的求解过程请参考Lecture 2),根据贪婪策略,学生在“第三节课”的价值为+10。在基于采样的强化学习时,我们无法事先知道这些状态之间在不同行为下的转移概率,因而无法基于状态价值来改善我们的贪婪策略。

既然要将其变为模型无关(model free)的方法,那么首先在策略估计中就不能使用贝尔曼期望方程,而是变为sample方法,比如MC方法或TD方法。具体该怎么操作呢?

  • 2.3 使用行为价值函数进行不基于模型的策略迭代 Model-Free Policy Iteration Using Action-Value Function

模型未知时,首先应该使用状态行为对的价值 Q(s,a) 来代替状态价值 :
\pi'(s)=\mathop{\textrm{argmax}}_{a \in \cal{A}}\ Q\left( s,a \right)

这样做的目的是可以改善策略而不用知道整个模型,只需要知道在某个状态下采取什么样的行为价值最大即可。

如下图所示,从初始的策略 π 和初始的行为价值函数 Q 开始,每一次箭头向上代表着利用当前策略进行状态行为对 q的更新,每一次箭头向下代表着根据更新的行为价值函数贪婪地选择新的策略,说它是贪婪的,是因为每次都采取转移到可能的、行为价值函数最高的新状态。最终将收敛至最优策略 \pi_* 和最优状态行为对函数 q_*

即使这样,至少还存在一个问题,即当我们每次都使用贪婪算法来改善策略的时候,将很有可能由于没有足够的采样经验而导致产生一个并不是最优的策略,我们需要不时的尝试一些新的行为,这就是探索(Exploration)。

  • 2.4 示例——Greedy Action Selection

如图:在你面前有两扇门,考虑如下的行为、奖励并使用贪婪算法改善策略:

你打开左侧门得到即时奖励为 0\textrm{V}\left( left \right) = 0
你打开右侧门得到即时奖励 +1\textrm{V}\left( right \right) = +1
在使用贪婪算法时(也就是选择 Q(s,a) 值最大的那个动作),接下来你将会继续打开右侧的门,而不会尝试打开左侧门。
你打开右侧门得到即时奖励 +3\textrm{V}\left( right \right) = \frac{1+3}{2}=+2
你打开右侧门得到即时奖励 +2\textrm{V}\left( right \right) = \frac{1+3+2}{3}=+2
......

这种情况下,打开右侧门是否就一定是最好的选择呢?

答案显而易见是否定的。因此完全使用贪婪算法改善策略通常不能得到最优策略。为了解决这一问题,我们需要引入一个随机机制,以一定的概率选择当前最好的策略,同时给其它可能的行为一定的几率,这就是 \epsilon-{\textrm{greedy}} 探索。

我在《Reinforcement Learning - An Introduction》——Chapter 2的多臂赌博机问题中也曾探讨过 \epsilon-{\textrm{greedy}} 方法,详情请参考:

搬砖的旺财:《RL——An Introduction》第二章笔记——多臂赌博机问题zhuanlan.zhihu.com图标
  • 2.5 \epsilon-{\textrm{greedy}} 探索

设定一个 \epsilon 值,用来指导到底是Explore还是Exploit(Exploration and Exploitation问题,简称EE问题),因为 \epsilon-{\textrm{greedy}} 探索的目标是使得某一状态下所有可能的行为都有一定非零几率被选中执行,也就保证了持续的探索。

比如将 \epsilon 设定为 0.1 ,以保证将 10\% 的次数投入在探索(Explore), 90\% 的次数用于利用(Exploit)。

具体操作就是,每次抽一个 01 的随机数,如果这个数大于 \epsilon ,则选择当前认为最好的行为,换句话说,以 1-\epsilon 的概率下选择当前认为最好的行为。如果小于 \epsilon ,则在所有可能的行为中选择(也包括那个当前最好的行为)。

数学表达式如下:

\pi(a|s)=\begin{cases}\frac{\epsilon}{m}+1-\epsilon&\text{if a*=$\mathop{\textrm{argmax}}\limits_{a \in \cal{A}}\ Q(s,a)$}\\ \frac{\epsilon}{m}&\text{otherwise}\end{cases}

(注: m 代表全部可选的行为, \frac{1}{m} 代表从 m 个可选行为中选中行为 a 的概率, \frac{\epsilon}{m} 代表以 \epsilon 的概率在 m 个可选行为中选中行为 a 的概率。最好的行为 a^* 有两种情况下可能被选到,一是 1-\epsilon 的概率下选择当前认为最好的行为,二是随机选的时候也恰好选到最好的行为。)

  • 2.5.1 \epsilon-{\textrm{greedy}} 贪婪提升定理
对于任意 \epsilon-{\textrm{greedy}} 策略 \pi ,使用相应的 q_{\pi} 得到的 \epsilon-{\textrm{greedy}} 策略 \pi^{'} 是在 \pi 上的一 次策略提升,即 v_{\pi^{'}}\left( s \right)\geq v_{\pi}\left( s \right)

证明过程详情请参考:

搬砖的旺财:ε-贪婪策略提升定理的理论证明zhuanlan.zhihu.com图标
  • 2.6 蒙特卡洛控制 Monte-Carlo Control

对上面的讨论进行总结,可以得到蒙特卡洛策略迭代方法:

与在Lecture 3中讲到的策略迭代方法不一样,MC策略迭代在估计中用的是Q函数,在策略改进中用的是 \epsilon-{\textrm{greedy}} 方法。在实际应用中,我们称之为蒙特卡洛控制,且更确切地给出其迭代示意图:

MC控制使用Q函数进行策略评估,使用 \epsilon-{\textrm{greedy}} 探索来改善策略。该方法最终可以收敛至最优策略。

图中每一个向上或向下的箭头都对应着多个episode。也就是说我们一般在经历了多个episode之后才进行依据Q函数更新或策略改善。

实际上我们也可以在每经历一个episode之后就更新Q函数或改善策略。但不管使用那种方式,在 \epsilon-{\textrm{greedy}} 探索下我们始终只能得到基于某一策略下的近似Q函数,且该算法没有一个终止条件,因为它一直在进行探索。

我们希望得到一个这样的学习方法:

1. 在学习开始时有足够的探索;
2. 最终得到的策略没有探索,是一个确定性的策略。

为此引入了另一个理论概念:GLIE。

  • 2.7 无限探索下的极限贪婪 GLIE(Greedy in the Limit with Infinite Exploration)

GLIE,在有限的时间内进行无限可能的探索。

具体表现为:

1. 所有已经经历的状态行为对会被无限次探索: \mathop{\textrm{lim}}_{k \rightarrow \infty}N_k(s,a)=\infty
2. 策略最终收敛到一个贪心算法: \mathop{\textrm{lim}}_{k \rightarrow \infty}\pi_k(a|s)=\textbf{1}(a=\mathop{\textrm{argmax}}_{a' \in \cal{A}}Q_k(s,a'))

例如我们取 \epsilon_k = 1/kk 为探索的episode数目),随着探索的无限延伸,贪婪算法中 \epsilon 值趋向于0,那么该 \epsilon-{\textrm{greedy}} 蒙特卡洛控制就具备GLIE特性。

  • 2.7.1 基于GLIE的蒙特卡洛控制

基于GLIE的蒙特卡洛控制流程如下:

1. 对于给定策略 \pi,采样第 k 个episode: \left\{ {S_1,A_1,R_2,...,S_T} \right\}\sim \pi

2. 对于该episode里出现的每一个状态行为对 S_tA_t ,更新计数和Q函数:

N(S_t, A_t) \leftarrow N(S_t, A_t) + 1

Q(S_t, A_t) \leftarrow Q(S_t, A_t)+ \frac{1}{N(S_t, A_t)} (G_t - Q(S_t, A_t))

3. 基于新的Q函数改善以如下方式改善策略:

\epsilon \leftarrow 1/k
\pi \leftarrow \epsilon-{\textrm{greedy}}(Q)

定理:

GLIE蒙特卡洛控制能收敛至最优的状态行为价值函数。
  • 2.8 示例——二十一点游戏的最优策略

该图最终给出了二十一点比赛时的最优策略。

最优策略是这样:

当你手上有可用A时,大多数情况下当你的牌面和达到17或18时停止要牌,如果庄家可见的牌面在2-9之间,你选择17,其它条件选择18;
当你手上没有A时,最优策略提示大多数情况下牌面和达到16就要停止叫牌,当庄家可见的牌面在2-7时,这一数字更小至13甚至12。这种极端情况下,宁愿停止叫牌等待让庄家的牌爆掉。

3、参考文献

【1】机器学习小组知识点31:重要性采样(Importance Sampling )

【2】采样方法(一)

【3】深度增强学习David Silver(五)——Model-Free Control

【4】David Silver强化学习公开课(五):不基于模型的控制

【5】David Silver强化学习课程笔记(五)

【6】David Silver 强化学习Lecture5:Model-Free Control

【7】《强化学习》第五讲 不基于模型的控制

【8】强化学习(五):Sarsa算法与Q-Learning算法

【9】强化学习经典入门书的读书笔记系列--第五篇(上)

【10】强化学习(六)时序差分在线控制算法SARSA

【11】强化学习(七)时序差分离线控制算法Q-Learning

【12】什么是 Q Leaning - 强化学习 Reinforcement Learning | 莫烦Python

【13】DQN 从入门到放弃4 动态规划与Q-Learning

【14】A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)

【15】A Painless Q-Learning Tutorial

【16】牛阿:如何用简单例子讲解 Q - learning 的具体过程?


请大家批评指正,谢谢~


(PS:2019年1月24日完成第三稿更新~)

编辑于 2019-08-20

文章被以下专栏收录