强化学习07——时序差分方法

本篇博客内容源于课程《强化学习的数学原理》 赵世钰老师 西湖大学,旨在记录学习强化学习的过程。

TD算法

TD算法的思想

和MC算法一样,TD算法是一类无模型算法,TD算法在数学上干了一件什么事情呢?即求解给定策略的贝尔曼方程(Policy evaluation),它是一种在线的(Online)算法,可以立刻用得到的信息更新数据,因此可以解决一些Continuing tasks。

回到状态值函数state value的定义 v π ( s ) = E [ R + γ G ∣ S = s ] , s ∈ S v_\pi(s)=\mathbb{E}\big[R+\gamma G|S=s\big],\quad s\in\mathcal{S} vπ(s)=E[R+γGS=s],sS其中 G G G是折扣回报,我们有 E [ G ∣ S = s ] = ∑ a π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) v π ( s ′ ) = E [ v π ( S ′ ) ∣ S = s ] \mathbb{E}[G|S=s]=\sum_a\pi(a|s)\sum_{s'}p(s'|s,a)v_\pi(s')=\mathbb{E}[v_\pi(S')|S=s] E[GS=s]=aπ(as)sp(ss,a)vπ(s)=E[vπ(S)S=s]其中 S ′ S' S是下一时刻的状态,因此引出贝尔曼方程的另一种形式,即贝尔曼期望方程: v π ( s ) = E [ R + γ v π ( S ′ ) ∣ S = s ] , s ∈ S . v_\pi(s)=\mathbb{E}[R+\gamma v_\pi(S^{\prime})|S=s],\quad s\in\mathcal{S}. vπ(s)=E[R+γvπ(S)S=s],sS.同样反映的是不同状态的state value的关系。我们可以通过Robbins-Monro算法求解该方程。
定义 g ( v ( s ) ) g(v(s)) g(v(s)) g ( v ( s ) ) = v ( s ) − E [ R + γ v π ( S ′ ) ∣ s ] g(v(s))=v(s)-\mathbb{E}\big[R+\gamma v_{\pi}(S')|s\big] g(v(s))=v(s)E[R+γvπ(S)s]故求解上述贝尔曼转化为如下问题: g ( v ( s ) ) = 0. g(v(s))=0. g(v(s))=0.对应噪音观测: 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)-\begin{bmatrix}r+\gamma v_\pi(s')\end{bmatrix} \\ &\begin{aligned}&=\underbrace{\left(v(s)-\mathbb{E}\big[R+\gamma v_\pi(S')|s\big]\right)}_{g(v(s))}+\underbrace{\left(\mathbb{E}\big[R+\gamma v_\pi(S')|s\big]-\big[r+\gamma v_\pi(s')\big]\right)}_{\eta}.\end{aligned} \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)]).
r , s ′ r,s' r,s R , S ′ R,S' R,S的样本。因此利用Robbins-Monro算法求解 g ( v ( s ) ) = 0 g(v(s))=0 g(v(s))=0 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{aligned} v_{k+1}(s)& \begin{aligned}=v_k(s)-\alpha_k\tilde{g}(v_k(s))\end{aligned} \\ &=v_k(s)-\alpha_k\Big(v_k(s)-\big[{r_k+\gamma}{v_\pi(s_k^{\prime})}\big]\Big),\quad k=1,2,3,\ldots \end{aligned} vk+1(s)=vk(s)αkg~(vk(s))=vk(s)αk(vk(s)[rk+γvπ(sk)]),k=1,2,3,其中 v k ( s ) v_{k}(s) vk(s)是对 v π ( s ) v_{\pi}(s) vπ(s)的第k次估计, r k , s k ′ r_{k},s'_{k} rk,sk R , S ′ R,S' R,S的第k次采样。但有两个问题我们需要解决:

  1. 我们需要样本数据 { ( s , r , s ′ ) } \{(s,r,s^{\prime})\} {(s,r,s)}
    解决办法:可以使用一个episode的序列样本 { ( s t , r t + 1 , s t + 1 ) } \{(s_t,r_{t+1},s_{t+1})\} {(st,rt+1,st+1)}
  2. 尚不明确 v π ( s k ) v_{\pi}(s_k) vπ(sk)
    解决办法:使用 v k ( s k ′ ) v_{k}(s'_k) vk(sk)代替 v π ( s k ) v_{\pi}(s_k) vπ(sk)(用一个样本或一次估计代替真实值)
    有了这些分析,接下来正式引入TD算法。

TD算法

算法需要的数据:由给定策略 π \pi π生成的序列 { ( s t , r t + 1 , s t + 1 ) } \{(s_t,r_{t+1},s_{t+1})\} {(st,rt+1,st+1)}
TD算法如下:
v t + 1 ( s t ) = v t ( s t ) − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ] ] , {v_{t+1}(s_t)=v_t(s_t)-\alpha_t(s_t)}{\left[v_t(s_t)-[r_{t+1}+\gamma v_t(s_{t+1})]\right]}, vt+1(st)=vt(st)αt(st)[vt(st)[rt+1+γvt(st+1)]],
v t + 1 ( s ) = v t ( s ) , ∀ s ≠ s t , v_{t+1}(s)=v_t(s),\quad\forall s\neq s_t, vt+1(s)=vt(s),s=st,
其中 t = 0 , 1 , 2 , … t=0,1,2,\ldots t=0,1,2, , v t ( s t ) v_t(s_t) vt(st) v π ( s t ) v_\pi(s_t) vπ(st)的估计; α t ( s t ) \alpha_t(s_t) αt(st) s t s_t st 关于 t t t 的学习率。第二个式子表示只更新 t t t时刻访问到的状态。
TD算法注释如下:
v t + 1 ( s t ) ⏟ new estimate = v t ( s t ) ⏟ current estimate − α t ( s t ) [ v t ( s t ) − [ r t + 1 + γ v t ( s t + 1 ) ⏟ TD error  v ˉ t TD target  v ˉ t ] ⏞ TD error  δ t ] , \underbrace{v_{t+1}(s_t)}_{\text{new estimate}}=\underbrace{v_t(s_t)}_{\text{current estimate}}-\alpha_t(s_t)[\overbrace{v_t(s_t)-[\underbrace{r_{t+1}+\gamma v_t(s_{t+1})}_{\text{TD error }\bar{v}_t}^{\text{TD target }\bar v_{ t}}]}^{\text{TD error }\delta_t}], new estimate vt+1(st)=current estimate vt(st)αt(st)[vt(st)[TD target vˉt rt+1+γvt(st+1)] TD error δt],
随着更新 v t ( s t ) → v ˉ t v_{t}(s_{t})\rightarrow \bar v_{ t} vt(st)vˉt,相应的 v t ( s t ) → 0 v_{t}(s_{t})\rightarrow 0 vt(st)0

TD算法的收敛性

注意Remark第二点,条件: ∑ t α t ( s ) = ∞  and  ∑ t α t 2 ( s ) < ∞ \sum_t\alpha_t(s)=\infty\text{ and }\sum_t\alpha_t^2(s)<\infty tαt(s)= and tαt2(s)<要求每个状态 s s s被访问的次数要足够多。
在这里插入图片描述

Sarsa算法

上一小节介绍的TD算法能对给定策略进行评估,但强化学习的最终目的是要找到最优策略,马上要介绍的Sarsa算法能直接对动作值函数action values进行评估,并给出最优策略,简单来讲Sarsa算法就是action values版本的TD算法。

假定我们有经验序列(experience): { ( s t , r t + 1 , s t + 1 ) } t \{(s_t,r_{t+1},s_{t+1})\}_{t} {(st,rt+1,st+1)}t
Sarsa算法如下:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ q t ( s t + 1 , a t + 1 ) ] ] , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) , \begin{aligned} q_{t+1}(s_{t},a_{t})& =q_t(s_t,a_t)-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma q_t(s_{t+1},a_{t+1})]\Big], \\ q_{t+1}(s,a)& =q_t(s,a),\quad\forall(s,a)\neq(s_t,a_t), \end{aligned} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γqt(st+1,at+1)]],=qt(s,a),(s,a)=(st,at),
其中 q t ( s t , a t ) q_{t}(s_{t},a_{t}) qt(st,at) q π ( s t , a t ) q_{\pi}(s_{t},a_{t}) qπ(st,at)的一次估计,学习率 α t ( s t , a t ) \alpha_t(s_t,a_t) αt(st,at)依赖于 s t , a t s_t,a_t st,at。而实际上Sarsa算法求解的就是关于动作值函数的贝尔曼期望方程 q π ( s , a ) = E [ R + γ q π ( S ′ , A ′ ) ∣ s , a ] , ∀ s , a . q_\pi(s,a)=\mathbb{E}\left[R+\gamma q_\pi(S^{\prime},A^{\prime})|s,a\right],\quad\forall s,a. qπ(s,a)=E[R+γqπ(S,A)s,a],s,a.

