西瓜书第十六章-强化学习
一、任务与奖赏
上图给出了强化学习的一个简单图示。强化学习任务通常用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述:机器处于环境E中,状态空间为X,其中每个状态
x
∈
X
x\in X
x∈X是机器感知到的环境的描述,如在种瓜任务上这就是当前瓜苗长势的描述;机器能采取的动作构成了动作空间A,如种瓜过程中有浇水、施不同的肥、使用不同的农药等多种可供选择的动作;若某个动作
a
∈
A
a\in A
a∈A作用在当前状态
x
x
x上,则潜在的转移函数P将使得环境从当前状态按某种概率转移到另一个状态,如瓜苗状态为缺水,若选择动作浇水,则瓜苗长势会发生变化,瓜苗有一定的概率恢复健康,也有一定的概率无法恢复;在转移到另一个状态的同时,环境会根据潜在的“奖赏”(reward)函数R反馈给机器一个奖赏,如保持瓜苗健康对应奖赏+1,瓜苗凋零对应奖赏-10,最终种出了好瓜对应奖赏+100。综合起来,强化学习任务对应了四元组
E
=
⟨
X
,
A
,
P
,
R
⟩
E=\langle X,A,P,R\rangle
E=⟨X,A,P,R⟩,其中
P
:
X
×
A
×
X
↦
R
P:X\times A\times X \mapsto \mathbb R
P:X×A×X↦R指定了状态转移概率,
R
:
X
×
A
×
X
↦
R
R:X\times A\times X\mapsto \mathbb R
R:X×A×X↦R指定了奖赏;在有的应用中,奖赏函数可能仅与状态转移有关,即
R
:
X
×
X
↦
R
R:X\times X\mapsto \mathbb R
R:X×X↦R
上图给出了一个简单例子:给西瓜浇水的马尔可夫决策过程。该任务中只有四个状态(健康、浇水、溢水、凋亡)和两个动作(浇水、不浇水),在每一步转移后,若状态是保持瓜苗健康则获得奖赏1,瓜苗缺水或溢水奖赏为-1,这时通过浇水或不浇水可以恢复健康状态,当瓜苗凋亡时奖赏最小值-100且无法恢复。图中箭头表示状态转移,箭头旁的
a
,
p
,
r
a,p,r
a,p,r分别表示导致状态转移的动作、转移概率以及返回的奖赏。容易看出,最优策略在“健康”状态选择动作“浇水”、在“溢水”状态选择动作“不浇水”、在“缺水”状态选择选择动作“浇水”、在“凋亡状态”下可选择任意动作。
需注意“机器”与“环境”的界限,例如在种西瓜任务中,环境是西瓜生长的自然世界;在下棋对弈种,环境是棋盘与对手;在机器人控制中,环境是机器人的躯体与物理世界。总之,在环境中状态的转移、奖赏的返回是不受机器控制的,机器只能通过选择要执行的动作来影响环境,也只能通过观测转移后的状态和返回的奖赏来感知环境。
机器要做的是通过在环境种不断地尝试而学得一个 “策略”(policy)
π
\pi
π,根据这个策略,在状态x下就能得知要执行的动作
α
=
π
(
x
)
\alpha = \pi(x)
α=π(x),例如看到瓜苗状态是缺水时,能返回动作“浇水”。策略有两种表示方法:一种是将策略表示为函数
π
:
X
↦
A
\pi:X\mapsto A
π:X↦A,确定性策略常用这种表示;另一种是概率表示
π
:
X
×
A
↦
R
\pi:X\times A\mapsto \mathbb R
π:X×A↦R,随机性策略常用这种表示,
π
(
x
,
a
)
\pi(x,a)
π(x,a)为状态x下选择动作a的概率,这里必须有
∑
a
π
(
x
,
a
)
=
1
\sum_a \pi(x,a)=1
∑aπ(x,a)=1
策略的优劣取决于长期执行这一策略后得到的累计奖赏,例如某个策略使得瓜苗枯死,它的奖赏会很小,另一个策略种出了好瓜,它的累计奖赏会很大。在强化学习任务中,学习的目的就是要找到长期累计奖赏最大化的策略。长期累计奖赏有多种计算方式,常用的有“T步累计奖赏”
E
[
1
T
∑
t
=
1
T
r
t
]
\mathbb E[\frac{1}{T}\sum_{t=1}^T r_t]
E[T1∑t=1Trt]和“
γ
\gamma
γ折扣累计奖赏”
E
[
∑
t
=
0
+
∞
γ
t
r
t
+
1
]
\mathbb E[\sum_{t=0}^{+\infty} \gamma^tr_{t+1}]
E[∑t=0+∞γtrt+1],其中
r
t
r_t
rt表示第t步获得的奖赏值,
E
\mathbb E
E表示对所有随机变量求期望。
若将这里的“状态”对应为监督学习种的“示例”、“动作”对应为“标记”,则可看出,强化学习中的“策略”实际上就相当于监督学习中“分类器”(当动作是离散的)或“回归器”(当动作是连续的),模型的形式并无差别。但不同的是,在强化学习种并没有监督学习种的有标记样本(即“示例-标记”对),换言之,没有人直接告诉机器在什么状态下应该做什么动作,只有等到最终结果揭晓,才能通过“反思”之前的动作是否正确来进行学习。因此,强化学习在某种意义上可看作具有“延迟标记信息”的监督学习问题。
二、K-摇臂赌博机
1.探索与利用
与一般监督学习不同,强化学习任务的最终奖赏是在多部动作之后才能观察到,这里不妨先考虑比较简单的情形:最大化单步奖赏,即仅考虑一步操作。需注意的是,即便在这样的简化情形下,强化学习仍与监督学习有显著不同,因为机器需通过尝试来发现各个动作产生的结果,而没有训练数据告诉机器应当做哪个动作。
欲最大化单步奖赏需考虑两个方面:一是需知道每个动作带来的奖赏,二是要执行奖赏最大的动作。若每个动作对应的将傻瓜是一个确定值,那么尝试一遍所有的动作便能找出奖赏最大的动作。然而,更一般的情形是,一个动作的奖赏值是来自于一个概率分布,仅通过一次尝试并不能确切地获得平均奖赏值。
实际上,单步强化学习任务对应了一个理论模型,即 “K-摇臂赌博机”(K-armed bandit)。如下图所示,K-摇臂赌博机有K个摇臂,赌徒在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币,但这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖赏,即获得最多的硬币。
若仅为获知每个摇臂的期望奖赏,则可采用“仅探索”(exploration-only)法:将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计。若仅为执行奖赏最大的动作,则可采用“仅利用”(exploitation-only)法:按下目前最优的(即到目前为止平均奖赏最大的)摇臂,若有多个摇臂同为最优,则从中随机选取一个。显然,“仅探索”法能很好地估计每个摇臂的奖赏,却会失去很多选择最优摇臂的机会;“仅利用”法则相反,它没有很好地估计摇臂的期望奖赏,很可能经常选不到最优摇臂。因此,这两种方法都很难以使最终的累计悬赏最大化。
事实上,“探索”(即估计摇臂的优劣)和“利用”(即选择当前最优摇臂)这两者是矛盾的,因为尝试次数(即总投币数)有限,加强了一方则会自然消弱另一方,这就是强化学习所面临的“探索-利用窘境”(Exploration-Exploitation dilemma)。显然,欲积累奖赏最大,则必须在探索与利用之间达成较好的折中。
2. ϵ \epsilon ϵ-贪心
ϵ
\epsilon
ϵ-贪心法基于一个概率来对探索和利用进行折中:每次尝试时,以
ϵ
\epsilon
ϵ的概率进行探索,即以均匀概率随机选取一个摇臂;以
1
−
ϵ
1-\epsilon
1−ϵ的概率进行利用,即选择当前平均奖赏最高的摇臂(若有多个,则随机选取一个)。
令
Q
(
k
)
Q(k)
Q(k)记录摇臂k的平均奖赏。若摇臂k被尝试了n次,得到的奖赏为
v
1
,
v
2
,
⋯
,
v
n
v_1,v_2,\cdots,v_n
v1,v2,⋯,vn,则平均奖赏为
Q
(
k
)
=
1
n
∑
i
=
1
n
v
i
Q(k) = \frac{1}{n}\sum_{i=1}^n v_i
Q(k)=n1i=1∑nvi
若直接根据上式计算平均奖赏,则需记录n个奖赏值。显然,更高效的做法是对均值进行增量式计算,即每尝试一次就立即更新
Q
(
k
)
Q(k)
Q(k)。不妨用下标来表示尝试的次数,初始时
Q
0
(
k
)
=
0
Q_0(k) = 0
Q0(k)=0。对于任意的
n
≥
1
n\ge 1
n≥1,若第
n
−
1
n-1
n−1次尝试后的平均奖赏为
Q
n
−
1
(
k
)
Q_{n-1}(k)
Qn−1(k),则在经过第n次尝试获得奖赏
v
n
v_n
vn后,平均奖赏应更新为
Q
n
(
k
)
=
1
n
(
(
n
−
1
)
×
Q
n
−
1
(
k
)
+
v
n
)
=
Q
n
−
1
(
k
)
+
1
n
(
v
n
−
Q
n
−
1
(
k
)
)
\begin{aligned} Q_n(k)&=\frac{1}{n}((n-1)\times Q_{n-1}(k)+v_n)\\ &=Q_{n-1}(k)+\frac{1}{n}(v_n-Q_{n-1}(k)) \end{aligned}
Qn(k)=n1((n−1)×Qn−1(k)+vn)=Qn−1(k)+n1(vn−Qn−1(k))
这样,无论摇臂被尝试多少次都仅需记录两个值:已尝试次数
n
−
1
n-1
n−1和最近平均奖赏
Q
n
−
1
(
k
)
Q_{n-1}(k)
Qn−1(k)。
ϵ
\epsilon
ϵ-贪心法描述如下图所示。
若摇臂奖赏的不确定性较大,例如概率分布较宽时,则需要多的探索,此时需要较大的
ϵ
\epsilon
ϵ值;若摇臂的不确定较小,例如概率分布较集中时,则少量的尝试就能很好地近似真实奖赏,此时需要的
ϵ
\epsilon
ϵ较小。通常令
ϵ
\epsilon
ϵ取一个较小的常数,如0.1或0.01。然而,若尝试次数非常大,那么在一段时间后,摇臂的奖赏都能很好地近似出来,不再需要探索,这种情形下可让
ϵ
\epsilon
ϵ随着尝试次数增加而逐渐减小,例如令
ϵ
=
1
t
\epsilon=\frac{1}{\sqrt{t}}
ϵ=t1
3.Softmax
Softmax算法基于当前已知的摇臂平均奖赏来对探索和利用进行折中。若各摇臂的平均奖赏相当,则选取各摇臂的概率也相当;若某些摇臂的平均奖赏明显高于其他摇臂,则它们被选取的概率也明显更高。
Softmax算法种摇臂概率的分配是基于Boltzman分布
P
(
k
)
=
e
Q
(
k
)
τ
∑
i
=
1
K
e
Q
(
i
)
τ
P(k)=\frac{e^{\frac{Q(k)}{\tau}}}{\sum_{i=1}^K e^{\frac{Q(i)}{\tau}}}
P(k)=∑i=1KeτQ(i)eτQ(k)
其中,
Q
(
i
)
Q(i)
Q(i)记录当前摇臂的平均奖赏;
τ
>
0
\tau>0
τ>0称为“温度”,
τ
\tau
τ越小则平均奖赏高的摇臂被选取的概率越高。
τ
\tau
τ趋于0时Softmax将趋于“仅利用”,
τ
\tau
τ趋于无穷大时Softmax则将趋于“仅探索”。Softmax算法如下图所示。
ϵ
\epsilon
ϵ-贪心算法与Softmax算法孰优孰劣,主要取决于具体应用。为了更直观地观测它们的差别,考虑一个简单的例子:假定2-摇臂赌博机的摇臂1以0.4的概率返回奖赏1,以0.6的概率返回奖赏0;摇臂2以0.2的概率返回奖赏1,以0.8的概率返回奖赏0。下图显示了不同算法在不同参数下的平均累计奖赏,其中每条曲线对应于重复1000次实验的平均结果。可以看出,Softmax
(
τ
=
0.01
)
(\tau =0.01)
(τ=0.01)的曲线与“仅利用”的曲线几乎重合。
对于离散状态空间、离散动作空间上的多步强化学习任务,一种直接的办法是将每个状态上动作的选择看作一个K-摇臂赌博机问题,用强化学习任务的累计奖赏来代替K-摇臂赌博机算法种的奖赏函数,即可将赌博机算法用于每个状态:对每个状态分别记录各动作的尝试次数、当前平均累计奖赏等信息,基于赌博机算法选择要尝试的动作。然而这样的做法有很多局限,因为它没有考虑强化学习任务马尔可夫决策过程的结构。若能有效考虑马尔可夫决策过程的特性,则可有更聪明的办法。
三、有模型学习
考虑多步强化学习任务,暂且先假设任务对应的马尔可夫决策过程四元组 E = ⟨ X , A , P , R ⟩ E=\lang X,A,P,R \rang E=⟨X,A,P,R⟩均为已知,这样的情形称为“模型已知”,即机器已对环境进行了建模,能在机器内部模拟出与环境相同或近似的状况。在已知模型的环境中学习称为 “有模型学习”(model-based learning)。此时,对于任意状态 x , x ′ x,x' x,x′和动作 a a a,在 x x x状态下执行动作 a a a转移到 x ′ x' x′状态的概率 P x → x ′ a P_{x\to x'}^a Px→x′a是已知的,该转移所带来的奖赏 R x → x ′ a R_{x\to x'}^a Rx→x′a也是已知的。为了便于讨论,不妨假设状态空间X和动作空间A均为有限。
1.策略评估
在模型已知时,对任意策略
π
\pi
π能估计出该策略带来的期望累计奖赏。令函数
V
π
(
x
)
V^{\pi}(x)
Vπ(x)表示从状态
x
x
x出发,使用策略
π
\pi
π所带来的累计奖赏;函数
Q
π
(
x
,
a
)
Q^{\pi}(x,a)
Qπ(x,a)表示从状态
x
x
x出发,执行动作a后再使用策略
π
\pi
π带来的累计奖赏。这里的
V
(
⋅
)
V(\cdot)
V(⋅)称为“状态值函数”(state value function),
Q
(
⋅
)
Q(\cdot)
Q(⋅)称为“状态-动作值函数”(state-action value function),分别表示指定“状态”上以及指定“状态-动作”上的累积奖赏。
由累计奖赏的定义,有状态值函数
{
V
T
π
(
x
)
=
E
π
[
1
T
∑
t
=
1
T
r
t
∣
x
0
=
x
]
,
T
步
累
计
奖
赏
V
γ
π
(
x
)
=
E
π
[
∑
t
=
0
+
∞
γ
t
r
t
+
1
∣
x
0
=
x
]
,
γ
折
扣
累
计
奖
赏
\begin{cases} V_T^{\pi}(x)=\mathbb E_\pi[\frac{1}{T}\sum_{t=1}^T r_t|x_0 = x],\quad T步累计奖赏\\ V_\gamma^{\pi}(x)=\mathbb E_\pi[\sum_{t=0}^{+\infty} \gamma^tr_{t+1}|x_0 = x],\quad \gamma折扣累计奖赏\\ \end{cases}
{VTπ(x)=Eπ[T1∑t=1Trt∣x0=x],T步累计奖赏Vγπ(x)=Eπ[∑t=0+∞γtrt+1∣x0=x],γ折扣累计奖赏
为叙述简洁,后面在涉及上述两种累计奖赏时,就不再说明奖赏类别,从上下文应能容易地判知。令
x
0
x_0
x0表示初始状态,
a
0
a_0
a0表示起始状态上采取的第一个动作;对于T步累计奖赏,用下标t表示后续执行的步数。有状态-动作值函数
{
Q
T
π
(
x
)
=
E
π
[
1
T
∑
t
=
1
T
r
t
∣
x
0
=
x
,
a
0
=
a
]
Q
γ
π
(
x
)
=
E
π
[
∑
t
=
0
+
∞
γ
t
r
t
+
1
∣
x
0
=
x
,
a
0
=
a
]
\begin{cases} Q_T^{\pi}(x)=\mathbb E_\pi[\frac{1}{T}\sum_{t=1}^T r_t|x_0 = x,a_0=a]\\ Q_\gamma^{\pi}(x)=\mathbb E_\pi[\sum_{t=0}^{+\infty} \gamma^tr_{t+1}|x_0 = x,a_0=a]\\ \end{cases}
{QTπ(x)=Eπ[T1∑t=1Trt∣x0=x,a0=a]Qγπ(x)=Eπ[∑t=0+∞γtrt+1∣x0=x,a0=a]
由于MDP具有马尔可夫性质,即系统下一时刻的状态仅由当前时刻的状态决定,不依赖于以往任何状态,于是值函数有很简单的递归形式。对于T步累计奖赏有
V
T
π
=
E
π
[
1
T
∑
t
=
1
T
r
t
∣
x
0
=
x
]
=
E
π
[
1
T
r
1
+
T
−
1
T
1
T
−
1
∑
t
=
2
T
r
t
∣
x
0
=
x
]
=
∑
a
∈
A
π
(
x
,
a
)
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
E
π
[
1
T
−
1
∑
t
=
1
T
−
1
r
t
∣
x
0
=
x
′
]
)
=
∑
a
∈
A
π
(
x
,
a
)
∑
x
′
∈
X
P
x
∈
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
π
(
x
′
)
)
\begin{aligned} V_T^{\pi}&=\mathbb E_\pi [\frac{1}{T}\sum_{t=1}^T r_t|x_0=x]\\ &=\mathbb E_\pi [\frac{1}{T}r_1+\frac{T-1}{T}\frac{1}{T-1}\sum_{t=2}^Tr_t|x_0=x]\\ &=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x\to x'}^a(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}\mathbb E_\pi[\frac{1}{T-1}\sum_{t=1}^{T-1}r_t|x_0=x'])\\ &=\sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x\in x'}^a(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}V_{T-1}^{\pi}(x')) \end{aligned}
VTπ=Eπ[T1t=1∑Trt∣x0=x]=Eπ[T1r1+TT−1T−11t=2∑Trt∣x0=x]=a∈A∑π(x,a)x′∈X∑Px→x′a(T1Rx→x′a+TT−1Eπ[T−11t=1∑T−1rt∣x0=x′])=a∈A∑π(x,a)x′∈X∑Px∈x′a(T1Rx→x′a+TT−1VT−1π(x′))
类似的,对于
γ
\gamma
γ这苦累计奖赏有
V
γ
π
(
x
)
=
∑
a
∈
A
π
(
x
,
a
)
∑
x
′
∈
X
P
x
∈
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
π
(
x
′
)
)
V_\gamma^\pi(x) = \sum_{a\in A}\pi(x,a)\sum_{x'\in X}P_{x\in x'}^a(R_{x\to x'}^a+\gamma V_\gamma^\pi(x'))
Vγπ(x)=a∈A∑π(x,a)x′∈X∑Px∈x′a(Rx→x′a+γVγπ(x′))
需注意的是,正是由于P和R已知,才可以进行全概率展开。
用上面的递归等式来计算值函数,实际上就是一种动态规划算法。对于
V
T
π
V_T^\pi
VTπ,可设想递归一直进行下去,直至最初的起点;换言之,从值函数的初始值
V
0
π
V_0^\pi
V0π出发,通过一次迭代能计算出每个状态的单步奖赏
V
1
π
V_1^\pi
V1π,进而从单步奖赏出发,通过一次迭代计算出两步累计奖赏
V
2
π
,
⋯
⋯
V_2^\pi,\cdots\cdots
V2π,⋯⋯下图种算法遵循了上述流程,对于T步累计奖赏,只需要迭代T轮就能精确地求出值函数。
对于
V
γ
π
V_\gamma^\pi
Vγπ,由于
γ
t
\gamma^t
γt在t很大时趋于0,因此也能使用类似的算法,只需将上图的算法第3行根据上式进行替换。此外,由于算法可能会迭代很多次,因此需设置一个停止准则。常见的是设置一个阈值
θ
\theta
θ,若在执行一次迭代后值函数的改变小于
θ
\theta
θ则算法停止;相应的,上图算法第4行中的
t
=
T
+
1
t=T+1
t=T+1需替换为
max
x
∈
X
∣
V
(
x
)
−
V
′
(
x
)
∣
<
θ
\max_{x\in X}|V(x)-V'(x)|<\theta
x∈Xmax∣V(x)−V′(x)∣<θ
有了状态值函数V,就能直接计算出状态-动作值函数
{
Q
T
π
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
π
(
x
′
)
)
Q
γ
π
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
π
(
x
′
)
)
\begin{cases} Q_T^\pi(x,a) = \sum_{x'\in X} P_{x\to x'}^a(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}V_{T-1}^\pi (x'))\\ Q_\gamma^\pi(x,a) = \sum_{x'\in X} P_{x\to x'}^a(R_{x\to x'}^a +\gamma V_{\gamma}^\pi (x'))\\ \end{cases}
{QTπ(x,a)=∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1π(x′))Qγπ(x,a)=∑x′∈XPx→x′a(Rx→x′a+γVγπ(x′))
2.策略改进
对某个策略的积累奖赏进行评估后,若发现它并非最优策略,则当然希望对其进行改进。理想的策略应能最大化累计奖赏
π
∗
=
arg max
π
∑
x
∈
X
V
π
(
x
)
\pi^* = \underset{\pi}{\operatorname {arg\ max}}\sum_{x\in X}V^\pi(x)
π∗=πarg maxx∈X∑Vπ(x)
一个强化学习任务可能有多个最优策略,最优策略所对应的值函数
V
∗
V^*
V∗称为最优值函数,即
∀
x
∈
X
:
V
∗
(
x
)
=
V
π
∗
(
x
)
\forall x\in X:V^*(x) = V^{\pi^*}(x)
∀x∈X:V∗(x)=Vπ∗(x)
注意,当策略空间无约束时上式得
V
∗
V^*
V∗才是最优策略对应得值函数,例如对离散状态空间和离散动作空间,策略空间是所有状态上所有动作得组合,共有
∣
A
∣
∣
X
∣
|A|^{|X|}
∣A∣∣X∣种不同的策略。若策略空间有约束,则违背约束的策略是“不合法”的。即便其值函数所取得的累计奖赏最大,也不能作为最优值函数。
由于最优值函数的累计奖赏已达到最大,因此可对前面的Bellman等做一个改动,即将对动作的求和改为取最优
{
V
T
∗
(
x
,
a
)
=
max
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
∗
(
x
′
)
)
V
γ
∗
(
x
,
a
)
=
max
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
∗
(
x
′
)
)
\begin{cases} V_T^*(x,a) =\underset{a\in A}{\max} \sum_{x'\in X} P_{x\to x'}^a(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}V_{T-1}^* (x'))\\ V_\gamma^*(x,a) =\underset{a\in A}{\max} \sum_{x'\in X} P_{x\to x'}^a(R_{x\to x'}^a +\gamma V_{\gamma}^* (x'))\\ \end{cases}
⎩⎨⎧VT∗(x,a)=a∈Amax∑x′∈XPx→x′a(T1Rx→x′a+TT−1VT−1∗(x′))Vγ∗(x,a)=a∈Amax∑x′∈XPx→x′a(Rx→x′a+γVγ∗(x′))
换言之
V
∗
(
x
)
=
max
a
∈
A
Q
π
∗
(
x
,
a
)
V^*(x) = \underset{a\in A}{\max} Q^{\pi^*}(x,a)
V∗(x)=a∈AmaxQπ∗(x,a)
可得最优状态-动作值函数
{
Q
T
∗
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
max
a
∈
A
Q
T
−
1
∗
(
x
,
a
)
(
x
′
)
)
Q
γ
∗
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
max
a
∈
A
Q
γ
∗
(
x
,
a
)
(
x
′
)
)
\begin{cases} Q_T^*(x,a) = \sum_{x'\in X} P_{x\to x'}^a(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}\underset{a\in A}{\max} Q_{T-1}^{*}(x,a) (x'))\\ Q_\gamma^*(x,a) = \sum_{x'\in X} P_{x\to x'}^a(R_{x\to x'}^a +\gamma \underset{a\in A}{\max} Q_\gamma^{*}(x,a)(x'))\\ \end{cases}
⎩⎨⎧QT∗(x,a)=∑x′∈XPx→x′a(T1Rx→x′a+TT−1a∈AmaxQT−1∗(x,a)(x′))Qγ∗(x,a)=∑x′∈XPx→x′a(Rx→x′a+γa∈AmaxQγ∗(x,a)(x′))
上述关于最优值函数的等式,称为最优Bellman等式,其唯一解是最优函数。
最优Bellman等式揭示了非最优策略的改进方式:将策略选择的动作改变为当前最优的动作。显然,这样的改变使策略更好。不妨令动作改变后对应的策略为
π
′
\pi'
π′,改变动作的条件为
Q
π
(
x
,
π
′
(
x
)
)
≥
V
π
(
x
)
Q^\pi (x,\pi'(x))\ge V^\pi (x)
Qπ(x,π′(x))≥Vπ(x),以
γ
\gamma
γ折扣累计悬赏为例,可计算出递推不等式
V
π
(
x
)
≤
Q
π
(
x
,
π
′
(
x
)
)
=
∑
x
′
∈
X
P
x
→
x
′
π
′
(
x
)
(
R
x
→
x
′
π
′
(
x
)
+
γ
V
π
(
x
)
)
≤
∑
x
′
∈
X
P
x
→
x
′
π
′
(
x
)
(
R
x
→
x
′
π
′
(
x
)
+
γ
Q
π
(
x
′
,
π
′
(
x
′
)
)
)
=
⋯
=
V
π
′
(
x
)
\begin{aligned} V^{\pi}(x) &\le Q^\pi(x,\pi'(x))\\ & = \sum_{x'\in X}P_{x\to x'}^{\pi' (x)}(R_{x\to x'}^{\pi' (x)}+\gamma V^\pi(x))\\ & \le \sum_{x'\in X}P_{x\to x'}^{\pi' (x)}(R_{x\to x'}^{\pi' (x)}+\gamma Q^\pi(x',\pi'(x')))\\ &=\cdots\\ & = V^{\pi'}(x) \end{aligned}
Vπ(x)≤Qπ(x,π′(x))=x′∈X∑Px→x′π′(x)(Rx→x′π′(x)+γVπ(x))≤x′∈X∑Px→x′π′(x)(Rx→x′π′(x)+γQπ(x′,π′(x′)))=⋯=Vπ′(x)
值函数对于策略的每一点改进都是单调递增的,因此对于当前策略
π
\pi
π,可以放心地将其改进为
π
′
(
x
)
=
arg max
a
∈
A
Q
π
(
x
,
a
)
\pi'(x) = \underset{a\in A}{\operatorname{arg \ max}}Q^\pi(x,a)
π′(x)=a∈Aarg maxQπ(x,a)
直至
π
′
\pi'
π′与
π
\pi
π一致、不再发生变化,此时就满足了最优Bellman等式,即找到了最优策略。
3.策略迭代与值迭代
前面两小节知道了如何评价一个策略的值函数,以及在策略评估后如何改进至最优策略。显然,将这两者结合起来即可得到求解最优解的方法:从一个初始策略(通常是随机策略)出发,先进行策略,然后改进策略,评估改进的策略,再进一步改进策略,
⋯
⋯
\cdots\cdots
⋯⋯不断迭代进行策略评估和改进,直至策略收敛、不再改变为止。这样的做法称为 “策略迭代”(policy iteration)。
下图给出的算法描述,就是基于T步累计奖赏策略评估的基础上,加入策略改进而形成的策略迭代算法。类似的,可得到基于
γ
\gamma
γ折扣累计奖赏的策略迭代算法。策略迭代算法在每次改进策略后都需要重新进行策略评估,这通常比较耗时。
策略改进与值函数改进是一致的,因此将策略改进视为值函数的改善
{
V
T
(
x
)
=
max
a
∈
A
∑
x
′
∈
x
a
P
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
(
x
′
)
)
V
γ
(
x
)
=
max
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
(
x
′
)
)
\begin{cases} V_T(x) = \max_{a\in A}\sum_{x'\in x}^aP(\frac{1}{T}R_{x\to x'}^a + \frac{T-1}{T}V_{T-1}(x'))\\ V_{\gamma}(x) = \max_{a\in A}\sum_{x'\in X}P_{x\to x'}^a (R_{x\to x'}^a + \gamma V_{\gamma}(x')) \end{cases}
{VT(x)=maxa∈A∑x′∈xaP(T1Rx→x′a+TT−1VT−1(x′))Vγ(x)=maxa∈A∑x′∈XPx→x′a(Rx→x′a+γVγ(x′))
于是可得到值迭代(value iteration)算法,如下图所示
若采用
γ
\gamma
γ折扣累计奖赏,只需将上图种的算法第3行替换为
∀
x
∈
X
:
V
′
(
x
)
=
max
a
∈
A
∑
x
′
∈
X
P
x
′
∈
X
a
(
R
x
→
x
′
a
+
γ
V
(
x
′
)
)
\forall x\in X: V'(x)= \underset{a\in A}{\max}\sum_{x'\in X}P_{x'\in X}^a (R_{x\to x'}^a + \gamma V(x'))
∀x∈X:V′(x)=a∈Amaxx′∈X∑Px′∈Xa(Rx→x′a+γV(x′))
从上面的算法可看出,在模型已知时强化学习任务能归结为基于动态规划的寻优问题。与监督学习不同,这里并未涉及到泛化能力,而是为每一个状态找到最好的动作。
四、免模型学习
在现实的强化学习任务种,环境的转移概率、奖赏函数往往很难得知,甚至很难知道环境中一共有多少状态。若学习算法不依赖于环境建模,则“免模型学习”(model-free learning),这比有模型学习要困难得多。
1.蒙特卡罗强化学习
在免模型情形下,策略迭代算法首先遇到的问题是策略无法评估,这是由于模型未知而导致无法做全概率展开。此时,只能通过在环境中执行选择的动作,来观测转移的状态和得到的奖赏。受K摇臂赌博机的启发,一种直接的策略评估替代方法是多次“采样”,然后求取平均累计奖赏来作为期望累计奖赏的近似,这称为蒙特卡罗强化学习。由于采样必须为有限次数,因此该方法更适合于使用T步累计奖赏的强化学习任务。
另一方面,策略迭代算法估计的是状态值函数V,而最终的策略是通过状态-动作函数Q来获得。当模型已知时,从V到Q有很简单的转换方法,而当模型未知时,这也会出现困难。于是,将估计对象从V转变为Q,即估计每一对“状态-动作”的函数值。
此外,在模型未知的情形下,机器只能是从一个起始状态(或起始状态集合)开始探索环境,而策略迭代算法由于需对每个状态分别进行估计,因此在这种情形下无法实现。例如探索种瓜得过程只能从播种子开始,而不能任意选择种植过程中的一个状态开始。因此,只能在探索的过程中逐渐发现各个状态并估计各状态-动作对的值函数。
综合起来,在模型未知的情形下,从初始状态出发,使用某种策略进行采样,执行该策略T步并获得轨迹
<
x
0
,
a
0
,
r
1
,
x
1
,
a
1
,
r
2
,
⋯
,
x
T
−
1
,
a
T
−
1
,
r
T
,
x
T
>
,
< x_0,a_0,r_1,x_1,a_1,r_2,\cdots,x_{T-1},a_{T-1},r_T,x_T >,
<x0,a0,r1,x1,a1,r2,⋯,xT−1,aT−1,rT,xT>,
然后,对轨迹中出现的每一对状态-动作,记录其后的奖赏之和,作为该状态-动作对的一次累计奖赏采样值。多次采样得到多条轨迹后,将每个状态-动作对的累计奖赏采样值进行平均,即得到状态-动作值函数的估计。
可以看出,欲较好地获得值函数的估计,就需要多条不同的采样轨迹。然后,策略有可能是确定的,即对于某个状态只会输出一个动作,若使用这样的策略进行采样,则只能得到多条相同的轨迹。这与K摇臂赌博机的“仅利用”法面临相同的问题,因此可借鉴探索与利用这种的办法,例如使用
ϵ
−
\epsilon-
ϵ−贪心法,以
ϵ
\epsilon
ϵ的概率从所有动作中均匀随机选取一个,以
1
−
ϵ
1-\epsilon
1−ϵ的概率选取当前最优动作。将确定性的策略
π
\pi
π称为“原始策略”,在原始策略上使用
ϵ
−
\epsilon-
ϵ−贪心法的策略记为
{
π
ϵ
(
x
)
=
π
(
x
)
,
以
概
率
1
−
ϵ
A
中
以
均
匀
概
率
选
取
的
动
作
,
以
概
率
ϵ
\begin{cases} \pi^{\epsilon}(x) = \pi(x),\quad 以概率1-\epsilon\\ A中以均匀概率选取的动作,以概率\epsilon \end{cases}
{πϵ(x)=π(x),以概率1−ϵA中以均匀概率选取的动作,以概率ϵ
对于最大值函数的原始策略
π
=
arg max
a
Q
(
x
,
a
)
\pi = \argmax_a Q(x,a)
π=aargmaxQ(x,a),其
ϵ
−
\epsilon-
ϵ−贪心策略
π
ϵ
\pi^{\epsilon}
πϵ中,当前最优动作被选中的概率是
1
−
ϵ
+
ϵ
∣
A
∣
1-\epsilon + \frac{\epsilon}{|A|}
1−ϵ+∣A∣ϵ,而每个非最优动作被选中的概率为
ϵ
∣
A
∣
\frac{\epsilon}{|A|}
∣A∣ϵ。于是,每个动作都有可能被选取,而多次采样将会产生不同的采样轨迹。
与策略迭代算法类似,使用蒙特卡罗方法进行策略评估后,同样要对策略进行改进。前面在讨论策略改进时利用了单调性,通过换入当前最优动作改进策略。对于任意原始策略
π
\pi
π,其
ϵ
−
\epsilon-
ϵ−贪心策略
π
ϵ
\pi^{\epsilon}
πϵ仅是将
ϵ
\epsilon
ϵ的概率均匀分配给所有动作,因此对于最大化值函数的原始策略
π
′
\pi'
π′,同样有
Q
π
(
x
,
π
′
(
x
)
)
≥
V
π
(
x
)
Q^\pi(x,\pi'(x))\ge V^\pi(x)
Qπ(x,π′(x))≥Vπ(x),即可使用同样方法进行策略改进。
下图给出了上述过程的算法描述,这里被评估与改进的是同一个策略,因此称为“同策略”(on-policy)蒙特卡罗强化学习算法。算法中奖赏均值采用增量式计算,每采样出一条轨迹,就根据该轨迹涉及的所有“状态-动作”对来对值函数进行更新。
同策略蒙特卡罗强化学习算法最终产生的是
ϵ
−
\epsilon-
ϵ−贪心策略。然而,引入
ϵ
−
\epsilon-
ϵ−贪心是为了便于策略评估,在使用策略时并不需要
ϵ
−
\epsilon-
ϵ−贪心;实际上希望改进的是原始(非
ϵ
−
\epsilon-
ϵ−贪心)策略。那么,能否仅在策略评估时引入
ϵ
−
\epsilon-
ϵ−贪心,而在策略改进时却改进原始策略呢?
这其实是可行的。不妨用两个不同的策略
π
\pi
π和
π
′
\pi'
π′来产生采样轨迹,两者区别在于每个“状态-动作对”被采样的概率不同。一般的,函数
f
f
f在概率分布
p
p
p下的期望可表达为
E
[
f
]
=
∫
x
p
(
x
)
f
(
x
)
d
x
\mathbb E[f]=\int_xp(x)f(x)dx
E[f]=∫xp(x)f(x)dx
可通过从概率分布p上的采样
{
x
1
,
x
2
,
⋯
,
x
m
}
\{x_1,x_2,\cdots,x_m\}
{x1,x2,⋯,xm}来估计
f
f
f的期望,即
E
^
[
f
]
=
1
m
∑
i
=
1
m
f
(
x
)
\hat \mathbb E[f] = \frac{1}{m}\sum_{i=1}^m f(x)
E^[f]=m1i=1∑mf(x)
若引入另一个分布q,则函数
f
f
f在概率分布p下的期望也可等价地写为
E
[
f
]
=
∫
x
q
(
x
)
p
(
x
)
q
(
x
)
f
(
x
)
d
x
\mathbb E[f]=\int_xq(x)\frac{p(x)}{q(x)}f(x)dx
E[f]=∫xq(x)q(x)p(x)f(x)dx
上式可看作
p
(
x
)
q
(
x
)
f
(
x
)
\frac{p(x)}{q(x)}f(x)
q(x)p(x)f(x)在分布q下的期望,因此通过在q上的采样
{
x
1
′
,
x
2
′
,
⋯
,
x
m
′
}
\{x_1',x_2',\cdots,x_m'\}
{x1′,x2′,⋯,xm′}可估计为
E
^
[
f
]
=
1
m
∑
i
=
1
m
p
(
x
i
′
)
q
(
x
i
′
)
f
(
x
i
′
)
\hat \mathbb E[f]=\frac{1}{m}\sum_{i=1}^m\frac{p(x_i')}{q(x_i')}f(x_i')
E^[f]=m1i=1∑mq(xi′)p(xi′)f(xi′)
回到我们的问题上来,使用策略
π
\pi
π的采样轨迹来评估策略
π
\pi
π,实际上就是对累计奖赏估计期望
Q
(
x
,
a
)
=
1
m
∑
i
=
1
m
r
i
Q(x,a) = \frac{1}{m}\sum_{i=1}^m r_i
Q(x,a)=m1i=1∑mri
若改用策略
π
′
\pi'
π′的采样轨迹来评估策略
π
\pi
π,则仅需对累计奖赏加权,即
Q
(
x
,
a
)
=
1
m
∑
i
=
1
m
P
i
π
P
i
π
′
r
i
Q(x,a)=\frac{1}{m}\sum_{i=1}^{m}\frac{P_i^\pi}{P_i^{\pi'}}r_i
Q(x,a)=m1i=1∑mPiπ′Piπri
其中
P
i
π
P_i^\pi
Piπ和
P
i
π
′
P_i^{\pi'}
Piπ′分别表示两个策略产生第i条轨迹的概率。对于给定的一条
<
x
0
,
a
0
,
r
1
,
x
1
,
a
1
,
r
2
,
⋯
,
x
T
−
1
,
a
T
−
1
,
r
T
,
x
T
>
< x_0,a_0,r_1,x_1,a_1,r_2,\cdots,x_{T-1},a_{T-1},r_T,x_T >
<x0,a0,r1,x1,a1,r2,⋯,xT−1,aT−1,rT,xT>,策略
π
\pi
π产生该轨迹的概率为
P
π
=
∏
i
=
0
T
−
1
π
(
x
i
,
a
i
)
P
x
i
→
x
i
+
1
a
i
P^\pi = \prod_{i=0}^{T-1}\pi(x_i,a_i)P_{x_i\to x_{i+1}}^{a_i}
Pπ=i=0∏T−1π(xi,ai)Pxi→xi+1ai
虽然这里用到了环境的转移概率
P
x
i
→
x
i
+
1
a
i
P_{x_i\to x_{i+1}}^{a_i}
Pxi→xi+1ai,但实际只需两个策略概率的比值
P
π
P
π
′
=
∏
i
=
1
T
−
1
π
(
x
i
,
a
i
)
π
′
(
x
i
,
a
i
)
\frac{P^\pi}{P^{\pi'}}=\prod_{i=1}^{T-1}\frac{\pi(x_i,a_i)}{\pi'(x_i,a_i)}
Pπ′Pπ=i=1∏T−1π′(xi,ai)π(xi,ai)
若
π
\pi
π为确定性策略而
π
′
\pi'
π′是
π
\pi
π的
ϵ
−
\epsilon-
ϵ−贪心策略,则
π
(
x
i
,
a
i
)
\pi(x_i,a_i)
π(xi,ai)始终未1,
π
′
(
x
i
,
a
i
)
\pi'(x_i,a_i)
π′(xi,ai)为
ϵ
∣
A
∣
\frac{\epsilon}{|A|}
∣A∣ϵ或
1
−
ϵ
+
ϵ
∣
A
∣
1-\epsilon+\frac{\epsilon}{|A|}
1−ϵ+∣A∣ϵ,于是就能对策略
π
\pi
π进行评估了。下图给出了“异策略”(off-policy)蒙特卡罗强化学习算法的描述。
2.时序差分学习
蒙特卡罗强化学习算法通过考虑采样轨迹,克服了模型未知给策略估计造成的困难。此类算法需在完成一个采样轨迹后再更新策略的值估计,而前面介绍的基于动态规划的策略迭代和值迭代算法在每执行一步策略后就进行值函数更新。两者相比,蒙特卡罗强化学习算法的效率低得多,这里的主要问题是蒙特卡罗强化学习算法没有充分利用强化学习的MDP结构。时序差分(Temporal Difference,简称TD)学习 则结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。
蒙特卡罗强化学习算法的本质,是通过多次尝试后求平均来作为期望累计奖赏的近似,但它在求平均时是“批处理式”进行的,即在一个完整的采样轨迹完成后再对所有的状态-动作对进行更新。实际上这个更新过程能增量式进行。对于状态-动作对(x,a),不妨假定基于t个采样已估计出值函数
Q
t
π
(
x
,
a
)
=
1
t
∑
i
=
1
t
Q_t^\pi(x,a) = \frac{1}{t}\sum_{i=1}^t
Qtπ(x,a)=t1∑i=1t,则在得到第
t
+
1
t+1
t+1个采样
r
t
+
1
r_{t+1}
rt+1时,有
Q
t
+
1
π
(
x
,
a
)
=
Q
t
π
(
x
,
a
)
+
1
t
+
1
(
r
t
+
1
−
Q
t
π
(
x
,
a
)
)
Q_{t+1}^\pi(x,a) = Q_t^{\pi}(x,a)+\frac{1}{t+1}(r_{t+1}-Q_t^\pi(x,a))
Qt+1π(x,a)=Qtπ(x,a)+t+11(rt+1−Qtπ(x,a))
显然,只需给
Q
t
π
(
x
,
a
)
Q_t^\pi(x,a)
Qtπ(x,a)加上增量
1
t
+
1
(
r
t
+
1
−
Q
t
π
(
x
,
a
)
)
\frac{1}{t+1}(r_{t+1}-Q_t^\pi(x,a))
t+11(rt+1−Qtπ(x,a))即可。更一般的,将
1
t
+
1
\frac{1}{t+1}
t+11替换为系数
α
t
+
1
\alpha_{t+1}
αt+1,则可将增量项写作
α
t
+
1
(
r
t
+
1
−
Q
t
π
(
x
,
a
)
)
\alpha_{t+1}(r_{t+1}-Q_t^\pi(x,a))
αt+1(rt+1−Qtπ(x,a))。在实践中通常令
α
t
\alpha_t
αt为一个较小的正数值
α
\alpha
α,若将
Q
t
π
(
x
,
a
)
Q_t^\pi(x,a)
Qtπ(x,a)展开为每步积累奖赏之和,则可看出系数之和为1,即令
α
t
=
α
\alpha_t=\alpha
αt=α不会影响
Q
t
Q_t
Qt是累计奖赏之和这一性质。更新步长
α
\alpha
α越大,则越靠后的累计奖赏越重要。
以
γ
\gamma
γ折扣累计奖赏为例,利用动态规划方法且考虑到模型未知时使用状态-动作值函数更方便,有
Q
π
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
π
(
x
′
)
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
∑
a
′
∈
A
π
(
x
′
,
a
′
)
Q
π
(
x
′
,
a
′
)
)
\begin{aligned} Q^\pi(x,a)&=\sum_{x'\in X}P_{x\to x'}^a(R_{x\to x'}^a + \gamma V^\pi(x'))\\ & = \sum_{x'\in X}P_{x\to x'}^a(R_{x\to x'}^a + \gamma\sum_{a'\in A}\pi(x',a')Q^\pi(x',a')) \end{aligned}
Qπ(x,a)=x′∈X∑Px→x′a(Rx→x′a+γVπ(x′))=x′∈X∑Px→x′a(Rx→x′a+γa′∈A∑π(x′,a′)Qπ(x′,a′))
通过增量求和可得
Q
t
+
1
π
(
x
,
a
)
=
Q
t
π
(
x
,
a
)
+
α
(
R
x
→
x
′
a
+
γ
Q
t
π
(
x
′
,
a
′
)
−
Q
t
π
(
x
,
a
)
)
Q_{t+1}^\pi(x,a) = Q_t^\pi(x,a) + \alpha(R_{x\to x'}^a + \gamma Q_t^\pi(x',a') - Q_t^\pi(x,a))
Qt+1π(x,a)=Qtπ(x,a)+α(Rx→x′a+γQtπ(x′,a′)−Qtπ(x,a))
其中
x
′
x'
x′是前一次在状态
x
x
x执行动作
a
a
a后转移到的状态,
a
′
a'
a′是策略
π
\pi
π在
x
′
x'
x′上选择的动作。
使用上式,每执行一步策略就更新一次值函数估计,于是得到下图的算法。该算法由于每次更新值函数需知道前一步的状态(state)、前一步的动作(action)、奖赏值(reward)、当前状态(state)、将要执行的动作(action),由此得名为Sarsa算法。显然,Sarsa是一个同策略算法,算法中评估、执行的均为
ϵ
\epsilon
ϵ贪心策略。
将Sarsa修改为异策略算法,则得到下图描述的 Q-学习(Q-learning)算法,该算法评估的是
ϵ
\epsilon
ϵ-贪心策略,而执行的是原始策略。
五、值函数近似
前面一直假定强化学习任务是在有限状态空间上进行,每个状态可用一个编号来指代;值函数则是关于有限状态的 “表格值函数”(tabular value function),即值函数能表示为一个数组,输入i对应的函数值就是数组元素i的值,且更改一个状态上的值不会影响其他状态上的值。然而,现实强化学习任务所面临的状态空间往往是连续的,有无穷多个状态。这该怎么做?
一个直接的想法是对状态空间进行离散化,将连续状态空间转化为有限离散状态空间,然后就能使前面介绍的方法求解。遗憾的是,如何有效地对状态空间进行离散化是一个难题,尤其是在对状态空间济宁探索之前。
实际上,不妨直接对连续状态空间的值函数进行学习。假定状态空间为n维实数空间
X
=
R
n
X=\mathbb R^n
X=Rn,此时显然无法用表格值函数来记录状态值。先考虑简化情形,即值函数能表达为状态的线性函数
V
θ
(
x
)
=
θ
T
x
V_\theta(\pmb x)=\pmb \theta^T \pmb x
Vθ(xxx)=θθθTxxx
其中
x
\pmb x
xxx为状态向量,
θ
\pmb \theta
θθθ为参数向量。由于此时的值函数难以像有限状态那样精确记录每个状态的值,因此这样值函数的求解被称为值函数近似(value function approximation)
希望通过上式学得的值函数尽可能近似真实值函数
V
π
V^\pi
Vπ,近似程度常用最小二乘法误差来度量
E
θ
=
E
x
∼
π
[
(
V
π
(
x
)
−
V
θ
(
x
)
)
2
]
E_\theta = \mathbb E_{x\sim \pi}[(V^\pi(\pmb x)-V_\theta(\pmb x))^2]
Eθ=Ex∼π[(Vπ(xxx)−Vθ(xxx))2]
其中
E
x
∼
π
E_{x\sim \pi}
Ex∼π表示由策略
π
\pi
π所采样而得得状态上的期望。
为了使误差最小化,采用梯度下降法,对误差求负导数
−
∂
E
θ
∂
θ
=
E
x
∼
π
[
2
(
V
π
(
x
)
−
V
θ
(
x
)
)
∂
V
θ
(
x
)
∂
θ
]
=
E
x
∼
π
[
2
(
V
π
(
x
)
−
V
θ
(
x
)
)
x
]
\begin{aligned} -\frac{\partial E_\theta}{\partial \theta} &= \mathbb E_{x\sim \pi}[2(V^\pi(x)-V_\theta(x))\frac{\partial V_\theta(x)}{\partial \theta}]\\ &=\mathbb E_{x\sim \pi}[2(V^\pi(x)-V_\theta(x))x] \end{aligned}
−∂θ∂Eθ=Ex∼π[2(Vπ(x)−Vθ(x))∂θ∂Vθ(x)]=Ex∼π[2(Vπ(x)−Vθ(x))x]
于是可得到对于单个样本的更新规则
θ
=
θ
+
α
(
V
π
(
x
)
−
V
θ
(
x
)
)
x
\pmb \theta = \pmb \theta + \alpha(V^\pi(\pmb x)-V_\theta(\pmb x))\pmb x
θθθ=θθθ+α(Vπ(xxx)−Vθ(xxx))xxx
并不知道策略的真实值函数
V
π
V^\pi
Vπ,但可借助时序差分学习,基于
V
π
(
x
)
=
r
+
γ
V
π
(
x
′
)
V^\pi(x) = r+\gamma V^\pi(x')
Vπ(x)=r+γVπ(x′)用当前估计的值函数代替真实值函数,即
θ
=
θ
+
α
(
r
+
γ
V
π
(
x
′
)
−
V
θ
(
x
)
)
x
=
θ
+
α
(
r
+
γ
V
π
(
x
′
)
−
θ
T
x
)
x
\begin{aligned} \pmb \theta &= \pmb \theta + \alpha( r+\gamma V^\pi(x')-V_\theta(\pmb x))\pmb x\\ &=\pmb \theta + \alpha( r+\gamma V^\pi(x')-\pmb \theta^T\pmb x)\pmb x \end{aligned}
θθθ=θθθ+α(r+γVπ(x′)−Vθ(xxx))xxx=θθθ+α(r+γVπ(x′)−θθθTxxx)xxx
其中
x
′
\pmb x'
xxx′是下一时刻的状态。
需注意的是,在时序差分学习中需要状态-动作值函数以便获取策略。这里一种简单的做法是令
θ
\pmb \theta
θθθ作用域表示状态和动作的联合向量上,例如给状态向量增加一维用于存放动作编号;另一种做法是用
0
/
1
0/1
0/1对动作选择进行编码得到向量
α
=
(
0
:
⋯
;
1
;
⋯
;
0
)
\alpha=(0:\cdots;1;\cdots;0)
α=(0:⋯;1;⋯;0),其中“1”表示该动作被选择,再将状态向量与其合并得到
(
x
,
α
)
(\pmb x,\pmb \alpha)
(xxx,ααα),用于替换
x
\pmb x
xxx。这样就使得线性近似的对象为状态-动作值函数。
基于线性近似值函数近似来替代Sarsa算法中的值函数,即可得到下图的线性值函数近似Sarsa算法。类似地可得到线性值函数近似Q-学习算法。显然,可以容易地用其他学习方法来代替式中的线性学习器,例如通过引入核方法实现非线性值函数近似。
六、模仿学习
在强化学习的经典任务设置中,机器所能获得的反馈信息仅有多步决策后的累积奖赏,但在现实任务中,往往能得到人类专家决策过程范例,例如在种瓜任务上能得到农业专家的种植过程范例。从这样的范例中学习,称为“模仿学习”(imitation learning)。
1.直接模仿学习
强化学习任务中多步决策的搜索空间巨大,基于累积奖赏来学习很多步之前的合适决策非常困难,而直接模仿人类专家的“状态-动作对“可明显缓解这一困难,称其为”直接模仿学习“。
假定获得了一批人类专家的决策轨迹数据
{
τ
1
,
τ
2
,
⋯
,
τ
m
}
\{\tau_1,\tau_2,\cdots,\tau_m\}
{τ1,τ2,⋯,τm},每条轨迹包含状态和动作序列
τ
i
=
⟨
s
1
i
,
a
1
i
,
s
2
i
,
a
2
i
,
⋯
,
s
n
i
+
1
i
⟩
\tau_i = \lang s_1^i,a_1^i,s_2^i,a_2^i,\cdots,s_{n_i+1}^i \rang
τi=⟨s1i,a1i,s2i,a2i,⋯,sni+1i⟩
其中
n
i
n_i
ni为第
i
i
i条轨迹中的转移次数。
有了这样的数据,就相当于告诉机器在什么状态下应选择什么动作,于是可利用监督学习来学得符合人类专家决策轨迹数据的策略。
可将所有轨迹上的所有“状态-动作对”抽取出来,构造成一个新的数据集合
D
=
{
(
s
1
,
a
1
)
,
(
s
2
,
a
2
,
)
⋯
,
(
s
∑
i
=
1
m
n
i
,
a
∑
i
=
1
m
n
i
)
}
D=\{(s_1,a_1),(s_2,a_2,)\cdots,(s_{\sum_{i=1}^m n_i},a_{\sum_{i=1}^m n_i})\}
D={(s1,a1),(s2,a2,)⋯,(s∑i=1mni,a∑i=1mni)}
即把状态作为特征,动作作为标记;然后,对这个新构造出的数据集合D使用分类(对于离散动作)或回归(对于连续动作)算法即可学得策略模型。学得的这个策略模型可作为机器进行强化学习的初始策略,再通过强化学习方法基于环境反馈进行改进,从而获得更好的策略。
2.逆强化学习
在很多任务中,设计奖赏函数往往相当困难,从人类专家提供的范例数据中反推出奖赏函数有助于解决问题,这就是逆强化学习(inverse reinforcement learning)。
在逆强化学习中,状态空间X、动作空间A,并且与直接模仿学习类似,有一个决策轨迹数据集
{
τ
1
,
τ
2
,
⋯
,
τ
m
}
\{\tau_1,\tau_2,\cdots,\tau_m\}
{τ1,τ2,⋯,τm}。逆强化学习的基本思想是:欲使机器做出与范例一致的行为,等价于在某个奖赏函数的环境中求解最优策略,该最优策略产生的轨迹与范例数据一致。换言之,要寻找某种奖赏函数使得范例数据是最优的,然后即可使用这个奖赏函数来训练强化学习策略。
不妨假设奖赏函数能表达为状态特征的线性函数,即
R
(
x
)
=
w
T
x
R(\pmb x) = \pmb w^T \pmb x
R(xxx)=wwwTxxx。于是,策略
π
\pi
π的累积奖赏可写为
ρ
π
=
E
[
∑
t
=
0
+
∞
γ
t
R
(
x
t
)
∣
π
]
=
E
[
∑
t
=
0
+
∞
γ
t
w
T
x
t
∣
π
]
=
w
T
E
[
∑
t
=
0
+
∞
γ
t
x
t
∣
π
]
\rho^\pi = \mathbb E[\sum_{t=0}^{+\infty}\gamma^tR(x_t)|\pi]=\mathbb E[\sum_{t=0}^{+\infty}\gamma^tw^Tx_t|\pi]=w^T\mathbb E[\sum_{t=0}^{+\infty}\gamma^tx_t|\pi]
ρπ=E[t=0∑+∞γtR(xt)∣π]=E[t=0∑+∞γtwTxt∣π]=wTE[t=0∑+∞γtxt∣π]
即状态向量加权和的期望与系数
w
\pmb w
www的内积
将状态向量的期望简写为
x
ˉ
π
\bar x^\pi
xˉπ。注意到获得
x
ˉ
π
\bar x^\pi
xˉπ需求取期望。可使用蒙特卡罗方法通过采样来近似期望,而范例轨迹数据集恰可看作最优策略的一个采样,于是,可将每条范例轨迹上的状态加权求和再平均,记为
x
ˉ
∗
\bar x^*
xˉ∗。对于最优奖赏函数
R
(
x
)
=
w
∗
T
x
R(x)=w^{*T}x
R(x)=w∗Tx和任意其他策略产生的
x
ˉ
π
\bar x^\pi
xˉπ,有
w
∗
T
x
ˉ
∗
−
w
∗
T
x
ˉ
π
=
w
∗
T
(
x
ˉ
∗
−
x
ˉ
π
)
≥
0
w^{*T}\bar x^* - w^{*T}\bar x^\pi = w^{*T}(\bar x^*-\bar x^\pi)\ge 0
w∗Txˉ∗−w∗Txˉπ=w∗T(xˉ∗−xˉπ)≥0
若能对所有策略计算出
(
x
ˉ
∗
−
x
ˉ
π
)
(\bar x^*-\bar x^\pi)
(xˉ∗−xˉπ),即可解出
w
∗
=
arg max
w
min
π
w
T
(
x
ˉ
∗
−
x
ˉ
π
)
s
.
t
.
∣
∣
w
∣
∣
≤
1
w^* = \underset{w}{\argmax} \ \underset{\pi}{\min}\ w^T(\bar x^*-\bar x^\pi)\\ s.t. \quad ||w|| \le 1
w∗=wargmax πmin wT(xˉ∗−xˉπ)s.t.∣∣w∣∣≤1
显然,难以获得所有策略,一个较好的办法是从随机策略开始,迭代地求解最好的奖赏函数,基于奖赏函数获得最好的策略,直至最终获得最符合范例轨迹数据集的奖赏函数和策略,如下图所示。注意到在求解更好奖赏函数时,需将上式中对所有策略求最小改为之前学得的策略求最小。