11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】

文章目录

  • 基于近似的离线策略方法
    • 前言
    • 1.半梯度方法
    • 2.off-policy发散的例子
      • 2.1 MDP中取出两个状态
      • baird counterexample贝尔德反例
      • Tsitsiklis and Van Roy’s Counterexample
    • 3. 死亡三角/死亡三元组
    • 4. 线性值函数几何学
    • 5. 贝尔曼误差中的梯度下降
    • 6.贝尔曼误差的不可学习性
    • 7.梯度TD方法
    • 8. Emphatic-TD方法
    • 9. 减小方差
    • 总结

基于近似的离线策略方法

前言

on-policy和off-policy方法是处理GPI中探索和利用矛盾的两种方法,其中on-policy方法只能学得一个次优的策略(因为它得到的是针对某种策略的最优策略,并不是针对全局),而off-policy则能学得全局最优的策略。将off-policy方法结合拟合器,与on-policy方法的结合拟合器的方式相比要有很多区别,也更困难。之前我们介绍的那些off-policy方法可以直接扩展到拟合器的形式,但是收敛性不好。本章我们会研究下线性函数拟合器的收敛性问题,引入可学习性的概念,然后介绍在off-policy情形能更好地收敛的算法,但是这些方法还是不如on-policy时稳定。通过这些讨论,对于带拟合器的RL,无论是on-policy还是off-policy的,我们都会认识得更深刻。

在off-policy时,target策略 π \pi π是贪婪的,behavior策略b是探索性的。对于预测问题,两个策略都是已知的;对于控制问题,两个策略都是变化的。我们的学习目标是得到 v ^ ≈ v π \hat{v} \approx v_{\pi} v^vπ或者 q ^ ≈ q π \hat{q} \approx q_{\pi} q^qπ.

off-policy方法中有两个关键挑战(更新目标的变化,更新分布的变化):

更新目标如何定义。由于得到的样本是遵循b的,而想要学习的值函数是 π \pi π,因此必须设置合理的更新目标。我们采用重要性采样解决,无论对表格方法还是拟合器方法都类似。注意,重要性采样会扩大方差,但是消除了偏差
我们得到的样本服从off-policy分布,而不是on-policy分布。我们在第八章介绍过,选择哪个状态/状态动作对更新是有技巧的,采用trajectory sampling更新效果很好,实际上on-policy分布对半梯度方法[因为这里的梯度是不准确的]的稳定性非常重要。解决这个有两种方法,一个是基于重要性采样调整update分布到on-policy分布;一个是采用不依赖任何特殊分布的真正的梯度方法。目前这也是一个公开尚未解决的问题。

1.半梯度方法

本节我们只考虑上述所提到的第一种挑战,就是引入重要性采样,形成off-policy下的梯度参数的更新目标。
单步off-policy半梯度方法
off-policy半梯度无非就是把重要性采样和梯度结合起来:
w t + 1 ≐ w t + α ρ t δ t ∇ v ^ ( S t , w t ) \mathbf{w}_{t+1} \doteq \mathbf{w}_{t}+\alpha \rho_{t} \delta_{t} \nabla \hat{v}\left(S_{t}, \mathbf{w}_{t}\right) wt+1wt+αρtδtv^(St,wt)
其中 ρ t \rho_{t} ρt就是重要性采样比,对于单步TD方法其表达式就是:
ρ t ≐ ρ t : t = π ( A t ∣ S t ) b ( A t ∣ S t ) \rho_{t} \doteq \rho_{t : t}=\frac{\pi\left(A_{t} | S_{t}\right)}{b\left(A_{t} | S_{t}\right)} ρtρt:t=b(AtSt)π(AtSt)
TD error δ t \delta_{t} δt的表达式依赖于回报是否有折扣(在episodic task是有折扣的,在continuing task中是没有折扣的,而是平均回报误差):
δ t ≐ R t + 1 + γ v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) , or δ t ≐ R t + 1 − R ‾ t + v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) \delta_{t} \doteq R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)-\hat{v}\left(S_{t}, \mathbf{w}_{t}\right), \text{or}\\ \delta_{t} \doteq R_{t+1}-\overline{R}_{t}+\hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)-\hat{v}\left(S_{t}, \mathbf{w}_{t}\right) δtRt+1+γv^(St+1,wt)v^(St,wt),orδtRt+1Rt+v^(St+1,wt)v^(St,wt)

对于动作值函数 而言,one-step TD方法就是半梯度期望sarsa算法,权重更新表达式:
w t + 1 ≐ w t + α δ t ∇ q ^ ( S t , A t , w t ) \mathbf{w}_{t+1} \doteq \mathbf{w}_{t}+\alpha \delta_{t} \nabla \hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t}\right) wt+1wt+αδtq^(St,At,wt)
其中,对于episodic task折扣形式回报的TD error是:
δ t ≐ R t + 1 + γ ∑ a π ( a ∣ S t + 1 ) q ^ ( S t + 1 , a , w t ) − q ^ ( S t , A t , w t ) \delta_{t} \doteq R_{t+1}+\gamma \sum_{a} \pi\left(a | S_{t+1}\right) \hat{q}\left(S_{t+1}, a, \mathbf{w}_{t}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t}\right) δtRt+1+γaπ(aSt+1)q^(St+1,a,wt)q^(St,At,wt)
对于continuing task采用的是平均回报,所以其TD error是:
δ t ≐ R t + 1 − R ‾ t + ∑ a π ( a ∣ S t + 1 ) q ^ ( S t + 1 , a , w t ) − q ^ ( S t , A t , w t ) \delta_{t} \doteq R_{t+1}-\overline{R}_{t}+\sum_{a} \pi\left(a | S_{t+1}\right) \hat{q}\left(S_{t+1}, a, \mathbf{w}_{t}\right)-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t}\right) δtRt+1Rt+aπ(aSt+1)q^(St+1,a,wt)q^(St,At,wt)
这里为什么没有重要性采样因子呢?原因是对于单步的动作值函数估计来说,这个动作是已知的,不需要采样,没有采样的操作,所以无需计算重要性采样比。(这个解释不一定是正确的,还需要进一步深入学习更多的近似理论再作明确。)

多步off-policy半梯度方法
对于多步的情况,无论是状态值函数还是动作值函数都需要进行采样。n-step 半梯度期望sarsa算法:
w t + n ≐ w t + n − 1 + α ρ t + 1 ⋯ ρ t + n − 1 [ G t : t + n − q ^ ( S t , A t , w t + n − 1 ) ] ∇ q ^ ( S t , A t , w t + n − 1 ) \mathbf{w}_{t+n} \doteq \mathbf{w}_{t+n-1}+\alpha \rho_{t+1} \cdots \rho_{t+n-1}\left[G_{t : t+n}-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t+n-1}\right)\right] \nabla \hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t+n-1}\right) wt+nwt+n1+αρt+1ρt+n1[Gt:t+nq^(St,At,wt+n1)]q^(St,At,wt+n1)
其中
G t : t + n ≐ R t + 1 + ⋯ + γ n − 1 R t + n + γ n q ^ ( S t + n , A t + n , w t + n − 1 ) ,  or  (  episodic  ) G t : t + n ≐ R t + 1 − R ‾ t + ⋯ + R t + n − R ‾ t + n − 1 + q ^ ( S t + n , A t + n , w t + n − 1 ) (  continuing  ) \begin{aligned} G_{t : t+n} &\doteq R_{t+1}+\cdots+\gamma^{n-1} R_{t+n}+\gamma^{n} \hat{q}\left(S_{t+n}, A_{t+n}, \mathbf{w}_{t+n-1}\right), \text { or } &(\text { episodic })\\ G_{t : t+n} &\doteq R_{t+1}-\overline{R}_{t}+\cdots+R_{t+n}-\overline{R}_{t+n-1}+\hat{q}\left(S_{t+n}, A_{t+n}, \mathbf{w}_{t+n-1}\right) &(\text { continuing }) \end{aligned} Gt:t+nGt:t+nRt+1++γn1Rt+n+γnq^(St+n,At+n,wt+n1), or Rt+1Rt++Rt+nRt+n1+q^(St+n,At+n,wt+n1)( episodic )( continuing )

