提交 b8872940 编写于 作者: W wizardforcel

2021-05-07 10:06:15

上级 e3a082cc
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
+ [Sklearn 与 TensorFlow 机器学习实用指南第二版](docs/hands-on-ml-2e-zh/SUMMARY.md) + [Sklearn 与 TensorFlow 机器学习实用指南第二版](docs/hands-on-ml-2e-zh/SUMMARY.md)
+ [PyTorch 自然语言处理](docs/nlp-pytorch-zh/SUMMARY.md) + [PyTorch 自然语言处理](docs/nlp-pytorch-zh/SUMMARY.md)
+ [斯坦福 cs234 强化学习中文讲义](docs/stanford-cs234-notes-zh/SUMMARY.md)
+ [TensorFlow 1.x 深度学习秘籍](docs/tf-1x-dl-cookbook/SUMMARY.md) + [TensorFlow 1.x 深度学习秘籍](docs/tf-1x-dl-cookbook/SUMMARY.md)
+ [PyTorch 中文官方教程 1.7](docs/pt-tut-17/SUMMARY.md) + [PyTorch 中文官方教程 1.7](docs/pt-tut-17/SUMMARY.md)
+ [使用 TensorFlow 构建机器学习项目中文版](docs/build-ml-proj-tf-zh/SUMMARY.md) + [使用 TensorFlow 构建机器学习项目中文版](docs/build-ml-proj-tf-zh/SUMMARY.md)
......
...@@ -28,6 +28,17 @@ ...@@ -28,6 +28,17 @@
+ [七、自然语言处理的进阶序列模型](docs/nlp-pytorch-zh/7.md) + [七、自然语言处理的进阶序列模型](docs/nlp-pytorch-zh/7.md)
+ [八、自然语言处理的高级序列模型](docs/nlp-pytorch-zh/8.md) + [八、自然语言处理的高级序列模型](docs/nlp-pytorch-zh/8.md)
+ [九、经典, 前沿和后续步骤](docs/nlp-pytorch-zh/9.md) + [九、经典, 前沿和后续步骤](docs/nlp-pytorch-zh/9.md)
+ [斯坦福 cs234 强化学习中文讲义](docs/stanford-cs234-notes-zh/README.md)
+ [Lecture 1 Introduction to Reinforcement Learning](docs/stanford-cs234-notes-zh/1.md)
+ [Lecture 3 Model Free Policy Evaluation: Policy Evaluation Without Knowing How the World Works](docs/stanford-cs234-notes-zh/3.md)
+ [Lecture 4 Model Free Control](docs/stanford-cs234-notes-zh/4.md)
+ [Lecture 5 Value Function Approximation](docs/stanford-cs234-notes-zh/5.md)
+ [Lecture 6 CNNs and Deep Q-learning](docs/stanford-cs234-notes-zh/6.md)
+ [Lecture 7 Imitation Learning](docs/stanford-cs234-notes-zh/7.md)
+ [Lecture 8&9 Policy Gradient](docs/stanford-cs234-notes-zh/8&9.md)
+ [Lecture 10 Advanced Policy Gradient](docs/stanford-cs234-notes-zh/10.md)
+ [Lecture 11&12 Exploration and Exploitation](docs/stanford-cs234-notes-zh/11&12.md)
+ [Lecture 14 Model Based RL, Monte-Carlo Tree Search](docs/stanford-cs234-notes-zh/14.md)
+ [TensorFlow 1.x 深度学习秘籍](docs/tf-1x-dl-cookbook/README.md) + [TensorFlow 1.x 深度学习秘籍](docs/tf-1x-dl-cookbook/README.md)
+ [零、前言](docs/tf-1x-dl-cookbook/00.md) + [零、前言](docs/tf-1x-dl-cookbook/00.md)
+ [一、TensorFlow 简介](docs/tf-1x-dl-cookbook/01.md) + [一、TensorFlow 简介](docs/tf-1x-dl-cookbook/01.md)
......
# Lecture 1 Introduction to Reinforcement Learning
# 课时1 强化学习介绍 2019.01.07
## 1. 引言
在强化学习(Reinforcement Learning)中,我们考虑在没有明确的指导的情况下,学习如何通过经验(experience)去进行动作(action)的问题。强化学习行为体(agent)需要同它所处的环境(environment)交互,并从中学习如何最大化随时间累积的奖励(reward)。
可能是由于 Deep Q-Network [[1]](#ref1) 取得了巨大进步,近些年来强化学习越来越收到欢迎。人工智能的其他领域也正尝试通过借鉴与利用强化学习中的概念去取得成功。例如,AlphaGo 通过强化学习的方法在围棋领域达到了超过人类的表现 [[3]](#ref3),强化学习的概念在生成对抗网络(Generative Adversarial Networks, GAN)的训练过程中也得以应用 [[2]](#ref2)
很多人好奇强化学习与其他机器学习方式的不同之处。在有监督学习(Supervised Learning)中,已知包括了例子和标记的数据集,对于分类问题,例子对应的正确的标签已知;对于回归问题,例子对应的正确的输出已知。相反,无监督学习(Unsupervised Learning)指的是利用标记未知的数据集,找到数据中隐含的关系。在强化学习中,我们需要做出决策并比较可采取的动作,而不是做出预测。强化学习行为体可以和环境交互,并在每次交互中获得一些立即的、局部反馈信号,这些信号通常被称作奖励。但是,行为体不知道它采取的动作是否是它能够选择的“最好的“动作,它必须通过某种方式去学习通过选择一些动作来最大化长期的累积的奖励。因此,由于奖励信号提供的反馈很弱/不完整,我们可以认为强化学习介于有监督学习和无监督学习之间:有监督学习中的有标记的数据提供强有力的反馈,而无监督学习中没有标记或反馈。
强化学习引入了许多需要克服的困难,并且我们可能要在这些挑战中进行权衡。行为体必须能够优化它的动作以使其收到的奖励达到最大,但是,因为它需要通过与环境交互来学习,探索(exploration)也是需要的。这自然就导致了探索与利用(exploitation)的权衡,在这种情况下,行为体需要决定是寻找新的、更好的策略但要承担获得较低奖励的风险,还是利用它已经知道的策略。另一个我们需要面对的问题是,行为体是否能够归纳它的经验?也就是说,它能否学习到一些曾经没出现过的行为是好是坏。最后,我们还需要考虑行为体的延迟后果,也就是说,如果它获得了一个高回报,是因为它刚刚采取的行为,还是因为更早采取的行动。
## 2. 强化学习概述
### 2.1 序列决策制定
通常我们考虑制定一个好的决策序列的问题。为了标准化这个问题,在离散的设置中,一个行为体进行一个动作(actions)序列 $\lbrace a_t \rbrace$,观测到一个观测值(observations)序列 $\lbrace o_t \rbrace$ 并获得一个奖励(rewards)序列 $\lbrace r_t \rbrace$。我们定义在时刻 $t$ 的历史(history)为 $h_t=(a_1,o_1,r_1,...,a_t,o_t,r_t)$,行为体选择的下一个动作可以被视为历史的函数,也就是说,$a_{t+1}=f(h_t)$,并且序列决策制定的问题可以被认为是如何恰当地定义并计算这个函数。
<div align=center><img src="img/fig1_1.png"/></div>
<div align=center>
图 1:行为体与环境交互。
</div>
<br/>
当序列决策制定过程的模型已知时,在一些确定的和有限的设定下,类似 A* 搜索 (A* search)和最大最小(minimax)的 AI 技术可以被应用于寻找最优动作序列。
然而,如果存在非常多(或无限)可能的状态,或模型中有一定的随机性,暴力的搜索变得不再可行。在这样的设定下,我们有必要结合泛化去使得任务可行,就像在课堂中看到的 Atari 例子那样。此外,如果没有彻底搜索的能力,行为体必须决定如何有策略性地做出动作去平衡短期的和长期的奖励。
### 2.2 模型建立
定义 $S$ 为可能的状态的集合,$s_t$ 为观测到的状态序列,观测值以时间为下标,$A$ 为可能的动作的集合,$P(s_{t+1}|s_t,a_t,...,s_1,a_1)$ 为历史状态和历史动作的函数,表示在 $S$ 上的状态转移(transition dynamics)概率分布。在强化学习中,我们通常假设马尔可夫性质(Markov Property):
$$
P(s_{t+1}|s_t,a_t,...,s_1,a_1)=P\left( s_{t+1}|s_t,a_t \right),
\tag{1}
$$
在实践中,这一性质足以满足我们的要求。确保马尔可夫性质成立的一个小技巧是使用历史 $h_t$ 作为我们的状态。
通常我们认为奖励 $r_t$ 在状态转换时被获得 $s_t\stackrel{a_t}{\longrightarrow}s_{t+1}$,奖励函数(reward function)被用来预测奖励:$R(s,a,s')=\mathbb{E}[r_t|s_t=s,a_t=a,s_{t+1}=s']$。我们通常将奖励函数定义为以下的形式:$R(s)=\mathbb{E}[r_t|s_t=s]$ 或 $R(s,a)=\mathbb{E}[r_t|s_t=s,a_t=a]$。奖励函数有时也会存在退化情况,也就是说在给定 $s_t=s$ 时,$r_t$ 是一个固定值。
模型由上述状态转移和奖励函数组成。
### 2.3 强化学习行为体的组成
我们定义行为体状态(agent state)为历史的函数 $s_t^a=g(h_t)$。强化学习行为体通常包括以下三项中的一项或多项:策略(policy),值函数(value function)和可选的模型(model)。策略 $\pi$ 是从行为体状态到一个动作的映射 $\pi(s_t^a)\in A$,有时策略是在动作的随机分布 $\pi(a_t|s_t^a)$,当行为体要采取一个动作并且 $\pi$ 是随机的时,行为体以概率 $P(a_t=a)=\pi(a|s_t^a)$ 选择一个动作 $a\in A$。给定策略 $\pi$ 和衰减因子(discount factor)$\gamma\in[0,1]$,值函数(value function)$V^{\pi}$ 被定义为衰减奖励总额的期望
$$
V^{\pi}(s)=\mathbb{E}_ {\pi}[r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+...|s_t=s],
\tag{2}
$$
这里 $\mathbb{E}_{\pi}$ 表示对通过使用策略 $\pi$ 遇到的状态求期望,衰减因子 $\gamma$ 用来对立即奖励和延迟奖励加权。最后,一个强化学习行为体可能有类似2.2节定义的模型,如果行为体拥有模型,我们称之为有模型(model-based)行为体;如果它不包含模型,则称之为无模型(model-free)行为体。
到目前为止,我们已经在一个非常常规的环境中考虑了定义,但我们尚未对 $o_t$ 和 $s_t$ 的关系做出任何假设。我们称 $o_t\neq s_t$ 的情况为部分可观测的(partially observable)。在部分可观测的设定中,为了定义可信状态(belief state)$s_t^a$,强化学习算法通常使用基于真实世界状态的概率分布。
然而,对于本课程的大部分内容,我们考虑完全可观测(fully observable)的情况,也就是说 $o_t=s_t$ 而且我们假设 $s_t^a=s_t$。
### 2.4 强化学习行为体的分类
有很多种方式进行分类,如表 1,并且在每种分类下,行为体的种类并不一定单一,例如,演员-评论家(actor critic)行为体也可以是无模型的。对行为体分类的方法概述如图 2 所示。
<!--
Agent type | Policy | Value Function | Model
:-: | :-: | :-: | :-:
Value Based | Implicit | &radic; | ?
Policy Based | &radic; | X | ?
Actor Critic | &radic; | &radic; | ?
Model Based | ? | ? | &radic;
Model Free | ? | ? | X
-->
<div align=center><img src="img/fig1_tab_1.png"/></div>
<div align=center>
表 1:强化学习行为体分类,&radic; 表示行为体包含这一部分,X 表示行为体一定不包含这一部分,? 表示行为体可能含有这一部分。
</div>
<br/>
<div align=center><img src="img/fig1_2.png"/></div>
<div align=center>
图 2:强化学习行为体分类 [4](#ref4)
</div>
### 2.5 连续空间
为简单起见,我们的讨论只集中在了具有离散时间步的离散状态和动作空间。然而,有许多应用,特别是在机器人和控制领域,最适合用连续状态和动作空间进行建模。对上述讨论进行推广,可以使其适用于这些连续空间的情况。
## 参考文献
1. <span id="ref1">V. Mnih et al., "Human-level control through deep reinforcement learning," *Nature* 518(7540): 529-533, 2015.</span>
2. <span id="ref2">D. Pfau, and O. Vinyals, "Connecting generative adversarial networks and actor-critic methods," *arXiv preprint arXiv: 1610.01945*, 2016.</span>
3. <span id="ref3">D. Silver et al., "Mastering the game of Go with deep neural networks and tree search," *Nature* 529(7587): 484-489, 2016.</span>
4. <span id="ref4">D. Silver. "[Reinforcement Learning](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/intro_RL.pdf)," 15 Jan. 2016. Reinforcement Learning, UCL.</span>
\ No newline at end of file
此差异已折叠。
# Lecture 11&12 Exploration and Exploitation
# 课时11&12 探索与利用 2019.02.20 & 2019.02.25 & 2019.02.27
## 1. 介绍(Introduction)
我们之前讨论过强化学习算法的设计,特别地,除了渐近收敛之外,我们还希望获得良好的性能。在教育、医疗或机器人等许多实际应用中,渐近收敛速度并不是比较强化学习算法的有效指标。为实现良好的现实世界中的表现,我们希望能够快速收敛到好的策略,这有赖于良好的、有策略性的探索。
在线决策涉及到探索(exploration)与利用(exploitation)之间的基本权衡。利用(通过最大化未来收益来)制定最佳的可能的策略,而探索则采取次优动作来收集信息。虽然次优动作必然会导致近期的奖励减少,但它可能使得我们学习更好的策略,从长远来看能够改进策略。
## 2. 多臂赌博机问题(Multi-Armed Bandits)
我们首先讨论在多臂赌博机(multi-armed bandits, MABs)背景下,而非完全 MDPs 背景下的探索。MAB 是元组 $(A,R)$,这里 $A$ 表示动作的集合,$R$ 为每个动作对应奖励的概率分布 $R^{a}(r)=P[r|a]$。在每个时间步,行为体选择一个动作 $a_{t}$。像在 MDPs 中那样,行为体的目的是最大化累积的奖励。但由于不存在状态转移,所以不存在延迟的奖励或结果的概念。
令 $Q(a)=\mathbb{E}[r|a]$ 表示采取动作 $a$ 的真实期望奖励。我们考虑估计 $\hat{Q}_{t}(a)\approx Q(a)$ 的算法,该值通过蒙特卡洛评估来估计:
$$
\hat{Q}_ {t}(a) = \frac{1}{N_{t}(a)}\sum_{t=1}^{T} r_{t} {\bf{1}} (a_{t}=a) = \hat{Q}_ {t-1}(a)+\frac{1}{N_{t}(a)}(r_{t}-\hat{Q}_ {t-1}(a)),
\tag{1}
$$
这里 $N_{t}(a)$ 为动作 $a$ 在时间 $t$ 被采用过的次数。第二个等式用于递增地计算 $\hat{Q}_{t}$。
贪婪策略(greedy algorithm)选择有最大估计价值的动作:$a_{t}^{\ast}=\mathop{\arg\max}_ {a\in A} \hat{Q}_ {t}(a)$。然而,贪婪的做法可能使得次优的动作永远无法被采用。像在 MDPs 中那样,我们也可以使用(固定的)$\epsilon$-贪婪算法($\epsilon$-greedy algorithm),即以 $1-\epsilon$ 的概率选择贪婪动作,以 $\epsilon$ 的概率选择随机动作。另一个算法是衰减 $\epsilon_{t}$-贪婪算法(decaying $\epsilon_{t}$-greedy algorithm),这里 $\epsilon_{t}$ 按照一定规律衰减。
一个简单的基于 $\epsilon$-贪婪算法的方法是乐观初始化(optimistic initialization),它将所有 $a\in A$ 的 $\hat{Q}_ {0}(a)$ 初始化为大于真值 $Q(a)$ 的某个值,也就是说,我们开始时对所有的动作选择“非常乐观”。在每一步我们可以使用贪婪(或 $\epsilon$-贪婪)的方法来选择动作,由于真正的奖励都低于我们的初始估计,所以被采用过的动作的估计值 $\hat{Q}$ 就会减小,这就鼓励了行为体对那些未被采用过的、$\hat{Q}$ 值仍旧大的动作进行探索。因此,所有的动作都会被至少尝试一次,可能多次。此外,我们可以初始化 $N_{0}(a)>0$ 以调整乐观初始化向真值收敛的速度。
### 2.1 遗憾(Regret)
这些探索策略自然会产生一个问题,即我们应该使用哪种标准来比较它们。可能的标准包括经验性的表现(尽管这依赖于环境)、渐近收敛的保证、有限采样的保证或 PAC 的保证。在 MAB 文献中的标准通常是遗憾(regret),我们现在定义遗憾以及相关的量。
$\bullet$ 动作值(action-value)$Q(a)=\mathbb{E}[r|a]$
$\bullet$ 最优值(optimal value)$V^{\ast}=Q(a^{\ast})=\mathop{\max}_{a\in A}Q(a)$
$\bullet$ 差距(gap)$\Delta_{a}=V^{\ast}-Q(a)$
$\bullet$ 遗憾(regret)$l_{t}=\mathbb{E}[V^{\ast}-Q(a_{t})]$
$\bullet$ 总遗憾(total regret)$L_{t}=\mathbb{E}[\sum_{\tau=1}^{t}(V^{\ast}-Q(a_{\tau}))]=t\cdot V^{\ast} - \mathbb{E}[\sum_{\tau=1}^{t}Q(a_{\tau})]$
因此,最小化总遗憾等价于最大化累积的奖励。如果我们定义 $\overline{N}_{t}(a)$ 为动作 $a$ 的期望选择次数,那么总遗憾就是差距和动作选择次数的函数:
$$
L_{t} = \mathbb{E}[\sum_{\tau=1}^{t}(V^{\ast}-Q(a_{\tau}))]
\tag{2}
$$
$$
= \sum_{a\in A} \mathbb{E}[N_{t}(a)] (V^{\ast}-Q(a))
\tag{3}
$$
$$
= \sum_{a\in A} \overline{N}_ {t}(a) \Delta_{a}
\tag{4}。
$$
高质量的算法可以保证对于大的差距,动作选择次数比较小。然而,差距并不能被事先知道,而且必须通过与 MAB 交互被习得。
### 2.2 遗憾界限(Regret Bounds)
我们希望保证某些算法的遗憾是可以量化并且有界的。遗憾界限有两种类型:与问题相关的遗憾界限和与问题无关的遗憾界限。与问题相关的遗憾界限是动作选择次数与差距的函数,与问题无关的遗憾界限是 $T$ 的函数,这里 $T$ 为算法执行的总步骤数。
永远探索或永远选择次优操作的算法都会经历线性遗憾(linear regret)。因此,达到次线性遗憾(sublinear regret)是可取的。前面讨论过的算法的遗憾界限如下:
$\bullet$ 贪婪(greedy):线性总遗憾
$\bullet$ 常值 $\epsilon$-贪婪(constant $\epsilon$-greedy):线性总遗憾
$\bullet$ 衰减 $\epsilon$-贪婪(decaying $\epsilon$-greedy):次线性遗憾但 $\epsilon$ 的衰减进度需要差距的知识
$\bullet$ 乐观初始化(optimistic initialization):如果初始值足够乐观则为次线性遗憾,否则为线性遗憾
为了解问题的严重性,我们先来探讨遗憾的下界。一般来说,任何算法的性能都取决于最优动作与其他动作的相似程度。困难的问题会有相似的动作,但方式略有不同,这可以由差距 $\Delta_{a}$ 和分布的相似程度(通过 KL 散度)$KL(R^{a}\lVert R^{a^{\ast}})$ 来描述,然后,我们可以对渐近总遗憾建立一个界限。
**定理 1**(Lai and Robbins,1985)对于 MAB,任何算法在总遗憾上的渐近下界至少为
$$
\lim_{t\to\infty} L_{t}\geq \log t \sum_{a|\Delta_{a}>0}\frac{\Delta_{a}}{KL(R^{a}\lVert R^{a^{\ast}})}。
$$
### 2.3 乐观面对不确定性(Optimism in the Face of Uncertainty)
<div align=center><img src="img/fig11&12_1.png"/></div>
<div align=center>
图 1:动作 $a_1$,$a_2$,$a_3$ 的奖励分布。
</div>
考虑图 1,它显示了一些动作的估计分布。我们应该选择哪个动作?面对不确定性时的乐观原则是,我们应该把选择偏向于可能是好的的动作。直觉上,这将使我们了解到这个动作要么的确会带来高额回报,要么并不如我们期望的那么好,而且也会使我们了解到关于我们的问题的有价值的信息。
在这个方法的基础上,置信上界算法(Upper Confidence Bound Algorithm)产生了,其过程如下。首先,我们对每个动作值估计一个置信上界 $\hat{U}_ {t}(a)$ 使得大概率 $Q(a)\leq\hat{Q}_ {t}(a)+\hat{U}_ {t}(a)$ 成立,这依赖于动作 $a$ 被选择的次数。然后我们选择最大化置信上界的动作
$$
a_{t}=\mathop{\arg\max}_ {a\in A}(\hat{Q}_ {t}(a)+\hat{U}_ {t}(a)),
\tag{5}
$$
这可以由 Hoeffding 不等式(Hoeffding's inequality)推导得出。
<span id="thm2">**定理 2**</span>(Hoeffding 不等式)令 $X_{1},...,X_{t}$ 为在区间 $[0,1]$ 中的独立同分布(i.i.d.)随机变量,$\overline{X}=\frac{1}{t}\sum_{\tau=1}^{t}X_{\tau}$ 为平均值,$u$ 为一个常量。那么,
$$
P[ \mathbb{E}[x]>\overline{X}_{t}+u] \leq e^{-2tu^{2}}。
$$
对 MAB 问题应用[定理 2](#thm2),我们得到:
$$
P[Q(a)>\hat{Q}_ {t}(a)+U_ {t}(a)] \leq e^{-2N_{t}(a)U_{t}(a)^{2}}。
\tag{6}
$$
选择一个概率 $p$ 使得
$$
e^{-2N_{t}(a)U_{t}(a)^{2}} = p,
\tag{7}
$$
$$
U_{t}(a) = \sqrt{\frac{-\log p}{2N_{t}(a)}}。
\tag{8}
$$
随着我们观察到更多的奖励,我们将减小 $p$,特别地,选择 $p=t^{-4}$ 便得到了 UCB1 算法:
$$
a_{t} = \mathop{\arg\max}_ {a\in A}(Q(a)+\sqrt{\frac{2\log t}{N_{t}(a)}}),
\tag{9}
$$
这样保证了渐近最优动作选择,即它将 [[1]](#ref1) 下界匹配到常数因子。
**定理 2**(Auer et al., 2002, [[2]](#ref2))UCB 算法得到的渐近总遗憾满足:
$$
\lim_{t\to\infty} L_t \leq 8 \log t \sum_{a|\Delta_{a}>0}\Delta_{a}。
$$
### 2.4 贝叶斯方法(Bayesian Bandits)
除了假设奖励有界,到目前为止我们还没对奖励分布 $R$ 做出任何假设。贝叶斯方法(Bayesian bandits)利用奖励的先验知识来计算下一时间步奖励的概率分布,即 $P[R]$,这里 $h_t=(a_1,r_1,...,a_{t-1},r_{t-1})$,然后根据这个后验知识来选择动作。例如,考虑应用了贝叶斯方法的 UCB,我们假设奖励分布为高斯分布,$R^{a}=N(r;\mu_{a},\sigma_{a}^{2})$,那么基于 $\mu_{a}$ 和 $\sigma_{a}^{2}$ 的后验概率可以用以下方式计算:
$$
P[\mu_{a},\sigma_{a}^{2}|h_t] \propto P[\mu_{a},\sigma_{a}] \prod_{t|a_{t}=a} N(r_{t};\mu_{a},\sigma_{a}^{2}),
\tag{10}
$$
我们可以选择最大化 $Q(a)$ 的标准差的动作:
$$
a_{t}=\mathop{\arg\max}_ {a\in A}(\mu_a + c\frac{\sigma_{a}}{\sqrt{N(a)}})。
\tag{11}
$$
另一种方式是概率匹配(probability matching),即根据某一动作是最优动作的概率选择动作,
$$
\pi(a|h_t) = P[Q(a)>Q(a'),\forall a'\neq a|h_t],
\tag{12}
$$
面对不确定性,这样做是乐观的,因为不确定的动作有更高的概率是最优动作,然而,这个概率可能很难用解析的方法来计算。
实现概率匹配的一种方法是汤普森采样(Thompson sampling),这里奖励分布 $\hat{R}$ 由对每个 $a\in A$ 采样得到,然后我们可以得到动作值函数 $\hat{Q}(a)=\mathbb{E}[\hat{R}^{a}]$,并选择最大值对应的动作,这个方法达到了 Lai-Robbins 下界 [[1]](#ref1),并且在实践中非常高效。
可以证明,如果先验分布为 Beta 分布,那么所需的后验分布也是 Beta 分布。因此,我们可以在下一个时间步从 Beta 先验开始,然后更新后验的参数。更具体地说,令 $S_i$ 为到目前为止对动作 $i$ 后一秒观测到的值,$F_i$ 为后零秒观测到的值,那么下面的伪代码实现了这个算法。
<div align=center><img src="img/fig11&12_alg_1.png"/></div>
类似的方法也适用于单位方差高斯 MAB,经过时间 $t$ 后,对于动作 $k$ 的后验值为 $N(\mu_{k},\frac{1}{S_k+F_k+1})$,这里 $\mu_k$ 为经验性的奖励。作为练习,请证明这一结论。
### 2.5 PAC 方法(PAC Bandits)
上面讨论的方法都试图达到用 $T$ 表示的遗憾界限,但这并不能让我们了解到算法所犯的错误类型,它可能不经常犯大错误,也可能经常犯小错误。在许多应用中,我们可能会关心限制大错误的数量。
通常,PAC 算法选择一个值为 $\epsilon$-最优的动作,即对于除了一个多项式的数(通常以 $\epsilon$,$\delta$,$N$ 的形式)的时间步外,$Q(a)\geq Q(a_{\ast})-\epsilon$ 的概率至少为 $1-\delta$。在不确定情况下和汤普森采样情况下,还有应用了这种 PAC 保证的乐观初始化方法的变体。
## 3. 信息状态搜索(Information State Search)
探索与利用之间的根本冲突源于这样一个事实,即探索获得的信息可能有助于未来,但此刻来看是次优的。如果我们能量化这种“信息的价值(value of information)”,即我们应该准备为获取这些信息付出多少努力,那么我们就能更有效地平衡探索与利用。作为一个具体的例子,请参考幻灯片中的地震学家的例子。
### 3.1 信息状态空间(Information State Space)
到目前为止,我们将 MAB 视作有一个状态的完全可观测的 MDP。
主要思路:将 MAB 问题定义为一个部分可观测的 MDP (partially observable MDP),其中隐藏状态是每个动作的实际奖励,动作仍像以前一样对应于拉动手臂,我们得到的观测量为从隐藏状态中采样的奖励。因此,该 POMDP 的最优策略即为最优 bandit 算法,也就是说,MAB 可以简化为 POMDP 规划。
POMDP 规划的一个主要思想是置信状态(belief state)$\tilde{s}$,它可以被看作我们上下文中的信息状态,这是 POMDP 隐藏状态的后验,即真实的平均回报。$\tilde{s}$ 是一个使用历史计算得到的统计值,即 $\tilde{s}_ {t}=f(h_{t})$。在信息(置信)状态空间中,每个动作及其相应的观测(奖励)都会导致状态以某个概率转移到一个新的状态 $\tilde{s}_ {t+1}$。这样的结果是扩充信息状态空间上的 MDP。
### 3.2 伯努利 Bandits(Bernoulli Bandits)
在简单的伯努利 Bandits 下,信息状态为每只手臂 1,0 奖励的计数。由于这些计数是无限的,我们现在在这些信息状态上有一个无限的 MDP。这个 MDP 可以由 RL 来解决,例如使用无模型方法如 Q-学习,或基于模型的方法如贝叶斯方法。这种方法被称作贝叶斯自适应 RL(Bayesian-adaptive RL),这里我们寻求贝叶斯最优的探索/利用权衡,即给定当前信息,选择最大化期望奖励的动作。
前面描述的用于伯努利 Bandits 的汤普森采样算法可以用这些术语来考虑,每个手臂的 $S_k$ 值和 $F_k$ 值表示信息状态以及对它们的更新和转换。
#### 3.2.1 Gittins 指数(Gittins Index)
上述的贝叶斯自适应 MDP 可以通过动态规划方法求解,得到的结果称为 Gittins 指数(Gittins index)。由于状态空间的大小,这一问题的精确解通常很难得到,最近基于仿真的搜索被应用到这一问题中来尝试获得很好的结果。我们将在第 14 课学习这种仿真方法。
## 4. 应用于 MDP(Application to MDPs)
上述所有方法都可以扩展到成熟 MDP。
### 4.1 乐观初始化(Optimistic Initialization)
在无模型 RL 的情况下,使用价值函数的乐观初始化可以很好地鼓励系统性的探索。我们可以将 $Q(s,a)$ 初始化为 $\frac{R_{max}}{1-\gamma}$,然后执行 Q-学习、SARSA、蒙特卡洛等算法。较高的初始值可以确保每个 $(s,a)$ 对被探索多次,以获得对真实值更好的估计。
类似的想法对基于模型的方法也有效,这里我们构建一个乐观的 MDP 模型,并初始化状态转移到能够得到最多奖励的最终状态。RMax 算法 [[3]](#ref3) 就是这类算法的一个例子。
### 4.2 UCB:有模型的(UCB: Model Based)
类似于 MAB 情况,我们可以在可用动作中,选择一个最大化置信度上界的动作。
$$
a_t = \mathop{\arg\max}_ {A} Q(s_t,a)+U_{1}(s_t,a)+U_{2}(s_t,a),
$$
这里 $U_1$ 为策略评估中的不确定量,易于量化,$U_2$ 源于策略提升,通常难以计算。
### 4.3 汤普森采样:基于模型的(Thompson Sampling: Model Based)
像之前那样,这个方法实现了概率匹配,即
$$
\pi(a|h_t) = P[Q(s,a)>Q(s,a'),\forall a'\neq a|h_t]。
\tag{13}
$$
我们可以利用贝叶斯定律来计算后验 $P[P,R|h_t]$,然后从该分布中采样一个 MDP,用规划算法求解并据此采取动作。
### 4.4 信息状态搜索(Information State Search)
与 MAB 情况一样,我们可以构造一个附加了 MDP 信息状态的扩展 MDP,从而得到一个扩展的状态空间来得到贝叶斯自适应 MDP。解决这个问题将给我们带来最优的探索/利用权衡。然而,状态空间的大小限制了们只能使用基于仿真的搜索方法。
## 5. 结论(Conclusion)
总的来说,有几种不同的探索方法,有些比其他的更有原则性。
$\bullet$ 普通的探索方法:$\epsilon$-贪婪方法
$\bullet$ 乐观初始化:想法很简单但通常效果很好
$\bullet$ 乐观面对不确定性:偏好价值不确定的动作,如 UCB
$\bullet$ 概率匹配:选择有最大概率是最优的动作,如 汤普森采样
$\bullet$ 信息状态空间:建立并解决扩展 MDP,因此直接包含了信息的价值
## 参考文献
1. <span id="ref1">T. L. Lai, and H. Robbins, "Asymtotically efficient adaptive allocation rules," *Advances in Applied Mathematics*, 1985.</span>
2. <span id="ref2">P. Auer, C. B. Nicolo, and P. Fischer, "Finite-time analysis of the multiarmed bandit problem," *Maching Learning*, 2002.</span>
3. <span id="ref3">R. I. Brafman, and M. Tennenholtz, "R-max - a general polynomial time algorithm for near-optimal reinforcement learning," *Journal of Maching Learning Research*, 2002.</span>
\ No newline at end of file
# Lecture 14 Model Based RL, Monte-Carlo Tree Search
# 课时14 基于模型的强化学习,蒙特卡洛树搜索 2019.03.06
## 1. 介绍(Introduction)
本节课我们讨论基于模型的强化学习与基于仿真的树搜索方法。到目前为止我们已经讨论了从经历中尝试学习值函数或策略的方法,与这些方法相反,基于模型的方法首先从经历中学习环境的模型,然后使用这个模型做出规划和行动。基于模型的方法在某些情况下有更高的采样效率和更快的收敛速度。我们还将讨论 MCTS 及其变体,它们可以用于针对给出的模型做出规划。MCTS 是 AlphoGo 成功背后的主要思想之一。
<div align=center><img src="img/fig14_1.png"/></div>
<div align=center>
图 1:学习、规划与动作执行之间的关系。
</div>
## 2. 模型学习(Model Learning)
我们用 $<S,A,R,T,\gamma>$ 来表示一个 MDP 的模型,由 $\mu$ 参数化。在模型学习中,我们假设状态空间 $S$ 和 动作空间 $A$ 已知,并且通常还假设状态转移与奖励是相互独立的,即
$$
P[s_{t+1},r_{t+1}|s_t,a_t] = P[s_{t+1}|s_t,a_t]P[r_{t+1}|s_t,a_t]。
$$
因此,模型学习包括两个部分,分别为奖励函数 $R(\cdot|s,a)$ 和转移分布 $P(\cdot|s,a)$。
给定一个真实轨迹的集合 $\{S_t^k,A_t^k,R_t^k,...,S_T^k\}_{k=1}^{K}$,模型学习可以被视为一个监督学习问题,学习奖励函数 $R(s,a)$ 是一个回归问题,而学习转移函数 $P(s'|s,a)$ 是一个密度估计问题。首先我们选取一类合适的参数化模型,如查表模型、线性期望、线性高斯、高斯过程、深度神经网络等,然后我们选择一个恰当的损失函数,如均方误差、KL 散度等,通过最小化这个损失来优化参数。
## 3. 规划(Planning)
给定一个学习到的环境的模型,规划可以由基于值的方法、策略搜索的方法或树搜索的方法来实现。
一种比较的规划方法的思路为:仅使用该模型来生成采样轨迹,并使用 Q-学习、蒙特卡洛控制或 SARSA 等方法进行控制。这种基于样本的规划方法通常更具数据效率。
学习得到的模型可能是不准确的,因此,通过规划所学习的缩略也可能是次优的,即基于模型的 RL 的质量依赖于所学习的模型的质量。基于探索/利用的技术可用于在规划时明确解释模型中的这种不确定性。或者,如果我们确定模型在某些情况下是错误的,无模型 RL 方法也可以作为我们的后备方案。
## 4. 基于仿真的搜索(Simulation Based Search)
不管给出的模型是学习到的近似模型,还是像围棋这样的精确模型,这些方法都试图基于向前搜索或模拟来寻找最优动作。搜索树以当前的状态为根,使用模型生成其他节点。因为不需要求解整个 MDP 而只需要从当前状态开始求解子 MDP,所以这种方法可以节省大量的资源。一般来说,当我们收集了仿真经历 $\{S_T^K,A_t^k,R_t^k,...,S_T^K\}_{k=1}^{K}$后,我们可以将无模型方法应用于控制,如蒙特卡洛给出了蒙特卡洛搜索算法或 SARSA 给出了 TD 搜索算法。
更具体地说,在一个简单的 MC 搜索算法中,给出了一个模型 M 和一个模拟策略 $\pi$,对于每个动作 $a\in A$,我们模拟 $K$ 个 $\{S_T^K,a,R_t^k,...,S_T^K\}_{k=1}^{K}$ 形式的片段(在第一动作后遵循策略 $\pi$)。$Q(s_t,a)$ 值被估计为上述轨迹的平均回报,随后我们选择最大化这个估计的 $Q(s_t,a)$ 值的动作。
### 4.1 蒙特卡洛树搜索(Monte Carlo Tree Search)
这类算法基于两个原则:(1)状态的真实价值可以通过随机模拟的平均回报值来估计;(2)这些值可以用于迭代地调整策略,从而使我们能够关注搜索空间的高价值区域。
我们逐步构造一个以当前节点为根的部分搜索树。树由对应于状态 $s$ 的节点组成,此外,每个节点还存储统计信息,如总访问次数 $N(s)$、每个状态-动作对的访问次数 $N(s,a)$ 以及蒙特卡洛 $Q(s,a)$ 值估计等。一种典型的方法是一直构造这种树,直到某些预先定义的计算耗尽,价值估计会变得越来越准确。每个迭代大致可以分为四个阶段:
1. 选择:从根节点开始,我们在树中循环地选择子节点,直到达到非终结叶节点;
2. 扩展:将被选中的叶节点添加到搜索树中;
3. 仿真:从这一节点开始仿真来生成输出的估计值;
4. 反向传播:通过反向沿着根到选中叶节点的路径,更新遇到的节点的统计信息,从而将仿真中获得的值在树中反向传播。
MCTS 的变体通常包含对涉及的两个主要策略的修改:
$\bullet$ 树策略:根据存储的统计信息为树的节点选择动作,变体包括贪婪策略、UCB
$\bullet$ 仿真策略:用于树中叶节点的仿真,变体包括随机模拟、AlphaGo 的默认策略网络
<div align=center><img src="img/fig14_alg_1.png"/></div>
这些步骤总结在了算法 1 中,我们从当前状态开始,迭代地生长搜索树,在每次迭代时使用树策略来选择要模拟的叶节点,然后对仿真结果进行反向传播,最后输出从根节点估计得到最大值的动作。
该算法的一个简单变体如算法 2 所示,在第一阶段中贪婪地在树节点之间选择动作,并在仿真阶段使用随机策略进行仿真。
<div align=center><img src="img/fig14_alg_2.png"/></div>
还有一些基于上述方案的修改,如通过添加有限的节点集到树、智能修剪来提升存储器的使用,通过使用节点中存储的更复杂的统计数据来改善树策略。
[图 2](#fig2) 中可以看到整个的运行过程。我们从根节点开始,仿真一个轨迹,图中的情况下,这个轨迹返回一个 1 的奖励;然后我们使用树策略,即贪婪地选择要添加到树的节点,然后从它开始使用仿真(默认)策略仿真一个片段,这个片段返回一个 0 的奖励,我们更新树节点中的统计信息;然后重复此过程。为了检查你的理解,你应该在下面的示例中验证统计信息已经正确更新,以及树策略选择了正确的节点来扩展。
MCTS 的主要优点包括:
$\bullet$ 树结构使它具有很大的并行性
$\bullet$ 状态评估是动态的,即从当前状态开始解决 MDP 问题,与 DP 不同
$\bullet$ 不需要模型,只需要样本
<span id="fig2">$\bullet$ 有效地结合规划和抽样来打破维度灾难(如围棋)</span>
<div align=center><img src="img/fig14_2.png"/></div>
<div align=center>
图 2:通用 MCTS 示意图。每个状态有两个可能的动作(左/右),每个仿真的结果为 $1$ 或 $0$。每次迭代添加一个新的节点(星星符号)到搜索树中,然后更新搜索树中每个节点的值以及总的访问次数。
</div>
### 4.2 置信上界树搜索(Upper Confidence Tree Search)
类似多臂老虎机,使用贪婪策略作为树策略往往是次优的,这会使我们即使是在一个糟糕的结果之后也避免采取行动,尽管其真实价值存在着很大的不确定性。作为一个例子,考虑[图 2](#fig2) 中最右边的节点,我们从该节点执行一个单独的仿真,收到一个值为 0 的奖励,然后再也不访问该节点,即使这个奖励可能只是因为运气不好(才是 0)。为了解决这个问题,我们可以使用 UCB 算法将不确定性下的乐观原则应用于 MCTS,更具体地说,树策略选择最大化动作值置信上界($Q(s,a)+\sqrt{\frac{2\log N(s)}{N(s,a)}}$)的动作,而非贪婪地选择动作。
算法 3 为 UCT 中使用树策略的伪代码,该算法可以插入到前面描述的通用 MCTS 算法。 $nextState(s,a)$ 函数使用了 MDP 模型在从状态 $s$ 选择动作 $a$ 时采样下一状态。
<div align=center><img src="img/fig14_alg_3.png"/></div>
## 5. 案例学习:围棋(Case Study: Go)
围棋是世界上最古老的棋类游戏,解决这一问题一直是人工智能面临的一个长期挑战,而在 AlphaGo 之前,传统的游戏树搜索算法未能达到专业的人类级别的性能。围棋是一个在 $19\times 19$ 板(也有更小的板)上进行的双人游戏(黑子/白子,B/W),黑子和白子接连被放在板上,游戏的主要目标是包围和占领领地,另外,被对手包围的棋子会被移除。
<div align=center><img src="img/fig14_3.png"/></div>
<div align=center>
图 3:围棋。
</div>
最简单的奖励函数可以按照如下规则设置:如果最终状态黑子胜则奖励为 $+1$,如果白子胜则为 $0$,而其他状态均为 $0$。那么黑子玩家的目的则为最大化奖励而白子玩家则要尽量最小化奖励。给定一个策略 $\pi=<\pi_{B},\pi_{W}>$(分别对黑子玩家和白子玩家),值函数为 $V_{\pi}(s)=\mathbb{E}_ {\pi}[R_{T}|s]=P[Black wins|s]$,最优值函数为 $V^{\ast}(s)=\mathop{\max}_ {\pi_{B}}\mathop{\min}_ {\pi_{W}}V_{\pi}(s)$。
### 5.1 基于 MCTS 的围棋(MCTS for Go)
作为一个双人游戏,围棋需要一些相当自然的扩展以应用前面提到的 MCTS 算法。我们现在构建一个极小极大树,白色节点寻求最小化奖励,黑色节点寻求最大化奖励。我们在黑色节点使用前面提到的 UCB,在白色节点使用 LCB(置信下界)即 $\mathop{\min}_{a}Q(s,a)-\sqrt{\frac{2\log N(s)}{N(s,a)}}$(因为它们寻求最小化奖励)。
考虑[图 4](#fig4)(a)树中的状态以及节点中记录的统计信息(胜利/总次数),不同的颜色代表不同的玩家。算法或树策略的第一阶段在节点中使用这些统计信息,将每个节点视作一个独立的 MAB 实例,并从根节点开始使用 UCB(LCB)依次选择动作,如粗体箭头所示($c=2$)。
一旦我们到达了树的叶节点,如[图 4](#fig4)(b)所示,我们就使用仿真策略来模拟一次游戏。然后,这次游戏的结果通过树反向传播([图 4](#fig4)(c)),同时我们更新统计信息。
<span id="fig4">继续执行这个过程直到结束,然后最佳动作便可以得到。有关详细的伪代码,可以参考 [[4]](#ref4),Python 实现可以参考 [[3]](#ref3)</span>
<div align=center><img src="img/fig14_4.png"/></div>
<div align=center>
图 4:基于 MCTS 的围棋。(a)UCB1 算法在每个步骤中选择的位置和移动都用粗体进行表示。每个圆圈包含了获胜次数/游戏次数。(b)树底部标记为 $1/1$ 的位置下没有进一步的统计记录,因此我们选择一个随机的动作并为其添加一个新纪录(初始化为 $0/0$)。添加新纪录后,蒙特卡洛仿真开始(虚线箭头)。仿真中的动作可以是完全随机的,也可以为随机性添加权重。(c)仿真结束后,路径中的所有记录都将更新(粗体数字)。(图出处:[[3]](#ref3)
</div>
AlphaGo [[1]](#ref1) 在仿真阶段使用了一个深度策略网络,这使得仿真比仅仅使用随机仿真更加真实。在围棋这种复杂的游戏中,仿真直到结束是不合适的,AlphaGo 会提前停止仿真,同时还使用了一个价值网络来获得获胜概率。最近,AlphaGo Zero [[2]](#ref2) 被提出,它使用一个单一的网络来同时输出策略和价值函数,并且只使用自玩来训练而没有内置的专家知识。AlphaGo Zero 的表现比 AlphaGo 更加令人印象深刻。
## 参考文献
1. <span id="ref1">D. Silver et al, "Mastering the game of Go with deep neural networks and tree search," *Nature*, 2016.</span>
2. <span id="ref2">D. Silver et al, "Mastreing the game of Go without human knowledge," *Nature*, 2017.</span>
3. <span id="ref3">J. Bradberry, "[Introduction to Monte Carlo tree search](https://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/)," 2015.</span>
4. <span id="ref4">S. Gelly, and D. Silver, "Monte-Carlo tree search and rapid action value estimation in computer Go," *Artificial Intelligence*, 2011.</span>
\ No newline at end of file
此差异已折叠。
# Lecture 4 Model Free Control
# 课时4 无模型控制 2019.01.16
## 5. 无模型控制(Model Free Control)
上次课我们讨论了如何在不知道世界的模型、仅与环境交互的情况下评估一个给定的策略,我们提出了几种无模型策略评估(model-free policy evaluation)方法:蒙特卡洛策略评估和 TD 学习。这节课我们讨论无模型控制(model-free control),这里我们要在相同的约束下(只有交互,不知道状态转移概率或奖励)学习好的策略。这个框架在以下两种情况中是很重要的:
1. MDP 模型未知,但我们可以从这个 MDP 中对轨迹采样,或
2. MDP 模型已知,但由于计算量的原因,我们无法通过有模型控制方法计算价值函数。
本节课我们仍基于表格的设定(tabular setting),也就是说我们可以将每个状态值或状态-行为值作为表格的元素。下节课我们将基于值函数近似(value function approximation)的设定,重新检查今天和之前的课中提及的算法,这包括尝试将一个函数转换为状态值函数或状态-行为值函数。
### 5.1 广义策略迭代(Generalized Policy Iteration)
首先回忆有模型策略迭代算法,如算法 1 所示。
<div align=center><img src="img/fig4_alg_1.png"/></div>
上节课我们介绍了无模型策略迭代算法,所以我们可以用无模型的方式将第四行替换。然而,为了使整个算法是无模型的,我们必须找到一种方式去处理第五行。根据定义,我们有 $Q^{\pi}(s,a)=R(s,a)+\gamma \sum_{s'\in S}P(s'|s,a)V^{\pi}(s')$,因此,我们可以通过在模型策略迭代算法中使用这个值,从而得到无模型策略迭代算法(算法 2)。
<div align=center><img src="img/fig4_alg_2.png"/></div>
由于我们在第五行做了替换,有一些事项需要注意:
1. 如果策略 $\pi$ 是确定的,或不是以正的概率生成每一个动作 $a$,那么我们无法确切地计算第五行中的最大值。
2. 通过策略迭代算法,我们得到的是 $Q^{\pi}$ 的估计,所以我们并不清楚第五行是否会像有模型情况那样单调地提升策略。
### 5.2 探索的重要性(Importance of Exploration)
#### 5.2.1 探索(Importance)
上一部分里,我们看到无模型策略迭代算法的一个注意事项是策略 $\pi$ 需要对每个动作赋予一个正的概率,这样每个状态-行为值才能被确定。换句话说,策略 $\pi$ 应该探索动作,即使这些动作根据当前的 $Q$ 值估计来看可能不是最优的。
#### 5.2.2 $\epsilon$-贪婪策略($\epsilon$-greedy Policies)
为了探索那些根据当前的 $Q$ 值估计来看可能不是最优的动作,我们需要需要一个系统的方式去平衡对非最优动作的探索与对最优(贪婪)动作的利用。一个简单的方法是以一个小的概率去采取一个随机动作,其余时间采用贪婪动作,这种探索方式被称为 $\epsilon$-贪婪策略($\epsilon$-greedy policy)。基于状态-行为值 $Q^{\pi}(s,a)$,我们可以用如下的数学方式来表示 $\epsilon$-贪婪策略:
$$
\pi(a|s)=
\begin{cases}
a, & \text{with probability $\frac{\epsilon}{|A|}$} \\
\mathop{\arg\max}_{a} Q^{\pi}(s,a), & \text{with probability $1-\epsilon$}
\end{cases}
$$
#### 5.2.3 单调 $\epsilon$-贪婪策略提升(Monotonic $\epsilon$-greedy Policy Improvement)
第二节课中通过策略提升定理我们看到,如果基于当前的值采用贪婪动作,然后一直根据策略 $\pi$ 选取动作,那么这个策略相对策略 $\pi$ 来说是一个提升。那么,基于策略 $\pi$ 的 $\epsilon$-贪婪策略是否也是策略 $\pi$ 的一个提升呢?这个问题有助于解决算法 2 的第二个注意事项。幸运的是,关于 $\epsilon$-贪婪策略,有一个与策略提升定理类似的定理。下面我们介绍并推导这个定理。
**定理 5.1** (单调 $\epsilon$-贪婪策略提升,Monotonic $\epsilon$-greedy Policy Improvement)令 $\pi_i$ 为一个 $\epsilon$-贪婪策略,那么,基于 $Q^{\pi_i}$ 的 $\epsilon$-贪婪策略,记为 $\pi_{i+1}$,是相对策略 $\pi_i$ 单调提升的,也就是说,$V^{\pi_{i+1}}\geq V^{\pi_{i}}$。
证明:我们首先证明对于所有状态 $s$,有 $Q^{\pi_i}(s,\pi_{i+1}(s)) \geq V^{\pi_{i}}(s)$。
$$
Q^{\pi_i}(s,\pi_{i+1}(s)) = \sum_{a\in A}\pi_{i+1}(a|s)Q^{\pi_i}(s,a)
$$
$$
= \frac{\epsilon}{|A|} \sum_{a\in A}Q^{\pi_i}(s,a) + (1-\epsilon)\mathop{\max}_{a'}Q^{\pi_i}(s,a')
$$
$$
= \frac{\epsilon}{|A|} \sum_{a\in A}Q^{\pi_i}(s,a) + (1-\epsilon)\mathop{\max}_{a'}Q^{\pi_i}(s,a') \frac{1-\epsilon}{1-\epsilon}
$$
$$
= \frac{\epsilon}{|A|} \sum_{a\in A}Q^{\pi_i}(s,a) + (1-\epsilon)\mathop{\max}_ {a'}Q^{\pi_i}(s,a') \sum_{a\in A}\frac{\pi_{i}(a|s)-\frac{\epsilon}{|A|}}{1-\epsilon}
$$
$$
= \frac{\epsilon}{|A|} \sum_{a\in A}Q^{\pi_i}(s,a) + (1-\epsilon)\sum_{a\in A} \frac{\pi_{i}(a|s)-\frac{\epsilon}{|A|}}{1-\epsilon} \mathop{\max}_{a'}Q^{\pi_i}(s,a')
$$
$$
\geq \frac{\epsilon}{|A|} \sum_{a\in A}Q^{\pi_i}(s,a) + (1-\epsilon)\sum_{a\in A} \frac{\pi_{i}(a|s)-\frac{\epsilon}{|A|}}{1-\epsilon} Q^{\pi_i}(s,a)
$$
$$
= \sum_{a\in A}\pi_{i}(a|s)Q^{\pi_i}(s,a)
$$
$$
= V^{\pi_i}(s)
$$
第一个等式是因为我们根据策略 $\pi_{i+1}$ 生成第一个动作,然后根据策略 $\pi_{i}$ 生成之后的动作。第四个等式是因为 $1-\epsilon = \sum_{a}[\pi_{i}(a|s)-\frac{\epsilon}{|A|}]$。
根据策略提升定理,我们知道 $Q^{\pi_i}(s,\pi_{i+1}(s)) \geq V^{\pi_{i}}(s)$ 意味着对于所有状态 $s$,$V^{\pi_{i+1}}(s) \geq V^{\pi_{i}}(s)$。
证明完毕。$\diamondsuit$
因此,如果我们基于当前的 $\epsilon$-贪婪策略进行 $\epsilon$-贪婪动作,我们的策略实际上是提升的。
#### 5.2.4 无限探索中的极限贪心策略(Greedy in the Limit of Infinite Exploration)
上面我们介绍了一种 $\epsilon$-贪婪策略的简单方式以平衡对新动作的探索和对已有知识的利用。我们还可以通过引入一种新的、保证算法收敛的探索策略来改善这种平衡,这种策略就是无限探索中的极限贪心策略(Greedy in the Limit of Infinite Exploration, GLIE)。
**定义 5.1** (Greedy in the Limit of Infinite Exploration, GLIE)如果策略 $\pi$ 满足以下两条性质,那么它是无限探索中的极限贪心策略:
1. 所有的状态-行为对被访问无限多次,即对于所有的 $s\in S$,$a\in A$,有
$$
\lim_{i\to\infty} N_i(s,a) \rightarrow \infty,
$$
这里 $N_i(s,a)$ 为直到(包括)片段 $i$ 在状态 $s$ 采用动作 $a$ 的次数。
2. 行为策略收敛到基于学习到的 $Q$ 函数的贪婪策略,即对于所有的 $s\in S$,$a\in A$,有
$$
\lim_{i\to\infty} \pi_i(a|s) = \mathop{\arg\max}_{a} q(s,a) \quad\text{with probability $1$}。
$$
GLIE 策略的一个例子是 $\epsilon_i=\frac{1}{i}$ 的 $\epsilon$-贪婪策略,这里 $i$ 为片段的序号,$\epsilon$ 逐渐减小到 $0$。可以看出,对所有的 $i$,$\epsilon_i>0$,在每个时间步我们都以一个正的概率进行探索,因此满足 GLIE 的第一个条件;由于当 $i \rightarrow \infty$,$\epsilon_i \rightarrow 0$,极限情况下这个策略是贪婪的,因此满足 GLIE 的第二个条件。
### 5.3 蒙特卡洛控制(Monte Carlo Control)
现在我们将上述探索策略和上节课讨论的无模型策略评估算法结合起来,以得到一些无模型控制方法。算法 3 展示了首次访问在线蒙特卡洛控制;如果不检查第七行中的首次访问条件,我们就得到了每次访问在线蒙特卡洛控制。
<div align=center><img src="img/fig4_alg_3.png"/></div>
像前面说过的,GLIE 策略保证我们的无模型控制方法收敛,特别地,我们有以下结果:
**定理 5.2** GLIE 蒙特卡洛控制收敛到最优状态-行为值函数,即 $Q(s,a)\rightarrow q(s,a)$。
### 5.4 时间差分控制(Temporal Difference Methods for Control)
上节课我们还介绍了另一种无模型策略评估方法:TD(0)。现在我们将上述的探索策略与 $TD(0)$ 结合起来:在线策略(on-policy)和离线策略(off-policy)。我们首先介绍在线策略的方法,这种方法也被称为 SARSA,如算法 4 所示。
<div align=center><img src="img/fig4_alg_4.png"/></div>
算法 4 的第十行为策略评估更新,第十一行为策略提升。SARSA的名字源于用于更新方程的轨迹,为了更新状态-行为对 $(s,a)$ 的 $Q$ 值,我们需要奖励、下一状态以及下一动作,因此我们需要 $(s,a,r,s',a')$。SARSA 是在线策略的方法,因为用于更新方程的动作 $a$ 和$a'$ 都源于更新时存在的(最新的)策略。
像蒙特卡洛那样,我们可以得到 SARSA 的收敛性,但我们需要一个额外的条件:
**定理 5.3** 对于有限状态和有限动作的 MDP,如果满足以下两个条件,那么 SARSA 会收敛到最优状态-行为值,即 $Q(s,a)\rightarrow q(s,a)$:
1. 策略 $\pi$ 的序列满足 GLIE。
2. 步长 $a_t$ 满足罗宾斯-蒙罗(Robbins-Munro)序列,使得:
$$
\sum_{t=1}^{\infty} \alpha_t=\infty,
$$
$$
\sum_{t=1}^{\infty} \alpha_t^2<\infty。
$$
**练习 5.1** 算法 4 的第十一行,每次更新后都做一次策略更新的好处是什么?降低执行策略提升步骤的频率有什么好处?
### 5.5 离线策略 TD 的重要性采样(Importance Sampling for Off-Policy TD)
在推导离线策略 TD 控制前,我们先看一下离线 TD 策略评估的一种方式。回想以下,我们的 TD 更新采用了以下形式:
$$
V(s)\leftarrow V(s)+\alpha(r+\gamma V(s')-V(s))。
$$
现在我们假设,就像离线策略蒙特卡洛策略评估那样,我们有根据策略 $\pi_b$ 产生的数据,并且我们希望估计策略 $\pi_e$ 的值。我们可以以样本的频率来为目标赋予权重,然后通过重要性采样评估策略,然后用下式来更新:
$$
V^{\pi_e}(s)\leftarrow V^{\pi_e}(s)+\alpha[\frac{\pi_e(a|s)}{\pi_b(a|s)}(r+\gamma V^{\pi_e}(s')-V^{\pi_e}(s))]。
$$
注意,我们只使用一个采样轨迹而不是像蒙特卡洛那样采样所有轨迹,所以我们只从一个步骤考虑似然比,同样地,这个方法的方差比蒙特卡洛小得多。
另外,$\pi_b$ 不必每步都一样,但我们需要知道每步的动作的概率。就像蒙特卡洛那样,我们需要这两个策略有同样的原则,即如果 $\pi_e(a|s) \times V^{\pi_e}(s')$,那么$\pi_b(a|s)>0$。
### 5.6 Q-学习(Q-learning)
现在我们讨论适用于 TD 控制的离线策略方法。上面我们再次利用了重要性采样,但在 TD 控制中,我们不需要依赖于此,相反,我们可以维持 $Q$ 的估计并且与最好的未来动作相联系。SARSA 用下式来更新:
$$
Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha_t[r_t+\gamma Q(s_{t+1},a_{t+1})-Q(s_t,a_t)],
$$
但我们可以通过引导下一状态的 $Q$ 值来获得以下更新:
$$
Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha_t[r_t+\gamma \mathop{\max}_ {a'} Q(s_{t+1},a')-Q(s_t,a_t)]。
$$
这就产生了 Q-学习(Q-learning),如算法 5,在下一状态,我们取使下一状态的值最大的动作,这个动作不一定和由当前策略产生的动作一样,因此,Q-学习是离线策略算法。
<div align=center><img src="img/fig4_alg_5.png"/></div>
## 6. 最大化偏差(Maximization Bias)
最后我们来讨论最大化偏差(maximization bias)现象。我们首先通过一个小例子查看这个现象。
### 6.1 硬币例子(Example: Coins)
假设有两枚相同的公平的硬币,但我们不知道它们是否相同或公平。如果一枚硬币落地时头朝上,我们就得到一美元;反之则输掉一美元。我们希望回答以下两个问题:
1. 哪枚硬币在未来能赢来更多的钱?
2. 问题1中,赢/输的钱的期望是多少?
为了回答这两个问题,我们将两枚硬币各抛一次,然后选择赢来更多钱的硬币,以此作为第一个问题的回答;不论这枚硬币给我们带来/损失多少钱,我们都以这个数字来回答第二个问题。例如,如果硬币1头朝上而硬币2尾朝上,我们将硬币1作为第一问的答案,将一美元作为第二问的答案。
让我们检查以下此过程可能的结果。如果至少有一枚硬币是头朝上,那么对于第二个问题我们的回答是一美元。如果两枚硬币都是尾朝上,回答则变为负一美元。因此,对问题二的回答的期望值为 $\frac{3}{4}\times(1)+\frac{1}{4}\times(-1)=0.5$。这意味着抛更好的硬币得到的期望价值的估计高于抛那枚硬币得到的实际期望价值,换句话说,我们认为这个硬币比实际的要好。
这个问题源于这样一个事实,即我们基于估计值来选择更好的硬币并估计其价值。我们可以将这两步分开来解决这个问题。一种方法是将流程改为如下所示的步骤:选择更好的硬币后,再次抛这枚更好的硬币并用这个值作为问题二的回答,此时这个回答的期望值为 $0$,这与抛任意一枚硬币的实际期望价值相同。
### 6.2 强化学习中的最大化偏差(Maximization Bias in Reinforcement Learning)
让我们在一个有两个动作的单状态 MDP 中正式地介绍上面所看到的内容。假设我们处于状态 $s$,有两个动作 $a_1$ 和 $a_2$,每个动作的平均奖励都为 $0$,那么真实的状态值和状态-行为值都为 $0$,即 $Q(s,a_1)=Q(s,a_2)=V(s)=0$。假设我们对采取每个动作的奖励进行了采样,以此得到了状态-行为值的估计 $\hat{Q}(s,a_1)$ 和 $\hat{Q}(s,a_2)$。还假设这些采样是无偏的因为它们是由蒙特卡罗方法生成的,即 $\hat{Q}(s,a_i)=\frac{1}{n(s,a_i)}\sum_{j=1}^{n(s,a_i)}r_j(s,a_i)$,$n(s,a_i)$ 是状态-行为对 $(s,a_i)$ 的采样数。令 $\hat{\pi}=\mathop{\arg\max}_{a}\hat{Q}(s,a)$ 为基于 $Q$ 值估计的贪婪策略,则有:
$$
\hat{V}(s)=\mathbb{E}[\mathop{\max}(\hat{Q}(s,a_1),\hat{Q}(s,a_2))]
$$
$$
\geq \mathop{\max}(\mathbb{E}[\hat{Q}(s,a_1)],\mathbb{E}[\hat{Q}(s,a_2)]) \quad\text{by Jensen's inequality}
$$
$$
=\mathop{\max}(0,0) \quad\text{since each estimate is unbiased and $Q(s,\cdot)=0$}
$$
$$
=0=V^{*}(s)。
$$
因此,我们的 $s$ 的状态值估计至少和真实的状态值一样大,我们高估了已有的有限样本的状态值。
### 6.3 双 Q-学习(Double Q-learning)
上一小节中我们看到,当我们有有限个样本时,状态值估计可能会出现最大化偏差。正如我们在硬币例子中讨论的,将取最大值和估计最大值分开进行可以避免这种现象。在 Q-学习中,我们可以保持两个独立的无偏估计 $Q_1$ 和 $Q_2$,用其中一个选择最大值,用另一个估计这个最大值,这就产生了双 Q-学习(double Q-learning),如算法 6 所示,当我们提及关于 $Q_1+Q_2$ 的 $\epsilon$ 贪婪策略时,我们指的是状态 $s$ 的最优动作是 $\mathop{\arg\max}_{a} Q_1(s,a)+Q_2(s,a)$ 的 $\epsilon$-贪婪策略。
<div align=center><img src="img/fig4_alg_6.png"/></div>
双 Q-学习比标准 Q-学习更快地消除次优动作,可以显著加快训练,Sutton and Barto [[1]](#ref1) 6.7节的玩具 MDP 就是一个很好的例子。
## 参考文献
1. <span id="ref1">R. S. Sutton, and A. G. Barto, *Introduction to Reinforcement Learning*. 2nd ed., MIT Press, 2017. Draft. http://incompleteideas.net/book/the-book-2nd.html.<span>
\ No newline at end of file
# Lecture 5 Value Function Approximation
# 课时4 值函数近似 2019.01.23
## 7. 介绍(Introduction)
到目前为止我们介绍了基于查表(lookup table)的值函数,这里每个状态都有一个对应条目,$V(s)$,或每个状态-行为对都有一个对应的条目,$Q(s,a)$。然而,这种方法可能不适合处理动作空间或状态空间非常大、或那些我们希望快速学习每个状态估计值的情况。函数近似是解决这个问题的常用办法:
$$
v_{\pi}(s) \approx \hat{v}(s,\mathbf{w}) \text{ or } q_{\pi}(s,a) \approx \hat{q}(s,a,\mathbf{w}),
$$
这里 $\mathbf{w}$ 通常指近似函数的参数。以下是常见的近似函数:
$\bullet$ 特征的线性组合(Linear combinations of features)
$\bullet$ 神经网络(Neural networks)
$\bullet$ 决策树(Decision trees)
$\bullet$ 最近邻(Nearest neighbors)
$\bullet$ 傅立叶/小波基(Fourier / wavelet bases)
我们讲进一步讨论可导近似函数:线性特征表示和神经网络,接下来的部分会提到要求函数可导的原因。
## 8. 线性特征表示(Linear Feature Representations)
在线性特征表示中,我们用一个特征向量去表示一个状态:
$$
x(s)=[x_1(s)\ x_2(s)\ ...\ x_n(s)],
$$
然后我们用特征的线性组合来近似值函数:
$$
\hat{v}(s,\mathbf{w})=x(s)^{\text{T}}\mathbf{w}=\sum_{j=1}^n x_j(s)\mathbf{w}_j。
$$
我们定义(二次的)目标函数(也被称为损失函数)为:
$$
J(\mathbf{w})=\mathbb{E}_ {\pi}[(v_{\pi}(s)-\hat{v}(s,\mathbf{w}))^2]。
$$
### 8.1 梯度下降(Gradient Descent)
梯度下降(gradient descent)是最小化上述目标函数的一种常用方法。图 1 提供了直观的说明:我们从某个特定的点 $x_0$ 开始,对应于参数 $w$ 的某个初始值;然后计算在 $x_0$ 处的梯度,它告诉我们目标函数增加速度最快的方向;为了最小化我们的目标函数,我们沿着梯度向量的负方向以一定的步长前进,到达 $x_1$;将这个过程重复进行,直到到达某个收敛标准。
<div align=center><img src="img/fig5_1.png"/></div>
<div align=center>
图 1:梯度下降可视化。我们希望求出使目标函数最小的点,我们跟着红色箭头走来实现这个目标,红色箭头指向梯度的负方向。
</div>
这个方法可以被总结为:
$$
\nabla_{\mathbf{w}}J(\mathbf{w})=[\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}_1}\ \frac{\partial J(\mathbf{w})}{\partial \mathbf{w}_2}\ ...\ \frac{\partial J(\mathbf{w})}{\partial \mathbf{w}_n}] \quad\text{计算梯度};
$$
$$
\Delta\mathbf{w}=-\frac{1}{2}\alpha\nabla_{\mathbf{w}}J(\mathbf{w}) \quad\text{用梯度下降计算更新步长};
$$
$$
\mathbf{w} \leftarrow \mathbf{w}+\Delta\mathbf{w} \quad\text{向局部最小值更新一步}。
$$
### 8.2 随机梯度下降(Stochastic Gradient Descent)
实际上,梯度下降并不是一个样本高效的优化器,随机下降梯度(stochastic gradient descent, SGD)的使用更为频繁。尽管最初的 SGD 算法指的是使用单个样本更新权重,但由于矢量化的便利性,人们通常也将小批量样本上的梯度下降称为 SGD。在(小批量)SGD 中,我们取一个小批量的样本,使用该样本计算目标函数并通过梯度下降更新权重。现在我们回到前面课程提到的几种算法,看看如何使用值函数近似。
### 8.3 蒙特卡洛线性值函数近似(Monte Carlo with Linear VFA)
算法 1 是对首次访问蒙特卡洛策略评估的修改,这里我们用线性 VFA 替代了值函数。注意,尽管回报 $Returns(s_t)$ 是无偏估计,但通常它是有噪声的。
<div align=center><img src="img/fig5_alg_1.png"/></div>
### 8.4 时间差分线性值函数近似(Temporal Difference (TD(0)) with linear VFA)
在基于表格的设定中,我们通过引导和采样来近似 $V^{\pi}$,用下式来更新 $V^{\pi}(s)$:
$$
V^{\pi}(s)=V^{\pi}(s)+\alpha(r+\gamma V^{\pi}(s')-V^{\pi}(s)),
$$
这里 $r+\gamma V^{\pi}(s')$ 为我们的目标(target)。我们用相同的 VFA 估计目标和值函数,后面课程中我们会考虑用不同的 VFA(例如在基于控制的设定中)。
使用 VFA,我们用 $\hat{V}^{\pi}$ 替换 $V^{\pi}$,如下式:
$$
\hat{V}^{\pi}(s,\mathbf{w})=\hat{V}^{\pi}(s,\mathbf{w})+\alpha(r+\gamma \hat{V}^{\pi}(s',\mathbf{w})-\hat{V}^{\pi}(s,\mathbf{w}))\nabla_{\mathbf{w}}\hat{V}^{\pi}(s,\mathbf{w})
$$
$$
\hat{V}^{\pi}(s,\mathbf{w})+\alpha(r+\gamma \hat{V}^{\pi}(s',\mathbf{w})-\hat{V}^{\pi}(s,\mathbf{w}))\mathbf{x}(s)。
$$
在值函数近似中,虽然我们的目标是对真值 $V^{\pi}(s)$ 的有偏且近似的估计,但线性 TD($0$) 仍会收敛(接近)到全局最优解,下面我们进行证明。
### 8.5 策略评估的线性值函数近似的收敛性(Convergence Guarantees for Linear VFA for Policy Evaluation)
我们定义策略 $\pi$ 的线性 VFA 相对真值的均方误差为:
$$
MSVE(\mathbf{w})=\sum_{s\in S}\mathbf{d}(s)(\mathbf{v}^{\pi}(s)-\hat{\mathbf{v}}^{\pi}(s,\mathbf{w}))^2,
$$
这里 $\mathbf{d}(s)$ 为真实决策过程中基于策略 $\pi$ 的状态的概率分布,$\hat{\mathbf{v}}^{\pi}(s,\mathbf{w})=\mathbf{x}(s)^{\text{T}}\mathbf{w}$ 为线性 VFA。
**定理 8.1** 使用 VFA 的蒙特卡洛策略评估收敛到权重 $\mathbf{w}_{MC}$,使均方误差最小:
$$
MSVE(\mathbf{w}_ {MC})=\mathop{\min}_ {\mathbf{w}}\sum_{s\in S}\mathbf{d}(s)(\mathbf{v}^{\pi}(s)-\hat{\mathbf{v}}^{\pi}(s,\mathbf{w}))^2。
$$
**定理 8.2** 使用 VFA 的 TD($0$) 策略评估收敛到权重 $\mathbf{w}_{TD}$,使均方误差在最小均方误差的常值倍数内:
$$
MSVE(\mathbf{w}_ {TD})=\frac{1}{1-\gamma} \mathop{\min}_ {\mathbf{w}}\sum_{s\in S}\mathbf{d}(s)(\mathbf{v}^{\pi}(s)-\hat{\mathbf{v}}^{\pi}(s,\mathbf{w}))^2。
$$
关于证明,读者可以参考文献 [[1]](#ref1)
### 8.6 基于 VFA 的控制(Control Using VFA)
类似 VFA,我们也可以用近似函数来估计状态-行为值,即 $\hat{q}(s,a,\mathbf{w}) \approx q_{\pi}(s,a)$,然后我们可以通过 $\hat{q}(s,a,\mathbf{w})$ 进行策略评估(policy evaluation)和策略提升(policy improvement),下面我们用数学的方式表示上述过程。
首先,我们定义目标函数为 $J(\mathbf{w})$:
$$
J(\mathbf{w})=\mathbb{E}_ {\pi}[(q_{\pi}(s,a)-\hat{q}(s,a,\mathbf{w}))^2]。
$$
类似我们之前所做的,我们可以通过梯度下降或随机梯度下降来最小化目标函数。例如,对于线性状态-行为值近似函数,我们可以:
$$
x(s)=[x_1(s)\ x_2(s)\ ...\ x_n(s)] \quad\text{状态-行为值特征向量};
$$
$$
\hat{q}(s,a,\mathbf{w})=x(s,a)\mathbf{w} \quad\text{以特征的线性组合作为状态-行为值};
$$
$$
J(\mathbf{w})=\mathbb{E}_ {\pi}[(q_{\pi}(s,a)-\hat{q}(s,a,\mathbf{w}))^2] \quad\text{以特征的线性组合作为状态-行为值};
$$
$$
-\frac{1}{2}\nabla_{\mathbf{w}}J(\mathbf{w})=\mathbb{E}_ {\pi}[(q_{\pi}(s,a)-\hat{q}(s,a,\mathbf{w}))\nabla_{\mathbf{w}}\hat{q}(s,a,\mathbf{w})] \quad\text{计算梯度};
$$
$$
=(q_{\pi}(s,a)-\hat{q}(s,a,\mathbf{w}))x(s,a)
$$
$$
\Delta\mathbf{w}=-\frac{1}{2}\alpha\nabla_{\mathbf{w}}J(\mathbf{w}) \quad\text{用梯度下降计算更新步长};
$$
$$
=\alpha(q_{\pi}(s,a)-\hat{q}(s,a,\mathbf{w}))x(s,a)
$$
$$
\mathbf{w} \leftarrow \mathbf{w}+\Delta\mathbf{w} \quad\text{向局部最小值更新一步}。
$$
对于蒙特卡洛,我们用回报 $G_t$ 代替目标 $q_{\pi}(s,a)$,也就是说,我们的更新为:
$$
\Delta\mathbf{w}=\alpha(G_t-\hat{q}(s,a,\mathbf{w}))\nabla_{\mathbf{w}}\hat{q}(s,a,\mathbf{w})。
$$
对于 SARSA,我们用 TD 目标代替 $q_{\pi}(s,a)$:
$$
\Delta\mathbf{w}=\alpha(r+\gamma\hat{q}(s',a',\mathbf{w})-\hat{q}(s,a,\mathbf{w}))\nabla_{\mathbf{w}}\hat{q}(s,a,\mathbf{w})。
$$
对于 Q-学习,我们用 TD 目标的最大值代替 $q_{\pi}(s,a)$:
$$
\Delta\mathbf{w}=\alpha(r+\gamma\mathop{\max}_ {a'}\hat{q}(s',a',\mathbf{w})-\hat{q}(s,a,\mathbf{w}))\nabla_{\mathbf{w}}\hat{q}(s,a,\mathbf{w})。
$$
注意,由于我们使用了值函数近似来完成卡尔曼备份,我们无法保证收敛性,推荐读者看一下 Baird 的 Counterexample,以获得更具体的说明。表1对不同算法是否收敛进行了总结。
<div align=center><img src="img/fig5_tab_1.png"/></div>
<div align=center>
表 1:基于 VFA 的控制方法的收敛性总结。(Yes) 表示结果在接近最优值函数时会抖动。
</div>
## 9. 神经网络(Neural Networks)
虽然线性 VFA 在给出了正确特征的情况下的表现通常很很好,但也很难去手动给出这些特征。神经网络提供了一个更为丰富的函数近似类,它可以直接以状态作为变量,而不需要明确的特征。
图 2 展示了一个通用的前馈神经网络。图中的神经网络由一个包含两个输出单元的输出层、一个包含四个输入单元的输入层、以及两个隐藏层(既不是输入层也不是输出层)组成。每个连接都与一个实值权重关联。这些单元通常是半线性的,即它们计算输入信号的加权和,然后对这个加权和应用一个非线性函数,这个函数通常被称为激活函数(activation function)。作业2中,我们研究了具有单个隐藏层的神经网络如何拥有“通用逼近(universal approximaiton)”的性质,实验和理论都表明,通过多个隐藏层的有层次的组合,我们可以更容易地逼近复杂的函数。
<div align=center><img src="img/fig5_2.png"/></div>
<div align=center>
图 2:一个包含四个输入单元、两个输出单元、两个隐藏层的通用的前馈神经网络。
</div>
下节课我们将更深入地讨论关于用神经网络解决强化学习问题的一些理论和近期发现。
## 参考文献
1. <span id="ref1">J. N. Tsitsiklis, and B. V. Roy, "An analysis of temporal-difference learning with function approximation," *IEEE Transactions on Automation Control*, 1997.<span>
\ No newline at end of file
此差异已折叠。
# Lecture 7 Imitation Learning
# 课时7 模仿学习 2019.01.30
## 8. 介绍(Introduction)
强化学习中有一些必须克服的理论和实践上的障碍,包括优化、延迟的影响、如何探索以及如何归纳。然而,重要的是,我们希望能够处理上述所有困难,同时保证数据效率和计算效率。
我们将在课程后后面部分讨论有效探索的一般方法,这些方法能够处理一般的 MDPs。但是,如果我们知道问题的结构,或者我们有可以使用的外部知识,我们就可以更有效地探索。本次课我们讨论如何模仿和学习人类(专家)在任务上的行为。
## 9. 模仿学习(Imitation Learning)
过去我们的目标是从奖励中学习策略,这些奖励通常非常稀疏(sparse),例如,一个简单的奖励信号可能是行为体是否赢得了一场游戏。这种方法在数据便宜且易于收集的情况下是成功的,然而,当数据收集速度较慢、必须避免失败(如自动驾驶)或必须保证安全时,这种方法就不是可行的。
缓解稀疏奖励问题的一种途径是手动设计在时间上密集的奖励函数,然而,这种方法需要人来手工设计奖励函数,并记住所需的行为,因此,最好通过模仿执行相关任务的行为体来学习。
### 9.1 从示范中学习(Learning from Demonstration)
一般来说,专家们提供了一组演示轨迹(demonstration trajectories),这些轨迹是状态和动作的序列。更正式地,我们假设已知:
$\bullet$ 状态空间,动作空间;
$\bullet$ 状态转移模型 $P(s'|s,a)$;
$\bullet$ 奖励函数 $R$ 未知;
$\bullet$ 一个或多个演示 $(s_0,a_0,s_1,a_1,...)$,这里动作遵循策略 $\pi^{\ast}$。
## 10. 行为克隆(Behavioral Cloning)
<div align=center>
我们能否通过有监督学习来学习策略?
</div>
<br/>
行为克隆是为了通过有监督学习去学习策略。具体来说,我们固定一个策略的类,目的是在已知数据 ${(s_0,a_0),(s_1,a_1),...}$ 时,学习一个将状态映射到动作的策略。一个值得注意的例子是 ALVINN,它学会了将传感器输入映射到转向角。
这种方法的一个挑战是状态空间的数据不是 i.i.d.(独立同分布,independent and identically distributed)的,i.i.d. 的假设是有监督学习文献和理论的标准。然而,在 RL 环境中,错误是复杂的;这些错误会随着事件过程不断累积。用于被学习的策略的数据会紧紧围绕专家的轨迹,如果犯了一个错误,而且这个错误使得行为体处于专家没有访问过的状态,那么行为体就没有可以从中学习策略的数据。在这种情况下,与标准 RL 中的线性标度相反,误差在片段中呈四次标度(the error scales quadratically)。
### 10.1 DAGGER:数据聚集(DAGGER: Dataset Aggregation)
数据聚集(DAGGER,算法 1,[[1]](#ref1))的目的是通过为新访问的状态添加数据来缓解错误的复杂化问题。与假设存在预先定义好的专家演示相反,我们假设我们可以通过专家来生成更多的数据。当然,这么做的局限之处在于,专家必须能够提供标签,有时还应该是实时的。
<div align=center><img src="img/fig7_alg_1.png"/></div>
## 11. 逆强化学习(Inverse Reinforcement Learning, IRL)
<div align=center>
我们能否复原奖励函数 $R$?
</div>
<br/>
在逆强化学习中(也被称为逆最优控制(inverse optimal control)),我们的目标是基于专家演示来学习奖励函数(未知)。如果不假设演示的最优性,这个问题是很难解决的,因为任何奖励函数都可能产生观测到的轨迹。
### 11.1 线性特征奖励的逆强化学习(Linear Feature Reward Inverse RL)
我们考虑表示为特征的线性组合的奖励:
$$
R(s)=\omega^{\text{T}}x(s),
\tag{1}
$$
这里 $\omega\in \mathbb{R}^n$,$x:S\rightarrow \mathbb{R}^n$。在这种情况下,IRL 问题是给定一组演示时,确定权重向量 $\omega$。由此生成的关于策略 $\pi$ 的价值函数可以表示为:
$$
V^{\pi}(s)=\mathbb{E}_ {\pi}[\sum_{t=0}^{\infty}\gamma^tR(s_t)|s_0=s]
\tag{2}
$$
$$
=\mathbb{E}_ {\pi}[\sum_{t=0}^{\infty}\gamma^t\omega^{\text{T}}x(s_t)|s_0=s]
\tag{3}
$$
$$
=\omega^{\text{T}}\mathbb{E}_ {\pi}[\sum_{t=0}^{\infty}\gamma^tx(s_t)|s_0=s]
\tag{4}
$$
$$
=\omega^{\text{T}}\mu(\pi),
\tag{5}
$$
这里 $\mu(\pi|s_0=s)\in\mathbb{R}^n$ 为基于策略 $\pi$ 的状态特征 $x(s)$ 的衰减加权和。注意:
$$
\mathbb{E}_ {\pi^{\ast}}[\sum_{t=0}^{\infty}\gamma^tR^{\ast}(s_t)|s_0=s]\geq \mathbb{E}_ {\pi}[\sum_{t=0}^{\infty}\gamma^tR^{\ast}(s_t)|s_0=s] \quad \forall\pi,
\tag{6}
$$
这里 $R^{\ast}$ 为最优奖励函数。因此,如果专家演示是最优的(即动作是基于最优策略生成的),那么我们找到满足下式的 $\omega^{\ast}$ 就能够确定 $\omega$:
$$
\omega^{\ast\text{T}}\mu(\pi^{\ast}|s_0=s) \geq \omega^{\ast\text{T}}\mu(\pi|s_0=s) \quad \forall\pi,\forall s。
\tag{7}
$$
从某种意义上说,我们希望找到奖励函数的一种参数化形式,使得专家策略的表现优于其他策略。
## 12. 学徒制学习(Apprenticeship Learning)
<div align=center>
我们能否通过复原的奖励函数来生成好的策略?
</div>
<br/>
为使策略 $\pi$ 表现得和专家策略 $\pi^{\ast}$ 一样好,只需要这个策略的特征的衰减加权和的期望与专家策略相匹配 [[2]](#ref2)。更准确地说,如果
$$
\lVert \mu(\pi|s_0=s)-\mu(\pi^{\ast}|s_0=s) \rVert _1 \leq \epsilon,
\tag{8}
$$
那么对于所有满足 $\lVert \omega \rVert _\infty \leq 1$ 的 $\omega$,根据 Cauchy-Schwartz 不等式,我们有
$$
|\omega^{\text{T}}\mu(\pi|s_0=s)-\omega^{\text{T}}\mu(\pi^{\ast}|s_0=s)|\leq\epsilon。
$$
由这一结论我们可以得到算法 2 ,通过算法 2 来学习一个表现得像专家策略一样好的策略(细节请参考 [[2]](#ref2))。
<div align=center><img src="img/fig7_alg_2.png"/></div>
在实践中,这种方法存在一些问题:
$\bullet$ 如果专家策略是次优的,那么得到的策略就是一些武断的策略的混合,这些策略在其凸包(convex hull)中具有专家策略的性质。在实践中,实践者可以选择这个集合中的最佳策略并选择对应的奖励函数;
$\bullet$ 这种方法需要在给定奖励函数的情况下,能够计算出最优策略,然而这个要求可能是昂贵或不可能的;
$\bullet$ 有无穷多的奖励函数具有相同的最优策略,并且有无穷多的策略能够匹配特征。
### 12.1 最大熵的逆强化学习(Maximum Entropy Inverse RL)
为解决歧义问题(problem of ambiguity),Ziebart 等人 [[3]](#ref3) 引入了最大熵(Maximum Entropy, MaxEnt)IRL。考虑确定性 MDP 中所有可能的 $H$-步轨迹,对于线性奖励模型,一个策略完全由其在轨迹上的分布来描述。鉴于此,给定 $m$ 个分布,我们应该选择哪种策略?
我们再次假设奖励函数为特征的线性函数 $R(s)=\omega^{\text{T}}x(s)$。记轨迹 $j$ 为 $\tau_j$,我们可以把这个轨迹的特征写成:
$$
\mu_{\tau_j}=\sum_{s_i\in\tau_j}x(s_i)。
\tag{9}
$$
对 $m$ 个轨迹求平均,我们可以将平均特征写为:
$$
\tilde{\mu}=\frac{1}{m}\sum_{j=1}^{m}\mu_{\tau_j}。
\tag{10}
$$
最大熵定理(Principle of Maximum Entropy)[[4]](#ref4) 鼓励选择这样一个分布:除了与示范数据集中的特征期望相匹配外,没有其他偏好,即
$$
\mathop{\max}_P -\sum _{\tau}P(\tau)\log P(\tau),
\tag{11}
$$
$$
\text{s.t.} \quad \sum_{\tau}P(\tau)\mu_{\tau}=\tilde{\mu},
\tag{12}
$$
$$
\sum_{\tau}P(\tau)=1。
\tag{13}
$$
在线性奖励的情况下,这相当于指定权重 $\omega$,使 $\omega$ 产生有最大熵的策略同时与特征期望匹配。在观测数据的特征约束下,路径分布的熵的最大化意味着在最大熵(指数族)分布下观测数据可能性的最大化:
$$
P(\tau_j|\omega)=\frac{1}{Z(\omega)}\text{exp}(\omega^{\text{T}}\mu_{\tau_j})=\frac{1}{Z(\omega)}\text{exp}(\sum_{s_i\in\tau_j}\omega^{\text{T}}x(s_i)),
$$
这里,
$$
Z(\omega,s)=\sum_{\tau{s}}\text{exp}(\omega^{\text{T}}\mu_{\tau_s})。
$$
这就产生了对低成本路径的强烈偏好,而等成本路径是同等可能的。许多我们关注的 MDPs 是随机的,在这些情况下,路径的分布取决于奖励权重和动态
$$
P(\tau_j|\omega,P(s'|s,a))\approx \frac{\text{exp}(\omega^{\text{T}}\mu_{\tau_j})}{Z(\omega,P(s'|s,a))} \prod_{s_i,a_i\in\tau_j}P(s_{i+1}|s_i,a_i)。
$$
通过最大化数据的可能性来学习权重 $\omega$:
$$
\omega^{\ast}=\mathop{\arg\max}_ {\omega}L(\omega)=\mathop{\arg\max}_ {\omega}\sum_{\text{examples}}\log P(\tau|\omega)。
$$
梯度为经验特征的期望与学习者的特征期望之间的差异,学习者的特征期望可以表示为期望的状态访问频率:
$$
\nabla L(\omega)=\tilde{\mu}-\sum_{\tau} P(\tau|\omega)\mu_{\tau} = \tilde{\mu}-\sum_{s_i} D(s_i)x(s_i),
$$
这里 $D(s_i)$ 表示状态访问频率。这种方法有深远的影响,它提供了一种在许多可能的奖励函数中进行选择的原则性方法。然而,算法的原始公式需要状态转移模型或能够通过仿真/实际实验来收集状态转移模型的样本。
<div align=center><img src="img/fig7_alg_3.png"/></div>
## 参考文献
1. <span id="ref1">S. Ross, G. J. Gordon, and J. A. Bagnell, "A reduction of imitation learning and structured prediction to no-regret online learning," *Proceedings of the 14th International Conference on Artificial Intelligence and Statistics*, 2011.</span>
2. <span id="ref2">P. Abbeel, and A. Y. Ng, "Apprenticeship learning via inverse reinforcement learning," *Proceedings of the 21st International Conference on Machine Learning*, 2004.</span>
3. <span id="ref3">B. D. Ziebart et al., "Maximum entropy inverse reinforcement learning," *Association for the Advancement of Artificial Intelligence*, 2008.</span>
4. <span id="ref4">E. T. Jaynes, "Information theory and statistical mechanics," *Physical Review*, 1957.</span>
\ No newline at end of file
此差异已折叠。
# 斯坦福 cs234 强化学习中文讲义
> 课程:[CS234: Reinforcement Learning Winter 2019](https://web.stanford.edu/class/cs234/schedule.html)
>
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
>
> 做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律。——侯世达定律
+ [斯坦福 CS229 机器学习中文笔记](http://ai-start.com/ml2014/)
+ [DeepLearning.ai 深度学习中文笔记](http://ai-start.com/dl2017/)
+ [斯坦福 CS224n 自然语言处理中文笔记](https://github.com/apachecn/stanford-cs224n-notes-zh)
+ [UCB CS294-112 深度强化学习中文笔记](https://github.com/apachecn/ucb-cs294-112-notes-zh)
+ [ApacheCN 机器学习交流群 629470233](http://shang.qq.com/wpa/qunwpa?idkey=30e5f1123a79867570f665aa3a483ca404b1c3f77737bc01ec520ed5f078ddef)
+ [ApacheCN 学习资源](http://www.apachecn.org/)
## 贡献指南
项目当前处于翻译阶段,请查看[贡献指南](CONTRIBUTING.md),并在[整体进度](https://github.com/apachecn/seaborn-doc-zh/issues/1)中领取任务。
> 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错——在大部分情况下,我们的服务器已经记录所有的翻译,因此您不必担心会因为您的失误遭到无法挽回的破坏。(改编自维基百科)
## 联系方式
### 负责人
+ [飞龙](https://github.com/wizardforcel):562826179
+ [Everglow0214](https://github.com/Everglow0214)
### 其他
* 认领翻译和项目进度-地址: <https://github.com/apachecn/stanford-cs234-notes-zh/issues/1>
* 在我们的 [apachecn/stanford-cs234-notes-zh](https://github.com/apachecn/stanford-cs234-notes-zh) github 上提 issue.
* 发邮件到 Email: `apachecn@163.com`.
* 在我们的 [组织学习交流群](http://www.apachecn.org/organization/348.html) 中联系群主/管理员即可.
## 赞助我们
![](http://data.apachecn.org/img/about/donate.jpg)
+ [斯坦福 cs234 强化学习中文讲义](README.md)
+ [Lecture 1 Introduction to Reinforcement Learning](1.md)
+ [Lecture 3 Model Free Policy Evaluation: Policy Evaluation Without Knowing How the World Works](3.md)
+ [Lecture 4 Model Free Control](4.md)
+ [Lecture 5 Value Function Approximation](5.md)
+ [Lecture 6 CNNs and Deep Q-learning](6.md)
+ [Lecture 7 Imitation Learning](7.md)
+ [Lecture 8&9 Policy Gradient](8&9.md)
+ [Lecture 10 Advanced Policy Gradient](10.md)
+ [Lecture 11&12 Exploration and Exploitation](11&12.md)
+ [Lecture 14 Model Based RL, Monte-Carlo Tree Search](14.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册