第7章 n步时序差分(3) n 步离轨策略学习
n 步离轨策略学习
离轨策略学习(Off-policy learning)是指在学习目标策略 π\piπ 的同时,智能体实际遵循另一个行为策略 bbb。 通常,π\piπ 是基于当前动作价值函数的贪心策略(或 ε\varepsilonε-贪心策略);bbb 是更具试探性的策略(如 ε\varepsilonε-贪心),需满足对所有状态-动作对有 b(a∣s)>0b(a|s) > 0b(a∣s)>0,以保证覆盖性。为利用策略 bbb 产生的数据来学习 π\piπ,需通过重要度采样(importance sampling)校正两种策略在动作选择上的概率差异。
在 n 步时序差分方法中,回报基于连续 nnn 步构建,因此需考虑这 nnn 个动作在 π\piπ 与 bbb 下的相对概率。
对于时间区间 [t,h][t, h][t,h],重要度采样率为:
ρt:h≐∏k=tmin(h, T−1)π(Ak∣Sk)b(Ak∣Sk)(7.10)
\rho_{t:h} \doteq \prod_{k=t}^{\min(h,\,T-1)} \frac{\pi(A_k|S_k)}{b(A_k|S_k)} \tag{7.10}
ρt:h≐k=t∏min(h,T−1)b(Ak∣Sk)π(Ak∣Sk)(7.10)
若 π(Ak∣Sk)=0\pi(A_k|S_k) = 0π(Ak∣Sk)=0(即目标策略永不选该动作),则对应回报权重为 0,完全忽略。若 π\piπ 选择某动作的概率远高于 bbb,则该回报权重增大,以补偿其在数据中出现频率低的问题。当 π=b\pi = bπ=b 时,ρt:h=1\rho_{t:h} = 1ρt:h=1,此时离轨策略方法退化为同轨策略(on-policy)方法。
定义
离轨 n 步时序差分
对 0≤t<T0 \leq t < T0≤t<T,在 t+nt+nt+n 时刻更新 V(St)V(S_t)V(St):
Vt+n(St)≐Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)](7.9)
V_{t+n}(S_t) \doteq V_{t+n-1}(S_t) + \alpha \rho_{t:t+n-1} \left[ G_{t:t+n} - V_{t+n-1}(S_t) \right] \tag{7.9}
Vt+n(St)≐Vt+n−1(St)+αρt:t+n−1[Gt:t+n−Vt+n−1(St)](7.9)
其中:
- ρt:t+n−1=∏k=tmin(t+n−1, T−1)π(Ak∣Sk)b(Ak∣Sk)\rho_{t:t+n-1} = \prod_{k=t}^{\min(t+n-1,\,T-1)} \frac{\pi(A_k|S_k)}{b(A_k|S_k)}ρt:t+n−1=∏k=tmin(t+n−1,T−1)b(Ak∣Sk)π(Ak∣Sk)
- Gt:t+nG_{t:t+n}Gt:t+n 为 n 步回报
离轨n 步 Sarsa
对 0≤t<T0 \leq t < T0≤t<T,更新 Q(St,At)Q(S_t, A_t)Q(St,At):
Qt+n(St,At)≐Qt+n−1(St,At)+αρt+1:t+n[Gt:t+n−Qt+n−1(St,At)](7.11)
Q_{t+n}(S_t, A_t) \doteq Q_{t+n-1}(S_t, A_t) + \alpha \rho_{t+1:t+n} \left[ G_{t:t+n} - Q_{t+n-1}(S_t, A_t) \right] \tag{7.11}
Qt+n(St,At)≐Qt+n−1(St,At)+αρt+1:t+n[Gt:t+n−Qt+n−1(St,At)](7.11)
- 重要度采样率从 t+1t+1t+1 开始到 t+nt+nt+n,即 ρt+1:t+n\rho_{t+1:t+n}ρt+1:t+n
- 不包含当前动作 AtA_tAt,因为更新的是已确定的 (St,At)(S_t, A_t)(St,At),关注的是后续动作的策略差异
离轨n 步期望 Sarsa(动作价值)
与 n 步 Sarsa 类似,但是使用期望 Sarsa 的 n 步回报,重要度采样率为 ρt+1:t+n−1\rho_{t+1:t+n-1}ρt+1:t+n−1少了一项,因为期望 Sarsa 在最后一个状态考虑所有可能动作的期望,不依赖实际采取的动作,故无需对第 t+nt+nt+n 步动作进行重要度采样修正
实现
输入:行为策略 bbb 满足 b(a∣s)>0b(a|s) > 0b(a∣s)>0 对所有 s∈S,a∈A(s)s \in \mathcal{S}, a \in \mathcal{A}(s)s∈S,a∈A(s)
参数:步长 α∈(0,1]\alpha \in (0,1]α∈(0,1],探索率 ε>0\varepsilon > 0ε>0,正整数 nnn
初始化:对所有 s∈S,a∈A(s)s \in \mathcal{S}, a \in \mathcal{A}(s)s∈S,a∈A(s),任意初始化 Q(s,a)Q(s, a)Q(s,a);策略 π\piπ 为基于当前 QQQ 的 ε\varepsilonε-贪心策略
对每幕执行:
-
初始化并存储初始状态 S0S_0S0(非终止状态)
-
根据 b(⋅∣S0)b(\cdot \mid S_0)b(⋅∣S0) 选择并存储动作 A0A_0A0
-
设 T←∞T \leftarrow \inftyT←∞
-
对 t=0,1,2,…t = 0, 1, 2, \ldotst=0,1,2,… 执行:
-
若 t<Tt < Tt<T:
- 执行动作 AtA_tAt
- 观察并存储奖励 Rt+1R_{t+1}Rt+1 和下一状态 St+1S_{t+1}St+1
- 若 St+1S_{t+1}St+1 为终止状态,则 T←t+1T \leftarrow t + 1T←t+1
- 否则,根据 b(⋅∣St+1)b(\cdot \mid S_{t+1})b(⋅∣St+1) 选择并存储动作 At+1A_{t+1}At+1
-
计算 τ←t−n+1\tau \leftarrow t - n + 1τ←t−n+1
-
若 τ≥0\tau \geq 0τ≥0:
-
计算重要度采样率:
ρ←∏i=τ+1min(τ+n, T−1)π(Ai∣Si)b(Ai∣Si) \rho \leftarrow \prod_{i=\tau+1}^{\min(\tau+n,\,T-1)} \frac{\pi(A_i \mid S_i)}{b(A_i \mid S_i)} ρ←i=τ+1∏min(τ+n,T−1)b(Ai∣Si)π(Ai∣Si) -
计算部分回报:
G←∑i=τ+1min(τ+n, T)γi−τ−1Ri G \leftarrow \sum_{i=\tau+1}^{\min(\tau+n,\,T)} \gamma^{i-\tau-1} R_i G←i=τ+1∑min(τ+n,T)γi−τ−1Ri -
若 τ+n<T\tau + n < Tτ+n<T,追加自举项:
G←G+γnQ(Sτ+n,Aτ+n) G \leftarrow G + \gamma^n Q(S_{\tau+n}, A_{\tau+n}) G←G+γnQ(Sτ+n,Aτ+n) -
更新动作价值函数:
Q(Sτ,Aτ)←Q(Sτ,Aτ)+αρ[G−Q(Sτ,Aτ)] Q(S_\tau, A_\tau) \leftarrow Q(S_\tau, A_\tau) + \alpha \rho \big[ G - Q(S_\tau, A_\tau) \big] Q(Sτ,Aτ)←Q(Sτ,Aτ)+αρ[G−Q(Sτ,Aτ)] -
若正在学习策略 π\piπ,则确保 π(⋅∣Sτ)\pi(\cdot \mid S_\tau)π(⋅∣Sτ) 是基于当前 QQQ 的 ε\varepsilonε-贪心策略
-
-
若 τ=T−1\tau = T - 1τ=T−1,则结束本幕
-
上述算法为离轨策略版本,因此动作由行为策略 bbb 选择,而目标策略 π\piπ 用于重要度采样和(可选)策略改进。若 π=b\pi = bπ=b,则 ρ=1\rho = 1ρ=1,退化为同轨策略 n 步 Sarsa。
[!NOTE]
实验
- n = 2(两步 Sarsa)
- 折扣因子 γ=1\gamma = 1γ=1
- 步长 α=0.5\alpha = 0.5α=0.5
- 状态空间:S={A,B,C,D,E}\mathcal{S} = \{A, B, C, D, E\}S={A,B,C,D,E},其中 EEE 是终止状态
- 动作空间:每个非终止状态有 A(s)={a,b}\mathcal{A}(s) = \{a, b\}A(s)={a,b}
- 初始动作价值函数:对所有 s∈{A,B,C,D},a∈{a,b}s \in \{A,B,C,D\}, a \in \{a,b\}s∈{A,B,C,D},a∈{a,b},设 Q(s,a)=0Q(s, a) = 0Q(s,a)=0
- 目标策略 π\piπ:纯贪心(即 π(a∣s)=1\pi(a|s) = 1π(a∣s)=1 若 Q(s,a)>Q(s,b)Q(s,a) > Q(s,b)Q(s,a)>Q(s,b),若相等则任选其一;为确定性,我们约定:当 Q(s,a)=Q(s,b)Q(s,a) = Q(s,b)Q(s,a)=Q(s,b) 时,π\piπ 选择动作 aaa)
- 行为策略 bbb:ε=0.5\varepsilon = 0.5ε=0.5 的 ε\varepsilonε-贪心策略,即:
- 以概率 0.50.50.5 选择当前贪心动作(初始时为 aaa),
- 以概率 0.50.50.5 随机均匀选择动作(即 P(a)=P(b)=0.5P(a) = P(b) = 0.5P(a)=P(b)=0.5),
- 因此,初始时:b(a∣s)=0.5+0.5×0.5=0.75b(a|s) = 0.5 + 0.5 \times 0.5 = 0.75b(a∣s)=0.5+0.5×0.5=0.75,b(b∣s)=0.25b(b|s) = 0.25b(b∣s)=0.25(因为贪心动作是 aaa)
由于初始 Q=0Q=0Q=0,贪心动作统一设为 aaa,故 π(a∣s)=1\pi(a|s)=1π(a∣s)=1, π(b∣s)=0\pi(b|s)=0π(b∣s)=0。
- 一幕轨迹(由行为策略 bbb 生成):
S0=A,A0=a,R1=1,S1=B,A1=b,R2=2,S2=C,A2=a,R3=3,S3=D,A3=a,R4=4,S4=E (终止) \begin{aligned} &S_0 = A,\quad A_0 = a,\quad R_1 = 1,\quad S_1 = B, \\ &A_1 = b,\quad R_2 = 2,\quad S_2 = C, \\ &A_2 = a,\quad R_3 = 3,\quad S_3 = D, \\ &A_3 = a,\quad R_4 = 4,\quad S_4 = E \ (\text{终止}) \end{aligned} S0=A,A0=a,R1=1,S1=B,A1=b,R2=2,S2=C,A2=a,R3=3,S3=D,A3=a,R4=4,S4=E (终止)在状态 BBB,智能体执行了非贪心动作 bbb。由于目标策略 π\piπ 是纯贪心且初始 Q=0Q=0Q=0,有 π(b∣B)=0\pi(b|B) = 0π(b∣B)=0,因此在更新涉及 A1=bA_1 = bA1=b 时,重要度采样比将为 0。
- 终止时刻:T=4T = 4T=4
t = 0
- t<Tt < Tt<T(T=∞T = \inftyT=∞ 初始)
- 执行 A0=aA_0 = aA0=a,观察 R1=1R_1 = 1R1=1, S1=BS_1 = BS1=B
- S1≠ES_1 \neq ES1=E → T=∞T = \inftyT=∞
- 根据 b(⋅∣B)b(\cdot|B)b(⋅∣B) 选择 A1=bA_1 = bA1=b(已给出)
- τ=0−2+1=−1<0\tau = 0 - 2 + 1 = -1 < 0τ=0−2+1=−1<0 → 不更新
当前 Q:全为 0
t = 1
- t<Tt < Tt<T
- 执行 A1=bA_1 = bA1=b,观察 R2=2R_2 = 2R2=2, S2=CS_2 = CS2=C
- 非终止 → T=∞T = \inftyT=∞
- 选择 A2=aA_2 = aA2=a
- τ=1−2+1=0≥0\tau = 1 - 2 + 1 = 0 \geq 0τ=1−2+1=0≥0 → 更新 (S0,A0)=(A,a)(S_0, A_0) = (A, a)(S0,A0)=(A,a)
计算重要度采样比:
- ρ=∏i=τ+1min(τ+n−1,T−1)π(Ai∣Si)b(Ai∣Si)=π(A1∣S1)b(A1∣S1)=π(b∣B)b(b∣B)=00.25=0\rho = \prod_{i=\tau+1}^{\min(\tau+n-1, T-1)} \frac{\pi(A_i|S_i)}{b(A_i|S_i)} = \frac{\pi(A_1|S_1)}{b(A_1|S_1)} = \frac{\pi(b|B)}{b(b|B)} = \frac{0}{0.25} = 0ρ=∏i=τ+1min(τ+n−1,T−1)b(Ai∣Si)π(Ai∣Si)=b(A1∣S1)π(A1∣S1)=b(b∣B)π(b∣B)=0.250=0
计算回报 GGG:
- min(τ+n,T)=min(2,∞)=2\min(\tau+n, T) = \min(2, \infty) = 2min(τ+n,T)=min(2,∞)=2
- G=R1+γR2=1+2=3G = R_1 + \gamma R_2 = 1 + 2 = 3G=R1+γR2=1+2=3
- τ+n=2<T\tau + n = 2 < Tτ+n=2<T → 加自举项:+γ2Q(S2,A2)=+Q(C,a)=0+ \gamma^2 Q(S_2, A_2) = + Q(C, a) = 0+γ2Q(S2,A2)=+Q(C,a)=0
- 所以 G=3G = 3G=3
更新:
Q(A,a)←0+0.5⋅ρ⋅(G−Q)=0+0.5⋅0⋅(3−0)=0 Q(A, a) \leftarrow 0 + 0.5 \cdot \rho \cdot (G - Q) = 0 + 0.5 \cdot 0 \cdot (3 - 0) = 0 Q(A,a)←0+0.5⋅ρ⋅(G−Q)=0+0.5⋅0⋅(3−0)=0尽管获得了回报 3,但由于后续动作 bbb 在目标策略下永远不会被选择,该经验被完全忽略(ρ=0\rho = 0ρ=0)。
当前 Q:全为 0
t = 2
- t<Tt < Tt<T
- 执行 A2=aA_2 = aA2=a,观察 R3=3R_3 = 3R3=3, S3=DS_3 = DS3=D
- 非终止 → T=∞T = \inftyT=∞
- 选择 A3=aA_3 = aA3=a
- τ=2−2+1=1≥0\tau = 2 - 2 + 1 = 1 \geq 0τ=2−2+1=1≥0 → 更新 (S1,A1)=(B,b)(S_1, A_1) = (B, b)(S1,A1)=(B,b)
计算 ρ\rhoρ:
- 范围:i=τ+1=2i = \tau+1 = 2i=τ+1=2 到 min(1+2,∞)=3\min(1+2, \infty) = 3min(1+2,∞)=3,但 T−1=∞T-1 = \inftyT−1=∞,所以到 i=2i=2i=2(因为 A2A_2A2 是第 2 步动作)
- 实际:ρ=π(A2∣S2)b(A2∣S2)=π(a∣C)b(a∣C)=10.75=43\rho = \frac{\pi(A_2|S_2)}{b(A_2|S_2)} = \frac{\pi(a|C)}{b(a|C)} = \frac{1}{0.75} = \frac{4}{3}ρ=b(A2∣S2)π(A2∣S2)=b(a∣C)π(a∣C)=0.751=34
因为 A2=aA_2 = aA2=a 是贪心动作,π(a∣C)=1\pi(a|C)=1π(a∣C)=1,b(a∣C)=0.75b(a|C)=0.75b(a∣C)=0.75
计算 GGG:
- G=R2+γR3=2+3=5G = R_2 + \gamma R_3 = 2 + 3 = 5G=R2+γR3=2+3=5
- τ+n=3<T\tau + n = 3 < Tτ+n=3<T → 加自举项:+Q(S3,A3)=Q(D,a)=0+ Q(S_3, A_3) = Q(D, a) = 0+Q(S3,A3)=Q(D,a)=0
- G=5G = 5G=5
更新 Q(B,b)Q(B, b)Q(B,b):
Q(B,b)←0+0.5⋅43⋅(5−0)=0.5⋅43⋅5=103≈3.333 Q(B, b) \leftarrow 0 + 0.5 \cdot \frac{4}{3} \cdot (5 - 0) = 0.5 \cdot \frac{4}{3} \cdot 5 = \frac{10}{3} \approx 3.333 Q(B,b)←0+0.5⋅34⋅(5−0)=0.5⋅34⋅5=310≈3.333(B,b)(B, b)(B,b) 不是目标策略选择的动作,但由于它导致了后续符合 π\piπ 的动作(A2=aA_2 = aA2=a),所以该经验被加权使用。
当前 Q:
- Q(B,b)=10/3≈3.333Q(B, b) = 10/3 \approx 3.333Q(B,b)=10/3≈3.333
- 其余仍为 0
t = 3
- 执行 A3=aA_3 = aA3=a,观察 R4=4R_4 = 4R4=4, S4=ES_4 = ES4=E
- S4S_4S4 是终止状态 → 设 T=4T = 4T=4
- 不再选择 A4A_4A4
- τ=3−2+1=2≥0\tau = 3 - 2 + 1 = 2 \geq 0τ=3−2+1=2≥0 → 更新 (S2,A2)=(C,a)(S_2, A_2) = (C, a)(S2,A2)=(C,a)
计算 ρ\rhoρ:
- 范围:i=τ+1=3i = \tau+1 = 3i=τ+1=3 到 min(2+2,T−1)=min(4,3)=3\min(2+2, T-1) = \min(4, 3) = 3min(2+2,T−1)=min(4,3)=3
- ρ=π(A3∣S3)b(A3∣S3)=π(a∣D)b(a∣D)=10.75=43\rho = \frac{\pi(A_3|S_3)}{b(A_3|S_3)} = \frac{\pi(a|D)}{b(a|D)} = \frac{1}{0.75} = \frac{4}{3}ρ=b(A3∣S3)π(A3∣S3)=b(a∣D)π(a∣D)=0.751=34
计算 GGG:
- min(τ+n,T)=min(4,4)=4\min(\tau+n, T) = \min(4, 4) = 4min(τ+n,T)=min(4,4)=4
- G=R3+γR4=3+4=7G = R_3 + \gamma R_4 = 3 + 4 = 7G=R3+γR4=3+4=7
- τ+n=4=T\tau + n = 4 = Tτ+n=4=T → 不加自举项
更新 Q(C,a)Q(C, a)Q(C,a):
Q(C,a)←0+0.5⋅43⋅(7−0)=0.5⋅43⋅7=143≈4.667 Q(C, a) \leftarrow 0 + 0.5 \cdot \frac{4}{3} \cdot (7 - 0) = 0.5 \cdot \frac{4}{3} \cdot 7 = \frac{14}{3} \approx 4.667 Q(C,a)←0+0.5⋅34⋅(7−0)=0.5⋅34⋅7=314≈4.667当前 Q:
- Q(B,b)=10/3≈3.333Q(B, b) = 10/3 \approx 3.333Q(B,b)=10/3≈3.333
- Q(C,a)=14/3≈4.667Q(C, a) = 14/3 \approx 4.667Q(C,a)=14/3≈4.667
- 其余为 0
t = 4
- t=4≮Tt = 4 \not< Tt=4<T → 不执行动作
- τ=4−2+1=3≥0\tau = 4 - 2 + 1 = 3 \geq 0τ=4−2+1=3≥0 → 更新 (S3,A3)=(D,a)(S_3, A_3) = (D, a)(S3,A3)=(D,a)
计算 ρ\rhoρ:
- 范围:i=4i = 4i=4 到 min(3+2,T−1)=min(5,3)=3\min(3+2, T-1) = \min(5, 3) = 3min(3+2,T−1)=min(5,3)=3 → 空乘积
- 空乘积定义为 1 → ρ=1\rho = 1ρ=1
因为 τ+n=5>T=4\tau + n = 5 > T = 4τ+n=5>T=4,所以没有后续动作需要校正,ρ=1\rho = 1ρ=1
计算 GGG:
- min(3+2,4)=4\min(3+2, 4) = 4min(3+2,4)=4
- G=R4=4G = R_4 = 4G=R4=4
- τ+n=5>T\tau + n = 5 > Tτ+n=5>T → 不加自举项
更新 Q(D,a)Q(D, a)Q(D,a):
Q(D,a)←0+0.5⋅1⋅(4−0)=2.0 Q(D, a) \leftarrow 0 + 0.5 \cdot 1 \cdot (4 - 0) = 2.0 Q(D,a)←0+0.5⋅1⋅(4−0)=2.0当前 Q:
- Q(B,b)=10/3≈3.333Q(B, b) = 10/3 \approx 3.333Q(B,b)=10/3≈3.333
- Q(C,a)=14/3≈4.667Q(C, a) = 14/3 \approx 4.667Q(C,a)=14/3≈4.667
- Q(D,a)=2.0Q(D, a) = 2.0Q(D,a)=2.0
- 剩余为0
t = 5
- τ=5−2+1=4\tau = 5 - 2 + 1 = 4τ=5−2+1=4
- T−1=3T - 1 = 3T−1=3,τ=4>3\tau = 4 > 3τ=4>3 → 结束
状态-动作 初始 Q 更新后 Q 说明 (A, a) 0 0 因后续动作 bbb 被 π\piπ 拒绝,ρ=0\rho=0ρ=0 (B, a) 0 0 未被访问,未更新 (B, b) 0 10/3≈3.33310/3 \approx 3.33310/3≈3.333 虽非贪心,但后续动作符合 π\piπ,ρ=4/3\rho = 4/3ρ=4/3 (C, a) 0 14/3≈4.66714/3 \approx 4.66714/3≈4.667 后续动作符合 π\piπ,ρ=4/3\rho = 4/3ρ=4/3 (C, b) 0 0 未被访问 (D, a) 0 2.0 最后一步,ρ=1\rho = 1ρ=1 (D, b) 0 0 未被访问 (E, ·) — 0 终止状态