文章目录
1.本章内容概要
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 b b是探索性的。对于预测问题,两个策略都是已知的;对于控制问题,两个策略都是变化的。我们的学习目标是得到 v ^ ≈ v π \hat{v} \approx v_{\pi} v^≈vπ或者 q ^ ≈ q π \hat{q} \approx q_{\pi} q^≈qπ。
off-policy方法中有两个关键挑战(更新目标的变化,更新分布的变化):
- 更新目标如何定义。由于得到的样本是遵循 b b b的,而欲学习的值函数是 π \pi π的,因此必须设置合理的更新目标。我们采用重要性采样解决,无论对表格方法还是拟合器方法都类似。注意,重要性采样会扩大方差,但是消除了偏差。
- 我们得到的样本服从off-policy分布,而不是on-policy分布。我们在第八章介绍过,选择哪个状态/状态动作对更新是有技巧的,采用trajectory sampling更新效果很好,实际上on-policy分布对半梯度方法[因为这里的梯度是不准确的]的稳定性非常重要。解决这个有两种方法,一个是基于重要性采样调整update分布到on-policy分布;一个是采用不依赖任何特殊分布的真正的梯度方法。目前这也是一个开放的问题。
2.半梯度方法
这里我们只关心第一个挑战,我们直接把off-policy方法拓展到拟合器的形式。由于没考虑第二个挑战,导致算法在一些情况下会偏离,但是也有很多成功的应用场景。这里介绍的方法的稳定性和渐进无偏性对表格情形是成立的,表格情形是拟合器的特殊形式。因此,结合一些特征提取方法是有可能保证算法稳定的。
我们直接把之前介绍的off-policy方法的更新公式改成梯度的形式即可。回顾下per-step重要性采样比率:
ρ 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(At∣St)π(At∣St)
对于状态值,半梯度off-policy TD(0)的更新公式为:
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+1≐wt+αρtδt∇v^(St,wt)
式中的 δ t \delta_{t} δt在episodic任务中是折扣的TD误差:
δ t ≐ R t + 1 + γ 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) δt≐Rt+1+γv^(St+1,wt)−v^(St,wt)
在continuing任务中是平均回报TD误差:
δ t ≐ R t + 1 − R ‾ t + v ^ ( S t + 1 , w t ) − v ^ ( S t , w t ) \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) δt≐Rt+1−Rt+v^(St+1,wt)−v^(St,wt)
对于动作值,半梯度Expected 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+1≐wt+αδt∇q^(St,At,wt), 其中
δ 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), δt≐Rt+1+γ∑aπ(a∣St+1)q^(St+1,a,wt)−q^(St,At,wt), 或
δ 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) . δt≐Rt+1−Rt+∑aπ(a∣St+1)q^(St+1,a,wt)−q^(St,At,wt).
需要注意,这里也没有用重要性采样因子,这其实不像表格化方法那么直观,因为各个状态的值通过函数参数是相关的,因而一个episode中各个状态-动作对的更新都修改了同一个值函数,那么不能说与其它状态-动作对的值无关。这个问题要等到我们对带拟合器的RL认识更进一步后才能明确。
而对于多step情形,则必须加入重要性采样比率,例如n-step半梯度Expected 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+n≐wt+n−1+αρt+1⋯ρt+n−1[Gt:t+n−q^(St,At,wt+n−1)]∇q^(St,At,wt+n−1)
其中,
G t : t + n ≐ R t + 1 + ⋯ + γ n − 1 R t + n + γ n q ^ ( S t + n , A t + n , w t + n − 1 ) , 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), Gt:t+n≐Rt+1+⋯+γn−1Rt+n+γnq^(St+n,At+n,wt+n−1), 或
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 ) 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) Gt:t+n≐Rt+1−Rt+⋯+Rt+n−Rt+n−1+q^(St+n,At+n,wt+n−1)
注意,对于 k ≥ T k \geq T k≥T, ρ k = 1 \rho_{k}=1 ρk=1,且对于 t + n ≥ T t+n \geq T t+n≥T, G t : n = G t G_{t : n}=G_t Gt:n=Gt。
我们还介绍过一种去掉重要性采样的方法n-step tree-backup算法,这里也可以采用:
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 ) 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 ) \begin{aligned} \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) \\ G_{t : t+n} & \doteq \hat{q}\left(S_{t}, A_{t}, \mathbf{w}_\blue{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) \end{aligned} wt+nGt:t+n≐wt+n−1+α[Gt:t+n−q^(St,At,wt+n−1)]∇q^(St,At,wt+n−1)≐q^(St,At,wt+n−1)+k=t∑t+n−1δki=t+1∏kγπ(Ai∣Si)
其中, δ t \delta_t δt采用半梯度Expected Sarsa的形式。注意式子中蓝色的部分原文应该是写错了,原文此处为 w t − 1 \mathbf{w}_{t-1} wt−1。这个式子很容易和第七章中n-step tree-backup的迭代公式对应,实际上两个式子是一样的,就是换了个写法。
当然,之前介绍的n-step Q ( σ ) Q(\sigma) Q(σ)也是可以改造的。
3.Off-policy发散的例子
这一小节我们讨论第二个挑战:behavior策略的轨迹与target策略的轨迹不同,导致trajectory sampling更新并不是对target策略的,从而导致收敛性的问题。下面给出几个例子说明:
MDP中取出两个状态问题
我们从一个MDP中取出两个状态,特征向量都是常数,例如分别是 x ( s 1 ) = 1 , x ( s 2 ) = 2 x(s_1)=1,x(s_2)=2 x(s1)=1,x(s2)=2;线性拟合器我们因而也只取一个参数 w w w。在 s 1 s_1 s1下,我们只有一个动作可选,且确定性地导向状态 s 2 s_2 s2,因而有:
s 1 s_1 s1的TD误差为:
δ 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+γ2wt−wt=(2γ−1)wt
根据off-policy的半梯度TD(0),有:
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δt∇v^(St,wt)=wt+α⋅1⋅(2γ−1)wt⋅1=(1+α(2γ−1))wt
如果 ( 1 + α ( 2 γ − 1 ) ) > 1.0 (1+\alpha(2 \gamma-1))>1.0 (1