


这里的**环境动力学**，英文是 **environment dynamics**，在这段文献语境中主要指：

[  
$$
\boxed{  
\text{状态如何按照环境规则从 } S_t \text{ 转移到 } S_{t+1}  
}  
$$
]

在 Markov chain 或 MDP 中，环境动力学通常由**转移概率**表示。Tsitsiklis and Van Roy 原文也把 Markov chain 的 dynamics 描述为转移概率矩阵：矩阵中第 ((i,j)) 项表示从状态 (i) 转移到状态 (j) 的概率。 该论文的核心观点之一是：TD 在线采样必须尊重这套 Markov chain 动力学；若状态采样频率独立于底层系统动力学，则线性函数近似下也可能发散。([Massachusetts Institute of Technology](https://web.mit.edu/jnt/www/Papers/J063-97-bvr-td.pdf?utm_source=chatgpt.com "An Analysis Of Temporal-difference Learning With Function ..."))

---

## 1. 一般强化学习中的“环境动力学”

在一般 MDP 中，环境动力学写作：

# [  
p(s',r\mid s,a)

\Pr(S_{t+1}=s',R_{t+1}=r\mid S_t=s,A_t=a).  
]

含义是：当前状态为 (s)，执行动作 (a) 后，环境以某个概率产生下一个状态 (s') 和奖励 (r)。

如果只关心状态转移，可以写成：

# [  
P(s'\mid s,a)

\Pr(S_{t+1}=s'\mid S_t=s,A_t=a).  
]

因此，环境动力学回答的是：

[  
\text{在当前状态和动作给定后，环境会怎样演化？}  
]

例如 Atari 中，环境动力学就是：当前游戏画面和动作给定后，下一帧游戏画面、得分、生命值等如何变化。

---

## 2. 固定策略后，MDP 变成 Markov chain

在策略评估问题中，通常固定一个策略 (\pi)。策略给出动作选择规则：

[  
A_t\sim \pi(\cdot\mid S_t).  
]

环境给出状态转移规则：

[  
S_{t+1}\sim P(\cdot\mid S_t,A_t).  
]

策略和环境合在一起，会诱导一个 Markov chain：

# [  
P_\pi(s'\mid s)

\sum_a \pi(a\mid s)P(s'\mid s,a).  
]

所以在 TD prediction 中，“按照环境动力学采样”更准确地说是：

[  
\boxed{  
\text{按照策略 } \pi \text{ 与环境转移 } P \text{ 共同诱导的 Markov chain 采样。}  
}  
]

如果没有显式动作，比如 Tsitsiklis and Van Roy 的两状态例子，就可以直接把环境写成：

[  
P(s'\mid s).  
]

---

## 3. 在两状态例子中，环境动力学是什么？

Figure 1a 中有两个主要状态：

[  
s_1,\quad s_2.  
]

状态价值用一个参数 (w) 表示：

[  
v(s_1)=w,  
]

[  
v(s_2)=2w.  
]

图中 (s_1) 的圆圈内写着 (w)，(s_2) 的圆圈内写着 (2w)。箭头表示环境动力学：从 (s_1) 到 (s_2)，然后 (s_2) 以较大概率留在自身，以小概率退出到终止状态或重置状态。Hasselt 等人的 Figure 1a 正是在这个两状态例子上展示：按等频采样会发散，而按合适动力学更新则可收敛。

可抽象成：

[  
s_1 \to s_2,  
]

[  
s_2 \to s_2 \quad \text{with probability } 1-\varepsilon,  
]

[  
s_2 \to \text{terminal/reset} \quad \text{with probability } \varepsilon.  
]

因此，环境动力学不是“两个状态各出现一半”，而是：

[  
s_1 \text{ 出现一次后，} s_2 \text{ 可能连续出现很多次。}  
]

若从 (s_1) 开始，每个 episode 或 cycle 中，(s_1) 只出现一次；而 (s_2) 的访问次数服从几何型结构，其期望大约为：

# [  
\mathbb E[N_{s_2}]

\frac{1}{\varepsilon}.  
]

所以如果：

[  
\varepsilon=0.1,  
]

那么每访问一次 (s_1)，平均会访问约 10 次 (s_2)。

这就是论文中说的：

[  
\text{按照动力学更新时，}s_2\text{ 的价值在期望上会比 }s_1\text{ 更新多次。}  
]

---

## 4. “按照环境动力学更新”是什么意思？

“按照环境动力学更新”不是人为规定：

[  
s_1,s_2,s_1,s_2,\ldots  
]

也不是从 replay buffer 中均匀抽状态。

它的意思是：真正运行这个 Markov chain，得到一条轨迹：

[  
S_0,S_1,S_2,\ldots  
]

然后每出现一个转移：

[  
S_t\to S_{t+1},  
]

就做一次 TD 更新。

如果环境轨迹是：

[  
s_1 \to s_2 \to s_2 \to s_2 \to s_2 \to \text{terminal},  
]

那么 TD 更新也应该依次发生在：

[  
s_1,\ s_2,\ s_2,\ s_2,\ s_2.  
]

也就是说，更新频率由环境实际访问频率决定。

---

## 5. 为什么这对收敛很关键？

TD(0) 更新为：

## [  
\Delta w  
\propto  
\left(  
R_{t+1}  
+  
\gamma v_w(S_{t+1})

v_w(S_t)  
\right)  
\nabla_w v_w(S_t).  
]

在该例子中所有奖励为 0：

[  
R_{t+1}=0.  
]

并且：

[  
v_w(s_1)=w,\qquad v_w(s_2)=2w.  
]

---

## 6. 更新 (s_1) 会把 (w) 推离 0

从 (s_1) 到 (s_2) 时，TD target 为：

# [  
\gamma v_w(s_2)

# \gamma\cdot 2w

2\gamma w.  
]

当前预测为：

[  
v_w(s_1)=w.  
]

所以 TD error 是：

# [  
\delta_1

# 2\gamma w-w

(2\gamma-1)w.  
]

由于：

[  
\nabla_w v_w(s_1)=1,  
]

所以：

[  
\Delta w_1  
\propto  
(2\gamma-1)w.  
]

当：

[  
\gamma>\frac12,  
]

就有：

[  
2\gamma-1>0.  
]

因此：

[  
w>0 \Rightarrow \Delta w_1>0,  
]

[  
w<0 \Rightarrow \Delta w_1<0.  
]

也就是说，更新 (s_1) 会把 (w) 推得离 0 更远。

这正是发散项。

---

## 7. 更新 (s_2) 会把 (w) 拉回 0

如果 (s_2) 转移到自身：

[  
s_2\to s_2,  
]

TD target 为：

# [  
\gamma v_w(s_2)

2\gamma w.  
]

当前预测为：

[  
v_w(s_2)=2w.  
]

TD error 为：

# [  
\delta_2

# 2\gamma w-2w

# 2(\gamma-1)w

-2(1-\gamma)w.  
]

又因为：

[  
\nabla_w v_w(s_2)=2,  
]

所以：

[  
\Delta w_2  
\propto  
-4(1-\gamma)w.  
]

当 (w>0) 时，这个更新为负；当 (w<0) 时，这个更新为正。因此它会把 (w) 推向 0。

如果 (s_2) 转移到终止状态，终止状态价值为 0，则：

# [  
\delta_2

# 0-2w

-2w,  
]