n-step Sarsa算法

我们知道可以如下分解:
q π ( s , a ) = E [ R t + 1 + γ q π ( S t + 1 , A t + 1 ) ∣ s , a ] , ∀ s , a . = E [ R t + 1 + γ R t + 2 + γ 2 q π ( S t + 2 , A t + 2 ) ∣ s , a ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 q π ( S t + 3 , A t + 3 ) ∣ s , a ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . + γ n q π ( S t + n , A t + n ) ∣ s , a ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . ∣ s , a ] \begin{align} q_\pi(s,a)&=\mathbb{E}\left[R_{t+1}+\gamma q_\pi(S_{t+1},A_{t+1})|s,a\right],\quad\forall s,a.\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} q_\pi(S_{t+2},A_{t+2})|s,a\right]\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+\gamma^{3} q_\pi(S_{t+3},A_{t+3})|s,a\right]\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+...+\gamma^{n} q_\pi(S_{t+n},A_{t+n})|s,a\right]\\ &=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+...|s,a\right]\\ \end{align} qπ(s,a)=E[Rt+1+γqπ(St+1,At+1)s,a],s,a.=E[Rt+1+γRt+2+γ2qπ(St+2,At+2)s,a]=E[Rt+1+γRt+2+γ2Rt+3+γ3qπ(St+3,At+3)s,a]=E[Rt+1+γRt+2+γ2Rt+3+...+γnqπ(St+n,At+n)s,a]=E[Rt+1+γRt+2+γ2Rt+3+...∣s,a]
而实际上n-step Sarsa算法求解的就是关于贝尔曼期望方程:
q π ( s , a ) = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . + γ n q π ( S t + n , A t + n ) ∣ s , a ] q_\pi(s,a)=\mathbb{E}\left[R_{t+1}+\gamma R_{t+2}+\gamma^{2} R_{t+3}+...+\gamma^{n} q_\pi(S_{t+n},A_{t+n})|s,a\right] qπ(s,a)=E[Rt+1+γRt+2+γ2Rt+3+...+γnqπ(St+n,At+n)s,a]
自然需要经验序列: { ( s t , a t , r t + 1 , s t + 1 , a t + 1 , … , r t + n , s t + n , a t + n ) } \{(s_t,a_t,r_{t+1},s_{t+1},a_{t+1},\ldots,r_{t+n},s_{t+n},a_{t+n})\} {(st,at,rt+1,st+1,at+1,,rt+n,st+n,at+n)}
n-step Sarsa算法如下: q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − [ r t + 1 + γ r t + 2 + ⋯ + γ n q t ( s t + n , a t + n ) ] ] . \begin{aligned}q_{t+1}(s_t,a_t)&=q_t(s_t,a_t)\\&-\alpha_t(s_t,a_t)\Big[q_t(s_t,a_t)-[r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^nq_t(s_{t+n},a_{t+n})]\Big].\end{aligned} qt+1(st,at)=qt(st,at)αt(st,at)[qt(st,at)[rt+1+γrt+2++γnqt(st+n,at+n)]].
MC情形
在这里插入图片描述

