文章目录
1 前言
监督学习可用于回归,分类等任务,这一般都需要一定数量的带标签的数据。然而,在很多的应用场景中,通过人工标注的方式来给数据打标签的方式往往行不通。比如我们通过监督学习来训练一个模型可以来自动下围棋,就需要将当前棋盘的状态作为输入数据,其对应的最佳落子位置(动作)作为标签。训练一个好的模型就需要收集大量的不同棋盘状态以及对应动作。这种做法实践起来比较困难,一是对于每一种棋盘状态,即使是专家也很难给出 “正确”的动作,二是获取大量数据的成本往往比较高。对于下棋这类任务,虽然我们很难知道每一步的“正确”动作,但是其最后的结果(即赢输)却很容易判断。因此,如果可以通过大量的模拟数据,通过最后的结果(奖励)来倒推每一步棋的好坏,就可以学习出“最佳”的下棋策略,这就是强化学习。
2 正文在人工智能领域中,强化学习是一类特定的机器学习问题。在一个强化学习系统中,决策者可以观察环境,并根据观测做出行动。在行动之后,能够获得奖励。强化学习通过与环境的交互来学习如何最大化奖励。例如,一个走迷宫的机器人在迷宫里游荡(见图1-1)。机器人观察周围的环境,并且根据观测来决定如何移动。错误的移动会让机器人浪费宝贵的时间和能量,正确的移动会让机器人成功走出迷宫。在这个例子中,机器人的移动就是它根据观测而采取的行动,浪费的时间能量和走出迷宫的成功就是给机器人的奖励(时间能量的浪费可以看作负奖励)。
强化学习的最大特点是在学习过程中没有正确答案,而是通过奖励信号来学习。在机器人走迷宫的例子中,机器人不会知道每次移动是否正确,只能通过花费的时间能量以及是否走出迷宫来判断移动的合理性。
1.1 强化学习定义
在强化学习中,有两个可以进行交互的对象:智能体和环境。(注意:强化学习问题不一定要借助智能体/环境接口来研究,本文只讨论智能体/环境接口的情况。)
- 智能体(agent)可以感知外界环境的状态(state)和反馈的奖励(reward),并进行学习和决策。智能体的决策功能是指根据外界环境的状态来做出不同的动作(action),而学习功能是指根据外界环境的奖励来调整策略。一个强化学习系统里可以有一个或多个智能体。我们并不需要对智能体本身进行建模,只需要了解它在不同环境下可以做出的动作,并接受奖励信号。
- 环境(environment)是智能体外部的所有事物,智能体在环境中执行动作后都会使得自己处于不同的状态,并接受环境反馈的奖励。环境本身可以是确定性的,也可以是不确定性的。环境可能是已知的,也可能是未知的。
在强化学习中的基本要素包括: - 状态(state)s:来自于状态空间S,为智能体所处的状态,一个不断变化的量,可以是离散的或连续的。
- 动作a(action),来自动作空间A,是对智能体行为的描述,可以是离散的或连续的。
- 状态转移概率p(s′|s,a)是在智能体根据当前状态s做出一个动作a之后, 环境在下一个时刻转变为状态s′的概率;
- 即时奖励r(s,a,s′)是一个标量函数,即智能体根据当前状态s做出动作a 之后,环境会反馈给智能体一个奖励,这个奖励也经常和下一个时刻的状态s′有关。
- 策略 智能体的策略(policy)就是智能体如何根据环境状态s来决定下一步的动作a,通常可以分为确定性策略(Deterministic Policy)和随机性策略(Stochastic
Policy)两组。
确定性策略是从状态空间到动作空间的映射函数π : S → A。随机性策略表示在给定环境状态时,智能体选择某个动作的概率分布
通常情况下,强化学习一般使用随机性的策略。随机性的策略可以有很多优点。比如在学习时可以通过引入一定随机性更好地探索环境。二是使得策略更加地多样性。比如在围棋中,确定性策略总是会在同一个位置上下棋,会导致你的策略很容易被对手预测。
详细见:利用-探索策略(传送门)
1.2 马尔可夫决策过程
为了简单起见,我们将智能体与环境的交互看作是离散的时间序列。图14.2给出了智能体与环境的交互。
智能体从感知到的初始环境获取初始状态s0开始,然后决定做一个相应的动作a0,执行动作后智能体的状态变为s1,与此同时环境反馈给智能体一个即时奖励r1,接着智能体 又根据状态s1做一个动作a1,环境相应改变为s2,并反馈奖励r2。这样的交互可以一直进行下去如下图所示。
其中
r
t
=
r
(
s
t
−
1
,
a
t
−
1
,
s
t
)
r_t=r(s_{t-1},a_{t-1},s_t)
rt=r(st−1,at−1,st)是第
t
t
t时刻的即时奖励。
智能体与环境的交互的过程可以看作是一个马尔可夫决策过程。
马尔可夫过程(Markov Process)是具有马尔可夫性的随机变量序列
s
0
,
s
1
,
.
.
.
,
s
t
∈
S
s_0,s_1,...,s_t\in S
s0,s1,...,st∈S,其下一个时刻的状态
s
t
+
1
s_{t+1}
st+1只取决于当前状态
s
t
s_t
st。
马尔可夫决策过程(Markov Decision Process,MDP)在马尔可夫过程中加入一个额外的变量:动作
a
a
a,即下一时刻的状态
s
t
+
1
s_{t+1}
st+1,和当前时刻的状态
s
t
s_t
st以及动作
a
t
a_t
at相关
给定策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),马尔可夫决策过程的一个轨迹为:
它的概率为:
图14.3给出了马尔可夫决策过程的图模型表示。
1.3 强化学习的目标函数
1.3.1 总回报
给定
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),,智能体和环境一次交互过程的轨迹
τ
\tau
τ所收到的累积奖励为总回报。
假设环境中有一个或多个特殊的终止状态(terminal state),当到达终止状态时,一个智能体和环境的交互过程就结束了。这一轮交互的过程称为一个回合(episode)或试验(trial)。一般的强化学习任务(比如下棋、游戏)都属于这种回合式的任务。
如果环境中没有终止状态(比如终身学习的机器人),即T=∞,称为持续性强化学习任务,其总回报也可能是无穷大。为了解决这个问题,我们可以引入一个折扣率来降低远期回报的权重。折扣回报(discounted return)定义为
其中
γ
∈
[
0
,
1
]
\gamma\in [0,1]
γ∈[0,1]是折扣率。当
γ
\gamma
γ接近于0时,智能体更在意短期回报;而当
γ
\gamma
γ接近于1时,长期回报变得更重要。
1.3.1 目标函数
因为策略和状态转移都有一定的随机性,每次试验得到的轨迹是一个随机序列,其收获的总回报也不一样。强化学习的目标是学习到一个策略
π
θ
(
a
∣
s
)
\pi_{\theta}(a|s)
πθ(a∣s)来最大化期望回报(expected reward),即希望智能体执行一系列的动作来获得尽可能多的平均回报。
1.4 值函数
为了评估一个策略π的期望回报,我们定义两个值函数:状态值函数和状态-动作值函数。
1.4.1 状态值函数
一个策略
π
\pi
π期望回报可以分解为
其中 V π ( s ) V^{\pi}(s) Vπ(s)称为状态值函数(state value function),表示从状态s开始,执行 策略 π \pi π得到的期望总回报
为了方便起见,我们用
τ
0
:
T
\tau_0:T
τ0:T来表示从轨迹
s
0
,
a
,
s
1
,
.
.
.
,
s
T
s_0,a,s_1,...,s_T
s0,a,s1,...,sT,用
τ
1
:
T
\tau_1:T
τ1:T表示轨迹
s
1
,
a
1
,
.
.
.
,
s
T
s_1,a_1,...,s_T
s1,a1,...,sT,因此有
τ
0
:
T
=
s
1
,
a
0
,
τ
1
:
T
\tau_0:T=s_1,a_0,\tau_1:T
τ0:T=s1,a0,τ1:T
根据马尔可夫性, V π ( s ) V_{\pi}(s) Vπ(s)可展开得到
这个公式也称为贝尔曼方程(Bellman equation),表示当前状态的值函数可以通过下个状态的值函数来计算。
如果给定策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),状态转移概率
p
(
s
′
∣
s
,
a
)
p(s'|s,a)
p(s′∣s,a)和奖励
r
(
s
,
a
,
s
′
)
r(s,a,s′)
r(s,a,s′),我们就可以通过迭代的方式来计算
V
π
(
s
)
V π(s)
Vπ(s)。由于存在折扣率,迭代一定步数后,每个状态的值函数就会固定不变。
1.4.2 状态-动作值函数
上式中的第二个期望是指初始状态为
s
s
s并进行动作
a
a
a,然后执行策 略
π
π
π得到的期望总回报,称为状态-动作值函数(state-action value function),
状态-动作值函数也经常称为Q函数(Q-function)。
状态值函数
V
π
(
s
)
V_{\pi}(s)
Vπ(s)是Q函数
Q
π
(
s
,
a
)
Q_π(s,a)
Qπ(s,a)关于动作
a
a
a的期望,
结合以上两式,Q函数可以写为
这是关于Q函数的贝尔曼方程。
14.3 值函数的作用
值函数可以看作是对策略 π π π的评估。如果在状态 s s s,有一个动作 a a a使得 Q π ( s , a ) > V π ( s ) Qπ(s,a) > V π(s) Qπ(s,a)>Vπ(s),说明执行动作 a a a比当前的策略 π ( a ∣ s ) π(a|s) π(a∣s)要好,我们就可以调整参数使得策略 π ( a ∣ s ) π(a|s) π(a∣s)的概率增加。
1.5 强化学习的分类
1.5.1 按任务分类
根据强化学习的任务和环境,可以将强化学习任务作以下分类。
单智能体任务(single agent task)和多智能体任务(multi-agent task)
:顾名思义,根据系统中的智能体数量,可以将任务划分为单智能体任务和多智能体任务。单智能体任务中只有一个决策者,它能得到所有可以观察到的观测,并能感知全局的奖励值;多智能体任务中有多个决策者,它们只能知道自己的观测,感受到环境给它的奖励。当然,在有需要的情况下,多个智能体间可以交换信息。在多智能体任务中,不同智能体奖励函数的不同会导致它们有不同的学习目标(甚至是互相对抗的)。在本书没有特别说明的情况下,一般都是指单智能体任务。
回合制任务(episodic task)和连续性任务(sequential task)
:对于回合制任务,可以有明确的开始状态和结束状态。例如在下围棋的时候,刚开始棋盘空空如也,最后棋盘都摆满了,一局棋就可以看作是一个回合。下一个回合开始时,一切重新开始。也有一些问题没有明确的开始和结束,比如机房的资源调度。机房从启用起就要不间断地处理各种信息,没有明确的结束又重新开始的时间点。
离散时间环境(discrete time environment)和连续时间环境(continuoustime environment)
:如果智能体和环境的交互是分步进行的,那么就是离散时间环境。如果智能体和环境的交互是在连续的时间中进行的,那么就是连续时间环境。
离散动作空间(discrete action space)和连续动作空间(continuousaction space)
:这是根据决策者可以做出的动作数量来划分的。如果决策得到的动作数量是有限的,则为离散动作空间,否则为连续动作空间。例如,走迷宫机器人如果只有东南西北这4种移动方式,则其为离散动作空间;如果机器人向360°中的任意角度都可以移动,则为连续动作空间。
确定性环境任务(deterministic environment)和非确定性环境(stochastic environment)
:按照环境是否具有随机性,可以将强化学习的环境分为确定性环境和非确定性环境。例如,对于机器人走固定的某个迷宫的问题,只要机器人确定了移动方案,那么结果就总是一成不变的。这样的环境就是确定性的。但是,如果迷宫会时刻随机变化,那么机器人面对的环境就是非确定性的。
完全可观测环境(fully observable environment)和非完全可观测环境(partially observable environment)
:如果智能体可以观测到环境的全部知识,则环境是完全可观测的;如果智能体只能观测到环境的部分知识,则环境是非完全可观测的。例如,围棋问题就可以看作是一个完全可观测的环境,因为我们可以看到棋盘的所有内容,并且假设对手总是用最优方法执行;扑克则不是完全可观测的,因为我们不知道对手手里有哪些牌。
1.5.2按算法分类
从算法角度,可以对强化学习算法作以下分类同策学习(on policy)和异策学习(off policy)
:同策学习是边决策边学习,学习者同时也是决策者。异策学习则是通过之前的历史(可以是自己的历史也可以是别人的历史)进行学习,学习者和决策者不需要相同。在异策学习的过程中,学习者并不一定要知道当时的决策。例如,围棋AI可以边对弈边学习,这就算同策学习;围棋AI也可以通过阅读人类的对弈历史来学习,这就算异策学习。
有模型学习(model-based)和无模型学习(model free):在学习的过程中,如果用到了环境的数学模型,则是有模型学习;如果没有用到环境的数学模型,则是无模型学习。对于有模型学习,可能在学习前环境的模型就已经明确,也可能环境的模型也是通过学习来获得。例如,对于某个围棋AI,它在下棋的时候可以在完全了解游戏规则的基础上虚拟出另外一个棋盘并在虚拟棋盘上试下,通过试下来学习。这就是有模型学习。与之相对,无模型学习不需要关于环境的信息,不需要搭建假的环境模型,所有经验都是通过与真实环境交互得到。
回合更新(Monte Carlo update)和时序差分更新(temporal differenceupdate)
:回合制更新是在回合结束后利用整个回合的信息进行更新学习;而时序差分更新不需要等回合结束,可以综合利用现有的信息和现有的估计进行更新学习。
基于价值(value based)和基于策略(policy based)
:基于价值的强化学习定义了状态或动作的价值函数,来表示到达某种状态或执行某种动作后可以得到的回报。基于价值的强化学习倾向于选择价值最大的状态或动作;基于策略的强化学习算法不需要定义价值函数,它可以为动作分配概率分布,按照概率分布来执行动作。
深度强化学习
:在强化学习中,一般需要建模策略π(a|s)和值函数V π(s),Qπ(s,a)。早期 的强化学习算法主要关注于状态和动作都是离散且有限的问题,可以使用表格 来记录这些概率。但在很多实际问题中,有些任务的状态和动作的数量非常多。
比如围棋的棋局有
3
361
≈
1
0
170
3^{361} ≈10^{170}
3361≈10170种状态,动作(即落子位置)数量为361。还有些任务的状态和动作是连续的。比如在自动驾驶中,智能体感知到的环境状态 是各种传统器数据,一般都是连续的。动作是操作方向盘的方向(−90∼90度) 和速度控制(0∼300公里/小时),也是连续的。为了有效地解决这些问题,可以一个复杂的函数(比如深度神经网络)来 使得智能体可以感知更复杂的环境状态以及建立更复杂的策略,提高强化学习算法的能力,并提高泛化能力。 深度强化学习(deep reinforcement learning)是将强化学习和深度学习结
合在一起,用强化学习来定义问题和优化目标,用深度学习来解决策略和值函数。的建模问题,然后使用误差反向传播算法来优化目标函数。深度强化学习在一 定程度上具备解决复杂问题的通用智能,并在很多任务上都取得了很大的成功。
PS:
强化学习与监督学习的区别在于:
对于监督学习,学习者知道每个动作的正确答案是什么,可以通过逐步比对来学习;与此同时,监督学习希望能将学习的结果运用到未知的数据,要求结果可推广、可泛化;
对于强化学习,学习者不知道每个动作的正确答案,只能通过奖励信号来学习。强化学习要最大化一段时间内的奖励,需要关注更加长远的性能;其学习结果得用在训练的环境中。
所以,监督学习一般运用于判断、预测等任务,如判断图片的内容、预测股票价格等;而强化学习不适用于这样的任务。
强化学习与非监督学习的区别在于:
非监督学习旨在发现数据之间隐含的结构;而强化学习有着明确的数值目标,即奖励。它们的研究目的不同。所以,非监督学习一般用于聚类等任务,而强化学习不适用于这样的任务。
参考:
邱锡鹏 《神经网络与深度学习》
肖智清 《强化学习:原理与Python实现》