半梯度树备份方法
之前在第七章还提到了一种不涉及重要性采样的off-policy方法,就是树备份方法。

半梯度树备份方法的表达式:
w t + n ≐ w t + n − 1 + α [ G t : t + n − q ^ ( S t , A t , w t + n − 1 ) ] ∇ q ^ ( S t , A t , w t + n − 1 ) \mathbf{w}_{t+n} \doteq \mathbf{w}_{t+n-1}+\alpha\left[G_{t : t+n}-\hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t+n-1}\right)\right] \nabla \hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t+n-1}\right) wt+nwt+n1+α[Gt:t+nq^(St,At,wt+n1)]q^(St,At,wt+n1)
其中更新目标就是:
G t : t + n ≐ q ^ ( S t , A t , w t + n − 1 ) + ∑ k = t t + n − 1 δ k ∏ i = t + 1 k γ π ( A i ∣ S i ) G_{t : t+n} \doteq \hat{q}\left(S_{t}, A_{t}, \mathbf{w}_{t+n-1}\right)+\sum_{k=t}^{t+n-1} \delta_{k} \prod_{i=t+1}^{k} \gamma \pi\left(A_{i} | S_{i}\right) Gt:t+nq^(St,At,wt+n1)+k=tt+n1δki=t+1kγπ(AiSi)
其中 δ t \delta_t δt采用的是半梯度期望sarsa的形式。(参考第七章相关内容理解上式)

2.off-policy发散的例子

2.1 MDP中取出两个状态

11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第1张图片
假设MDP中的两个状态,采用函数近似的方法,线性拟合器近似的状态值的结果分别是w和2w,w是权重参数,这里假设是一个标量。假设在第一个状态下有一个动作可选,转移到第二个状态,即时奖励为0.
假设w的初值为10,那么此时两个状态值分别是10和20,经过一次转移之后,权重更新(假设 γ = 1 , α = 0.1 \gamma = 1,\alpha = 0.1 γ=1,α=0.1): w ← w o l d + α [ R + V ( S 2 ) − V ( S 1 ) ] = 10 + 0.1 x 10 = 11 w \leftarrow w_old + \alpha[R+V(S_2)-V(S_1)]=10+0.1x10=11 wwold+α[R+V(S2)V(S1)]=10+0.1x10=11。可以看出状态1的估计值增大,以此为了减小td error。但是此时状态2的值也增大了,变为了22,此时TD error反而更大了,以此进行下去,最终会发散到无穷大。
我们进一步分析,对于状态 s 1 s_1 s1来说,其TD error为:
δ t = R t + 1 + γ v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) = 0 + γ 2 w t − w t = ( 2 γ − 1 ) w t \delta_{t}=R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)-\hat{v}\left(S_{t}, \mathbf{w}_{t}\right)=0+\gamma 2 w_{t}-w_{t}=(2 \gamma-1) w_{t} δt=Rt+1+γv^(St+1,wt)v^(St,wt)=0+γ2wtwt=(2γ1)wt
那么根据off-policy的半梯度TD(0),w的更新公式为:
w t + 1 = w t + α ρ t δ t ∇ v ^ ( S t , w t ) = w t + α ⋅ 1 ⋅ ( 2 γ − 1 ) w t ⋅ 1 = ( 1 + α ( 2 γ − 1 ) ) w t w_{t+1}=w_{t}+\alpha \rho_{t} \delta_{t} \nabla \hat{v}\left(S_{t}, w_{t}\right)=w_{t}+\alpha \cdot 1 \cdot(2 \gamma-1) w_{t} \cdot 1=(1+\alpha(2 \gamma-1)) w_{t} wt+1=wt+αρtδtv^(St,wt)=wt+α1(2γ1)wt1=(1+α(2γ1))wt
如果 1 + α ( 2 γ − 1 ) 1+\alpha(2 \gamma-1) 1+α(2γ1)大于0的话,那么一直更新下去一定会发散,因此必须满足 γ < 1 \gamma<1 γ1的条件才会保证其不发散。
因为这里只有一个动作可选,因此采样比是1.进一步分析上面的例子,在这个例子中我们仅仅关注了一个MDP过程的两个状态之间的转移,不断只利用状态 s 1 s_1 s1到状态 s 2 s_2 s2这个转移更新,如果是在on-policy下,这种情况是不可能出现的,因为按照trajectory更新的话,更新完 s 1 s_1 s1 s 2 s_2 s2这个转移之后,就会更新 s 2 s_2 s2到下一个状态的转移,如果下一个状态是终止状态的话,那么 s 2 s_2 s2就会以常数 R 3 R_3 R3作为更新目标,因此如果 R 3 R_3 R3的值比 s 2 s_2 s2大的话就会导致 s 2 s_2 s2的值提高,但是当 s 2 s_2 s2的值提高到比 R 3 R_3 R3的值还要大的时候,此时后面的更新就会出现下降的过程,从而减小 w t w_t wt的值,使得算法最终趋向于平衡,不至于发散。但是对于off-policy的情况来看,可能由于target policy选择可以导致从 s 2 s_2 s2到下一个状态的动作的概率为0,所以会导致采样比为0,那么就会不断依据从状态 s 1 s_1 s1到状态 s 2 s_2 s2进行更新,从而造成发散。

baird counterexample贝尔德反例

11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第2张图片
虚线表示的动作会以相同的概率转移到图上方所示的六个状态,实线表示的动作是将状态转移到第7个状态。行为策略选择虚线、实线的概率分别是6/7、1/7.目标策略是总是选择实线。所有的转移回报均为0.其他参数见图右所示。

线性值函数近似:利用线性近似器估计MDP的状态值,线性参数为 w ∈ R 8 \mathbf{w} \in \mathbb{R}^{8} wR8,每个状态的特征向量是8维的,比如 x ( 1 ) = ( 2 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ) T x(1)=(2,0,0,0,0,0,0,1)^T x(1)=(2,0,0,0,0,0,0,1)T,所以第一个状态的值为 2 w 1 + w 8 2w_1+w_8 2w1+w8,经过线性近似和特征表示,其他状态的值如上图中的圆圈所示。由于每一步的即时回报都是0,所以每个状态对应的真实的值函数也都是0.但是由于我们只有7个状态,却有8个变量,所以会有无穷组解。
如果利用off-policy的半梯度TD(0)或DP方法求解上述问题,权重会发散,
11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第3张图片
(由于已知状态转移P,已知policy,所以可以使用DP,只是采用了线性近似的方式求状态值)
权重更新表达式:
w k + 1 ≐ w k + α ∣ S ∣ ∑ s ( E π [ R t + 1 + γ v ^ ( S t + 1 , w k ) ∣ S t = s ] − v ^ ( s , w k ) ) ∇ v ^ ( s , w k ) \mathbf{w}_{k+1} \doteq \mathbf{w}_{k}+\frac{\alpha}{|\mathcal{S}|} \sum_{s}\left(\mathbb{E}_{\pi}\left[R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}_{k}\right) | S_{t}=s\right]-\hat{v}\left(s, \mathbf{w}_{k}\right)\right) \nabla \hat{v}\left(s, \mathbf{w}_{k}\right) wk+1wk+Sαs(Eπ[Rt+1+γv^(St+1,wk)St=s]v^(s,wk))v^(s,wk)
因为这里求的是期望,所以可以排除采样、随机或者状态更新次序的影响,但是依然是发散的。
如果采用on-policy的方式就可以收敛。表面上看起来时由于行为策略不同,导致状态分布不同,也就是说状态的分布决定了更新的分布。由此就表明一个问题,off-policy会带来两个挑战,一个是更新目标的偏差,一个是更新的分布。其结论就是:在off-policy的情况下,尽管结合最简单的自举方法或者函数近似方法也会导致发散
一种避免发散的方法就是使用特别的函数近似器,不在观测目标之间插值的近似方法可以保证收敛 。这些方法叫做averagers,比如近邻方法和局部加权回归,类似于基于记忆的非参数化的方法。但是使用堆编码或神经网络无法保证收敛。

