这个系列的笔记打算写的是看了david silver的视频和sutton的introduction to rl(前几章)后的摘要,大概就是我觉得重要的东西。
我发现david silver的视频和introduction在大纲内容上是非常相似的,具体细节上,David silver的视频更强调实用,会有一些比较新的内容,sutton的书更理论,有助于完整地理解强化学习的本质。
这个笔记的内容不一定对,有些纯属个人瞎掰。另外由于本人是做无人机控制的,所以学习强化学习的过程中会比较关注控制相关的内容。
这次的笔记主要介绍强化学习的对象模型、重要的概念定义,一言以蔽之就是建模。
强化学习的“智能体”-“环境”结构
主要概念
强化学习研究的问题是智能体(agent)环境(environment)中进行一系列动作(action),然后如何通过环境反馈给智能体的状态(state)和奖励(reward)来不断提升自身的策略(policy)的问题。示意图如下:
这里面包含几个概念定义:
-
智能体(Agent):也可以叫做学习者,决策者,我们设计的强化学习算法的载体。
-
环境(Environment):外部的可以给智能体反馈信息的一切物体都可以成为环境,这里的外部不是以物理边界作为区分,比如机器人上的传感器是可以给智能体反馈状态信息的,所以传感器属于“环境”的一部分。
-
时间序列:这里假设智能体从环境采集信息以及改变动作都只能在一个离散的时刻序列上进行,表示为 t = 0 , 1 , 2 , 3 , … , t=0,1,2,3,\dots, t=0,1,2,3,…,。
-
状态(State):状态是一个表示能够表征整个系统(包括智能体、环境的动力学)所有信息的向量,比如小车的位置、速度、方向,锅炉的温度、气压。实际一般通过传感器来收集系统状态,因此往往只能得到系统的一部分状态,而非所有的状态,这个过程成为观测(Observe)。但是,为了方便前面的原理描述,往往假设可以拿到系统的完整状态。系统状态在
t t t 时刻的状态简写为 S t S_t St。 -
动作(Action):动作是智能体能够进行的能影响环境的行为,比如输出电压改变锅炉温度,输出推力改变小车位置,系统状态在 t t t 时刻的状态简写为 A t A_t At。
-
奖励(Reward):奖励是一个标量,智能体完成一个动作后,环境就会给智能体下一时刻的状态 s t + 1 s_{t+1} st+1和奖励 r t r_t rt,奖励是环境告诉智能体的对当前状态或者状态和动作的评价,这个评价一般是暂时的、粗糙的,比如下棋,在未分出胜负的步骤评价是0,输了的步骤评价为-1,赢了的步骤评价为+1。
有限马尔可夫决策过程
马尔可夫性
马尔可夫性是描述的是一个系统的未来的状态 S t + 1 S_{t+1} St+1只依赖当前状态 S t S_t St而非过去的所有状态 S 0 , S 1 , S 2 , … S_0,S_1,S_2,\dots S0,S1,S2,…,简单的说就是,根据系统的当前状态,当前动作,系统的动力学,就可以推算下一时刻的状态。用数学的语言来描述就是:
P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , … , S t ] P[S_{t+1} | S_t]=P[S_{t+1} | S_1,\dots,S_t] P[St+1∣St]=P[St+1∣S1,…,St]
大部分的控制系统的状态都有马尔可夫性。强化学习一般假设研究的对象的状态具有马尔可夫性,那么一个片段的强化学习信息序列(轨迹)可以表述为:
S 0 , A 0 , R 1 , S 1 , A 1 , S 2 , … , S t , A t , R t + 1 , S t + 1 S_0,A_0,R_1,S_1,A_1,S_2,\dots,S_t,A_t,R_{t+1},S_{t+1} S0,A0,R1,S1,A1,S2,…,St,At,Rt+1,St+1
概率转移矩阵
对于有马尔可夫性的系统,存在一个概率矩阵,描述的是下一时刻的状态与当前时刻的状态的关系,称为概率转移矩阵:
p ( s ′ , r ∣ s , a ) = P r { S t + 1 = s ′ , R t + 1 = r ∣ S t = s , A t = a } p(s',r|s,a)=Pr\{S_{t+1}=s',R_{t+1}=r|S_t=s,A_t=a\} p(s′,r∣s,a)=Pr{St+1=s′,Rt+1=r∣St=s,At=a}
这里大写的
S
t
S_t
St等表示的是一个代表t时刻的随机变量,而小写的
s
,
s
′
s,s'
s,s′表示的这个时刻的状态值,下一个时刻的状态值,是一个确定的常量。
一般地,转移矩阵是一个
n
⋅
n
n\cdot n
n⋅n的方阵,如果是一个确定性系统,那么转移矩阵的每行只有一个1,其他项为0。
目标、回报和片段
强化学习的目标是通过设计合理的动作序列,使得智能体在需要的时间段内尽可能多地获取奖励。因此强化学习优化的目标具有以下特点:
-
目标是一个长期累计的总体奖励,而非某一时刻的奖励
-
目标是由奖励这种简单的标量组成,是一种易于衡量的指标
回报(Return)是用数学语言描述的强化学习的目标:
G
t
=
R
t
+
1
+
R
t
+
2
+
⋯
+
R
T
G_t=R_{t+1}+R_{t+2}+\dots+R_T
Gt=Rt+1+Rt+2+⋯+RT
其中,
T
T
T是系统一个运行的最终时刻,对于棋牌类游戏就是分出输赢的那个时刻。一个系统从0时刻开始到
T
T
T时刻结束,这称为一个片段(episode),强化学习一般在经过大量片段的学习后,再通过少量的片段来测试学习到的算法的性能。
对于控制这种没有最终时刻,就是需要连续源源不断地运行下去的系统,往往需要引入折扣因子(discount)来防止回报趋向无穷大(训练容易发散):
G t = R t + 1 + γ R t + 2 + ⋯ = ∑ k = 0 ∞ γ k R t + k + 1 G_t=R_{t+1}+\gamma R_{t+2}+\dots=\sum_{k=0}^\infty \gamma^kR_{t+k+1} Gt=Rt+1+γRt+2+⋯=k=0∑∞γkRt+k+1
同时,可以通过调整 γ \gamma γ来使算法变得更有远见(趋向于1),或则更重视眼前的状态(趋向于0)。
另外,回报还有一个有趣的特性:
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
…
=
R
t
+
1
+
γ
(
R
t
+
2
+
γ
R
t
+
3
+
…
)
=
R
t
+
1
+
γ
G
t
+
1
\begin{aligned} G_t &= R_{t+1}+\gamma R_{t+2} + \gamma^2 R_{t+3}\dots \\ &= R_{t+1}+\gamma( R_{t+2} + \gamma R_{t+3} +\dots) \\ &= R_{t+1} + \gamma G_{t+1} \end{aligned}
Gt=Rt+1+γRt+2+γ2Rt+3…=Rt+1+γ(Rt+2+γRt+3+…)=Rt+1+γGt+1
策略与值函数
为了完成上述目标,强化学习制定了两个基本任务,一个是策略评价(policy evaluation),评价当前状态(或者当前状态做出指定动作)的优劣,一个是策略提升(policy improvement),根据评价的结果改进策略。
-
策略(Policy):一个能够根据某时刻的系统状态( S t S_t St),输出动作( A t A_t At)的函数。
-
值函数(value function): 用于策略评价的函数称为值函数。
一般地,策略用
π
\pi
π表示,
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)是描述的是策略在状态s时输出动作a的概率。对于确定性的策略,在某一个状态下只对应有一个a会输出1,其余为0。由于,策略会影响系统状态的转移,从而影响系统的回报,一般地,一个策略会对应一个值函数,表示为
υ
π
\upsilon_\pi
υπ。对于具有马尔可夫性的系统,
υ
π
\upsilon_\pi
υπ的数学表示为:
υ
π
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
]
\upsilon_\pi=\mathcal{E}_\pi[\sum_{k=0}^\infty \gamma^kR_{t+k+1}|S_t=s]
υπ=Eπ[k=0∑∞γkRt+k+1∣St=s]
其中
E
[
⋅
]
\mathcal{E}[\cdot]
E[⋅]表示求取括号内随机变量的期望,简单的说,值函数是一个从某时刻状态到相应标量评价的映射,而评价的理想值是回报的期望,描述的是当前的状态有多好。
上述的值函数仅仅基于系统状态,称为状态值函数(state-value function),还有一种认为动作与状态是独立的值函数
q
π
(
s
,
a
)
q_\pi(s,a)
qπ(s,a),它根据系统状态和动作评价智能体在当前状态做出这个动作有多好,数学表达式如下:
q
π
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
,
A
t
+
a
]
q_\pi=\mathcal{E}_\pi[\sum_{k=0}^\infty \gamma^kR_{t+k+1}|S_t=s, A_t+a]
qπ=Eπ[k=0∑∞γkRt+k+1∣St=s,At+a]
这种值函数称为动作值函数(action-value function)。
值函数的回溯
回溯(backup),也有人翻译成备份,我理解的它的概念:智能体在一个状态下做一个动作,然后收获下一个状态以及奖励,这称为一条经验,那么如何利用这条经验来改进值函数的过程。
状态值函数的回溯
贝尔曼方程(Bellman equation),强化学习的数学实质就是求解贝尔曼方程的解。状态值函数对应的贝尔曼方程:
υ
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
r
s
+
γ
G
t
+
1
∣
S
t
=
s
]
=
∑
a
π
(
a
∣
s
)
∑
s
′
,
r
[
r
s
+
γ
υ
π
(
s
′
)
]
\begin{aligned} \upsilon_\pi(s) &=\mathcal{E}_\pi[G_t|S_t=s]\\ &= \mathcal{E}_\pi[r_s + \gamma G_{t+1}|S_t=s]\\ &= \sum_a\pi(a|s)\sum_{s',r}[r_s + \gamma \upsilon_\pi(s')] \end{aligned}
υπ(s)=Eπ[Gt∣St=s]=Eπ[rs+γGt+1∣St=s]=a∑π(a∣s)s′,r∑[rs+γυπ(s′)]
上式就是状态值函数的贝尔曼方程,其回溯示意图如下:
在状态s下,根据 π \pi π选择不同的动作a,再以不同的概率进入下一个状态s’并收获奖励r。注意,贝尔曼方程是有两重求和,对应上图的两个分叉,所以,贝尔曼方程其实涵盖了下一时刻发生的所有可能性,而根据马尔可夫性,下一时刻理论上包含了后续所有的时刻的信息,即 υ π ( s ) \upsilon_\pi(s) υπ(s)数学实质上是当前状态在未来可能拿到的所有回报的期望。
动作值函数的回溯
动作值函数与状态值函数有细微的差异,其贝尔曼方程为:
q
π
(
s
,
a
)
=
r
s
+
γ
∑
s
′
p
s
s
′
a
∑
a
′
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
q_\pi(s,a)=r_s + \gamma\sum_{s'}p_{ss'}^a\sum_{a'}\pi(a'|s')q_\pi(s',a')
qπ(s,a)=rs+γs′∑pss′aa′∑π(a′∣s′)qπ(s′,a′)
可以看出相比于状态值函数,动作值函数回溯时还需要下一个状态的动作,求和顺序不一样。动作值函数的回溯图如下所示:
最优值函数与最优策略
强化学习的最终目标是要寻找最优的值函数和最优的策略,这里的最优策略($ \pi^*
)
是
指
能
使
智
能
体
拿
到
最
大
回
报
的
策
略
,
最
优
值
函
数
是
系
统
在
最
优
策
略
的
作
用
下
采
样
逼
近
得
到
的
值
函
数
,
即
(
)是指能使智能体拿到最大回报的策略,最优值函数是系统在最优策略的作用下采样逼近得到的值函数,即(
)是指能使智能体拿到最大回报的策略,最优值函数是系统在最优策略的作用下采样逼近得到的值函数,即( \upsilon_{ \pi^* }(s)=\upsilon^* (s) $ )。从数学上说,最优策略的定义如下:
π
≥
π
′
当
且
仅
当
任
何
状
态
下
υ
π
(
s
)
≥
υ
π
′
(
s
)
\pi\ge\pi' 当且仅当任何状态下\upsilon_{\pi}(s)\ge\upsilon_{\pi'}(s)
π≥π′当且仅当任何状态下υπ(s)≥υπ′(s)
最优的状态值函数定义如下:
υ
∗
(
s
)
=
max
π
υ
π
(
s
)
\upsilon^*(s)=\max_\pi \upsilon_\pi(s)
υ∗(s)=πmaxυπ(s)
最优的动作值函数定义如下:
q
∗
(
s
)
=
max
π
q
π
(
s
,
a
)
q^*(s)=\max_\pi q_\pi(s,a)
q∗(s)=πmaxqπ(s,a)
最优的状态值函数和最优的动作值函数存在以下关系:
q
∗
(
s
,
a
)
=
E
[
R
t
+
1
+
γ
υ
∗
(
S
t
+
1
)
∣
S
t
=
s
,
A
t
=
a
]
q^* (s,a)=\mathcal{E}[R_{t+1}+\gamma\upsilon^*(S_{t+1})|S_t=s,A_t=a]
q∗(s,a)=E[Rt+1+γυ∗(St+1)∣St=s,At=a]
最优的值函数和最优策略都是唯一的,这里先给一个结论,下一次的笔记做说明。