[  
\Delta w_2  
\propto  
-4w.  
]

这也会把 (w) 拉回 0。

因此：

[  
\boxed{  
s_1 \text{ 的更新倾向于放大 } |w|,\quad  
s_2 \text{ 的更新倾向于缩小 } |w|.  
}  
]

---

## 8. 为什么 on-policy 会收敛？

on-policy，也就是“按照环境动力学采样”，意味着 (s_2) 的更新次数不是人为设成和 (s_1) 一样，而是按照真实访问频率出现。

由于环境动力学使得：

[  
s_2  
]

在每次 (s_1) 后平均出现多次，所以 (s_2) 的纠正项会反复作用。

简化地看，一个 cycle 中：

[  
s_1 \text{ 更新一次},  
]

[  
s_2 \text{ 平均更新 } \frac{1}{\varepsilon} \text{ 次}.  
]

于是总更新方向近似为：

[  
\Delta w_{\text{cycle}}  
\approx  
\underbrace{(2\gamma-1)w}_{s_1\text{ 的放大项}}  
+  
\underbrace{  
\frac{1}{\varepsilon}  
\left[  
-4(1-\gamma+\varepsilon\gamma)w  
\right]  
}_{s_2\text{ 的纠正项}}.  
]

当 (\varepsilon) 较小时，第二项的绝对值很大：

[  
\frac{1}{\varepsilon}  
\left[  
-4(1-\gamma+\varepsilon\gamma)w  
\right].  
]

所以整体方向会把 (w) 拉向 0。

这就是论文里说的：如果按照环境动力学更新，则 (s_2) 在期望上会比 (s_1) 更新多次，于是 (w) 会收敛到最优值：

[  
w^\ast=0.  
]

---

## 9. 为什么等频采样反而不是“按照环境动力学”？

等频采样是：

[  
\Pr(\text{sample }s_1)=\frac12,  
]

[  
\Pr(\text{sample }s_2)=\frac12.  
]

但环境动力学诱导的访问频率不是这个比例。若每次 (s_1) 后平均有 (1/\varepsilon) 次 (s_2)，那么真实访问比例大致是：

# [  
d(s_1)  
:  
d(s_2)

1  
:  
\frac{1}{\varepsilon}.  
]

例如 (\varepsilon=0.1)，则：

[  
d(s_1):d(s_2)=1:10.  
]

而等频采样给出：

[  
1:1.  
]

这严重低估了 (s_2) 的更新频率。

因此，等频采样虽然看起来“公平”，但它不符合环境动力学。Hasselt 等人也指出，该例子在每个状态等频采样时会发散；并解释说，即使 (s_2) 和 (s_1) 更新同样频繁，这仍然低于 on-policy 动力学下 (s_2) 应有的更新频率。

---

## 10. 环境动力学、采样分布、TD 稳定性的关系

这三者的关系可以写成：

[  
\text{环境动力学 } P  
\Rightarrow  
\text{长期访问分布 } d  
\Rightarrow  
\text{TD 平均更新方向}.  
]

在线采样时：

[  
d_{\text{sample}} = d_{\text{env}}.  
]

也就是说，训练样本的状态频率等于环境真实长期访问频率。

离策略或人为采样时：

[  
d_{\text{sample}} \neq d_{\text{env}}.  
]

此时 TD 的平均更新方向被改变。