Tsitsiklis and Van Roy’s Counterexample

11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第4张图片
在之前的2状态的例子上加了一个终止状态,使用基于DP的近似方法来求解权重,
w k + 1 = arg ⁡ min ⁡ w ∈ R ∑ s ∈ S ( v ^ ( s , w ) − E π [ R t + 1 + γ v ^ ( S t + 1 , w k ) ∣ S t = s ] ) 2 = arg ⁡ min ⁡ w ∈ R ( w − γ 2 w k ) 2 + ( 2 w − ( 1 − ε ) γ 2 w k ) 2 = 6 − 4 ε 5 γ w k \begin{aligned} w_{k+1} &=\underset{w \in \mathbb{R}}{\arg\min} \sum_{s \in \mathcal{S}}\left(\hat{v}(s, w)-\mathbb{E}_{\pi}\left[R_{t+1}+\gamma \hat{v}\left(S_{t+1}, w_{k}\right) | S_{t}=s\right]\right)^{2} \\ &=\underset{w \in \mathbb{R}}{\arg\min}\left(w-\gamma 2 w_{k}\right)^{2}+\left(2 w-(1-\varepsilon) \gamma 2 w_{k}\right)^{2} \\ &=\frac{6-4 \varepsilon}{5} \gamma w_{k} & \end{aligned} wk+1=wRargminsS(v^(s,w)Eπ[Rt+1+γv^(St+1,wk)St=s])2=wRargmin(wγ2wk)2+(2w(1ε)γ2wk)2=564εγwk
可见当 γ > 5 6 − 4 ε a n d w 0 ≠ 0 \gamma>\frac{5}{6-4 \varepsilon} and w_{0} \neq 0 γ>64ε5andw0=0时,更新权重序列依然是发散的。

3. 死亡三角/死亡三元组

通过上一节的内容我们可以总结出是三个导致强化学习系统发散或不稳定的因素,当他们同时出现的时候,系统就会出现收敛性问题。这三个因素分别是:

  • 函数近似 function approximation :利用不同的近似拟合器代替表格化的方法
  • 自举 bootstrap :通过估计值来更新估计值
  • 离线策略 off-policy :在行为策略产生的转移分布上训练和学习目标策略。在DP中遍历所有状态并执行批量更新,其实也不符合目标策略的转移分布,因此也属于离线策略的范畴。

既然这三个因素同时出现会导致系统发散,那么可否丢弃其中一个元素呢?经过一番讨论,没有任何结果,发现三个元素都很重要。
首先对于值函数近似,不管对于什么问题,值函数的计算是必不可少的,当前比较流行的AC架构也是结合了策略和值函数,并没有完全的抛弃值函数。
对于自举来说,利用自举可以提高计算效率,采用MC的方法则必须等到episode结束之后才可进行一系列的更新操作。
off-policy learning呢,对于无模型的我们使用sarsa就够了,但是想想off-policy方法,意味着我们可以学到一个解决问题的policy,学习数据来自不同的policy。这就意味着可以使用很多旧数据,能够提高样本效率。sutton也说off-policy方法可以创造强大的agent。

4. 线性值函数几何学

值函数的本质实际上是状态到一个实数的映射,比如对于状态空间 S = s 1 , s 2 , s 3 . . . s ∣ S ∣ S={s_1,s_2,s_3...s_{|S|}} S=s1,s2,s3...sS,可以把其值函数看作是一个向量 [ v ( s 1 ) , v ( s 2 ) . . . v ( s ∣ S ∣ ) ] T [v(s_1),v(s_2)...v(s_{|S|})]^T [v(s1),v(s2)...v(sS)]T.一般的,近似拟合器的参数数量是低于状态数量的。
假设状态空间 S = s 1 , s 2 , s 3 S={s_1,s_2,s_3} S=s1,s2,s3,线性拟合器 w = ( w 1 , w 2 ) T w=(w_1,w_2)^T w=(w1,w2)T,所有值函数就是三维空间中的一个点。拟合器相当于提供了另外一个坐标系统,每个参数向量都是这个子空间的一个点(二维空间的点),拟合器实际上可以看作是值函数空间的一个平面。其形状由值函数的形式、特征形式决定。当值函数是线性的话,拟合器就是三维值函数空间的一个平面。
11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第5张图片

值误差
对于固定的策略,其真实值函数表示为 v π v_\pi vπ,我们无法用近似拟合器精确获得它的值,所以它不在拟合器的平面上,如上图,其在拟合器的平面之上。如果我们没有办法精确的表示值函数,那么取而代之的方案是什么呢?那么我们应该如何获得一个最接近真实值函数的表现形式呢?提到接近,那么我们可能就会想到距离,那么用距离又该如何衡量估计值函数与真实值函数之间的相近程度呢?比如对于两个值函数向量 v 1 v_1 v1 v 2 v_2 v2,我们可以利用向量差来表示这两个向量之间的差异 v = v 1 − v 2 v=v_1-v_2 v=v1v2,如果v比较小的话,那么就说明这两个向量之间比较接近。但是如何描述这个差值呢?传统的方法是使用欧几里得范数,但是光靠范数是不能够的,因为对于一个大的状态空间来说,我们只专注于我们感兴趣的状态子空间,部分状态的近似值可能误差会很大,但是我们对这些状态并不感兴趣,因此就可以完全忽略掉这个误差。这个时候就需要一个权重系数,所以可以考虑采用加权的形式,给每个状态一个权重 μ ( s ) \mu(s) μ(s)表示对于误差贡献的大小。
新的加权距离表示:
∥ v ∥ μ 2 ≐ ∑ s ∈ S μ ( s ) v ( s ) 2 \|v\|_{\mu}^{2} \doteq \sum_{s \in \mathcal{S}} \mu(s) v(s)^{2} vμ2sSμ(s)v(s)2

μ ( s ) \mu(s) μ(s)一般选择on-policy分布,那么之前我们定义过的value error就可以表示为:
V E ‾ ( w ) = ∥ v w − v π ∥ μ 2 \overline{\mathrm{VE}}(\mathbf{w})=\left\|v_{\mathbf{w}}-v_{\pi}\right\|_{\mu}^{2} VE(w)=vwvπμ2
所以求解距离v最近的子空间表征就是一个投影操作。定义投影算子 Π \Pi Π将任意的一个值函数v映射到范数最小的表征函数:
Π v ≐ v w  where  w = arg ⁡ min ⁡ w ∈ R d ∥ v − v w ∥ μ 2 \Pi v \doteq v_{\mathbf{w}} \quad \text { where } \quad \mathbf{w}=\underset{\mathbf{w} \in \mathbb{R}^{d}}{\arg\min}\left\|v-v_{\mathbf{w}}\right\|_{\mu}^{2} Πvvw where w=wRdargminvvwμ2
所以求解最好的近似函数就变为了求 v π v_{\pi} vπ的投影。可以通过MC的方式获得这个解。通过大量的采样 v π v_{\pi} vπ,有了真实的 v π v_{\pi} vπ然后求投影/最小化值误差就可以得到 v w v_{w} vw.

