目录
-
- 前言
- [1. TD learning of state values - The idea of the algorithm](#1. TD learning of state values - The idea of the algorithm)
- [2. TD learning of state values - Algorithm convergence](#2. TD learning of state values - Algorithm convergence)
- [3. TD learning of state values - Algorithm properties](#3. TD learning of state values - Algorithm properties)
- 结语
- 参考
前言
学习赵老师讲授的强化学习的数学原理视频,本篇文章记录第七讲 Part 3:时序差分方法(TD 算法收敛性、与 MC 的比较),记录个人学习笔记,和大家一起分享交流😄
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)=ER+γ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 ER ,一个是 E G \mathbb{E}G EG , E G \mathbb{E}G EG 可以再进一步写成:
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, EG∣S=s=a∑π(a∣s)s′∑p(s′∣s,a)vπ(s′)=Evπ(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)=ER+γ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)−ER+γ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)=ER+γ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)−ER+γvπ(S′)∣s)+η (ER+γ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)=ER+γ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 算法🤗。