欢迎光临
我们一直在努力

强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 7 | Part 3 | 时序差分方法(TD 算法收敛性、与 MC 的比较)

目录

    • 前言
    • 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+γGS=s],sS(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[GS=s]=aπ(as)sp(ss,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],sS.(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}

sS

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
赞(0)
未经允许不得转载:171主机测评 » 强化学习的数学原理 | 赵世钰 | 西湖大学 | 笔记 | Lecture 7 | Part 3 | 时序差分方法(TD 算法收敛性、与 MC 的比较)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址