贝尔曼误差
除了用MC的方法求解 v π v_{\pi} vπ,还可以使用TD方法。但是这两种方法得到的解是不一样的,回顾贝尔曼方程。
v π ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] ,  for all  s ∈ S v_{\pi}(s)=\sum_{a} \pi(a | s) \sum_{s^{\prime}, r} p\left(s^{\prime}, r | s, a\right)\left[r+\gamma v_{\pi}\left(s^{\prime}\right)\right], \quad \text { for all } s \in \mathcal{S} vπ(s)=aπ(as)s,rp(s,rs,a)[r+γvπ(s)], for all sS
我们把 v π v_{\pi} vπ看做是一个变量,那么上面等式的精确解就是 v π v_{\pi} vπ了,但是我们的近似解是 v w v_{w} vw,如果这两个解不相等的话,那就意味着 v w v_{w} vw无法使上式满足,因为左右两边不相等,所以不成立。但是两者之间的差值可以用来衡量 v π v_{\pi} vπ v w v_{w} vw之间的距离,我们叫做贝尔曼误差
δ ‾ w ( s ) ≐ ( ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v w ( s ′ ) ] ) − v w ( s ) = E π [ R t + 1 + γ v w ( S t + 1 ) − v w ( S t ) ∣ S t = s , A t ∼ π ] \begin{aligned} \overline{\delta}_{\mathbf{w}}(s) & \doteq\left(\sum_{a} \pi(a | s) \sum_{s^{\prime}, r} p\left(s^{\prime}, r | s, a\right)\left[r+\gamma v_{\mathbf{w}}\left(s^{\prime}\right)\right]\right)-v_{\mathbf{w}}(s) & \\ &=\mathbb{E}_{\pi}\left[R_{t+1}+\gamma v_{\mathbf{w}}\left(S_{t+1}\right)-v_{\mathbf{w}}\left(S_{t}\right) | S_{t}=s, A_{t} \sim \pi\right] & \end{aligned} δw(s)aπ(as)s,rp(s,rs,a)[r+γvw(s)]vw(s)=Eπ[Rt+1+γvw(St+1)vw(St)St=s,Atπ]
由此可见,贝尔曼误差是TD error的期望每个状态的贝尔曼误差构成一个向量,叫做贝尔曼误差向量。这个误差向量的范数就叫做均方贝尔曼误差。
B E ‾ ( w ) = ∥ δ ‾ w ∥ μ 2 \overline{\mathrm{BE}}(\mathbf{w})=\left\|\overline{\delta}_{\mathbf{w}}\right\|_{\mu}^{2} BE(w)=δwμ2
如果我们可以把贝尔曼误差降为0,其实就意味着我们得到真实的 v π v_{\pi} vπ,但是一般来说是不可能实现的,但是我们可以得到一个收敛的w以此来最小化Bellman Error(BE)。但是这个解和通过Value Error(VE)得到的解是不一样的。后面会讲一些试图最小化BE的方法。

投影贝尔曼误差
借助贝尔曼方程定义贝尔曼算子为:
( B π v ) ( s ) ≐ ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ( s ′ ) ] \left(B_{\pi} v\right)(s) \doteq \sum_{a} \pi(a | s) \sum_{s^{\prime}, r} p\left(s^{\prime}, r | s, a\right)\left[r+\gamma v\left(s^{\prime}\right)\right] (Bπv)(s)aπ(as)s,rp(s,rs,a)[r+γv(s)]
所以贝尔曼误差向量就可以表示为:
δ ‾ w = B π v w − v w \overline{\delta}_{\mathbf{w}}=B_{\pi} v_{\mathbf{w}}-v_{\mathbf{w}} δw=Bπvwvw
如果重复的在子空间之外对值函数做贝尔曼运算,那么最终我们会收敛到真实的值函数 v π v_{\pi} vπ。但是在值函数近似中,我们只能表征子空间的值函数,对于值空间的函数无法表示,所以就必须将其投影到子空间中。也就是从 B π v w B_\pi v_w Bπvw映射到 Π B π v w \Pi B_\pi v_w ΠBπvw 。这个子空间的值函数通过贝尔曼算子带到子空间之外,然后再被投影回来。通过这个往复过程,我们把投影前后两个向量的误差叫做投影贝尔曼误差向量projected bellman error(PBE) 。这个向量的大小定义了另一个值函数近似的误差测度,叫均方投影贝尔曼误差。其定义为:
P B E ‾ ( w ) = ∥ Π δ ‾ w ∥ μ 2 \overline{\mathrm{PBE}}(\mathbf{w})=\left\|\Pi \overline{\delta}_{\mathbf{w}}\right\|_{\mu}^{2} PBE(w)=Πδwμ2

在线性函数近似中,总是可以找到一个值函数使均方投影贝尔曼误差为0.
(可结合之前讲的投影算子以及本节内容最开始的那张图进行理解)
其实上面的整个过程总结起来就是,由于值空间是三维的,但是我们采用值函数近似的方法,权重向量w是一个二维的,那么权重向量所构成的子空间就是一个平面,可以理解为是真实值函数空间的一个子空间。我们的终极目标自然是得到一个精确的真实值函数估计,但往往不可能办到,所以我们要尽可能的缩小近似的误差。我们可以利用的数据仅仅是由权重参数构成的一个二维空间中的数据,那么怎么与三维的值空间联系起来呢,就是把三维的值空间函数映射到二维子空间来,然后再根据范数求最小误差。

值误差VE是利用类似MC方法得到的近似函数的测度.如果用类似于贝尔曼的更新方式,比如TD方法,就得到了贝尔曼误差测度.贝尔曼误差测度又分两种情况,如果在原空间(值向量空间)执行贝尔曼算子,就是贝尔曼误差BE,它会收敛到最优解.如果用了函数近似,我们在迭代贝尔曼算子的时候,必须把值函数投影到子空间,这样会得到不同的解.这个误差就是投影贝尔曼误差PBE。

5. 贝尔曼误差中的梯度下降

上一节内容我们讲了一些计算误差的方法,或者也可以叫做损失函数。有了损失函数我们就可以使用SGD方法来求解参数。但是目前只有基于MC的近似方法才是真正的梯度下降法。基于bootstrap的近似方法只能算是半梯度下降方法。基于真正的梯度下降方法,无论是on-policy还是off-policy,无论是基于线性函数的近似还是非线性近似都可以收敛。但是对于半梯度下降方法而言,在off-policy的情况下容易发散。本节和下一节将探索基于贝尔曼误差的一些方法。

原始残差梯度算法
我们先只考虑TD error,在一般的值函数近似中,单步折扣TD error为:
δ t = R t + 1 + γ v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) \delta_{t}=R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)-\hat{v}\left(S_{t}, \mathbf{w}_{t}\right) δt=Rt+1+γv^(St+1,wt)v^(St,wt)
其对应的均方TD error 是:
TDE ⁡ ‾ ( w ) = ∑ s ∈ S μ ( s ) E [ δ t 2 ∣ S t = s , A t ∼ π ] = ∑ s ∈ S μ ( s ) E [ ρ t δ t 2 ∣ S t = s , A t ∼ b ] = E b [ ρ t δ t 2 ]    (if    μ    is    the distribution encountered under b) \begin{aligned} \overline{\operatorname{TDE}}(\mathbf{w}) &=\sum_{s \in \mathcal{S}} \mu(s) \mathbb{E}\left[\delta_{t}^{2} | S_{t}=s, A_{t} \sim \pi\right] \\ &=\sum_{s \in \mathcal{S}} \mu(s) \mathbb{E}\left[\rho_{t} \delta_{t}^{2} | S_{t}=s, A_{t} \sim b\right] \\ &=\mathbb{E}_{b}\left[\rho_{t} \delta_{t}^{2}\right] & \;\text{(if} \;\mu \;\text{is} \; \text{the distribution encountered under b)} \end{aligned} TDE(w)=sSμ(s)E[δt2St=s,Atπ]=sSμ(s)E[ρtδt2St=s,Atb]=Eb[ρtδt2](ifμisthe distribution encountered under b)
上面给出了基于on-policy和off-policy的所有状态上的excepted TD error。随机梯度是从期望中采样一些经验,然后再根据这些采样经验的梯度更新目标函数的权重,所以目标函数是一个期望,并且这些经验往往是off-policy。 E b [ ρ t δ t 2 ] \mathbb{E}_{b}\left[\rho_{t} \delta_{t}^{2}\right] Eb[ρtδt2]。利用SGD,单步的单样本权重参数更新表示为:
w t + 1 = w t − 1 2 α ∇ ( ρ t δ t 2 ) = w t − α ρ t δ t ∇ δ t = w t + α ρ t δ t ( ∇ v ^ ( S t , w t ) − γ ∇ v ^ ( S t + 1 , w t ) ) \begin{aligned} \mathbf{w}_{t+1} &=\mathbf{w}_{t}-\frac{1}{2} \alpha \nabla\left(\rho_{t} \delta_{t}^{2}\right) \\ &=\mathbf{w}_{t}-\alpha \rho_{t} \delta_{t} \nabla \delta_{t} \\ &=\mathbf{w}_{t}+\alpha \rho_{t} \delta_{t}\left(\nabla \hat{v}\left(S_{t}, \mathbf{w}_{t}\right)-\gamma \nabla \hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)\right) \end{aligned} wt+1=wt21α(ρtδt2)=wtαρtδtδt=wt+αρtδt(v^(St,wt)γv^(St+1,wt))
这个有点类似之前我们提到的半梯度TD算法的权重更新表达式,但是多了后面一项。实际上在半梯度TD算法中,我们把t+1时刻的值函数估计值看作是一个常数,所以求导之后为0.但是如果考虑这一项的话,就变为了全梯度也就是真正意义上的SGD。我们称之为残差梯度算法naive residual-gradient 。尽管其鲁棒性很好,但是并不一定可以收敛到我们的期望值。