TD算法与MC算法的比较

TD算法是在线的,可以立刻用得到的信息更新数据,因此可以解决一些Continuing tasks,同时相比MC算法由估计结果有更低的方差。
在这里插入图片描述
在这里插入图片描述

Sarsa算法的收敛性

与TD算法证明类似。
在这里插入图片描述

Sarsa算法的伪代码

相比TD,Sarsa算法和policy improvement相结合,这里采用的是 ϵ \epsilon ϵ-greedy policy。
在这里插入图片描述

Q-learning

Q-learning与前面两个算法不同的是它是直接对贝尔曼最优方程进行求解。

Q-learning算法如下:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) ⌊ q t ( s t , a t ) − [ r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) ] ⌋ , q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) , \begin{aligned} q_{t+1}(s_{t},a_{t})& =q_t(s_t,a_t)-\alpha_t(s_t,a_t)\left\lfloor q_t(s_t,a_t)-[r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a)]\right\rfloor, \\ q_{t+1}(s,a)& =q_t(s,a),\quad\forall(s,a)\neq(s_t,a_t), \end{aligned} qt+1(st,at)qt+1(s,a)=qt(st,at)αt(st,at)qt(st,at)[rt+1+γaAmaxqt(st+1,a)],=qt(s,a),(s,a)=(st,at),
与Sarsa算法类似,唯一的不同点就是Q-learning的TD target是 r t + 1 + γ max ⁡ a ∈ A q t ( s t + 1 , a ) r_{t+1}+\gamma\max_{a\in\mathcal{A}}q_t(s_{t+1},a) rt+1+γmaxaAqt(st+1,a)
Q-learning算法求解的是关于动作值函数的贝尔曼最优方程: q ( s , a ) = E [ R t + 1 + γ max ⁡ a q ( S t + 1 , a ) ∣ S t = s , A t = a ] , ∀ s , a . \left.q(s,a)=\mathbb{E}\left[R_{t+1}+\gamma\max_{a}q(S_{t+1},a)\right|S_{t}=s,A_{t}=a\right],\quad\forall s,a. q(s,a)=E[Rt+1+γamaxq(St+1,a) St=s,At=a],s,a.

on-policy learning and off-policy learning

在这里插入图片描述
如下是Q-learning 两种不同版本的伪代码(on-policy learning and off-policy learning)
在这里插入图片描述

参考资料

课程《强化学习的数学原理》 赵世钰教授 西湖大学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值