目录
-
- 前言
- 1. TD learning of state values – The idea of the algorithm
- 2. TD learning of state values – Algorithm convergence
- 3. TD learning of state values – Algorithm properties
- 结语
- 参考
前言
学习赵老师讲授的强化学习的数学原理视频,本篇文章记录第七讲 Part 3:时序差分方法(TD 算法收敛性、与 MC 的比较),记录个人学习笔记,和大家一起分享交流😄
video:https://www.bilibili.com/video/BV1sd4y167NS
1. TD learning of state values – The idea of the algorithm
TD 算法还没讲完—还有一个问题:它在数学上究竟在解决一个什么样的问题?或者说,它为什么被设计成这个样子?刚才我们直接写出了 TD 算法帮助大家理解,但为什么它要设计成这样?下面我们再来分析下。

TD 算法数学上究竟在干什么呢?它实际上在 求解贝尔曼公式。谁的贝尔曼公式呢?就是给定策略的贝尔曼公式,前面我们介绍贝尔曼公式时,已经给出了求解算法,大家如果还记得的话,我们给出了 closed-form solution 还有 iterative solution,为什么这里还要再求?和那些算法有什么区别呢?
那时介绍的算法依赖模型,而现在没有模型,所以用一句话来说就是, TD 算法是在没有模型的情况下来求解贝尔曼公式,希望大家能够非常明确地抓住这一点,接下来要做的,就是证明这句话。