example: 举例说明原始参数梯度算法无法收敛到期望值
11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第6张图片
考虑一个包含三个状态和一个终止状态的episodic MRP问题。每个episode从A开始,然后按照50%的概率转移到B或C。折扣因子为1,且是on-policy,采用基于表格的方式。
从A开始有一半的概率可以获得1的奖励,一半的概率获得0的奖励。所以A的真实值为0.5,B、C的真实值分别为1和0. 但是如果使用残差梯度算法的话,A、B、C收敛的值分别是0.5、 0.75、 0.25。

为什么不同呢?残差梯度算法的目标是最小化均方TD error,
对于残差梯度方法,状态A、B、C的收敛解分别是(1/2, 3/4, 1/4).因此从A转移到B和C的TD误差分别为:0+3/4-1/2和0+1/4-1/2,平方误差都是1/16.第二步的转移是从B或者C到终止态,TD误差分别是1+0-3/4=1/4和0+0-1/4=-1/4。平方TD误差也是1/16.所以平均每步的转移TD误差为1/16.
然后我们再计算真实值(1/2, 1, 0)的平均转移TD误差。第一步从A转移到B或者C的TD误差是0+1-1/2=1/2和0+0-1/2=-1/2。所以平方TD误差为1/4.对于B、C的值等于估计值,所以第二步的转移TD误差为0,平均的转移误差是1/8,大于1/16.
这说明单纯的最小化TD error并不能得到最优解,因为真实的值函数可能会产生更大的TD error。实际上,最小化TD error往往会实现一种时间平滑的效果,并不是精确的值估计。因为TD error就是在一定时间跨度上值函数的差别,这个值越小,表示值函数的值越接近。

最小化贝尔曼误差
如果值函数的估计是精确的,那么所有状态的贝尔曼误差就应该是0. 但是一般来说我们无法使贝尔曼误差为0,因为这就意味着我们精确的得到了真实的值函数,但是这是不可能的。因为在上一节我们看到,真实的值函数是处于我们可操作的子空间之外的,我们只能尽量去接近。但是贝尔曼误差与TD error是有关系的,每个状态的贝尔曼误差等于这个状态下的TD error的期望值。所以可以仿照之前的TD error的更新推导贝尔曼误差的权重参数更新公式:
w t + 1 = w t − 1 2 α ∇ ( E π [ δ t ] 2 ) = w t − 1 2 α ∇ ( E b [ ρ t δ t ] 2 ) = w t − α E b [ ρ t δ t ] ∇ E b [ ρ t δ t ] = w t − α E b [ ρ t ( R t + 1 + γ v ^ ( S t + 1 , w ) − v ^ ( S t , w ) ) ] E b [ ρ t ∇ δ t ] = w t + α [ E b [ ρ t ( R t + 1 + γ v ^ ( S t + 1 , w ) ) ] − v ^ ( S t , w ) ] [ ∇ v ^ ( S t , w ) − γ E b [ ρ t ∇ v ^ ( S t + 1 , w ) ] ] \begin{aligned} \mathbf{w}_{t+1} &=\mathbf{w}_{t}-\frac{1}{2} \alpha \nabla\left(\mathbb{E}_{\pi}\left[\delta_{t}\right]^{2}\right) \\ &=\mathbf{w}_{t}-\frac{1}{2} \alpha \nabla\left(\mathbb{E}_{b}\left[\rho_{t} \delta_{t}\right]^{2}\right) \\ &=\mathbf{w}_{t}-\alpha \mathbb{E}_{b}\left[\rho_{t} \delta_{t}\right] \nabla \mathbb{E}_{b}\left[\rho_{t} \delta_{t}\right] \\ &=\mathbf{w}_{t}-\alpha \mathbb{E}_{b}\left[\rho_{t}\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)-\hat{v}\left(S_{t}, \mathbf{w}\right)\right)\right] \mathbb{E}_{b}\left[\rho_{t} \nabla \delta_{t}\right] \\ &=\mathbf{w}_{t}+\alpha\left[\mathbb{E}_{b}\left[\rho_{t}\left(R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}\right)\right)\right]-\hat{v}\left(S_{t}, \mathbf{w}\right)\right]\left[\nabla \hat{v}\left(S_{t}, \mathbf{w}\right)-\gamma \mathbb{E}_{b}\left[\rho_{t} \nabla \hat{v}\left(S_{t+1}, \mathbf{w}\right)\right]\right] \end{aligned} wt+1=wt21α(Eπ[δt]2)=wt21α(Eb[ρtδt]2)=wtαEb[ρtδt]Eb[ρtδt]=wtαEb[ρt(Rt+1+γv^(St+1,w)v^(St,w))]Eb[ρtδt]=wt+α[Eb[ρt(Rt+1+γv^(St+1,w))]v^(St,w)][v^(St,w)γEb[ρtv^(St+1,w)]]
这个更新算法叫做残差梯度方法 。如果把上式的求期望操作换做是采样的话,那么它就退化成了原始的残差梯度方法。
这里的求期望操作主要是针对下一状态的,而且有两次求期望,且是相乘的。为了使得期望的乘积是无偏的,那么我们需要独立的对下一个状态进行两次采样,通常来说,在与外界环境交互的过程中我们只能获得一次采样。
为了解决上述的问题,有两种方法:①,在确定性环境下,转移到下一个状态是确定的,所以两次采样的结果肯定是一样的,此时残差梯度方法有效。②,独立的执行两次从 S t S_t St S t + 1 S_{t+1} St+1的采样。一个是为了求第一个期望一个是为了求第二个期望。
结合这两种方法解决算法的有偏性,可以使得残差梯度算法收敛到贝尔曼误差的最小值。因为这是真正的SGD方法,所以适用于线性和非线性的函数近似。在线性情况下,总是可以收敛到全局最优解。
残差梯度算法的局限
尽管残差梯度算法已经是真正意义上的SGD算法,但实际上依然存在几个方面的不足:

  • 实验表明残差梯度算法的收敛速度慢,比半梯度算法慢很多。有人提出了结合半梯度算法和残差梯度算法,先利用半梯度算法快速的获得一个初始解,然后再利用残差梯度算法保证收敛性。
  • 残差梯度算法依然会收敛到我们不期望的值。对于表格型问题而言,它可以保证收敛到精确解。但是对于值函数近似的方法,可能会找到错误的解。
  • 还有一个局限性,我们在下一节中讲述,依然是贝尔曼目标函数自身的问题。

6.贝尔曼误差的不可学习性

在机器学习中,我们说一个问题或者假设不可学习,实际上指的是这个问题或假设不能被有效的学习,也就是说,它本身需要的样本量很大,是指数级的,不是多项式级的,所以不可学习。但是这节我们所提到的不可学习指的是一般意义上的不可学习,也就是说即使有无穷多的样本,依然无法学习到某些量。贝尔曼误差就是不可学习的,因为我们不能从观测数据中学习贝尔曼误差。