在线性函数近似下，TD 的稳定性依赖加权投影 Bellman 算子的性质。采样分布决定投影权重；如果权重来自环境的稳态分布，Tsitsiklis and Van Roy 给出正收敛结果；如果权重来自与动力学无关的人为分布，则可能破坏收缩结构并导致发散。([Massachusetts Institute of Technology](https://web.mit.edu/jnt/www/Papers/J063-97-bvr-td.pdf?utm_source=chatgpt.com "An Analysis Of Temporal-difference Learning With Function ..."))

---

## 11. 和 off-policy 的关系

off-policy 的本质之一就是：

[  
\text{数据分布}  
\neq  
\text{目标策略诱导的状态分布}.  
]

在这个例子中：

[  
\text{按照环境动力学采样}  
]

对应 on-policy 或在线采样。

而：

[  
\text{只更新 }s_1  
]

或者：

[  
\text{等频采样 }s_1,s_2  
]

对应采样分布偏离环境动力学。论文明确说，只更新 (s_1) 而不更新 (s_2) 是 off-policy 更新，因为 (s_2) 的更新频率不匹配该问题动力学下 (s_2) 的真实访问频率。

所以，在这篇文献语境中，“off-policy”并不只是“行为策略和目标策略不同”这么窄；更一般地，它体现为：

[  
\boxed{  
\text{用于学习的更新分布，与目标动力学诱导的访问分布不一致。}  
}  
]

---

## 12. 环境动力学和学习动力学不要混淆

这里有两个“动力学”：

### 环境动力学

描述状态如何变化：

[  
S_t \to S_{t+1}.  
]

由转移概率决定：

[  
P(s'\mid s)  
\quad \text{或} \quad  
P(s'\mid s,a).  
]

在例子中，就是：

[  
s_1\to s_2,  
]

[  
s_2\to s_2 \text{ with probability }1-\varepsilon,  
]

[  
s_2\to \text{terminal/reset} \text{ with probability }\varepsilon.  
]

### 学习动力学

描述参数如何变化：

[  
w_t \to w_{t+1}.  
]

由 TD 更新决定：

# [  
w_{t+1}

## w_t  
+  
\alpha  
\left(  
R_{t+1}  
+  
\gamma v_w(S_{t+1})

v_w(S_t)  
\right)  
\nabla_w v_w(S_t).  
]

环境动力学决定样本序列；样本序列决定 TD 更新的平均方向；TD 更新的平均方向决定学习动力学是否收敛。

所以完整链条是：

[  
\boxed{  
\text{环境动力学}  
\Rightarrow  
\text{状态访问频率}  
\Rightarrow  
\text{TD 更新频率}  
\Rightarrow  
\text{参数学习动力学}  
}  
]

---

## 13. 为什么这个概念对 DQN 重要？

DQN 中也有类似问题。

真实环境与当前策略诱导出一个访问分布：

[  
d_{\pi_t}(s,a).  
]

但 DQN 用 replay buffer 采样：

[  
(s,a,r,s')\sim \mathcal D.  
]

Replay buffer 中的数据来自过去多个策略，因此：

[  
\mathcal D \neq d_{\pi_t}.  
]

如果再使用 prioritized replay，采样概率还会根据 TD error 改变：

[  
p_i \propto |\delta_i|^\alpha.  
]

于是更新分布进一步偏离当前环境动力学下的访问分布。Hasselt 等人正是利用这一点，把 replay sampling distribution 作为调节 off-policy 程度的实验变量。

这就是为什么“环境动力学”在 deadly triad 中重要：TD 不是只依赖 Bellman 方程，还依赖样本出现的频率。函数近似下，不同状态共享参数；如果采样频率错了，某些被错误改变的状态价值得不到足够修正，bootstrapping 会继续使用这些错误值，从而形成发散。

---

## 14. 总结

在该例子中，**环境动力学**就是状态转移结构：

[  
s_1\to s_2,  
]

[  
s_2\to s_2 \text{ with probability }1-\varepsilon,  
]

[  
s_2\to \text{terminal/reset} \text{ with probability }\varepsilon.  
]

它决定了真实轨迹中 (s_2) 会比 (s_1) 出现得更频繁。因此，按照环境动力学进行在线 TD 更新时，(s_2) 的价值会被频繁校正，参数 (w) 能收敛到：

[  
w^\ast=0.  
]

但如果只更新 (s_1)，或者把 (s_1,s_2) 等频采样，就破坏了环境动力学诱导的访问频率。此时 (s_1) 的 TD 更新会不断把 (w) 推离 0，而 (s_2) 的纠正更新不足，最终导致发散。

最核心的机制是：

[  
\boxed{  
\text{环境动力学决定应当以什么频率校正各状态价值；}  
}  
]

[  
\boxed{  
\text{off-policy 或人为采样改变这个频率，函数近似下就可能破坏 TD 的稳定性。}  
}  
]



---

下面从**概率分布**和**采样过程**两个层面严谨解释 on-policy 与 off-policy 数据采样。核心区分是：
$$
\boxed{  
\text{on-policy：数据由当前要学习/评估的同一个策略生成。}  
}  
$$

$$
\boxed{  
\text{off-policy：数据由行为策略生成，但学习目标对应另一个目标策略。}  
}  
$$
Sutton 与 Barto 对 off-policy 的经典表述就是：存在 **behavior policy** 与 **target policy** 的区分；off-policy prediction 是用一个行为策略生成的数据来学习另一个目标策略的价值。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 1. 基本对象：MDP、策略、轨迹分布

设 MDP 为：
$$
(\mathcal S,\mathcal A,P,r,\gamma).  
$$
环境动力学为：
$$
P(s',r\mid s,a)
=
\Pr(S_{t+1}=s',R_{t+1}=r\mid S_t=s,A_t=a).  
$$
策略为：

# [  
\pi(a\mid s)

\Pr(A_t=a\mid S_t=s).  
]

需要严格区分两层概率：

# [  
\boxed{  
P(s',r\mid s,a)

\text{环境条件转移分布}  
}  
]

# [  
\boxed{  
\pi(a\mid s)

\text{动作采样分布}  
}  
]

环境动力学本身不选择动作；动作由策略选择。给定策略后，状态序列才形成一个策略诱导的 Markov chain：

# [  
P_\pi(s'\mid s)

\sum_a \pi(a\mid s)P(s'\mid s,a).  
]

若包含奖励，则：

# [  
P_\pi(s',r\mid s)

\sum_a \pi(a\mid s)P(s',r\mid s,a).  
]

也就是说，固定策略后，MDP 被“压缩”为 Markov reward process / Markov chain。Tsitsiklis 与 Van Roy 的 TD 分析正是在这种 Markov chain 轨迹上研究在线 TD 更新；其论文强调，线性函数近似下，按 Markov chain 的在线轨迹采样可获得收敛，而从与底层链动力学无关的分布采样可能导致发散。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 2. on-policy 数据采样

## 2.1 定义

on-policy 条件下，行为策略等于目标策略：

[  
\mu=\pi.  
]

其中：

[  
\mu(a\mid s)  
]

表示实际与环境交互、产生数据的行为策略；

[  
\pi(a\mid s)  
]

表示需要评估或改进的目标策略。

on-policy 数据采样过程为：

[  
S_0\sim \rho_0,  
]

[  
A_t\sim \pi(\cdot\mid S_t),  
]

[  
(S_{t+1},R_{t+1})\sim P(\cdot,\cdot\mid S_t,A_t).  
]

因此，轨迹：

[  
\tau=(S_0,A_0,R_1,S_1,A_1,R_2,\ldots)  
]

服从目标策略自身诱导的轨迹分布：

# [  
p_\pi(\tau)

\rho_0(S_0)  
\prod_{t\ge 0}  
\pi(A_t\mid S_t)  
P(S_{t+1},R_{t+1}\mid S_t,A_t).  
]

所以 on-policy 的关键是：

[  
\boxed{  
\text{数据分布与学习目标分布一致。}  
}  
]

---

## 2.2 on-policy 中状态访问分布

在固定策略 (\pi) 下，状态访问频率由：

# [  
P_\pi(s'\mid s)

\sum_a \pi(a\mid s)P(s'\mid s,a)  
]

决定。

长期状态分布可记为：

[  
d_\pi(s).  
]

对应状态-动作访问分布为：

[  
d_\pi(s,a)=d_\pi(s)\pi(a\mid s).  
]

on-policy 采样数据满足：

[  
(S_t,A_t)\sim d_\pi(s,a).  
]

因此 TD 更新的平均方向也是按 (d_\pi) 加权的。例如状态价值 TD 更新：

## [  
\Delta \theta  
\propto  
\left[  
R_{t+1}  
+  
\gamma v_\theta(S_{t+1})

v_\theta(S_t)  
\right]  
\nabla_\theta v_\theta(S_t).  
]

它的期望更新方向大致由：

[  
S_t\sim d_\pi,\qquad S_{t+1}\sim P_\pi(\cdot\mid S_t)  
]

决定。

这就是“采样频率匹配目标 Markov chain 动力学”的含义。

---

## 2.3 on-policy 的例子：SARSA

SARSA 的一步 target 是：

[  
R_{t+1}+\gamma q(S_{t+1},A_{t+1}).  
]

其中：

[  
A_{t+1}\sim \pi(\cdot\mid S_{t+1}).  
]

也就是说，target 使用的下一个动作就是实际行为策略会采取的动作。如果行为策略就是正在评估/改进的策略，那么 SARSA 是 on-policy。Sutton 与 Barto 将 SARSA 作为典型 on-policy TD control 方法，而 Q-learning 是典型 off-policy control 方法。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 3. off-policy 数据采样

## 3.1 定义

off-policy 条件下：

[  
\mu\neq \pi.  
]

数据由行为策略 (\mu) 产生：

[  
A_t\sim \mu(\cdot\mid S_t),  
]

但学习目标对应目标策略 (\pi)。

采样过程为：

[  
S_0\sim \rho_0,  
]

[  
A_t\sim \mu(\cdot\mid S_t),  
]

[  
(S_{t+1},R_{t+1})\sim P(\cdot,\cdot\mid S_t,A_t).  
]

因此采样轨迹分布是：

# [  
p_\mu(\tau)

\rho_0(S_0)  
\prod_{t\ge 0}  
\mu(A_t\mid S_t)  
P(S_{t+1},R_{t+1}\mid S_t,A_t).  
]

但目标价值函数是：

# [  
v^\pi(s)

\mathbb E_\pi  
\left[  
\sum_{k=0}^{\infty}\gamma^k R_{t+k+1}  
\mid S_t=s  
\right].  
]

所以 off-policy 的核心是：

[  
\boxed{  
\text{数据来自 }p_\mu(\tau)，\text{但目标是 }v^\pi \text{ 或 }q^\pi。  
}  
]

Precup、Sutton 与 Singh 的 off-policy policy evaluation 工作也明确采用这种设定：数据由行为策略产生，而目标是估计另一个策略的价值，并通常需要用重要性采样比率进行校正。([Incomplete Ideas](https://www.incompleteideas.net/papers/PSS-00.pdf?utm_source=chatgpt.com "Eligibility Traces for Off-Policy Policy Evaluation"))

---

## 3.2 off-policy 中状态-动作分布不一致

行为策略诱导的状态转移为：

# [  
P_\mu(s'\mid s)

\sum_a \mu(a\mid s)P(s'\mid s,a).  
]

目标策略诱导的状态转移为：

# [  
P_\pi(s'\mid s)

\sum_a \pi(a\mid s)P(s'\mid s,a).  
]

若：

[  
\mu\neq \pi,  
]

通常：

[  
P_\mu\neq P_\pi.  
]

于是长期访问分布也通常不同：

[  
d_\mu(s)\neq d_\pi(s).  
]

状态-动作分布也不同：

[  
d_\mu(s,a)=d_\mu(s)\mu(a\mid s),  
]

[  
d_\pi(s,a)=d_\pi(s)\pi(a\mid s).  
]

因此，off-policy 数据采样满足：

[  
(S_t,A_t)\sim d_\mu(s,a),  
]

但目标策略价值对应：

[  
d_\pi(s,a).  
]

这就是 off-policy 学习中最重要的分布错位：

[  
\boxed{  
d_\mu(s,a)\neq d_\pi(s,a).  
}  
]

---

# 4. off-policy 不是环境动力学改变

这一点需要特别严谨。

off-policy 条件下，环境动力学仍然是同一个：

[  
P(s',r\mid s,a).  
]

也就是说，对于采样到的 transition：

[  
(S_t,A_t,R_{t+1},S_{t+1}),  
]

只要它来自真实环境交互，就仍然满足：

[  
(S_{t+1},R_{t+1})  
\sim  
P(\cdot,\cdot\mid S_t,A_t).  
]

变化的是动作和状态-动作边际分布：

[  
\Pr(S_t=s,A_t=a).  
]

因此更严谨地说：

[  
\boxed{  
\text{off-policy 不改变 }P(s',r\mid s,a)，  
\text{而是改变 }(S_t,A_t)\text{ 的采样分布。}  
}  
]

也就是：

[  
d_\mu(s,a)P(s',r\mid s,a)  
\neq  
d_\pi(s,a)P(s',r\mid s,a),  
]

但不是：

[  
P_\mu(s',r\mid s,a)  
\neq  
P_\pi(s',r\mid s,a).  
]

后者通常不是正确写法，因为给定 ((s,a)) 后，环境响应与策略无关。

---

# 5. 轨迹分布层面的严格比较

on-policy 轨迹分布：

# [  
p_\pi(\tau)

\rho_0(S_0)  
\prod_{t=0}^{T-1}  
\pi(A_t\mid S_t)  
P(S_{t+1},R_{t+1}\mid S_t,A_t).  
]

off-policy 采样轨迹分布：

# [  
p_\mu(\tau)

\rho_0(S_0)  
\prod_{t=0}^{T-1}  
\mu(A_t\mid S_t)  
P(S_{t+1},R_{t+1}\mid S_t,A_t).  
]

二者的差别只在策略项：

[  
\pi(A_t\mid S_t)  
\quad \text{vs.} \quad  
\mu(A_t\mid S_t).  
]

环境项相同：

[  
P(S_{t+1},R_{t+1}\mid S_t,A_t).  
]

因此：

# [  
\frac{p_\pi(\tau)}{p_\mu(\tau)}

\prod_{t=0}^{T-1}  
\frac{\pi(A_t\mid S_t)}{\mu(A_t\mid S_t)}  
]

在相同初始分布和相同环境动力学下成立。

这正是 off-policy correction 的来源：如果要用 (\mu) 产生的数据估计 (\pi) 下的期望，就需要用概率比率把行为策略分布变换为目标策略分布。

---

# 6. 重要性采样比率

单步重要性采样比率为：

# [  
\rho_t

\frac{\pi(A_t\mid S_t)}{\mu(A_t\mid S_t)}.  
]

多步轨迹比率为：

# [  
\rho_{t:t+n-1}

\prod_{k=t}^{t+n-1}  
\frac{\pi(A_k\mid S_k)}{\mu(A_k\mid S_k)}.  
]

如果某个动作在目标策略下概率高，但在行为策略下概率低，则该样本需要更大权重；反之，则权重较小。

但是重要性采样要求覆盖条件：

[  
\mu(a\mid s)>0  
\quad  
\text{whenever}  
\quad  
\pi(a\mid s)>0.  
]

否则会出现：

[  
\frac{\pi(a\mid s)}{\mu(a\mid s)}  
]

不可定义或无穷大。Precup 等人的 off-policy policy evaluation 正是基于行为策略与目标策略之间的概率比率来修正 off-policy 数据。([Incomplete Ideas](https://www.incompleteideas.net/papers/PSS-00.pdf?utm_source=chatgpt.com "Eligibility Traces for Off-Policy Policy Evaluation"))

---

# 7. on-policy / off-policy 与 TD 更新的关系

## 7.1 on-policy TD

on-policy TD 的目标策略与采样策略相同：

[  
\mu=\pi.  
]

状态价值 TD target：

# [  
Y_t

R_{t+1}  
+  
\gamma v_\theta(S_{t+1}).  
]

因为：

[  
S_t,S_{t+1}  
]

来自 (P_\pi) 的在线轨迹，所以平均 TD 更新对应目标策略自身诱导的 Bellman operator：

# [  
T_\pi v

r_\pi+\gamma P_\pi v.  
]

在线性函数近似下，on-policy TD 的收敛性通常要比 off-policy TD 更容易保证。Tsitsiklis 与 Van Roy 的经典结果就是在线采样 Markov chain 轨迹下的线性 TD 收敛分析；他们也指出，若状态采样频率脱离 Markov chain 自身动力学，则可能出现发散。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

## 7.2 off-policy TD prediction

off-policy prediction 想估计：

[  
v^\pi.  
]

但数据来自：

[  
\mu.  
]

若直接使用 TD target：

[  
R_{t+1}+\gamma v_\theta(S_{t+1}),  
]

则需要明确这个 (R_{t+1},S_{t+1}) 是由行为动作 (A_t\sim \mu) 产生的，还是已经通过重要性采样或期望形式修正为目标策略 (\pi) 对应的 Bellman target。

如果没有修正，平均更新会偏向行为策略诱导的分布；如果用重要性采样修正，则可以把期望从 (\mu) 转换到 (\pi)，但会引入高方差。

---

# 8. on-policy / off-policy 与 control 的关系

## 8.1 on-policy control：SARSA

SARSA 更新：

## [  
q(S_t,A_t)  
\leftarrow  
q(S_t,A_t)  
+  
\alpha  
\left[  
R_{t+1}  
+  
\gamma q(S_{t+1},A_{t+1})

q(S_t,A_t)  
\right].  
]

其中：

[  
A_{t+1}\sim \pi(\cdot\mid S_{t+1}).  
]

如果行为策略也是 (\pi)，则 target 中的下一动作就是实际会执行的动作。SARSA 学习的是“包含探索行为在内的当前行为策略”的价值。因此 SARSA 是 on-policy control 的代表。

---

## 8.2 off-policy control：Q-learning

Q-learning 更新：

## [  
q(S_t,A_t)  
\leftarrow  
q(S_t,A_t)  
+  
\alpha  
\left[  
R_{t+1}  
+  
\gamma \max_{a'}q(S_{t+1},a')

q(S_t,A_t)  
\right].  
]

采样动作 (A_t) 可以来自 (\epsilon)-greedy 行为策略：

[  
\mu(a\mid s).  
]

但 target 使用：

[  
\max_{a'}q(S_{t+1},a'),  
]

对应 greedy target policy：

[  
\pi(s)=\arg\max_a q(s,a).  
]

因此 Q-learning 的数据可以由探索策略产生，但学习目标是 greedy 策略或最优 Bellman operator。这就是 Q-learning 的 off-policy 性质。Sutton 与 Barto 将 Q-learning 作为 off-policy TD control 的经典方法。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 9. replay buffer 中的数据采样

深度 RL 中还需要区分两种采样：

[  
\text{环境交互采样}  
]

和：

[  
\text{训练 minibatch 采样}.  
]

## 9.1 环境交互采样

例如 DQN 中，智能体用行为策略 (\mu_t) 与环境交互，生成 transition：

[  
(S_t,A_t,R_{t+1},S_{t+1}).  
]

这些 transition 来自真实环境：

[  
P(s',r\mid s,a).  
]

但动作由行为策略产生：

[  
A_t\sim \mu_t(\cdot\mid S_t).  
]

## 9.2 replay buffer 采样

transition 被存入经验回放池：

[  
\mathcal D={(S_i,A_i,R_{i+1},S_{i+1})}_{i=1}^N.  
]

训练时从 (\mathcal D) 采样 minibatch。

若均匀 replay：

[  
p_i=\frac1N.  
]

若 prioritized replay：

[  
p_i  
\propto  
|\delta_i|^\alpha.  
]

这又引入第二层分布变化。即使原始 buffer 来自某些行为策略的轨迹，训练时的样本分布也可能被 replay sampling 改变。

DQN 使用 replay buffer 时，数据通常来自过去多个行为策略的混合分布，而当前 Q-learning target 对应当前 greedy 或 near-greedy 目标，因此经验回放会增强 off-policy 性质。van Hasselt 等关于 deadly triad 的论文正是围绕这种经验回放训练的 DQN 变体进行实证分析。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 10. 三种“分布不匹配”

off-policy 数据采样中至少可能有三种不匹配。

## 10.1 动作分布不匹配

[  
\mu(a\mid s)\neq \pi(a\mid s).  
]

这是最基本的 off-policy。

## 10.2 状态访问分布不匹配

由于策略不同：

[  
d_\mu(s)\neq d_\pi(s).  
]

即使某些状态下动作分布相近，长期访问状态的频率也可能不同。

## 10.3 replay 采样分布不匹配

训练时 minibatch 采样分布可能不是 buffer 中原始经验分布。例如 prioritized replay：

[  
p_i  
\propto  
|\delta_i|^\alpha  
]

会让 TD error 大的样本被更频繁更新，从而使实际训练分布偏离原始轨迹分布。

在 function approximation + bootstrapping 下，这些分布不匹配都可能影响 TD 更新的平均方向，并可能造成不稳定。

---

# 11. 为什么 off-policy 更容易与 deadly triad 发生问题？

deadly triad 是：

[  
\text{function approximation}  
+  
\text{bootstrapping}  
+  
\text{off-policy learning}.  
]

off-policy 的风险来自：

[  
d_\mu\neq d_\pi.  
]

函数近似使不同状态共享参数：

[  
v_\theta(s)  
]

或：

[  
q_\theta(s,a).  
]

更新某个样本可能改变许多未采样状态的估计。

bootstrapping 又使用后继状态的估计构造 target：

[  
R+\gamma v_\theta(S_{t+1}).  
]

如果某些状态的值因泛化被错误改变，但 off-policy 采样分布没有足够频繁地访问并修正这些状态，那么错误估计就可能被 bootstrap target 反复使用，形成放大机制。

Tsitsiklis 与 Van Roy 的线性 TD 分析说明：采样状态频率必须与 Markov chain 动力学相匹配；若状态从独立于该链的分布采样，线性函数近似下也可能发散。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

# 12. 一个简洁例子

设某状态 (s) 下有两个动作：

[  
a_1,\quad a_2.  
]

目标策略：

[  
\pi(a_1\mid s)=1.  
]

行为策略：

[  
\mu(a_2\mid s)=1.  
]

则 off-policy 数据在状态 (s) 下只包含：

[  
(s,a_2,r,s').  
]

但目标策略真实执行时会产生：

[  
(s,a_1,r,s').  
]

因此：

[  
d_\mu(s,a_2)>0,\quad d_\mu(s,a_1)=0,  
]

而：

[  
d_\pi(s,a_1)>0,\quad d_\pi(s,a_2)=0.  
]

此时若没有覆盖条件：

[  
\mu(a_1\mid s)>0,  
]

就无法从行为数据中估计目标策略在 (a_1) 上的后果。这说明 off-policy 学习必须要求行为策略对目标策略可能采取的动作有足够覆盖。

---

# 13. 总结表

|项目|on-policy|off-policy|
|---|---|---|
|行为策略 (\mu)|(\mu=\pi)|(\mu\neq\pi)|
|数据来源|目标策略自身与环境交互|行为策略与环境交互|
|轨迹分布|(p_\pi(\tau))|(p_\mu(\tau))|
|状态分布|(d_\pi(s))|(d_\mu(s))|
|状态-动作分布|(d_\pi(s)\pi(a\mid s))|(d_\mu(s)\mu(a\mid s))|
|环境动力学|(P(s',r\mid s,a))|同一个 (P(s',r\mid s,a))|
|是否需要分布校正|通常不需要|常需要重要性采样或其他校正|
|典型算法|SARSA、on-policy actor-critic、PPO|Q-learning、DQN、off-policy actor-critic|

---

# 14. 最核心结论

[  
\boxed{  
\text{on-policy 数据采样：样本轨迹由目标策略 } \pi \text{ 与环境 }P\text{ 共同生成。}  
}  
]

[  
\boxed{  
\text{off-policy 数据采样：样本轨迹由行为策略 } \mu \text{ 与环境 }P\text{ 共同生成，但学习目标对应目标策略 } \pi。  
}  
]

[  
\boxed{  
\text{环境条件转移 }P(s',r\mid s,a)\text{ 不变；变化的是状态-动作采样分布 }d(s,a)。  
}  
]

因此，off-policy 的本质不是“样本不是环境真实生成的”，而是：

[  
\boxed{  
\text{样本是真实环境生成的，但不是目标策略真实执行时所诱导的分布生成的。}  
}  
]

---

更具体地说，**off-policy 不是环境动力学改变**，而是：

[  
$$
\boxed{  
\text{同一个环境 }P(s',r\mid s,a)\text{ 没变；变的是采样到 }(s,a)\text{ 的分布。}  
}  
$$
]

这里必须区分两个层次：

---

## 1. 环境动力学：给定 ((s,a)) 后环境怎么反应

MDP 的环境动力学是：

# [  
P(s',r\mid s,a)

\Pr(S_{t+1}=s',R_{t+1}=r\mid S_t=s,A_t=a).  
]

含义是：**已经给定当前状态 (s) 和动作 (a) 后，环境产生下一个状态和奖励的规律**。这个条件概率不负责决定动作 (a) 是怎么来的；动作由策略决定。Sutton 和 Barto 也用 (p(s',r\mid s,a)) 表示 MDP 的动力学，即状态和动作给定后的环境响应。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

因此，在 off-policy 中，只要数据来自同一个真实环境，对任何实际采样到的 transition：

[  
(s,a,r,s')  
]

仍然满足：

[  
(s',r)\sim P(\cdot,\cdot\mid s,a).  
]

也就是说：

[  
\boxed{  
\text{给定 }(s,a)\text{ 后，环境转移规律没有因为 off-policy 而改变。}  
}  
]

---

## 2. 变的是动作选择分布

on-policy 和 off-policy 的差别在策略层面。

on-policy：

[  
A_t\sim \pi(\cdot\mid S_t).  
]

off-policy：

[  
A_t\sim \mu(\cdot\mid S_t),  
\qquad  
\mu\neq \pi.  
]

其中 (\mu) 是行为策略，(\pi) 是目标策略。off-policy 方法的基本含义就是：在跟随一个行为策略获取数据时，学习另一个目标策略；Degris、White 和 Sutton 对 off-policy actor-critic 的描述也是“while following and obtaining data from another behavior policy” 来学习目标策略。([arXiv](https://arxiv.org/abs/1205.4839?utm_source=chatgpt.com "Off-Policy Actor-Critic"))

所以 off-policy 改变的是：

[  
\Pr(A_t=a\mid S_t=s).  
]

不是改变：

[  
P(s',r\mid s,a).  
]

---

## 3. 变的是状态-动作联合分布

on-policy 数据的联合采样分布是：

[  
d_\pi(s)\pi(a\mid s)P(s',r\mid s,a).  
]

off-policy 数据的联合采样分布是：

[  
d_\mu(s)\mu(a\mid s)P(s',r\mid s,a).  
]

两者比较：

[  
\underbrace{P(s',r\mid s,a)}_{\text{环境动力学}}  
]

是同一个。

不同的是：

[  
\underbrace{d_\pi(s)\pi(a\mid s)}_{\text{目标策略诱导的状态-动作分布}}  
]

和：

[  
\underbrace{d_\mu(s)\mu(a\mid s)}_{\text{行为策略诱导的状态-动作分布}}.  
]

所以 off-policy 的精确定义不是：

[  
P_{\mu}(s',r\mid s,a)\neq P_{\pi}(s',r\mid s,a).  
]

而是：

[  
d_\mu(s)\mu(a\mid s)  
\neq  
d_\pi(s)\pi(a\mid s).  
]

也就是：

[  
\boxed{  
\text{off-policy 改变的是哪些状态-动作对被采样到，以及它们出现的频率。}  
}  
]

---

## 4. 一个具体例子

假设环境中有一个状态 (s)，两个动作：

[  
a_1,\quad a_2.  
]

环境动力学为：

[  
P(s'\mid s,a_1),  
]

[  
P(s'\mid s,a_2).  
]

目标策略是：

[  
\pi(a_1\mid s)=1.  
]

行为策略是：

[  
\mu(a_2\mid s)=1.  
]

那么目标策略真实执行时，数据会来自：

[  
s \xrightarrow{a_1} s',  
\qquad  
s'\sim P(\cdot\mid s,a_1).  
]

off-policy 行为策略采样时，数据会来自：

[  
s \xrightarrow{a_2} s',  
\qquad  
s'\sim P(\cdot\mid s,a_2).  
]

这里环境没有变。给定动作 (a_1) 时，环境仍然按 (P(\cdot\mid s,a_1)) 转移；给定动作 (a_2) 时，环境仍然按 (P(\cdot\mid s,a_2)) 转移。

变的是：行为策略选择了 (a_2)，而目标策略会选择 (a_1)。

因此 off-policy 数据不是“环境变了”，而是：

[  
\boxed{  
\text{采样动作不是目标策略会采样的动作。}  
}  
]

---

## 5. 为什么又会说 (P_\mu\neq P_\pi)？

这容易造成混淆。

如果把动作边缘化掉，只看状态到状态的转移，那么固定策略 (\pi) 后，会得到策略诱导的状态转移矩阵：

# [  
P_\pi(s'\mid s)

\sum_a \pi(a\mid s)P(s'\mid s,a).  
]

行为策略诱导的状态转移矩阵是：

# [  
P_\mu(s'\mid s)

\sum_a \mu(a\mid s)P(s'\mid s,a).  
]

如果：

[  
\mu\neq \pi,  
]

通常：

[  
P_\mu\neq P_\pi.  
]

但这里变的不是原始环境动力学 (P(s'\mid s,a))，而是**策略与环境合成后的闭环状态动力学**。

所以要区分：

# [  
\boxed{  
P(s'\mid s,a)

\text{环境动力学}  
}  
]

# [  
\boxed{  
P_\pi(s'\mid s)

\text{目标策略诱导的状态动力学}  
}  
]

# [  
\boxed{  
P_\mu(s'\mid s)

\text{行为策略诱导的状态动力学}  
}  
]

off-policy 时：

[  
P_\mu\neq P_\pi  
]

可以成立；但这不表示环境 (P(s'\mid s,a)) 改变，而是因为动作分布不同。

---

## 6. 和 TD 更新的关系

TD 更新使用样本：

[  
(S_t,A_t,R_{t+1},S_{t+1}).  
]

对于动作价值函数，典型更新形如：

## [  
\Delta\theta  
\propto  
\left[  
R_{t+1}  
+  
\gamma ,\text{target}(S_{t+1})

q_\theta(S_t,A_t)  
\right]  
\nabla_\theta q_\theta(S_t,A_t).  
]

在 off-policy 下，样本来自：

[  
(S_t,A_t)\sim d_\mu(s)\mu(a\mid s).  
]

但目标可能对应：

[  
\pi.  
]

例如 Q-learning 中，行为策略可以是 (\epsilon)-greedy，但 bootstrap target 是：

[  
R_{t+1}  
+  
\gamma \max_{a'}q(S_{t+1},a'),  
]

对应 greedy target policy。因此 Q-learning 可以用探索行为采样数据，却学习 greedy 策略的价值；这正是典型 off-policy control 的结构。Sutton 和 Barto 将 Q-learning 作为 off-policy TD control 的经典方法。([Stanford University](https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf?utm_source=chatgpt.com "Reinforcement Learning: An Introduction"))

---

## 7. replay buffer 中再多一层采样变化

DQN 里还有经验回放。transition 先由过去的行为策略生成：

[  
(S_i,A_i,R_{i+1},S_{i+1})\sim d_{\mu_i}(s)\mu_i(a\mid s)P(s',r\mid s,a).  
]

然后训练时从 replay buffer 采样。

若均匀采样：

[  
p_i=\frac{1}{N}.  
]

若 prioritized replay：

[  
p_i\propto |\delta_i|^\alpha.  
]

这会进一步改变训练样本的出现频率。注意，即使 prioritized replay 改变了样本频率，每个 transition 的环境生成机制仍然是同一个：

[  
P(s',r\mid s,a).  
]

变的是：

[  
\text{哪些 transition 被更频繁用于更新。}  
]

Sutton、Szepesvári 和 Maei 在 off-policy TD 相关工作中也用更一般的语言指出：当更新分布不匹配所研究动态过程的动力学时，就属于 off-policy 情形。([Incomplete Ideas](https://incompleteideas.net/papers/SSM-nips08.pdf?utm_source=chatgpt.com "A Convergent O(n) Algorithm for Off-policy Temporal- ..."))

---

## 8. 最准确的一句话

[  
\boxed{  
\text{off-policy 不是 }P(s',r\mid s,a)\text{ 改变；而是 }d(s,a)\text{ 改变。}  
}  
]

也就是：

[  
\boxed{  
\text{环境对给定状态-动作的响应不变；改变的是策略如何选择动作，以及由此产生的状态-动作访问频率。}  
}  
]

所以，“off-policy 不是环境动力学改变”可以理解为：

[  
\boxed{  
\text{样本仍是真实环境生成的，只是不是目标策略真实执行时按其访问分布生成的。}  
}  
]