首先要做的是引入一个新的贝尔曼公式,这个新的贝尔曼公式其实非常简单,我们来看一下。
v
π
(
s
)
=
E
[
R
+
γ
G
∣
S
=
s
]
,
s
∈
S
(4)
v_{\\pi}(s) = \\mathbb{E}[R + \\gamma G \\mid S=s], \\quad s \\in S \\tag{4}
vπ(s)=E[R+γG∣S=s],s∈S(4)
上面这个是什么呢?这个就是 state value 的一个最基本的定义,从
s
s
s 出发得到的 state value 等于一个 expectation,谁的 expectation 呢?是 immediate reward 与跳到下一个状态后得到的 return 之和的 expectation。
这个 expectation 可以拆成两项,一个是
E
[
R
]
\\mathbb{E}[R]
E[R] ,一个是
E
[
G
]
\\mathbb{E}[G]
E[G] ,
E
[
G
]
\\mathbb{E}[G]
E[G] 可以再进一步写成:
E
[
G
∣
S
=
s
]
=
∑
a
π
(
a
∣
s
)
∑
s
′
p
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
=
E
[
v
π
(
S
′
)
∣
S
=
s
]
,
\\mathbb{E}[G \\mid S = s] = \\sum_{a} \\pi(a \\mid s) \\sum_{s'} p(s' \\mid s, a)v_\\pi(s') = \\mathbb{E}[v_\\pi(S') \\mid S = s],
E[G∣S=s]=a∑π(a∣s)s′∑p(s′∣s,a)vπ(s′)=E[vπ(S′)∣S=s],
这个形式的意思是:跳到下一个状态,如果下一个状态是
S
′
S'
S′ ,那么对它的 state value 求 expectation,所以这两个是相同的。
刚才的这个 state value 的定义实际上就可以化成下面这样一个式子:
v
π
(
s
)
=
E
[
R
+
γ
v
π
(
S
′
)
∣
S
=
s
]
,
s
∈
S
.
(5)
\\textcolor{blue}{v_\\pi(s) = \\mathbb{E}[R + \\gamma v_\\pi(S') \\mid S = s], \\quad s \\in \\mathcal{S}.} \\tag{5}
vπ(s)=E[R+γvπ(S′)∣S=s],s∈S.(5)
与之前所学的贝尔曼公式相比,它的形式更简洁—没有那些求和符号,为什么呢?就是因为这里边是有一个 expectation,如果把这个 expectation 写开的话,那这个公式就和我们之前的公式是一模一样的。
这个公式
(
5
)
(5)
(5) ,有时被称为 Bellman expectation equation,就是因为这里有一个 expectation,之所以介绍这个贝尔曼公式,是因为 TD 算法本质上就是在求解这个 equation,为什么呢?
我们接着来看,下面来求解刚刚得到的贝尔曼公式。怎么求解呢?用上节课介绍的 RM 算法,之后会看到:推导出的 RM 算法与刚才的 TD 算法非常类似,通过这个我们就能知道, 实际上 TD 算法就是求解贝尔曼公式的一个 RM 算法。

g
(
v
(
s
)
)
=
v
(
s
)
−
E
[
R
+
γ
v
π
(
S
′
)
∣
s
]
,
g(v(s)) = v(s) – \\mathbb{E}[R + \\gamma v_{\\pi}(S') \\mid s],
g(v(s))=v(s)−E[R+γvπ(S′)∣s],
为了求解这个贝尔曼公式,首先要定义这样一个函数
g
(
v
(
s
)
)
g(v(s))
g(v(s)) ,如果写成
g
(
w
)
g(w)
g(w) 大家可能会更清晰一点,就是要求解
g
(
w
)
=
0
g(w)=0
g(w)=0 ,但这里
w
w
w 有具体含义,即
v
(
s
)
v(s)
v(s)—
v
π
(
s
)
v_\\pi(s)
vπ(s) 的一个估计值,所以用稍复杂一点的
g
(
v
(
s
)
)
g(v(s))
g(v(s)) 表示。令
g
(
v
(
s
)
)
=
0
g(v(s))=0
g(v(s))=0,得到的解满足
v
(
s
)
=
E
[
R
+
γ
v
π
(
S
′
)
∣
s
]
v(s)=\\mathbb{E}[R + \\gamma v_{\\pi}(S') \\mid s]
v(s)=E[R+γvπ(S′)∣s]—这实际上就是
v
π
(
s
)
v_\\pi(s)
vπ(s) 。所以
v
π
(
s
)
v_\\pi(s)
vπ(s) 是
g
(
v
(
s
)
)
=
0.
g(v(s))=0.
g(v(s))=0.
这个方程的一个解。
怎么求解
g
(
v
(
s
)
)
=
0
g(v(s))=0
g(v(s))=0 ?我们有一系列采样,什么采样呢?
R
R
R 的采样
r
r
r 和
S
′
S'
S′ 的采样
s
′
s'
s′ ,然后用这些采样组成
g
~
\\tilde{g}
g~ ,这个是 RM 算法非常典型的流程。
g
~
(
v
(
s
)
)
=
v
(
s
)
−
[
r
+
γ
v
π
(
s
′
)
]
=
(
v
(
s
)
−
E
[
R
+
γ
v
π
(
S
′
)
∣
s
]
)
⏟
g
(
v
(
s
)
)
+
(
E
[
R
+
γ
v
π
(
S
′
)
∣
s
]
−
[
r
+
γ
v
π
(
s
′
)
]
)
⏟
η
.
\\begin{aligned} \\tilde{g}(v(s)) &= v(s) – [r + \\gamma v_\\pi(s')] \\\\[6pt] &= \\underbrace{\\left( v(s) – \\mathbb{E}[R + \\gamma v_\\pi(S')|s] \\right)}_{g(v(s))} + \\underbrace{\\left( \\mathbb{E}[R + \\gamma v_\\pi(S')|s] – [r + \\gamma v_\\pi(s')] \\right)}_{\\eta}. \\end{aligned}
g~(v(s))=v(s)−[r+γvπ(s′)]=g(v(s))
(v(s)−E[R+γvπ(S′)∣s])+η
(E[R+γvπ(S′)∣s]−[r+γvπ(s′)]).
快速过一遍:
g
~
\\tilde{g}
g~ 实际上就是
g
(
v
(
s
)
)
g(v(s))
g(v(s)) 加上一个测量的误差,那么相对应的 RM 算法如下:

v
k
+
1
(
s
)
=
v
k
(
s
)
−
α
k
g
~
(
v
k
(
s
)
)
=
v
k
(
s
)
−
α
k
(
v
k
(
s
)
−
[
r
k
+
γ
v
π
(
s
k
′
)
]
)
,
k
=
1
,
2
,
3
,
…
\\begin{align*} v_{k+1}(s) &= v_k(s) – \\alpha_k \\tilde{g}(v_k(s)) \\\\ &= v_k(s) – \\alpha_k \\left( v_k(s) – [ \\textcolor{red}{r_k} + \\gamma \\textcolor{red}{v}_{\\textcolor{blue}{\\pi}}(\\textcolor{red}{s'_k})] \\right), \\quad k = 1, 2, 3, \\dots \\tag{6} \\end{align*}
vk+1(s)=vk(s)−αkg~(vk(s))=vk(s)−αk(vk(s)−[rk+γvπ(sk′)]),k=1,2,3,…(6)
这是 RM 算法的典型形式,把
g
~
\\tilde{g}
g~ 代进去就是这样一个形式,这个式子大家仔细看一下,其实它和刚才我们介绍的 TD 算法非常类似,但有 两个小的不同点,来看一下。
第一个不同点就是,这里需要 反复得到
r
r
r 和
s
′
s'
s′ 的采样,即从
s
s
s 出发得到
r
r
r、跳到
s
′
s'
s′ ,然后下个时刻还从
s
s
s 出发,得到
r
r
r、跳到
s
′
s'
s′ ,因为要反复采样,这和 TD 算法中沿 episode 按时间顺序依次访问各状态的方式不同,待会讲怎么解决。
另一个问题,大家也注意到了—我这里用蓝色标了出来:计算
v
k
+
1
v_{k+1}
vk+1 时要用到
v
π
(
s
k
′
)
v_{\\pi}(s'_k)
vπ(sk′) ,即
s
k
′
s'_k
sk′ 真实的 state value
v
π
v_{\\pi}
vπ ,但是 这个
v
π
v_{\\pi}
vπ 是不知道的,那该怎么办呢?这个问题下面来解决。

解决第一个问题的方法: 把
{
(
s
,
r
,
s
′
)
}
\\{(s,r,s')\\}
{(s,r,s′)} 这组采样替换成
{
(
s
t
,
r
t
+
1
,
s
t
+
1
)
}
\\{(s_t, r_{t+1}, s_{t+1})\\}
{(st,rt+1,st+1)} 序列,简而言之:不是反复从
s
s
s 出发得到
r
r
r、
s
′
s'
s′,而是得到一个 trajectory。trajectory 中恰巧访问到
s
s
s 时,就更新
s
s
s ;没访问到
s
s
s ,其估计值就保持不变。这样用一个 trajectory 序列就可以更新所有
s
s
s 的
v
v
v 。
第二个问题:
v
π
(
s
′
)
v_\\pi(s')
vπ(s′) 未知 —它实际上正是要求解的量,那该怎么办呢?实际上也很简单, 把
v
π
(
s
′
)
v_{\\pi}(s')
vπ(s′) 替换成当前对
s
′
s'
s′ 的估计值
v
k
(
s
k
′
)
v_k(s'_k)
vk(sk′)。问题又来了:原来式子中是
v
π
v_\\pi
vπ 时能保证收敛,现在换成了不准确的
v
k
v_k
vk ,还能确保收敛吗?
答案是肯定的,直观解释是:这里其实只有一个式子,即对
s
s
s 的值不断进行更新,写成这种形式后,每个状态都有这样一个估计值,虽然此时此刻这个估计值是不准确的,但是在其它状态被访问时,还会对这个估计值进行修正,然后不断修正,最后所有状态的估计值都会收敛到
v
π
v_{\\pi}
vπ 。
这就是 用 RM 算法求解贝尔曼公式的思路,当然这个思路相对来说还是直观一些,下面给出严格的收敛性分析。
2. TD learning of state values – Algorithm convergence
TD 算法严格的收敛性结果就是下面这个定理。

定理(TD Learning 的收敛性)
通过 TD 算法
(
1
)
(1)
(1) ,如果对于所有
s
∈
S
s \\in \\mathcal{S}
s∈S ,
∑
t
α
t
(
s
)
=
∞
\\sum_t \\alpha_t(s) = \\infty
∑tαt(s)=∞ 且
∑
t
α
t
2
(
s
)
<
∞
\\sum_t \\alpha_t^2(s) < \\infty
∑tαt2(s)<∞ ,则当
t
→
∞
t \\to \\infty
t→∞ 时,
v
t
(
s
)
v_t(s)
vt(s) 以概率 1 收敛到
v
π
(
s
)
v_\\pi(s)
vπ(s) 。
定理说的是:在满足这些条件时,
v
t
(
s
)
v_t(s)
vt(s) 最终收敛到
v
π
(
s
)
v_\\pi(s)
vπ(s) 。这些条件是对
α
t
\\alpha_t
αt 的要求,如果大家学习了我们之前的 RM 算法或 SGD(随机梯度下降)算法,那你看到这个条件就会很熟悉了,证明这里不再展开,感兴趣的同学可以参考教材中的详细证明。
那么根据这个定理我们再强调几点:
第一点就是这个定理其实说的是什么呢?说的就是 状态值(state value)会收敛到真实的状态值,所以 TD 算法本质上还是在做 policy evaluation,而且是针对某个给定的策略。但强化学习的最终目的是找到最优策略,那怎么改进策略、找到最优策略呢?之后我们会介绍:需要把 policy evaluation 和 policy improvement 相结合。
另外一个条件是对
α
t
\\alpha_t
αt 的要求:它应该满足
∑
t
α
t
(
s
)
=
∞
,
∑
t
α
t
2
(
s
)
<
∞
\\sum_t \\alpha_t(s) = \\infty, \\, \\sum_t \\alpha_t^2(s) < \\infty
∑tαt(s)=∞,∑tαt2(s)<∞ 这两个式子,第一个式子说的是
α
t
\\alpha_t
αt 的和趋于无穷,注意这对任意一个状态
s
s
s 都应该成立,这是什么意思呢?从本质上说, 每一个状态
s
s
s 都应该被访问很多次或者是无穷次,当然实际当中只要很多次就可以。为什么这么说呢?当某个状态被访问时,对应的
α
t
(
s
)
\\alpha_t(s)
αt(s) 是正数,当 trajectory 访问其它状态时,该状态对应的
α
t
(
s
)
\\alpha_t(s)
αt(s) 就是 0,所以求和等于无穷意味着它被访问了(无穷)多次。
另外,定理的条件要求
α
t
\\alpha_t
αt 最终收敛到 0,但 实际中通常取一个较小的常数(如 0.001),这时候
∑
t
α
t
2
(
s
)
<
∞
\\sum_t \\alpha_t^2(s) < \\infty
∑tαt2(s)<∞ 当然就不满足了,那实际中为什么还这么做呢?因为实际问题比较复杂, 我们希望很久之后我们得到的经验仍然能够派上用场,相反如果
α
t
\\alpha_t
αt 最后是趋向于 0 了,那很久之后这经验就没用了,所以我们只是把它设成一个很小的数,但不让它收敛到 0。
3. TD learning of state values – Algorithm properties
刚刚我们介绍了 TD learning 的基本性质,下面把 TD learning 与之前介绍的基于蒙特卡洛的 MC learning 比较。 MC learning 是本课程中第一个 model-free 方法, TD learning 是第二个,那它们分别有什么优劣势呢?我们来看一下。

我们一个一个讲它们的优劣势,值得指出:除了 TD 之外我们还写了一个 Sarsa,这个 Sarsa 是什么呢?是我们接下来马上要讲的一个算法,它可以直接来估计 action value,Sarsa 与之前讲的 TD 算法表达式基本一样,所以就直接把它一起拿过来比较。
第一个性质是什么呢?第一个性质是: TD 算法是 online(在线)的,什么意思呢?意思是:现在得到一个 reward、跳到下一状态,就立刻可以用这些信息更新当前的状态值估计。相比之下, MC learning 是 offline(离线)的:虽然正在采样,但不能立刻使用这些采样。为什么呢?因为我们必须一直采到 episode 结束,才能计算从当前
s
s
s 到最后的总 return,再用那个 return 作为估计值。
也正因为 TD 是 online 的,所以 它能处理 continuing task,当然它也能够处理 episodic task,所以两类都可以。continuing task 是什么呢?就是任务不会停止、会一直持续下去,这时要更新就必须在线更新,因为我们不能等它停下来,当然,现实中不存在一直持续的任务,但是你可以想象它是一个非常长的任务。而 MC learning 因为是 offline 的,所以它只能处理 episodic task,必须等 episode 停止后才能用 MC 算法。
所以在这两方面 TD learning 还是略胜一筹 的,下面接着看 TD 的另外一个性质:

TD learning 是 bootstrapping,bootstrapping 是指:之前对某个状态的 state value 已有初始猜测,再基于这个初始猜测加上新的信息,得到一个新的猜测。 MC learning 则不是 bootstrapping,为什么呢?它直接根据当前 episode 计算 return,并用这个 return 直接作为 action value 或者 state value 的估计值,这里不涉及之前的估计值。
另外一个性质就是: TD 的估计 variance 相对来说是比较小的,为什么呢?因为算法过程中涉及的随机变量较少:比如从当前状态出发,得到 reward 的一个采样和下一个状态的采样(如果是 Sarsa,还会对下一时刻的 action 采样)。正因为涉及得少,只用一次采样时 variance 也比较低。
相反, MC learning 涉及非常多的随机变量,为什么呢?因为它需要一个 episode,这个 episode 的第一步有一个 reward,第二步又有一个 reward…;即有很多个随机变量参与进来,随机变量很多时,只用一次采样,这次采样的 variance 会比较高。
那我们举一个比较直观的例子,假设 episode 长度为
L
=
100
L=100
L=100,每个状态有 5 个 action 可选,那么一共可能有
5
100
5^{100}
5100 个不同的 episode,即从当前出发随机采样,可能会产生
5
100
5^{100}
5100 种不同的 episode,而只用其中一个 episode 的数据估计,可以想象它的 variance 会比较大。
另一方面,随机变量有两个性质,第一个是 variance,第二个是它的 expectation 或者是 mean,虽然 TD 算法的 variance 比较小,但它的 mean(expectation) 有 bias,为什么呢?
就是因为它 基于 bootstrapping,依赖初始估计,如果初始估计不太准确,这个不准确的估计会进入估计过程造成 bias,随着数据越来越多,bias 会被抵消,最终收敛到正确的估计值。相反, MC learning 虽然 variance 高,但不涉及任何初始值,对它求期望,其期望直接等于真实的 action value 或 state value,所以它是无偏估计。
结语
本讲第三部分完成了 TD 算法的理论闭环。通过引入简洁的 Bellman expectation equation
v
π
(
s
)
=
E
[
R
+
γ
v
π
(
S
′
)
∣
S
=
s
]
v_\\pi(s) = \\mathbb{E}[R + \\gamma v_\\pi(S')|S=s]
vπ(s)=E[R+γvπ(S′)∣S=s],我们看清了 TD 算法的本质:它就是在无模型情况下,用 RM 算法求解贝尔曼公式。RM 与 TD 的两个差异恰好通过两个巧妙的替换解决—用轨迹中自然出现的
(
s
t
,
r
t
+
1
,
s
t
+
1
)
(s_t, r_{t+1}, s_{t+1})
(st,rt+1,st+1) 代替反复从同一状态采样,用当前估计
v
k
(
s
′
)
v_k(s')
vk(s′) 代替未知的
v
π
(
s
′
)
v_\\pi(s')
vπ(s′) 。收敛定理给出的条件
∑
t
α
t
(
s
)
=
∞
\\sum_t \\alpha_t(s) = \\infty
∑tαt(s)=∞ 且
∑
t
α
t
2
(
s
)
<
∞
\\sum_t \\alpha_t^2(s) < \\infty
∑tαt2(s)<∞ 与 RM 定理一脉相承,其本质要求是每个状态都被访问足够多次。
TD 与 MC 的对比则呈现了一幅经典的权衡图景:TD 在线、可处理 continuing task、方差小,但因 bootstrapping 依赖初始估计而略有偏倚;MC 离线、只能处理 episodic task、方差大(一条长度为 100 的 episode 只是
5
100
5^{100}
5100 种可能中的一种),却因不依赖初始值而无偏。低方差的有偏估计与高方差的无偏估计—这一对互补的特性,正是后续众多算法(如 TD(λ) 谱系)试图调和的对象。接下来,我们将把 TD 思想推广到 action value 的估计,迎来 Sarsa 算法🤗。
参考
- https://www.bilibili.com/video/BV1sd4y167NS
- https://github.com/MathFoundationRL/Book-Mathmatical-Foundation-of-Reinforcement-Learning