example
image
看上述两个MRP例子,左边的MRP问题只有一个状态,下一个状态转移时有相同的概率转移到自身,并且获得0或2的回报。如果这个状态的特征向量x=1,那么该状态对应的状态值 v = w T x = w v=w^Tx=w v=wTx=w.从这个MRP问题我们可以得到一个无限长的回报序列,序列中的值为0和2;右边的MRP问题有两个状态,左边的状态有同等的概率转移到自身或转移到右边的状态,获得的立即回报都是0,右边的状态也是如此,只不过获得的立即回报都是2.因此如果对这个MRP问题采样,我们得到的也都是0和2的序列,既然两个都是0和2的序列,那么该如何辨别到底是哪个MRP问题呢?
假设这里的折扣因子 γ \gamma γ是0,那么对应于上面的两个问题的三个状态的真实值就分别是1,0,2. 如果w=1,那么这两个MRP问题的值误差就分别是0和1。两个问题产生的数据样本分布是一样的,但是值误差却不一样,所以说值误差是不可学习的。所以就不饿能把它作为目标函数。
尽管值误差VE不可学习,也无法作为目标函数,但是上述依赖这个目标获得的解w对于上述两个问题来说都是最优的。这又该如何解释?
我们引入一个完全可学习的目标函数,这个目标函数是可观测到的,就是均方回报误差:
RE ⁡ ‾ ( w ) = E [ ( G t − v ^ ( S t , w ) ) 2 ] = VE ⁡ ‾ ( w ) + E [ ( G t − v π ( S t ) ) 2 ] \begin{aligned} \overline{\operatorname{RE}}(\mathbf{w}) &=\mathbb{E}\left[\left(G_{t}-\hat{v}\left(S_{t}, \mathbf{w}\right)\right)^{2}\right] \\ &=\overline{\operatorname{VE}}(\mathbf{w})+\mathbb{E}\left[\left(G_{t}-v_{\pi}\left(S_{t}\right)\right)^{2}\right] & \end{aligned} RE(w)=E[(Gtv^(St,w))2]=VE(w)+E[(Gtvπ(St))2]
这个式子说明,两个目标函数一样,只不过这里多了一个方差项,这一项与w无关,在计算更新权重参数的时候进行求导,求导之后这一项就为0,所以这两个目标函数应该可以得到相同的最优解。

贝尔曼误差与值误差类似,我们可以借助MDP得到贝尔曼误差,但是并不能通过数据来学习贝尔曼误差。但是与值误差不同,值误差是可以用来求解最优解的,也就是说它的参数是可学习的。对于贝尔曼误差来讲,相同的数据分布可能带来不同的最优解,这就说明最优解与数据无关,因此无法通过数据来学习最优解。其他的基于自举的目标函数,比如投影贝尔曼误差PBE,时间差分误差TDE是依赖于数据的,因此是可以学习的。但是学到的最优参数是不同的,与基于贝尔曼误差学到的最优参数也不同。
11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第7张图片
总的来说,贝尔曼误差是不可学习的,我们是无法通过特征向量或者其他观测数据来估计贝尔曼误差。因此这限制了贝尔曼误差只能用于基于model的场景下,残差梯度算法能够最小化贝尔曼误差是因为允许从相同的状态访问两次,这里的状态指的就是状态本身,并不是相同的特征向量的对应的状态。

7.梯度TD方法

本节考虑采用SGD方法优化投影贝尔曼误差PBE。在线性近似的条件下,我们会得到一个精确解,也就是TD不动点(参考第九章LSTD),此时PBE为0.LSTD的计算复杂度为 O ( d 2 ) O(d^2) O(d2),d指的是特征向量的维度,如果使用的是SGD方法的话,复杂度就变为了 O ( d ) O(d) O(d)
投影贝尔曼误差PBE的梯度推导
既然要使用SGD方法,那么就需要对PBE求导,PBE的表达式为:
P B E ‾ ( w ) = ∥ Π δ ‾ w ∥ μ 2 = ( Π δ ‾ w ) ⊤ D Π δ ‾ w = δ ‾ w ⊤ Π ⊤ D Π δ ‾ w = δ ‾ w ⊤ D X ( X ⊤ D X ) − 1 X ⊤ D δ ‾ w \begin{aligned} \overline{\mathrm{PBE}}(\mathbf{w}) &=\left\|\Pi \overline{\delta}_{\mathbf{w}}\right\|_{\mu}^{2} \\ &=\left(\Pi \overline{\delta}_{\mathbf{w}}\right)^{\top} \mathbf{D} \Pi \overline{\delta}_{\mathbf{w}} & \\ &=\overline{\delta}_{\mathbf{w}}^{\top} \Pi^{\top} \mathbf{D} \Pi \overline{\delta}_{\mathbf{w}} \\ &=\overline{\delta}_{\mathbf{w}}^{\top} \mathbf{D} \mathbf{X}\left(\mathbf{X}^{\top} \mathbf{D} \mathbf{X}\right)^{-1} \mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}} & \\ & \end{aligned} PBE(w)=Πδwμ2=(Πδw)DΠδw=δwΠDΠδw=δwDX(XDX)1XDδw
其中D是|S|x|S|大小的对角矩阵(对角矩阵的特性:其转置等于其本身),其对角元素分别是每个状态的on-policy分布概率 μ ( s ) \mu(s) μ(s),对于线性近似,其贝尔曼投影算子也是线性的,可以用一个矩阵来表示:
Π ≐ X ( X T D X ) − 1 X T D \Pi \doteq X(X^TDX)^{-1}X^TD ΠX(XTDX)1XTD
X ∣ S ∣ ∗ d X^{|S|*d} XSd是特征向量矩阵,每一行是一个特征向量 x ( s ) T x(s)^{T} x(s)T,将其带入计算即可得:
Π ⊤ D Π = D ⊤ X [ ( X ⊤ D X ) − 1 ] ⊤ X ⊤ D X ( X ⊤ D X ) − 1 X ⊤ D = D X ( X ⊤ D X ) − 1 X ⊤ D \Pi^{\top} \mathbf{D} \Pi=\mathbf{D}^{\top}\mathbf{X}[(\mathbf{X}^{\top} \mathbf{D} \mathbf{X})^{-1}]^{\top}\mathbf{X}^{\top} \mathbf{D} \mathbf{X} (\mathbf{X}^{\top} \mathbf{D} \mathbf{X})^{-1}\mathbf{X}^{\top} \mathbf{D}=\mathbf{D} \mathbf{X}\left(\mathbf{X}^{\top} \mathbf{D} \mathbf{X}\right)^{-1} \mathbf{X}^{\top} \mathbf{D} ΠDΠ=DX[(XDX)1]XDX(XDX)1XD=DX(XDX)1XD
故此我们可以得到PBE的另一种表达方式
P B E ‾ ( w ) = ( X ⊤ D δ ‾ w ) ⊤ ( X ⊤ D X ) − 1 ( X ⊤ D δ ‾ w ) \overline{\mathrm{PBE}}(\mathbf{w})=\left(\mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}}\right)^{\top}\left(\mathbf{X}^{\top} \mathbf{D} \mathbf{X}\right)^{-1}\left(\mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}}\right) PBE(w)=(XDδw)(XDX)1(XDδw)
对其求导可得
∇ P B E ‾ ( w ) = 2 ∇ [ X ⊤ D δ ‾ w ] ⊤ ( X ⊤ D X ) − 1 ( X ⊤ D δ ‾ w ) \nabla \overline{\mathrm{PBE}}(\mathbf{w})=2 \nabla\left[\mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}}\right]^{\top}\left(\mathbf{X}^{\top} \mathbf{D} \mathbf{X}\right)^{-1}\left(\mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}}\right) PBE(w)=2[XDδw](XDX)1(XDδw)
为了使用SGD的方法我们需要把上式写成期望表达式的形式,对应的SGD就是采样来近似这样一个期望值。为此,我们可以用 μ \mu μ表示行为策略下状态的分布,上面几项都可以写作期望的形式:
X ⊤ D δ ‾ w = ∑ s μ ( s ) x ( s ) δ ‾ w ( s ) = E [ ρ t δ t x t ] \mathbf{X}^{\top} \mathbf{D} \overline{\delta}_{\mathbf{w}}=\sum_{s} \mu(s) \mathbf{x}(s) \overline{\delta}_{\mathbf{w}}(s)=\mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] XDδw=sμ(s)x(s)δw(s)=E[ρtδtxt]
将X,D, δ \delta δ矩阵按向量展开后按照上述次序相乘即可得到相应的结果。这个结果刚好是:离线策略下半梯度TD(0)更新公式的期望

