该书由清华大学李升波教授撰写的,主要面向工业控制领域的研究者和工程师,曾获得2024年度Springer中国新发展奖(China New Development Awards)。全书按照原理剖析、主流算法、典型示例的架构,系统地介绍了用于动态系统决策与控制的强化学习方法。全书共分为11章,内容涵盖了强化学习的基本概念、蒙特卡洛法、时序差分法、动态规划法、函数近似法、策略梯度法、近似动态规划、状态约束的处理和深度强化学习等知识点。书籍及源代码下载网站:书籍及代码链接点这里。
书籍链接:Reinforcement Learning for Sequential Decision and Optimal Control
本次笔记对应于原书第二单元的内容,主要介绍了RL的基本要素:环境、state、action、reward、policy以及RL的分类、学习效果的衡量方式,并从更广泛的角度探讨了RL。本系列之前博客的链接见系列博客地址。
2.1 强化学习的基本要素
2.1.1 环境模型
简单来说,环境模型就是给出当前的状态s和动作a,可以给出下一个状态s。为了后面更好的理解,在这里需要介绍一个相关概念——马尔可夫过程。
马尔可夫过程在机器学习、生物、化学等一系列建模种都常常被使用。该过程具有无记忆性,即未来的状态只与当前状态有关,与过去的状态无关。这也就是说,当前状态s已经蕴含了足够的历史信息。马尔可夫过程是随机过程里研究的一个重要领域,这里不做深入讨论,仅就马尔科夫链进行介绍。
一个马尔科夫链的状态空间 S \mathcal{S} S和动作空间 A \mathcal{A} A具有有限个元素(即离散的)。除了上述动作和状态空间,马尔可夫链还包括了状态转移概率矩阵 P \mathcal{P} P,其中 P ( s ′ ∣ s , a ) \mathcal{P}(s'|s,a) P(s′∣s,a)表示在状态s下采取动作a后转移到状态s’的概率。这里需要注意的是,状态转移概率矩阵是一个三维矩阵,即 P ∈ R ∣ S ∣ × ∣ S ∣ × ∣ A ∣ \mathcal{P} \in \mathbb{R}^{|\mathcal{S}| \times |\mathcal{S}| \times |\mathcal{A}|} P∈R∣S∣×∣S∣×∣A∣。马尔可夫过程也可通过一个带权的有向图来表示,其中节点表示状态,边表示状态转移的概率(不同边的权值代表采取不同的动作导致的不同状态转移概率)。当状态部分客观时(即第一篇博客里介绍过的RL的困境之一),可以通过隐马尔可夫模型(HMM)进行建模。这里不仅包含上述状态之间转移的概率,还包含了状态到观测之间的概率。
2.1.2 State-Action Sample
在RL中,由state和action组成的sample蕴含着环境的信息,也是后续一系列算法的基础。这里介绍一下有关的概念。
- sample:三元组 ( s t , a t , s t + 1 ) (s_t,a_t,s_{t+1}) (st,at,st+1),其中 s t s_t st表示当前状态, a t a_t at表示当前动作, s t + 1 s_{t+1} st+1表示下一个状态。
- trajectory:由一系列sample按照时间顺序排列组成,即 s 0 , a 0 , s 1 , a 1 , . . . , s T s_0,a_0,s_1,a_1,...,s_T s0,a0,s1,a1,...,sT。
- dataset:可以包含一条或多条trajectory,即 D = def { s 0 , a 0 , s 1 ⏟ Sample , a 1 , s 2 , a 2 , ⋯ ⋯ , s t , a t , s t + 1 ⏟ Sample , a t + 1 , ⋯ } , D\stackrel{\text{def}}{=}\left\{\underbrace{s_0,a_0,s_1}_{\text{Sample}},a_1,s_2,a_2,\cdots\cdots,\underbrace{s_t,a_t,s_{t+1}}_{\text{Sample}},a_{t+1},\cdots\right\}, D=def⎩ ⎨ ⎧Sample s0,a0,s1,a1,s2,a2,⋯⋯,Sample st,at,st+1,at+1,⋯⎭ ⎬ ⎫,
2.1.3 Policy
所谓策略就是一种从state道action的映射,即 π : S → A \pi: \mathcal{S} \rightarrow \mathcal{A} π:S→A。有了策略之后就引入了一个重要的概念:马尔可夫决策过程(MDP)。一个具有马尔可夫环境和策略的问题可以被建模为一个MDP。MDP的策略有一个重大特点,即动作只取决于当前的状态,而不是历史状态。这也是MDP的马尔可夫性质。
2.1.3.1 策略的分类
主要分为两类,即确定性策略和随机策略。
- 确定性策略: π ( s ) : S → A \pi(s): \mathcal{S} \rightarrow \mathcal{A} π(s):S→A,即对于每一个状态s,都有一个确定的动作a。
- 随机策略: π ( a ∣ s ) : S × A → [ 0 , 1 ] \pi(a|s): \mathcal{S} \times \mathcal{A} \rightarrow [0,1] π(a∣s):S×A→[0,1],即对于每一个状态s和动作a,都有一个概率。也就是说,随机策略是一个分布。
2.1.3.2 策略的表示
- 表格表示:对于状态空间和动作空间较小且离散的情况(有限集、低维),可以使用表格来表示策略。在早期的RL算法中,常常使用表格来表示策略。
- 参数表示:对于状态空间和动作空间较大且连续的情况,可以使用函数来表示策略。而函数中包含一些参数。常用的函数为多项式函数、神经网络等。使用参数表示可以节省计算和存储空间,也可以纳入一些先验知识。对于确定和随即策略,参数表示分别为:
- 确定性策略: π θ ( s ) \pi_{\theta}(s) πθ(s),其中 θ \theta θ是参数。
- 随机策略: π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(a∣s),其中 θ \theta θ是参数。
2.1.4 Reward
接下来就到了RL里的一系列核心概念——奖励(reward)、回报(return)、值函数(value function)等。它们的关系我这里画了一张图来更形象的说明:
2.1.4.1 Reward
r
s
s
′
a
=
d
e
f
r
t
=
r
(
s
t
,
a
t
,
s
t
+
1
)
.
r_{ss^{\prime}}^{a}\stackrel{\mathrm{def}}{=}r_{t}=r(s_{t},a_{t},s_{t+1}).
rss′a=defrt=r(st,at,st+1).
reward可以看作从sample三元组到实数的映射,即
r
:
S
×
A
×
S
→
R
r: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \rightarrow \mathbb{R}
r:S×A×S→R。上面这种形式的reward保证了reward只与当前状态、动作和下一个状态有关,而与历史状态无关。这种reward的构建方式与一个马尔可夫环境结合,就保证了我们可以把一个序列决策问题拆分为若干小的子问题进行求解。这也是后续可以利用Bellman最优性原理构建Bellman方程的基础。
2.1.4.2 (Long-term)Return
return是一个与reward紧密相连却又有所区别的概念,两者很容易在刚学的时候搞混,因此需要着重区分。return是一个序列的reward的和的函数,主要有两种形式:
- Discounted return:采用折扣因子 γ \gamma γ进行加权求和, γ \gamma γ是一个0到1的数来保证序列的收敛性。即 G t γ = ∑ k = 0 ∞ γ k r t + k . G_{t}^{\gamma}=\sum_{k=0}^{\infty} \gamma^{k} r_{t+k}. Gtγ=k=0∑∞γkrt+k.
- Average return:从起始到终止的reward的平均值,即 G t a v g = lim T → ∞ 1 T ∑ i = 0 T − 1 r t + i G_t^{avg}=\lim_{T\to\infty}\frac{1}{T}\sum_{i=0}^{T-1}r_{t+i} Gtavg=T→∞limT1i=0∑T−1rt+i
Discounted return更适用于infinite horizon的、stochastic问题,而average return更适用于finite horizon的、deterministic(这样的话能收敛,自然为有限的)问题。总的来说,Discouted return更常用。在以后的笔记中若无特殊说明,记号 G t G_t Gt表示Discounted return。
2.1.4.3 值函数
想必对于RL有一些了解的话都听说过值函数。鉴于之前对于这个概念的认识比较模糊,我在这里根据原书的内容再系统梳理一遍。
值函数是return的期望,因此也叫expected return,它常常被用于衡量一个策略的好坏。值函数有两种形式:状态值函数(state value function)和动作值函数(action value function):
- 状态值函数:
v π ( s ) = def E π { G t ∣ s } = E π { ∑ i = 0 + ∞ γ i r t + i ∣ s t = s } v^\pi(s)\stackrel{\text{def}}{=}\mathbb{E}_\pi\{G_t|s\}=\mathbb{E}_\pi\left\{\sum_{i=0}^{+\infty}\gamma^ir_{t+i} |s_t=s\right\} vπ(s)=defEπ{Gt∣s}=Eπ{i=0∑+∞γirt+i∣st=s}
值函数的定义也暗示了这里的策略 π \pi π是一个随机策略。因为如果是确定策略的话,就不存在期望了。上式直接就退化为return的定义式了。 - 动作值函数:
q π ( s , a ) = d e f E π { G t ∣ s , a } = E π { ∑ i = 0 + ∞ γ i r t + i ∣ s t = s , a t = a } \begin{aligned}q^{\pi}(s,a)&\stackrel{\mathrm{def}}{=}\mathbb{E}_{\pi}\{G_{t}|s,a\}\\&=\mathbb{E}_{\pi}\left\{\sum_{i=0}^{+\infty}\gamma^{i}r_{t+i}\mid s_{t}=s,a_{t}=a\right\}\end{aligned} qπ(s,a)=defEπ{Gt∣s,a}=Eπ{i=0∑+∞γirt+i∣st=s,at=a}
两种值函数之间以及内部均有关系,这也是值函数的一个重要性质。首先是用动作值函数来表示状态值函数:
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
v^\pi(s)=\sum_{a\in\mathcal{A}}\pi(a|s)q^\pi(s,a)
vπ(s)=a∈A∑π(a∣s)qπ(s,a)
这个式子的意义是,一个状态的值函数等于在这个状态下所有动作的值函数的期望。
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)是一个概率值(即随即策略的分布),因此该式子的含义也可解释为固定某一个状态s,枚举所有可能的动作a后对于所有的动作值函数
q
π
(
s
,
a
)
q^\pi(s,a)
qπ(s,a)进行加权求和。接下来再看看如何使用状态值函数来表示动作值函数:
q
π
(
s
,
a
)
=
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
π
(
s
′
)
)
q^\pi(s,a)=\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^a+\gamma v^\pi(s^{\prime})\right)
qπ(s,a)=s′∈S∑P(s′∣s,a)(rss′a+γvπ(s′))
这个式子其实也很好理解。这里我们已知了当前的状态s和动作a,那么为了使用状态值函数来表示动作值函数,我们需要考虑到下一个状态s’并利用下一个状态的状态值函数
v
π
(
s
′
)
v^\pi(s')
vπ(s′)。考虑到我们的策略为随即策略,因此下一个状态s’并不是固定的,而是需要对于状态空间中所有可能的状态进行加权求和。这里的加重就是状态转移概率
P
(
s
′
∣
s
,
a
)
\mathcal{P}(s'|s,a)
P(s′∣s,a)。这里主要部分就讲解完了。那么为什么还要加上一个reward
r
s
s
′
a
r_{ss^{\prime}}^a
rss′a呢?这是由于状态值函数和动作值函数处于不同的“位置”导致的。放一张图看得更清楚一点:
可以看出,动作值函数
q
π
(
s
,
a
)
q^\pi(s,a)
qπ(s,a)介于状态值函数
v
π
(
s
)
v^\pi(s)
vπ(s)和
v
π
(
s
′
)
v^\pi(s')
vπ(s′)之间,因此需要加上一个reward来进行修正。有了上述两个描述两种值函数之间关系的式子,就可以通过代入消元得到两种值函数内部的递归关系:
v
π
(
s
)
=
E
π
{
r
+
γ
v
π
(
s
′
)
∣
s
}
=
∑
a
∈
s
a
π
(
a
∣
s
)
{
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
π
(
s
′
)
)
}
v^{\pi}(s)=\mathbb{E}_{\pi}\{r+\gamma v^{\pi}(s^{\prime})|s\}=\sum_{a\in s^{a}}\pi(a|s)\left\{\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^{a}+\gamma v^{\pi}(s^{\prime})\right)\right\}
vπ(s)=Eπ{r+γvπ(s′)∣s}=a∈sa∑π(a∣s){s′∈S∑P(s′∣s,a)(rss′a+γvπ(s′))}
q
π
(
s
,
a
)
=
E
π
{
r
+
γ
v
π
(
s
′
)
∣
s
,
a
}
=
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
)
\begin{aligned}q^{\pi}(s,a)&=\mathbb{E}_{\pi}\{r+\gamma v^{\pi}(s^{\prime})|s,a\}\\&=\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^{a}+\gamma\sum_{a^{\prime}\in\mathcal{A}}\pi(a^{\prime}|s^{\prime})q^{\pi}(s^{\prime},a^{\prime})\right)\end{aligned}
qπ(s,a)=Eπ{r+γvπ(s′)∣s,a}=s′∈S∑P(s′∣s,a)(rss′a+γa′∈A∑π(a′∣s′)qπ(s′,a′))
这里两个式子的得到无需多言,就是代入就行了。这两个式子的最重要的贡献再与在值函数与策略之间建立了联系,这也给出了如何评估一个策略好坏的方法。这也是后续RL算法的基础。评估方法可分为sample-based和value-based,在后续博客会有介绍。以上两式也被称为self-consistency condition。
2.2 强化学习的定义
这里给出了强化学习算法的定义:
max
π
/
min
π
J
(
π
)
=
E
s
∼
d
i
n
i
t
(
s
)
{
v
π
(
s
)
}
,
\max_\pi/\min_\pi J(\pi)=\mathbb{E}_{s\sim d_{\mathrm{init}}(s)}\{v^\pi(s)\},
πmax/πminJ(π)=Es∼dinit(s){vπ(s)},
subject to
(
1
)
P
r
{
s
t
+
1
=
s
′
∣
s
t
=
s
,
a
t
=
a
}
=
P
s
s
′
a
,
o
r
(
2
)
D
=
{
s
0
,
a
0
,
s
1
,
a
1
,
s
2
,
a
2
,
⋯
⋯
,
s
t
,
a
t
,
s
t
+
1
,
a
t
+
1
,
⋯
}
,
a
∈
A
,
s
∈
S
,
\begin{gathered} \text{subject to} \\ (1)\mathrm{Pr}\{s_{t+1}=s^{\prime}|s_{t}=s,a_{t}=a\}=\mathcal{P}_{ss^{\prime}}^{a}, \\ or \\ (2)\mathcal{D}=\{s_{0},a_{0},s_{1},a_{1},s_{2},a_{2},\cdots\cdots,s_{t},a_{t},s_{t+1},a_{t+1},\cdots\}, \\ a\in\mathcal{A},s\in\mathcal{S}, \end{gathered}
subject to(1)Pr{st+1=s′∣st=s,at=a}=Pss′a,or(2)D={s0,a0,s1,a1,s2,a2,⋯⋯,st,at,st+1,at+1,⋯},a∈A,s∈S,
这里的
J
(
π
)
J(\pi)
J(π)是一个关于策略
π
\pi
π的函数,表示策略
π
\pi
π的好坏,叫做 overall objective function (或者performance index);
d
i
n
i
t
(
s
)
d_{\mathrm{init}}(s)
dinit(s)是一个初始状态的分布;
v
π
(
s
)
v^\pi(s)
vπ(s)是策略
π
\pi
π的状态值函数。约束条件为各个状态之间的转移概率或者是一个数据集
D
\mathcal{D}
D。
2.3 强化学习的分类
强化学习的分类有很多种,这里介绍几种常用的分类方法:
- 按环境模型是否已知:
- Model-based:环境模型已知。这类问题很类似于最优控制,所用到的知识很多也来自于最优控制。
- Model-free:环境模型未知。这类问题中我们不知道环境的具体模型,只能通过与环境的交互来学习。这实际上就是Trial-and-error的过程。描述此类算法的很多概念来自于统计学习。
- 按是否使用了最优性条件:
- Indirect RL:使用最优性条件。这类算法使用、Bellman方程或者 Hamilton-Jacobi-Bellman的解;来作为最优策略。
- Direct RL:不使用最优性条件。这类算法直接学习策略,在整个策略空间中进行搜索。
这里以书中的的表格做一个总结:
对这里表格中具体名词的解释参考原书或者后续博客内容。下面重点讲一讲上面提到的Indirect RL和Direct RL。这两种方法与贝尔曼最优性原理有着密切的联系,详见贝尔曼最优性原理。注意,这里只是先介绍一下Indirect RL和Direct RL的思想,具体的算法会在后续博客中专门介绍。
2.3.1 Indirect RL
这里的核心思想是:既然Bellman方程是最优策略的充要条件,那么就可以通过求解Bellman方程来得到最优策略。求解的方法又可进一步分为策略迭代( policy iteration)和值迭代( value iteration)。
2.3.1.1 策略迭代
策略迭代分为两步:策略评估和策略改进。首先先根据策略对应的值函数来评估策略的好坏,然后再根据评估的结果来改进策略。这个过程是一个迭代的过程,直到策略不再发生变化为止。
2.3.1.2 值迭代
把值函数当作需要迭代的变量,使用ixed-point iteration计数进行迭代。当找到最优值函数后,最优策略就很容易得到了(采用greedy策略即可)。
2.3.2 Direct RL
Direct RL的核心思想是直接学习策略,而不是通过求解Bellman方程来得到最优策略。这里求解的核心思想就是直接优化一个performance index
J
(
π
)
J(\pi)
J(π)。
θ
∗
=
arg
max
θ
J
(
θ
)
=
arg
max
θ
E
s
∼
d
i
n
i
t
(
s
)
{
v
π
θ
(
s
)
}
,
θ
←
θ
+
α
⋅
∇
θ
J
(
θ
)
\theta^{*}=\arg\max_{\theta}J(\theta)=\arg\max_{\theta}\mathbb{E}_{s\sim d_{\mathrm{init}}(s)}\{v^{\pi_{\theta}}(s)\},\\\theta\leftarrow\theta+\alpha\cdot\nabla_{\theta}J(\theta)
θ∗=argθmaxJ(θ)=argθmaxEs∼dinit(s){vπθ(s)},θ←θ+α⋅∇θJ(θ)
注意,这里的方法就很类似于深度学习里面那一套了。
最常用的就是一阶优化,如梯度下降。其实这里就相当于求解一个优化问题,有很多方法可以用。为什么不用二阶优化,如牛顿法等?其实更多还是基于计算的考虑,因为RL的问题往往是高维的,计算复杂度很高。因此,直接优化方法更加常用。
从这里也可以看出,Direct RL的关键点有两个,一是指标 J ( θ ) J(\theta) J(θ)的选择,二是优化方法的选择。这两个问题的解决是Direct RL的核心。
2.4 贝尔曼最优性原理
后续内容的核心,这里有必要重点讲一讲。
2.4.1 贝尔曼最优性原理
原始的贝尔曼最优性原理是这样的:无论初始的状态和决策是什么,剩下的决策仍然构成一个最优策略。
2.4.2 最优值函数和最优策略
最优策略比其他任何策略都要好,至少不会更差。而最优值函数是最优策略对应的值函数。它们的定义如下:
v
∗
(
s
)
=
d
e
f
v
π
∗
(
s
)
=
max
π
v
π
(
s
)
,
∀
s
∈
S
.
v^*(s)\stackrel{\mathrm{def}}{=}v^{\pi^*}(s)=\max_\pi v^\pi(s) ,\forall s\in\mathcal{S}.
v∗(s)=defvπ∗(s)=πmaxvπ(s),∀s∈S.
其中,
π
∗
\pi^*
π∗是最优策略。同样的,最优动作值函数也有类似的定义:
q
∗
(
s
,
a
)
=
d
e
f
q
π
∗
(
s
,
a
)
=
max
π
q
π
(
s
,
a
)
,
∀
s
∈
S
,
a
∈
A
.
q^*(s,a)\stackrel{\mathrm{def}}{=}q^{\pi^*}(s,a)=\max_\pi q^\pi(s,a) ,\forall s\in\mathcal{S},a\in\mathcal{A}.
q∗(s,a)=defqπ∗(s,a)=πmaxqπ(s,a),∀s∈S,a∈A.
二者的关系可由类似于上面推导两种值函数的关系那里的方法得到:
v
∗
(
s
)
=
max
a
∈
A
q
∗
(
s
,
a
)
,
∀
s
∈
S
,
q
∗
(
s
,
a
)
=
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
∗
(
s
′
)
)
,
∀
s
∈
S
,
∀
a
∈
A
.
v^{*}(s)=\max_{a\in\mathcal{A}}q^{*}(s,a),\forall s\in\mathcal{S},\\q^{*}(s,a)=\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^{a}+\gamma v^{*}(s^{\prime})\right),\forall s\in\mathcal{S},\forall a\in\mathcal{A}.
v∗(s)=a∈Amaxq∗(s,a),∀s∈S,q∗(s,a)=s′∈S∑P(s′∣s,a)(rss′a+γv∗(s′)),∀s∈S,∀a∈A.
值得注意的是,为什么第一个式子是一个max而下面的第二个是一个求和呢?第一个式子是max是因为在状态s下对应于最优策略的最优动作a只有一个(或者说有多个但是它们的动作值函数值相同)。而第二个式子是求和是因为在状态s下对应于最优策略的最优动作a只有一个,但是即使对于同样的状态s和动作a,下一个状态s’也是不确定的,因此需要对所有可能的下一个状态进行加权求和。当获得了最优的动作值函数后,最优策略就很容易得到了:
a
∗
=
arg
max
a
q
∗
(
s
,
a
)
.
a^*=\arg\max_aq^*(s,a).
a∗=argamaxq∗(s,a).
2.4.3 贝尔曼方程
2.4.3.1 状态值函数的贝尔曼方程(第一类贝尔曼方程)
把最优值函数那里的二式代入一式,可得第一类贝尔曼方程:
v
∗
(
s
)
=
max
a
∈
A
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
v
∗
(
s
′
)
)
,
∀
s
∈
S
.
v^*(s)=\max_{a\in\mathcal{A}}\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^a+\gamma v^*(s^{\prime})\right),\forall s\in\mathcal{S}.
v∗(s)=a∈Amaxs′∈S∑P(s′∣s,a)(rss′a+γv∗(s′)),∀s∈S.
这个式子的含义可以这样理解:在状态s下,最优的状态值函数
v
∗
(
s
)
v^*(s)
v∗(s)等于在所有可能的动作a中选择最优的动作a*后对于所有可能的下一个状态s’进行加权求和(期望)。
2.4.3.2 动作值函数的贝尔曼方程(第二类贝尔曼方程)
把最优值函数那里的一式代入二式,可得第二类贝尔曼方程:
q
∗
(
s
,
a
)
=
∑
s
′
∈
δ
P
(
s
′
∣
s
,
a
)
(
r
s
s
′
a
+
γ
max
a
′
∈
A
q
∗
(
s
′
,
a
′
)
)
,
∀
s
∈
S
,
∀
a
∈
A
.
q^*(s,a)=\sum_{s^{\prime}\in\delta}\mathcal{P}(s'|s,a)\left(r_{ss^{\prime}}^a+\gamma\max_{a^{\prime}\in\mathcal{A}}q^*(s^{\prime},a^{\prime})\right),\forall s\in\mathcal{S},\forall a\in\mathcal{A}.
q∗(s,a)=s′∈δ∑P(s′∣s,a)(rss′a+γa′∈Amaxq∗(s′,a′)),∀s∈S,∀a∈A.
2.5 从更广阔的角度看强化学习
2.5.1 初始状态的分布的影响
这里要讨论一个有意思的问题,即初始状态对于RL算法求出的策略到底有没有影响。为了回答这个问题,首先需要定义两种由不同方法求出的最优策略。
- 由最大化指标
J
(
π
)
J(\pi)
J(π)求出的最优策略
π
o
\pi^o
πo:这种方法是直接优化
J
(
π
)
J(\pi)
J(π),即直接优化performance index。这种方法的最优策略记为
π
o
\pi^o
πo。这种求解方法我的理解就是上面见过的Direct RL。
π ∘ ( s ) = arg max π ( s ) ∈ Π J ( π ( s ) ) \pi^{\circ}(s)=\arg\max_{\pi(s)\in\Pi}J\big(\pi(s)\big) π∘(s)=argπ(s)∈ΠmaxJ(π(s)) - 由贝尔曼方程求出的最优策略
π
∗
\pi^*
π∗:这种方法是通过求解贝尔曼方程得到的。这种方法得出的最优策略因为在计算的时候已经枚举了所有状态,因此不受初始状态的影响。
π ∗ ( s ) = arg max a ∈ A ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ( r + γ v ∗ ( s ′ ) ) , ∀ s ∈ S , \pi^{*}(s)=\arg\max_{a\in\mathcal{A}}\sum_{s^{\prime}\in\mathcal{S}}\mathcal{P}(s'|s,a)\Big(r+\gamma v^{*}(s^{\prime})\Big),\forall s\in\mathcal{S}, π∗(s)=arga∈Amaxs′∈S∑P(s′∣s,a)(r+γv∗(s′)),∀s∈S,
该式可通过把最优值函数那里的第一个式子代入第二个式子得到(或者从第一类贝尔曼方程也可得到)。
下面要讨论两种情况,即由贝尔曼方程求出的最优策略 π ∗ \pi^* π∗在不在策略集合 Π \Pi Π中。这里的策略集合指的是所有可行的策略的集合,主要是由策略的表现形式而非策略本身来决定的。比如当我们采用线性函数来参数化的表达策略时,自然有些策略是不可行的。
- 情况一: π ∗ ∈ Π \pi^*\in\Pi π∗∈Π:这种情况下,由贝尔曼方程求出的最优策略 π ∗ \pi^* π∗与由最大化指标 J ( π ) J(\pi) J(π)求出的最优策略 π o \pi^o πo是一样的。这种情况下,初始状态的分布对于最优策略是没有影响的。此时 J ( π ∗ ) = J ( π ∘ ) J(\pi^*)=J(\pi^\circ) J(π∗)=J(π∘)。
- 情况二: π ∗ ∉ Π \pi^*\notin\Pi π∗∈/Π:这种情况下,由贝尔曼方程求出的最优策略 π ∗ \pi^* π∗与由最大化指标 J ( π ) J(\pi) J(π)求出的最优策略 π o \pi^o πo是不一样的。此时 J ( π o ) ≤ J ( π ∗ ) J(\pi^o)\le J(\pi^*) J(πo)≤J(π∗)。此时,初始状态的分布对于**由最大化指标 J ( π ) J(\pi) J(π)求出的最优策略 π o \pi^o πo**是有影响的。如果使用线性函数这种本身对于策略空间有较大限制的方法,初始状态会对于求解有很大的影响。但是值得指出的是,因为目前使用的参数化策略表示方法通常是神经网络,而神经网络的表达能力很强,其能表达的策略空间接近于整个策略空间,因此两种方法求出的最优策略是基本一样的。
关于以上两种情况的详细数学推导参看原书即可。
2.5.2 RL和MPC的区别
MPC是一种控制方法,即model predictive control。
上图展示了一种追踪一个固定参考信号(图上灰色虚线)的过程。在时间t时,MPC会根据当前的状态s和参考信号r,通过最小化一个cost function来得到一个未来若干步的action序列,然后把序列的第一个作为input给系统。
MPC和RL的区别如下:
除此之外,它们的区别还有:
- 需不需要知道环境模型:MPC需要知道环境模型,而RL不需要。
- 是否在线优化:MPC是在线优化,即在每一个时间步都会进行优化;而RL是offline优化,可以离线的求出策略之后在线运行。
- 对于不可行state的tolerance:因为RL是在整个state space内进行搜索,因此不可避免地会遇到一些不可行的state。而MPC则是在state与state之间进行转移,对于不可行state的容忍度更高。
2.5.3 RL的四个要素的不同组合
RL由四个要素构成:
{
D
,
π
,
v
π
,
P
}
\{\mathcal{D},\pi,v^{\pi},\mathcal{P}\}
{D,π,vπ,P},分别是数据集、策略、值函数和环境模型。
这四个要素的不同组合对应于不同的问题:
由图可得具体的问题形式,图中阴影部分表示可选的部分。
2.6 RL的学习效果的衡量
2.6.1 模型表现
R
A
v
g
=
∑
d
i
n
i
t
(
s
)
{
1
N
∑
i
=
1
N
G
i
(
s
)
}
,
G
i
(
s
)
=
∑
t
=
0
L
i
−
1
r
t
,
R_{\mathrm{Avg}}=\sum d_{\mathrm{init}}(s)\Big\{\frac{1}{N}\sum_{i=1}^{N}G_{i}(s)\Big\},\\G_{i}(s)=\sum_{t=0}^{L_{i}-1}r_{t},
RAvg=∑dinit(s){N1i=1∑NGi(s)},Gi(s)=t=0∑Li−1rt,
total average return (TAR)是一种常见的衡量RL算法性能的指标。这个指标的计算方法是:首先对于每一个初始状态s,计算出它的平均回报
G
i
(
s
)
G_i(s)
Gi(s),然后再对所有的初始状态s求和。对于每个初始状态s,我们都会进行N次实验,每次实验的长度为
L
i
L_i
Li。注意,对于不同的初始状态对应的实验长度
L
i
L_i
Li可能是不同的,而且这个长度不是必须的。当任务为episodic时,会自动达到终止状态而停止;当任务为continuing时,才需要显式指定长度。
另外注意,这里在计算 G i ( s ) G_i(s) Gi(s)的时候并没有像之前的return那样加上折扣因子 γ \gamma γ,这是因为这里的目的是衡量算法的性能,而不是衡量长期的回报。这样也能为采取不同的折扣因子的算法提供一个公平的比较,防止折扣因子的选择对于算法性能的影响(比如恰好训练和评估的折扣因子选为一样的)。
最后,对于某些随机任务,我们只评估其确定性的部分。因为对于最优策略来说,其确定性部分应是一样的。
2.6.2 (学习)准确率
R
A
v
g
=
∑
d
i
n
i
t
(
s
)
{
1
N
∑
i
=
1
N
G
i
(
s
)
}
,
G
i
(
s
)
=
∑
t
=
0
L
i
−
1
r
t
,
R_{\mathrm{Avg}}=\sum d_{\mathrm{init}}(s)\Big\{\frac{1}{N}\sum_{i=1}^{N}G_{i}(s)\Big\},\\G_{i}(s)=\sum_{t=0}^{L_{i}-1}r_{t},
RAvg=∑dinit(s){N1i=1∑NGi(s)},Gi(s)=t=0∑Li−1rt,
准确率就是对于策略
π
(
s
)
\pi(s)
π(s)或者状态值函数
v
π
(
s
)
v^\pi(s)
vπ(s)的估计与真实值之间差距的平方按照每个状态s的分布的加权平均后的均方根。但是这里就有个很大的问题,在求出最优策略之前我们怎么知道真实值呢?这本身看上去就像一个悖论,因此这个指标一般只适用于一些极其简单的问题。
2.6.3 学习时间
学习时间通常有两种表现形式:
- 时钟时间:即算法运行的实际时间。
- 迭代次数:即算法运行的迭代次数。
后者常常更常用,因为不同的电脑运行速度不同,时钟时间并不具有普适性。通常取算法到达某个点的时间作为学习时间。
2.6.4 Sample Efficiency
这个指标是指算法需要多少新样本才能达到某个性能水平。这个指标是一个很重要的指标,因为在很多实际问题中,样本是很宝贵的。这个指标的计算方法是:在达到某个性能水平时,算法所用的新样本数。对于重复使用的历史样本不计入其中。
2.6.5 Approximation准确率
R
M
S
E
v
A
p
p
r
=
∑
s
∈
S
d
π
(
s
)
(
V
π
(
s
;
w
)
−
v
π
(
s
)
)
2
\mathrm{RMSE}_{v\mathrm{Appr}}=\sqrt{\sum_{s\in\mathcal{S}}d_\pi(s)\left(V^\pi(s;w)- v^\pi(s)\right)^2}
RMSEvAppr=s∈S∑dπ(s)(Vπ(s;w)−vπ(s))2
不同于学习准确率关注当前策略与最优策略之间的差距,Approximation准确率关注的是使用当前的参数来逼近真实的值函数的准确率。同样的,真实的值函数是未知的,因此这个指标也只适用于一些简单的问题。或者可以通过在当前策略下与环境多次交互收集数据来近似得到真实值函数。
本文为博主原创文章,未经博主允许禁止转载。私自转载将追究相关责任。如有问题,欢迎指正。