Reinforcement Learning(RL) 强化学习
强化学习是一种通过与环境交互来学习决策策略的机器学习方法。
智能体(Agent)执行了某个动作(Action)后,环境(Environment)将会转换到一个新的状态(State),对于该新的状态环境会给出奖励(Reward)信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。在这个过程中智能体期望学习到一个最优策略 (Optimal Policy),从而实现长期累积奖励最大化。
智能体 Agent:发出Action的对象。
环境 Environment:当前任务范围内除了智能体的其他物体。
状态 state:包含了整个系统的各项指标。(一般在每一步中使用的是观察 observation)
奖励 reward:一个标量信号反馈。
强化学习的特点:
- 没有监督数据、只有奖励信号
- 奖励信号不一定是实时的,而很可能是延后的,有时甚至延后很多。
- 时间(序列)是一个重要因素
- 当前的行为影响后续接收到的数据
由于Reward常常是延迟的(比如下棋会在最后一步才决出胜负),RL可能会产生一个决策序列并会牺牲即时(短期)的奖励以获取更多的长期奖励。
上图可以看作t时刻智能体和环境的操作:
智能体接收对于环境的观察
O
t
O_t
Ot ;做出行为
A
t
A_t
At;从环境得到一个奖励信号
R
t
R_t
Rt。
环境可以接收此时智能体的动作
A
t
A_t
At,并更新环境信息,输出下一时刻的观测
O
t
+
1
O_{t+1}
Ot+1 和奖励
R
t
+
1
R_{t+1}
Rt+1。
状态和观察的区别:
- 状态是环境中所有可观察和不可观察变量的完整表示,包括了环境内部的所有信息。在理想情况下,状态应该包含足够的信息以让智能体做出最优决策。状态类似于其他机器学习模型中的特征向量,是强化学习算法决策的依据。
- 观察是智能体从环境中获得的信息的部分或不完全表示。与状态不同,观察可能不包含做出最优决策所需的所有信息。在自然语言处理(NLP)或计算机视觉中,观察相当于一个局部视图或一个文本片段。
1 一些名词解释
1.1 历史
记录t及之前时刻观测、行为、奖励的序列叫做 历史:
H
t
=
O
1
,
A
1
,
R
1
,
.
.
.
,
O
t
,
A
t
,
R
t
H_t = O_1, A_1, R_1, ..., O_t, A_t, R_t
Ht=O1,A1,R1,...,Ot,At,Rt
1.2 状态与状态转移
状态 是根据历史来确定的:
S
t
=
f
(
H
t
)
S_t = f(H_t)
St=f(Ht)
环境状态——通常对智能体不完全可见,它是环境的私有呈现,包括环境用来决定下一个观测/奖励的所有数据。
智能体状态——是智能体的内部呈现,包括智能体可以使用的、决定未来动作的所有信息。
信息状态——包括历史上所有有用的信息,又称Markov状态。
状态转移
在智能体 Agent 进行一次操作后,环境 Environment 将发生变化,也就是状态 State 变了,这个过程就叫做 State transition(状态转移)。状态转移可以是固定的也可以是随机的,通常我们认为状态转移是随机的(会有不同的概率转移到不同的状态,或是环境中的其他物体也具有不确定性,比如敌人的移动路线)。可以将状态转移用
p
p
p 函数来表示:
p
(
s
′
∣
s
,
a
)
=
P
(
S
′
=
s
∣
S
=
s
,
A
=
a
)
p(s'|s,a)=P(S'=s|S=s,A=a)
p(s′∣s,a)=P(S′=s∣S=s,A=a)
这是一个条件概率密度函数,意思是如果观测到当前的状态
s
s
s 以及动作
a
a
a,
p
p
p 函数输出
s
’
s’
s’ 的概率。
1.3 马尔可夫属性
马尔可夫属性 如果信息状态(公式中记
S
t
S_t
St) 是可知的那么它等价于之前的所有历史信息(公式中记
S
1
,
S
2
,
.
.
.
,
S
t
−
1
S_1, S_2, ..., S_{t-1}
S1,S2,...,St−1) :
P
[
S
t
+
1
∣
S
t
]
=
P
[
S
t
+
1
∣
S
1
,
S
2
,
.
.
.
,
S
t
]
P[S_{t+1}|S_t] = P[S_{t+1}|S_1, S_2, ..., S_t]
P[St+1∣St]=P[St+1∣S1,S2,...,St]
(也可以看成在
t
+
1
t+1
t+1 时刻的状态只与
S
t
S_t
St 有关。)
当智能体对环境的观测 = 智能体状态 = 环境状态时,形成了一个 完全可观测的环境 (即不需要由之前的动作和状态进行目前状态的推导),这时问题变成了一个马尔可夫决策过程(Markov Decision Process, MDP)。
但通常来讲环境都是 部分可观测的 (即智能体间接观测环境),比如打牌的时候只知道自己和已经出过的牌有哪些,此时智能体状态 ≠ 环境状态,需要通过某些方法来构建智能体状态(公式中记
S
t
a
S_t^a
Sta),比如使用RNN进行推断或者使用概率分布进行计算。
S
t
a
=
σ
(
S
t
−
1
a
W
s
+
O
t
W
o
)
S_t^a = \sigma(S_{t-1}^aW_s+O_tW_o)
Sta=σ(St−1aWs+OtWo)
S
t
a
=
(
P
[
S
t
e
=
s
1
]
,
.
.
.
,
P
[
S
t
e
=
s
n
]
)
S_t^a = (P[S_t^e = s^1], ..., P[S_t^e = s^n])
Sta=(P[Ste=s1],...,P[Ste=sn])
2 马尔可夫决策过程
马尔可夫过程又叫马尔可夫链(Markov Chain),它是一个无记忆的随机过程,可以用一个元组<S,P>表示,其中S是有限数量的状态集,P是状态转移概率矩阵。
图中,圆圈表示学生所处的状态,方格Sleep是一个终止状态,或者可以描述成自循环的状态,也就是Sleep状态的下一个状态100%的几率还是自己。箭头表示状态之间的转移,箭头上的数字表示当前转移的概率。
举例说明:当学生处在第一节课(Class1)时,他/她有50%的几率会参加第2节课(Class2);同时在也有50%的几率不在认真听课,进入到浏览facebook这个状态中。在浏览facebook这个状态时,他/她有90%的几率在下一时刻继续浏览,也有10%的几率返回到课堂内容上来。当学生进入到第二节课(Class2)时,会有80%的几率继续参加第三节课(Class3),也有20%的几率觉得课程较难而退出(Sleep)······ 一个可能的学生马尔科夫链从状态Class1开始,最终结束于Sleep,其间的过程根据状态转化图可以有很多种可能性,这些都称为Sample Episodes。以下四个Episodes都是可能的:
C1 - C2 - C3 - Pass - Sleep
C1 - FB - FB - C1 - C2 - Sleep
C1 - C2 - C3 - Pub - C2 - C3 - Pass - Sleep
C1 - FB - FB - C1 - C2 - C3 - Pub - C1 - FB - FB - FB - C1 - C2 - C3 - Pub - C2 - Sleep
该学生马尔科夫过程的状态转移矩阵如下图:(行列为class1~class3 pass pub fb sleep)
p
=
[
0
0.5
0
0
0
0.5
0
0
0
0.8
0
0
0
0.2
0
0
0
0.6
0.4
0
0
0
0
0
0
0
0
1.0
0.2
0.4
0.4
0
0
0
0
0.1
0
0
0
0
0.9
0
0
0
0
0
0
0
1.0
]
p=\begin{bmatrix} 0& 0.5& 0& 0& 0& 0.5& 0\\ 0& 0& 0.8& 0& 0& 0& 0.2\\ 0& 0& 0& 0.6& 0.4& 0& 0\\ 0& 0& 0& 0& 0& 0& 1.0\\ 0.2& 0.4& 0.4& 0& 0& 0& 0\\ 0.1& 0& 0& 0& 0& 0.9& 0\\ 0& 0& 0& 0& 0& 0& 1.0\\ \end{bmatrix}
p=
00000.20.100.50000.40000.8000.400000.60000000.400000.500000.9000.201.0001.0
状态转移矩阵每行的和为1
2.1 马尔科夫奖励过程 Markov Reward Process
记马尔科夫性为:
P
s
s
′
=
P
[
S
t
+
1
=
s
′
∣
S
t
=
s
]
P_{ss'}=P[S_{t+1}=s'|S_t=s]
Pss′=P[St+1=s′∣St=s]
上式表示仅由状态 s s s 即可推得下一时刻的状态 s ′ s' s′ 的概率。
马尔科夫奖励过程在马尔科夫过程的基础上增加了奖励
R
R
R 和衰减系数
γ
:
<
S
,
P
,
R
,
γ
>
γ:<S,P,R,γ>
γ:<S,P,R,γ>。R是一个奖励函数。
S
S
S 状态下的奖励是某一时刻t处在状态s下在下一个时刻t+1能获得的奖励期望:
R
s
=
E
[
R
t
+
1
∣
S
t
=
s
]
R_s=E[R_{t+1}|S_t=s]
Rs=E[Rt+1∣St=s]
衰减系数 Discount Factor:
γ
∈
[
0
,
1
]
γ∈ [0, 1]
γ∈[0,1]
3 强化学习智能体的主要组成部分
3.1 策略
策略 Policy :状态到行为的一个映射,决定了智能体的行为机制,它可以是确定性的,也可以是不确定性的。记policy为
π
π
π 函数,它是一个概率密度函数:
π
(
a
∣
s
)
=
P
(
A
=
a
∣
S
=
s
)
\pi (a|s)=P(A=a|S=s)
π(a∣s)=P(A=a∣S=s)
π
(
a
∣
s
)
\pi (a|s)
π(a∣s) 表示在
s
s
s 状态下做出动作
a
a
a 的概率密度。
3.1.1 确定性策略:
确定性策略是输入一个状态
s
s
s 策略会给出一个确定的动作
a
a
a。可以用以下形式表示。
μ
μ
μ 表示的是确定性策略。
t
t
t 时刻的状态写作
s
t
s_t
st。t时刻在
s
t
s_t
st 状态下采取的动作为
a
t
a_t
at。
a
t
=
μ
(
s
t
)
a_t=μ(s_t)
at=μ(st)
3.1.2 随机(不确定性)策略:
随机策略是输入一个状态
s
s
s,输出的是动作分布。随机策略通常用
π
π
π 表示。对于
s
s
s 条件下,每一个动作都是以概率被选取。
a
t
∼
π
(
⋅
∣
s
t
)
a_t \sim π(\cdot |s_t)
at∼π(⋅∣st)
随机策略可以根据动作是连续的还是离散的进行分类。连续动作是指动作可以连续取值,比如说,动作可以是力,力的数值可以用连续的数值表示,一般连续动作的取值是无法穷举的。而离散的动作比如在玩打飞机的时候,动作是上,下,左,右这种可以穷举的值。离散动作对应的随机策略称为分类策略。连续动作对应的随机策略称为对角高斯策略。
- 如果采用确定性策略,那么所有的动作将有规律可循,这在和人博弈时将成为非常大的劣势(可参考石头剪刀布这个游戏);使用随机策略,下一步动作将具有一定的不确定性,不会形成固定的套路,因此多应用里面policy是一个概率密度,最好是随机抽样得到的,要有随机性。
由之前所讲,我们能够总结一下,强化学习的随机性来源于动作的随机性和状态转移的随机性。
3.2 模型
模型 Model (非必须):智能体对环境进行的建模来模拟智能体与环境的交互机制,模型要能够计算状态转化概率(即下一个状态可能发生的概率)和预测即时奖励。
强化学习基于价值函数和策略可大致将智能体分为三种:
- 仅基于价值函数 Value Based:有对状态的价值估计函数,但是没有直接的策略函数,策略函数由价值函数间接得到。
- 仅直接基于策略 Policy Based:这样的智能体中行为直接由策略函数产生,智能体并不维护一个对各状态价值的估计函数。
- 演员-评判家形式 Actor-Critic:既有价值函数、也有策略函数。两者相互结合解决问题。
强化学习基于是否建立模型可大致将智能体分为两种:
- 不基于模型:智能体不试图了解环境如何工作,而仅聚焦于价值和/或策略函数。
- 基于模型:尝试建立一个描述环境运作过程的模型,以此来指导价值或策略函数的更新。
4 收获 Return
也可以叫它未来的累计奖励(cumulative future reward),由于未来的奖励(即下文中的
R
t
+
k
+
1
)
R_{t+k+1})
Rt+k+1) 具有不确定性(比如一年后的100元可能会贬值),我们会为未来的回报加一个衰减(折扣率)
γ
∈
[
0
,
1
]
\gamma \in [0,1]
γ∈[0,1] ,将未来的回报称为折扣回报(Discounted return)。
收获
G
t
G_t
Gt 为在一个马尔科夫奖励链上从t时刻开始往后所有的奖励的有衰减的总和。
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
G_t=R_{t+1}+\gamma R_{t+2}+...=\sum_{k=0}^\infty \gamma^k R_{t+k+1}
Gt=Rt+1+γRt+2+...=k=0∑∞γkRt+k+1
其中衰减系数体现了未来的奖励在当前时刻的价值比例,在
k
+
1
k+1
k+1 时刻获得的奖励R在t时刻的体现出的价值是
γ
k
R
\gamma^k R
γkR ,
γ
\gamma
γ 接近0,则表明趋向于“近视”性评估;
γ
\gamma
γ 接近1则表明偏重考虑远期的利益。
关于 G t G_t Gt 的不确定性:
将已观测到奖励用小写字母 r r r 表示,未观测到奖励大写字母 R R R 来表示。由于 G t G_t Gt 依赖于奖励 R R R 所以 G t G_t Gt 也是随机变量(随机变量的两个来源分别是动作和状态转移),由于未来时刻的奖励 R i R_i Ri 取决于状态 S i S_i Si 和 动作 A i A_i Ai。那么 G t G_t Gt 的随机性就是和未来所有的状态和动作有关。
5 价值函数 Value Function
未来奖励的预测,用来评价当前状态的好坏程度。当面对两个不同的状态时,智能体可以用一个Value值来评估这两个状态可能获得的最终奖励区别,继而指导选择不同的行为,即制定不同的策略。同时,一个价值函数是基于某一个特定策略的,不同的策略下同一状态的价值并不相同。
价值可以仅描述状态,也可以描述某一状态下的某个行为,在一些特殊情况下还可以仅描述某个行为。
5.1 状态价值函数
一个马尔科夫奖励过程中某一状态的价值函数为从该状态开始的马尔可夫链收获的期望:
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
∣
S
t
=
s
]
V_\pi(s)=E_\pi[G_t|S_t=s]\\ =E_\pi[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_t=s]
Vπ(s)=Eπ[Gt∣St=s]=Eπ[Rt+1+γRt+2+γ2Rt+3+...∣St=s]
V
π
V_\pi
Vπ 只和
π
π
π 和
s
s
s 有关,它能告诉我们当前的局势好不好。
如果
π
π
π 是固定的那么状态
s
s
s 越好
V
π
V_π
Vπ 的数值就越大,
V
π
V_π
Vπ 还能评价policy函数
π
π
π 的好坏,如果
π
π
π 越好,那么
V
π
V_π
Vπ 的平均值就越大。
5.2 动作价值函数(Action-value function)
由于收获
G
t
G_t
Gt 是一个随机变量,在使用
G
t
G_t
Gt 评估当前形势时,可以对
G
t
G_t
Gt 将里面的随机性(未来的动作和状态)做积分求其积分(与policy函数
π
\pi
π 有关),只留下状态
S
t
S_t
St 和 动作
A
t
A_t
At 作为观测到的数值来对待,求得的函数记作
Q
π
Q_\pi
Qπ 称为动态价值函数。比起
v
π
(
s
)
v_\pi(s)
vπ(s) 多考虑了此时的动作。
Q
π
(
s
t
,
a
t
)
=
E
[
G
t
∣
S
t
=
s
t
,
A
t
=
a
t
]
Q_\pi (s_t,a_t)= E[G_t|S_t=s_t,A_t=a_t]
Qπ(st,at)=E[Gt∣St=st,At=at]
使用最优的
π
\pi
π 函数(使
π
\pi
π 函数无关化)进行
Q
π
Q_\pi
Qπ 计算,记此时的
Q
π
Q_\pi
Qπ 为
Q
∗
Q^*
Q∗ 最优动作价值函数(Optimal action-value function)。此时可以根据
Q
∗
Q^*
Q∗ 对动作进行决策,
Q
∗
Q^*
Q∗ 认为怎样行动价值最高,agent就怎样行动。