∇ E [ ρ t δ t x t ] ⊤ = E [ ρ t ∇ δ t ⊤ x t ⊤ ] = E [ ρ t ∇ ( R t + 1 + γ w ⊤ x t + 1 − w ⊤ x t ) ⊤ x t ⊤ ] = E [ ρ t ( γ x t + 1 − x t ) x t ⊤ ] \begin{aligned} \nabla \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right]^{\top} &=\mathbb{E}\left[\rho_{t} \nabla \delta_{t}^{\top} \mathbf{x}_{t}^{\top}\right] \\ &=\mathbb{E}\left[\rho_{t} \nabla\left(R_{t+1}+\gamma \mathbf{w}^{\top} \mathbf{x}_{t+1}-\mathbf{w}^{\top} \mathbf{x}_{t}\right)^{\top} \mathbf{x}_{t}^{\top}\right] & \\ &=\mathbb{E}\left[\rho_{t}\left(\gamma \mathbf{x}_{t+1}-\mathbf{x}_{t}\right) \mathbf{x}_{t}^{\top}\right] \end{aligned} E[ρtδtxt]=E[ρtδtxt]=E[ρt(Rt+1+γwxt+1wxt)xt]=E[ρt(γxt+1xt)xt]
其中:
X ⊤ D X = ∑ s μ ( s ) x s x s ⊤ = E [ x t x t ⊤ ] \mathbf{X}^{\top} \mathbf{D X}=\sum_{s} \mu(s) \mathbf{x}_{s} \mathbf{x}_{s}^{\top}=\mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right] XDX=sμ(s)xsxs=E[xtxt]

把上述这些结论带入到PBE的求解公式中:
∇ P B E ‾ ( w ) = 2 E [ ρ t ( γ x t + 1 − x t ) x t ⊤ ] E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] \nabla \overline{\mathrm{PBE}}(\mathbf{w})=2 \mathbb{E}\left[\rho_{t}\left(\gamma \mathbf{x}_{t+1}-\mathbf{x}_{t}\right) \mathbf{x}_{t}^{\top}\right] \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] PBE(w)=2E[ρt(γxt+1xt)xt]E[xtxt]1E[ρtδtxt]
有了这个期望的形式之后,依然无法高效的通过采样获得梯度的更新公式。上述三个期望的乘积中,第一个和第三个是相关的,都依赖于下一个状态 x t + 1 x_{t+1} xt+1,所以不能简单的对每个期望采样然后乘起来,这样就会得到一个有偏估计。这个问题就和之前的原始残差梯度算法的问题是一样的。
另一种思路就是单独的估计上述三个期望模型,然后结合三者产生无偏的梯度估计。但是这样一来就需要大量的计算,第一个期望中需要计算两个矩阵的外积,第二项期望还需要求解矩阵的逆。我们可以先估计三个期望中两个期望的乘积,然后再采样第三个期望。比如可以先计算存储后两个期望的乘积然后再采样第一个期望的表达式。但是这个复杂度依然是 O ( d 2 ) O(d^2) O(d2).
梯度TD方法
梯度TD方法与上面提到的思路一致,先估计出PBE表达式中后两项期望的乘积,这两项的维度分别是dxd和d维向量,所以乘积也是一个向量。把这两项的乘积表示为向量v:
v ≈ E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] \mathbf{v} \approx \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] vE[xtxt]1E[ρtδtxt]
这个形式与线性最小二乘法的结果类似,类比发现,v相当于是线性问题 v ⊤ x t = ρ t δ t \mathbf{v}^{\top} \mathbf{x}_{t}=\rho_{t} \delta_{t} vxt=ρtδt的解。我们可以利用如下规则更新得到v:
v t + 1 ≐ v t + β ρ t ( δ t − v t ⊤ x t ) x t \mathbf{v}_{t+1} \doteq \mathbf{v}_{t}+\beta \rho_{t}\left(\delta_{t}-\mathbf{v}_{t}^{\top} \mathbf{x}_{t}\right) \mathbf{x}_{t} vt+1vt+βρt(δtvtxt)xt
也就是说我们要计算v,需要估计外积矩阵的期望,还要求逆,对比一下就会发现这个v是一个LS问题的解,所以我们就可以使用SGD迭代更新v,进而间接的计算得到上述定义的向量v。这个求解的空间复杂度仅仅是 O ( d ) O(d) O(d)
利用SGD就可以得到参数向量 w t w_t wt的更新规则:
w t + 1 = w t − 1 2 α ∇ P B E ‾ ( w t ) (SGD规则) = w t − 1 2 α 2 E [ ρ t ( γ x t + 1 − x t ) x t ⊤ ] E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] = w t − 1 2 α 2 E [ ρ t ( γ t − γ x t + 1 ) x t ⊤ ] E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] ≈ w t + α E [ ρ t ( x t − γ x t + 1 ) x t ⊤ ] V t ≈ w t + α ρ t ( x t − γ x t + 1 ) x t ⊤ v t (采样) \begin{aligned} \mathbf{w}_{t+1} &=\mathbf{w}_{t}-\frac{1}{2} \alpha \nabla \overline{\mathrm{PBE}}\left(\mathbf{w}_{t}\right) & \text{(SGD规则)}\\ &=\mathbf{w}_{t}-\frac{1}{2} \alpha 2 \mathbb{E}\left[\rho_{t}\left(\gamma \mathbf{x}_{t+1}-\mathbf{x}_{t}\right) \mathbf{x}_{t}^{\top}\right] \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] & \\ &=\mathbf{w}_{t}-\frac{1}{2} \alpha 2 \mathbb{E}\left[\rho_{t}\left(\gamma_{t}-\gamma \mathbf{x}_{t+1}\right) \mathbf{x}_{t}^{\top}\right] \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] & \\ & \approx \mathbf{w}_{t}+\alpha \mathbb{E}\left[\rho_{t}\left(\mathbf{x}_{t}-\gamma \mathbf{x}_{t+1}\right) \mathbf{x}_{t}^{\top}\right] \mathbf{V}_{t} & \\ & \approx \mathbf{w}_{t}+\alpha \rho_{t}\left(\mathbf{x}_{t}-\gamma \mathbf{x}_{t+1}\right) \mathbf{x}_{t}^{\top} \mathbf{v}_{t} & \text{(采样)} \end{aligned} wt+1=wt21αPBE(wt)=wt21α2E[ρt(γxt+1xt)xt]E[xtxt]1E[ρtδtxt]=wt21α2E[ρt(γtγxt+1)xt]E[xtxt]1E[ρtδtxt]wt+αE[ρt(xtγxt+1)xt]Vtwt+αρt(xtγxt+1)xtvt(SGD规则)(采样)
这个算法叫做GTD2
对上式进行整理即可得到下面的结果:
w t + 1 = w t + α E [ ρ t ( x t − γ x t + 1 ) x t ⊤ ] E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] = w t + α ( E [ ρ t x t x t ⊤ ] − γ E [ ρ t x t + 1 x t ⊤ ] ) E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] = w t + α ( E [ x t x t ⊤ ] − γ E [ ρ t x t + 1 x t ⊤ ] ) E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] = w t + α ( E [ x t ρ t δ t ] − γ E [ ρ t x t + 1 x t ⊤ ] E [ x t x t ⊤ ] − 1 E [ ρ t δ t x t ] ) ≈ w t + α ( E [ x t ρ t δ t ] − γ E [ ρ t x t + 1 x t ⊤ ] v t ) ≈ w t + α ρ t ( δ t x t − γ x t + 1 x t ⊤ v t ) (采样) \begin{aligned} \mathbf{w}_{t+1} &=\mathbf{w}_{t}+\alpha \mathbb{E}\left[\rho_{t}\left(\mathbf{x}_{t}-\gamma \mathbf{x}_{t+1}\right) \mathbf{x}_{t}^{\top}\right] \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] \\ &=\mathbf{w}_{t}+\alpha\left(\mathbb{E}\left[\rho_{t} \mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]-\gamma \mathbb{E}\left[\rho_{t} \mathbf{x}_{t+1} \mathbf{x}_{t}^{\top}\right]\right) \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] \\ &=\mathbf{w}_{t}+\alpha\left(\mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]-\gamma \mathbb{E}\left[\rho_{t} \mathbf{x}_{t+1} \mathbf{x}_{t}^{\top}\right]\right) \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right] \\ &=\mathbf{w}_{t}+\alpha\left(\mathbb{E}\left[\mathbf{x}_{t} \rho_{t} \delta_{t}\right]-\gamma \mathbb{E}\left[\rho_{t} \mathbf{x}_{t+1} \mathbf{x}_{t}^{\top}\right] \mathbb{E}\left[\mathbf{x}_{t} \mathbf{x}_{t}^{\top}\right]^{-1} \mathbb{E}\left[\rho_{t} \delta_{t} \mathbf{x}_{t}\right]\right) \\ &\approx \mathbf{w}_{t}+\alpha\left(\mathbb{E}\left[\mathbf{x}_{t} \rho_{t} \delta_{t}\right]-\gamma \mathbb{E}\left[\rho_{t} \mathbf{x}_{t+1} \mathbf{x}_{t}^{\top}\right] \mathbf{v}_{t}\right) & \\ &\approx \mathbf{w}_{t}+\alpha \rho_{t}\left(\delta_{t} \mathbf{x}_{t}-\gamma \mathbf{x}_{t+1} \mathbf{x}_{t}^{\top} \mathbf{v}_{t}\right) & \text{(采样)} \end{aligned} wt+1=wt+αE[ρt(xtγxt+1)xt]E[xtxt]1E[ρtδtxt]=wt+α(E[ρtxtxt]γE[ρtxt+1xt])E[xtxt]1E[ρtδtxt]=wt+α(E[xtxt]γE[ρtxt+1xt])E[xtxt]1E[ρtδtxt]=wt+α(E[xtρtδt]γE[ρtxt+1xt]E[xtxt]1E[ρtδtxt])wt+α(E[xtρtδt]γE[ρtxt+1xt]vt)wt+αρt(δtxtγxt+1xtvt)(采样)
构成的这个新的算法叫做梯度矫正的TD(0),简称TDC,或者也可以叫做GTD(0).

GTD2和TDC都包含了w、v两个学习过程,前者的学习依赖于后者。学习w是我们的主要目的,也就是首要学习过程;相应的v是次要学习过程。学习w依赖于v,学习v并不依赖w,这样一种非对称依赖性称为级联。在一个级联系统中,总要假设次要学习过程很快以至于它们总是处在渐进值,并且能够精确的辅助首要学习过程。对于这类系统的收敛性证明叫做two-time scale证明(双时间尺度证明)。

8. Emphatic-TD方法

之前我们提到过死亡三角,当离线策略、自举、函数近似这三个问题,当三者同时出现的时候会出现收敛性的问题。上一节我们介绍了几种用来克服这种问题的方法,本节主要讲的内容是如何在保证收敛性的前提下,获得切实可行的,计算量小而且又高效的函数近似方法。
对于线性的半梯度TD(0)方法在on-policy的情况下是高效的并且可以收敛。在off-policy的情况下,通过重要性采样的技巧用来纠正状态转移概率的偏差,但是状态的分布依然是behavior policy下的分布。要想确保算法的稳定性,就必须解决这种状态分布的不匹配现象。可以通过重视/强调一些状态和忽视一些状态的思想恢复on-policy下的更新的分布。这就是emphatic-TD的思想。
单步emphatic-TD算法: `
δ t = R t + 1 + γ v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) w t + 1 = w t + α M t ρ t δ t ∇ v ^ ( S t , w t ) M t = γ ρ t − 1 M t − 1 + I t \begin{array}{l} {\delta_{t}=R_{t+1}+\gamma \hat{v}\left(S_{t+1}, \mathbf{w}_{t}\right)-\hat{v}\left(S_{t}, \mathbf{w}_{t}\right)} \\ {\mathbf{w}_{t+1}=\mathbf{w}_{t}+\alpha M_{t} \rho_{t} \delta_{t} \nabla \hat{v}\left(S_{t}, \mathbf{w}_{t}\right)} \\ {M_{t}=\gamma \rho_{t-1} M_{t-1}+I_{t}} \end{array} δt=Rt+1+γv^(St+1,wt)v^(St,wt)wt+1=wt+αMtρtδtv^(St,wt)Mt=γρt1Mt1+It
第一个公式是T加粗样式D error,第二个就是权重更新公式,与之前的TD(0)相比,区别在于增加了一个强调因子 M t M_t Mt, M t M_t Mt的更新公式如第三个所示, I t I_t It根据实际情况进行设置。具体的关于 M t M_t Mt的计算和更新参考第九章的兴趣和强调部分内容。
emphatic-TD方法在baird例子上的表现如图所示:
11. 基于近似的离线策略方法--阅读笔记【Reinforcement Learning An Introduction 2nd】_第8张图片
可以看到,最终权重参数收敛,值误差为0,这里采用的是期望更新的方式,并没有直接使用emphatic-TD方法,因为更新参数的方差大,下一节将讲解如何减小这些方差。

9. 减小方差

off-policy方法本质上就比on-policy的方差大。如果我们的数据来自一个和目标policy不太相关的policy,那么我们所能学到target policy的可能性就越小。就好比我们并不能从如何打球中学到如何控制机械臂运动一样。只有目标策略和行为策略有一定的相关性才能通过off-policy训练得到很好的学习效果。另外一方面,任何一个策略也有很多邻居,也就是与之有很多相似点的policy,无论是状态访问还是动作选择都有一定的相似性,但是又不是完全一样的。off-policy的意义就在于使这些相似但不完全一样的policy能够泛化。现在已经有方法可以使其在期望值上保持稳定,那么关心的下一个问题就是估计的方差大小。

重要性采样比涉及到多个策略比例因子的乘积,尽管其期望是等于1,但实际中其值可能会非常大或者是接近于0. 在半梯度方法中,权重的更新依赖于重要性采样因子和TD error以及梯度之间的乘积,所以如果方差太大就会导致权重更新很大,对于SGD来说是有一定问题的。SGD是通过采样的加权平均获得一个比较合理的梯度估计,如果更新步长很大的话,那么SGD就不可信。如果将步长参数设置很小来克服这个问题,但是更新的期望值会很小,学习就会缓慢。

引入重要性采样因子后降低方差的方法:之前介绍的树备份、加权重要性采样以及动量法(Derthick, 1984)、Polyak-Ruppert平均法(Polyak, 1990; Ruppert, 1988; Polyak and Juditsky, 1992)、分别针对每个参数设计不同的步长(Jacobs, 1988; Sutton, 1992)。

总结

off-policy具有一定的挑战,如何设计又稳定又高效的off-policy算法是一个值得深思的问题。为什么要用off-policy方法?首先其可以解决探索和利用的问题,off-policy下的behavior-policy和target-policy是不一样的。比如目标策略是一个确定性策略,行为策略是一个随机策略,随机策略自然有助于探索了。同时离线策略的更新机制可以保证我们能够学习到目标策略的某些特性。而且离线策略的方式可以使得我们自由的选择行为策略。

本章也提到了基于近似方法的离线策略的一些挑战,一部分是来自于离线策略本身,高方差基本上是离线策略的一个通病。另一个挑战就是半梯度TD方法,存在稳定性的问题,本章为了解决这个问题,最主要的思路是利用真正的SGD方法最小化贝尔曼误差,但是分析表明我们只能观测到特征向量,并不是状态本身,因此无法直接从这些特征数据当中学到贝尔曼误差。另一类就是梯度TD方法,利用SGD最小化投影贝尔曼误差,虽然他是可学习的,但是需要计算额外的参数。

你可能感兴趣的:(#,RL,An,Introduction,2nd读书笔记,强化学习,深度学习)