

论文题目是 **“For SALE: State-Action Representation Learning for Deep Reinforcement Learning”**，作者包括 Scott Fujimoto 等，NeurIPS 2023 发表；官方实现也提供了 TD7 的在线与离线 RL 运行示例。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))




==**表征学习**指的是：不直接把原始输入交给策略或价值函数，而是先学习一个中间特征表示。==

例如图像强化学习中，原始输入可能是像素：
$$
s_t \in \mathbb{R}^{H \times W \times C}  
$$

直接从像素到动作很困难，因此通常用 CNN、encoder 或 contrastive learning 等方法先得到低维特征：


$$
z_t = f_\theta(s_t)  
$$

然后策略和值函数基于 ($z_t$) 学习：


$$
\pi(a \mid z_t), \qquad Q(z_t,a)  
$$


这在 Atari、DMControl 像素任务、机器人视觉控制中很常见。

---

### “but is often overlooked for environments with low-level states”

这里的 **low-level states** 不是“低级状态”，而是指已经是结构化数值向量的状态，例如：


$$
s = [q_1,q_2,\dots,q_n,\dot q_1,\dot q_2,\dots,\dot q_n]  
$$


在 MuJoCo 物理控制中，状态通常包括关节角度、速度、身体位置、接触信息等。由于这些状态已经是低维向量，很多算法默认认为“不需要表征学习”，直接把 ($s$) 输入 MLP：
$$
Q(s,a), \qquad \pi(s)  
$$
论文的核心判断是：**即使状态不是图像，也仍然可能存在复杂结构；低维并不等于表示已经充分。**

这点很重要。低维状态虽然没有图像那样的空间结构，但仍然包含动力学结构、动作依赖结构、可控性结构。例如在机器人控制中，同一个状态下，不同动作会导致完全不同的下一状态变化。因此状态和动作之间的交互本身就是需要学习的对象。

---

###  “SALE ... learning embeddings that model the nuanced interaction between state and action”

**SALE** 是 **State-Action Learned Embeddings**，即“状态—动作学习嵌入”。

普通 actor-critic 中，critic 往往直接学习：

$$
Q(s,a)  
$$

SALE 的想法是：先学习状态嵌入和状态—动作嵌入，再把这些嵌入提供给价值函数和策略。相关论文材料说明 SALE 使用两个 encoder：一个把状态 ($s$) 编码成状态嵌入 ($z_s$)，另一个把 ($z_s$) 与动作 ($a$) 结合，得到状态—动作嵌入 ($z_{sa}$)。([ResearchGate](https://www.researchgate.net/publication/371311493_For_SALE_State-Action_Representation_Learning_for_Deep_Reinforcement_Learning?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep ..."))

可以粗略写成：
$$
z_s = f(s)  
$$
$$
z_{sa} = g(z_s,a)  
$$

然后 critic 不只是看原始 $(s,a)$，还可以看 learned embedding：
$$
Q(s,a,z_s,z_{sa})  
$$
策略也可以利用这些表征：
$$
\pi(s,z_s)  
$$
关键不只是“多加一个 encoder”，而是 **让表征学习任务与动力学结构相关**。SALE 的嵌入通过预测下一状态嵌入来训练，因此它倾向于捕捉“当前状态—动作如何影响未来状态”的结构，而不是只捕捉当前状态的静态特征。

---

## 为什么低维状态也需要表征学习？

在连续控制中，状态 ($s$) 虽然是低维向量，但其语义不是均匀的。

例如：


$$
s = [\text{torso height}, \text{joint angles}, \text{joint velocities}, \text{contact flags}]  
$$


这些变量之间的尺度、物理意义、动力学作用都不同。直接把它们拼接进 MLP，会让网络自己从 TD 误差信号中同时学习三件事：

1. 哪些状态维度重要；
    
2. 状态和动作如何共同决定下一状态；
    
3. 哪些特征对长期回报有用。
    

而 TD 学习信号本身比较弱，因为目标是 bootstrapped target：
$$
y = r + \gamma Q_{\bar\theta}(s',\pi_{\bar\phi}(s'))  
$$
这个目标依赖旧网络、目标网络、当前策略和 replay buffer 分布，因此目标非平稳。SALE 额外提供一个更直接的表征学习目标：从 ($(s,a)$) 中学习预测下一状态嵌入。这样可以让网络先学到动力学相关结构，再服务于 ($Q$) 学习和策略学习。

---

## 四、TD7 与 TD3 的关系

TD3 是连续动作控制中的经典 off-policy actor-critic 算法。它在 DDPG 的基础上加入三个主要技巧：双 critic、延迟策略更新、target policy smoothing；这些设计用于缓解 Q 函数过估计和 actor 过度利用 critic 误差的问题。([Spinning Up](https://spinningup.openai.com/en/latest/algorithms/td3.html?utm_source=chatgpt.com "Twin Delayed DDPG — Spinning Up documentation"))

TD7 可以理解为：
$$
\text{TD7} = \text{TD3} + \text{SALE} + \text{RL checkpoint adaptation} + \text{若干稳定化设计}  
$$
其中最核心的是 SALE。TD3 主要处理的是 **价值估计偏差和训练稳定性问题**，而 SALE 进一步处理 **表征质量问题**。

也就是说，TD3 问的是：

> 在已有输入表示下，怎样更稳定地学习 ($Q(s,a)$) 和 ($\pi(s)$)？

SALE/TD7 问的是：

> 输入 $(s,a)$ 本身是否应该被重新编码，使 critic 和 actor 更容易学习？

这两个问题不冲突。TD7 不是推翻 TD3，而是在 TD3 框架上加入状态—动作表征学习。

---
## online 和 offline setting 的含义

 TD7 同时适用于 **online** 和 **offline** setting。

**在线强化学习**中，智能体一边和环境交互，一边收集数据，一边更新策略：
$$
\pi \rightarrow \text{collect data} \rightarrow \text{update } Q,\pi \rightarrow \text{collect more data}  
$$
**离线强化学习**中，算法不能继续探索环境，只能使用固定数据集：
$$
\mathcal{D} = {(s,a,r,s')}  
$$
这会带来严重的 out-of-distribution action 问题：策略可能选择数据集中很少出现的动作，而 critic 对这些动作的估计不可靠。TD7 能用于 offline setting，说明 SALE 不只是帮助在线探索，也可以帮助从固定数据中学习更有结构的状态—动作表示。官方实现 README 也给出了 online 与 offline 的运行示例。([GitHub](https://github.com/sfujim/TD7?utm_source=chatgpt.com "sfujim/TD7: Author's PyTorch implementation of ..."))

---

**传统连续控制算法通常直接使用低维状态向量，默认这些状态已经是合适表示；但 TD7 认为，低维状态中仍然存在复杂的==动力学结构==，尤其是状态和动作之间的交互结构。因此，SALE 通过学习状态嵌入 ($z_s$) 和状态—动作嵌入 ($z_{sa}$)，把动力学相关信息显式编码出来，再辅助 actor 和 critic 学习。最终，SALE 被整合进 TD3，形成 TD7，在 MuJoCo / OpenAI Gym 连续控制任务上显著提升样本效率和最终性能。**

更直接地说：
$$
\text{TD3 主要改进 Q 学习稳定性；TD7 进一步改进输入表征质量。}  
$$
所以这篇论文的贡献点不只是“提出一个更强算法”，而是强调一个常被忽视的问题：

> **低维状态并不意味着不需要 representation learning。连续控制中的状态—动作动力学结构本身，也值得被专门表征。**



---



 Introduction 的论证链条非常清楚：


$$
\text{RL 样本效率低}  
\Rightarrow  
\text{Bellman 学习信号弱}  
\Rightarrow  
\text{需要更好的表征学习}  
\Rightarrow  
\text{低维状态也值得做表征学习}  
\Rightarrow  
\text{关键在于建模状态—动作交互}  
\Rightarrow  
\text{提出 SALE}  
\Rightarrow  
\text{将 SALE 整合进 TD3 得到 TD7}  
$$


也就是说，Introduction 不是单纯介绍一个新算法，而是在重新定义连续控制中的一个常见假设：

> **低维状态向量已经是好表示，因此不需要 representation learning。**

本文的核心反驳是：

> **状态向量维度低，不代表动力学结构简单；真正困难的部分可能不在观测维度，而在状态—动作—下一状态之间的动力学映射。**

---

# 为什么 Bellman 方程提供的是“弱学习信号”？

离策略 actor-critic 方法通常通过 Bellman target 学习 critic。以 deterministic policy setting 为例，critic 的目标大致是：
$$
y

r+\gamma Q_{\bar{\theta}}(s',\pi_{\bar{\phi}}(s'))  
$$
然后最小化：
$$
\mathcal{L}_Q(\theta)
=
\mathbb{E}_{(s,a,r,s')\sim \mathcal{D}}  
\left[  
\left(  
Q_\theta(s,a)-y  
\right)^2  
\right]  
$$
问题在于，目标 ($y$) 本身不是一个稳定、真实、直接可观测的监督标签。它依赖：

$$
Q_{\bar{\theta}},\quad \pi_{\bar{\phi}},\quad \mathcal{D},\quad \gamma,\quad s'  
$$
其中 ($Q_{\bar{\theta}}$) 是学习出来的目标 critic，($\pi_{\bar{\phi}}$) 是学习出来的目标 actor，replay buffer 的分布也在训练过程中变化。因此，这个 target 同时具有两个问题：

第一，**近似性**。目标中使用的 ($Q_{\bar{\theta}}$) 本身是函数近似器，并不是真实 ($Q^\pi$)。

第二，**非平稳性**。随着训练推进，critic、actor、target network、数据分布都会改变，因此监督目标也会改变。

Fujimoto 等人在 “Why Should I Trust You, Bellman?” 中进一步指出，Bellman error 并不总是 value error 的可靠代理；低 Bellman error 不必然意味着低 value error，有限数据情形下甚至可能存在许多满足 Bellman 方程但价值估计错误的次优解。

这就是 Introduction 中所谓的 **weak learning signal**。它不是说 Bellman 方程没有理论意义，而是说在深度函数近似、有限数据、离策略训练、bootstrap target 的组合下，Bellman target 不像监督学习标签那样直接、稳定、可靠。

---

#  表征学习为什么能缓解样本效率问题？

监督学习中，表征学习的作用是把原始输入转化为更适合下游任务的中间变量。例如：

$$
x \mapsto z = f_\theta(x)  
$$

其中 ($z$) 应当捕捉输入中的结构信息，使得后续分类、回归或控制任务更容易。

在强化学习中，如果直接学习：


$$
Q(s,a)  
$$


critic 需要同时解决多个问题：


$$
\text{状态结构识别}  
+  
\text{动作作用建模}  
+  
\text{长期回报估计}  
+  
\text{bootstrap 误差控制}  
$$


这会使学习负担集中在 Bellman loss 上。SALE 的基本思想是：不要让 critic 只依赖 Bellman target 来发现所有结构，而是额外构造一个与动力学相关的表征学习任务，使网络提前学习到“状态—动作如何影响未来”的结构。

抽象地说，可以定义：


$$
z_s = f(s)  
$$

$$
z_{sa}=g(z_s,a)  
$$


其中 ($z_s$) 是状态嵌入，($z_{sa}$) 是状态—动作嵌入。然后让 ($z_{sa}$) 具有预测或解释下一状态潜在表示的能力：


$$
z_{sa}  
\approx  
f(s')  
\quad \text{或用于预测 } f(s')  
$$


这个目标比直接预测长期 return 更局部、更稳定，因为它关注环境动力学结构，而不是完整的长期回报估计。

---

#  为什么低维状态不等于“无需表征学习”？

连续控制任务中的状态通常不是图像，而是向量，例如：
$$
s =  
[q,\dot q,c,\dots]  
$$
其中 ($q$) 表示关节位置，($\dot q$) 表示关节速度，($c$) 表示接触或其他物理信息。状态维度可能只有几十维，远小于图像输入。

但困难不在于维度大小，而在于映射：
$$
(s,a) \mapsto s'  
$$
可能非常复杂。

例如，同一个动作在不同状态下可能产生完全不同的效果：
$$
s_1,a \mapsto s_1'  
$$
$$
s_2,a \mapsto s_2'  
$$
如果机器人已经失衡，某个力矩可能导致摔倒；如果机器人处于稳定姿态，同一个力矩可能推动前进。也就是说，动作的意义不是固定的，而是由状态上下文决定。

因此，连续控制的关键结构不是单独的状态 ($s$)，也不是单独的动作 ($a$)，而是二者的交互：
$$
(s,a)  
$$
SALE 正是针对这个点：学习能够表达 **state-action interaction** 的潜在表示。

---

# “任务困难由动力系统复杂性决定，而不是观测空间大小”是什么意思？

这句话是 Introduction 中最重要的理论动机之一。

如果只看观测空间大小，图像任务似乎复杂，低维状态任务似乎简单。但强化学习任务的难度还取决于：
$$
P(s' \mid s,a)  
$$
也就是环境动力学。

即使 ($s$) 是低维向量，只要动力学高度非线性，任务仍然可能很难。例如 MuJoCo 中的 HalfCheetah、Walker2d、Humanoid 等任务，状态是低维物理变量，但控制策略必须处理高维耦合、接触动力学、不稳定平衡、长期奖励传播等问题。

因此，表示学习的目标不应该只服务于“压缩高维观测”，还应该服务于“发现动力学结构”。
这与视觉表征学习的动机不同：
$$
\text{视觉任务：从高维像素中提取语义结构}  
$$

$$
\text{低维控制任务：从状态—动作交互中提取动力学结构}  
$$
SALE 的价值就在于把表征学习从“图像编码”扩展到“动力学编码”。

---

# SALE 的核心机制：在 latent space 中建模动力学

“modeling the dynamics of the environment in latent space” 可以理解为：

原始动力学是：


$$
s_{t+1} \sim P(\cdot \mid s_t,a_t)  
$$


SALE 不一定直接在原始状态空间预测 ($s_{t+1}$)，而是先学习状态嵌入：

  
$$
z_t = f(s_t)  
$$


然后学习状态—动作嵌入：


$$
z_{t,a}=g(z_t,a_t)  
$$


再让这个嵌入与下一状态的潜在表示相关：


$$
z_{t,a}  
\rightarrow  
z_{t+1}=f(s_{t+1})  
$$


这样做的目的不是获得一个完美环境模型，而是让 ($z_t$) 和 ($z_{t,a}$) 包含对控制有用的动力学信息。

这类 latent dynamics 的优点是：

1. 不必在原始状态空间精确预测所有细节；
    
2. 可以学习对控制相关的压缩表示；
    
3. 可以为 critic 提供更稳定、更结构化的输入；
    
4. 可以减轻完全依赖 Bellman target 的压力。
    

因此，SALE 不是简单的 autoencoder，也不是普通的状态编码器。它强调的是：

 
$$
\text{state-action representation}  
$$

而不是单纯的：


$$
\text{state representation}  
$$


---

# 为什么“动作相关输入扩大”会导致 extrapolation error？

Introduction 中提到一个很关键但容易被忽略的问题：

> 当显著扩大 action-dependent input 时，会出现 extrapolation error。

外推误差通常指：函数近似器需要对训练数据分布之外的输入给出预测，而这些预测可能不可靠。在离策略 RL 中，如果策略选择了数据中很少出现的动作，critic 对这些动作的估计就可能出现系统性误差；BCQ 论文也指出，标准 off-policy 深度 RL 在面对与当前策略分布不相关的数据时，会受到外推误差影响。([arXiv](https://arxiv.org/abs/1812.02900 "[1812.02900] Off-Policy Deep Reinforcement Learning without Exploration"))

在 SALE 中，动作会进入状态—动作嵌入：

 
$$
z_{sa}=g(z_s,a)  
$$


这意味着 critic 或相关网络可能看到更高维、更复杂的 action-dependent features。动作相关输入一旦被扩展，网络可能更容易在动作维度上产生不可靠的外推。

直观地说，假设 replay buffer 中某些动作区域数据很少，但 actor 通过优化 critic 选择了这些区域中的动作：


$$
a^\star = \arg\max_a Q(s,a)  
$$


如果 ($Q(s,a)$) 在这些区域上是由函数近似器外推出来的，那么 actor 会利用这些错误峰值，造成策略退化。

TD3 本身已经通过 clipped double Q-learning 和 target policy smoothing 缓解 Q 过估计问题；Spinning Up 文档中也说明 TD3 使用双 Q 中较小者构造 Bellman target，延迟策略更新，并通过 target policy smoothing 减少策略利用 Q 函数尖峰误差的风险。([Spinning Up](https://spinningup.openai.com/en/latest/algorithms/td3.html "Twin Delayed DDPG — Spinning Up  documentation"))

SALE 中的 clipping technique 可以看作进一步针对扩展后的 action-dependent representation 所引入的稳定化措施。它的作用不是改变 RL 目标本身，而是限制表征或输入范围，降低动作外推造成的异常估计。

---

#  Design study 的意义

论文没有只提出一个 SALE 结构，而是强调 **design space**。

原因是 latent dynamics representation 有很多设计选择，例如：

$$
\text{预测原始 }s'  
\quad \text{还是预测潜在 }z_{s'}?  
$$
$$
\text{状态嵌入和状态—动作嵌入是否共享结构?}  
$$
$$
\text{嵌入是否输入 critic? 输入 actor? 两者都输入?}  
$$
$$
\text{表征学习损失如何与 Bellman loss 共同优化?}  
$$
$$
\text{是否使用 clipping? clipping 放在哪里?}  
$$
这些选择没有显然的理论最优答案。因为最终性能依赖函数近似、优化过程、数据分布、任务动力学和 actor-critic 交互。因此作者通过大量经验实验比较不同设计，寻找哪些因素真正影响最终性能。

这也是 Introduction 中 “empirical evaluation over the design space” 的含义：不是只报告最终算法强，而是研究算法为什么强、哪些组件重要。

---

# Checkpoints 在 RL 中为什么有用？

监督学习中，checkpoint 和 early stopping 常用于防止过拟合或选择验证集性能最好的模型。

强化学习中情况更复杂，因为训练过程中的策略性能可能高度波动。某个时间点的策略可能很好，继续训练后却变差。这是因为：
$$
\pi \text{ 改变}  
\Rightarrow  
\mathcal{D} \text{ 改变}  
\Rightarrow  
Q \text{ target 改变}  
\Rightarrow  
\pi \text{ 再次改变}  
$$
actor 和 critic 的耦合会放大不稳定性。

Introduction 中说的 checkpoint 方法是：让每个策略固定多个训练 episode，然后测试时选择训练过程中观察到的最佳策略。其思想接近：
$$
\pi_1,\pi_2,\dots,\pi_K  
$$
训练过程中保存多个策略 checkpoint，最终不一定使用最后一个策略，而是使用经验表现最好的策略：
$$
\pi^\star
=
\arg\max_{\pi_k}  
J(\pi_k)  
$$
这在 RL 中尤其有意义，因为最终 checkpoint 不一定是最优 checkpoint。

---

#  TD7 到底由哪些组件组成？

Introduction 给出的公式化理解是：
$$
\text{TD7}
=
\text{TD3}  
+  
\text{SALE}  
+  
\text{checkpoints}  
+  
\text{prioritized experience replay}  
+  
\text{BC term}  
$$
其中 BC term 只用于 offline RL。

更具体地说：

##  是基础骨架

TD3 是连续动作空间中的 off-policy actor-critic 算法。它相对 DDPG 的关键改进包括：clipped double Q-learning、delayed policy updates、target policy smoothing。([Spinning Up](https://spinningup.openai.com/en/latest/algorithms/td3.html "Twin Delayed DDPG — Spinning Up  documentation"))

TD3 的 critic target 大致为：


$$
y
=
r+\gamma  
\min_{i=1,2}  
Q_{\bar{\theta}_i}(s',\tilde a')  
$$

其中：


$$
\tilde a'=\pi_{\bar{\phi}}(s')+\epsilon  
$$


并且噪声 ($\epsilon$) 会被裁剪。双 critic 取最小值的目的，是降低过估计偏差。

##  SALE 提供状态—动作表征

SALE 是核心新增模块。它让算法不只学习 ($Q(s,a)$)，还学习动力学相关的 latent representation：


$$
s,a  
\mapsto  
z_s,z_{sa}  
$$


这些表征再辅助 critic 和 actor 学习。

##  Checkpoints 用于策略选择与稳定性

训练过程保留多个策略，并在测试时选择表现较好的策略，而非默认使用最后一个策略。

##  Prioritized experience replay 提升数据利用效率

优先经验回放的思想是：不是均匀采样 replay buffer 中的 transition，而是更频繁地采样“更有学习价值”的样本。例如 TD error 较大的样本通常被认为更值得更新。

抽象形式为：

 
$$
P(i)  
\propto  
p_i^\alpha  
$$


其中 ($p_i$) 是样本优先级。

##  Offline RL 中加入 behavior cloning term

离线 RL 不能与环境继续交互，只能使用固定数据集。直接最大化 critic 可能导致策略选择数据集外动作，从而放大外推误差。因此 TD7 在 offline setting 中加入行为克隆项，使策略不要偏离数据动作太远。

TD3+BC 工作的核心思想就是对在线 RL 算法做极少修改：在 policy update 中加入 behavior cloning term，并进行数据归一化；NeurIPS 2021 摘要中也明确说明，简单加入行为克隆项可以达到与若干离线 RL 方法相当的效果。([NeurIPS Proceedings](https://proceedings.neurips.cc/paper/2021/hash/a8166da05c5a094f7dc03724b41886e5-Abstract.html "A Minimalist Approach to Offline Reinforcement Learning"))

可以抽象写成：

 
$$
\max_\pi\{  
\mathbb{E}_{s\sim \mathcal{D}}  
[  
Q(s,\pi(s))  
]
-
\lambda  
\mathbb{E}_{(s,a)\sim \mathcal{D}}  
[  
||\pi(s)-a||^2  
]  \}
$$


第一项鼓励高回报，第二项约束策略接近数据中的行为。

---

#  online RL 与 offline RL 中 SALE 的作用差异

##  Online RL

在线设置中，数据分布会随着策略变化：


$$
\pi_t  
\rightarrow  
\mathcal{D}_t  
\rightarrow  
Q_t  
\rightarrow  
\pi_{t+1}  
$$

SALE 可以利用持续收集的数据学习更好的状态—动作表征，从而提升样本效率。

##  Offline RL

离线设置中，数据集固定：


$$
\mathcal{D}
=
{(s,a,r,s')}  
$$


策略不能主动探索。此时 SALE 的作用是从固定数据中挖掘动力学结构，帮助 critic 更好地泛化。但由于数据外动作风险更严重，所以需要 BC term 或其他约束项防止策略过度偏离数据分布。

因此，SALE 本身提供表征改进；BC term 则提供离线设置中的分布约束。

---



 **Introduction 实际上定义了 TD7 的三个层次贡献**。

第一，**问题层面**：指出低维连续控制任务中的表征学习被低估了。

第二，**方法层面**：提出 SALE，通过 latent dynamics 学习状态—动作嵌入。

第三，**算法层面**：将 SALE、checkpoint、prioritized replay、offline BC term 与 TD3 结合，形成 TD7。

最终形成的观点是：
$$
\text{连续控制的难点}  
\neq  
\text{观测维度高}  
$$
而是：
$$
\text{连续控制的难点}
=
\text{状态—动作动力学结构复杂}  
+  
\text{Bellman 学习信号弱}  
+  
\text{函数近似外推风险}  
$$
因此，TD7 的关键不是简单地“给 TD3 加模块”，而是从 representation learning 的角度重新组织连续控制中的 actor-critic 学习流程。

---

#  最简洁但严谨的总结

 Introduction 的主旨可以概括为：

**强化学习样本效率低，一个重要原因是 Bellman target 近似且非平稳，导致 critic 学习信号较弱。深度学习中常用表征学习缓解样本效率问题，但强化学习中的表征学习主要集中于视觉任务，低维连续控制任务常被默认不需要表征学习。本文反驳这一默认假设，指出任务难度更多来自底层动力学复杂性，而不是观测维度大小。因此，即使状态是紧凑向量，也可以通过建模状态—动作交互来学习有用表征。SALE 正是为此提出的状态—动作嵌入方法。随后，SALE 与 checkpoint、prioritized replay、offline behavior cloning term 一起整合进 TD3，形成 TD7。TD7 的核心改进是用动力学相关的状态—动作表征增强 actor-critic 学习，而不是单纯依赖 Bellman loss 从零发现所有结构。**


---



### Stability in RL.

稳定深度强化学习算法一直是一个长期挑战。大量经验研究已经指出了深度强化学习方法在实践中存在的问题。

本文使用 checkpoint 的方式，与通过 safe policy improvement 来稳定策略性能的方法最为相关；同时也与进化算法和强化学习的结合有关。在后一类方法中，checkpoint 类似于适应度最高的个体，而 mutation 则完全由底层强化学习算法定义。

---

## Background

强化学习问题通常被刻画为一个 **马尔可夫决策过程**，即 Markov decision process，简称 MDP。一个 MDP 是一个五元组：
$$
(\mathcal S,\mathcal A,R,p,\gamma)  
$$
其中：
$$
\mathcal S  
$$
表示状态空间；
$$
\mathcal A  
$$
表示动作空间；
$$
R  
$$
表示奖励函数；
$$
p  
$$
表示动力学模型；
$$
\gamma  
$$

表示折扣因子。

强化学习的目标是找到一个策略：
$$
\pi:\mathcal S\to\mathcal A  
$$
也就是从状态 ($s\in\mathcal S$) 到动作 ($a\in\mathcal A$) 的映射，使得该策略最大化 return：
$$
\sum_{t=1}^{\infty}\gamma^{t-1}r_t  
$$
也就是沿着该策略执行时获得的折扣奖励和。

强化学习算法通常使用价值函数：
$$
Q^\pi(s,a)  
:=  
\mathbb E  
\left[  
\sum_{t=1}^{\infty}\gamma^{t-1}r_t  
\mid  
s_0=s,\ a_0=a  
\right]  
$$
它表示：从初始状态 ($s$) 和初始动作 ($a$) 出发，并随后遵循策略 ($\pi$) 时，能够获得的期望 return。

---

# 第二部分：解释

## 1. Related Work 

Related Work 不是简单罗列已有文献，而是在界定 SALE / TD7 与已有工作的关系。其核心逻辑是：

$$
\text{已有 RL 表征学习}  
\Rightarrow  
\begin{cases}  
\text{MDP 抽象}\\  
\text{高维观测压缩}\\  
\text{辅助任务特征学习}\\  
\text{未来状态预测}\\  
\text{动作表征学习}\\  
\text{状态—动作表征学习}  
\end{cases}  
$$

本文指出：
$$
\boxed{  
\text{SALE 的重点不是单独学习状态表征，也不是单独学习动作表征，而是学习状态和动作的联合表征}  
}  
$$
TD7 论文摘要也明确说明，SALE 的目标是学习能够刻画状态与动作细致交互关系的嵌入，从而使低维状态连续控制任务也能受益于表征学习。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## 2. 表征学习的三种含义

这一节首先区分了 RL 中 representation learning 的三种主要含义：


$$
\text{abstraction}  
$$

$$
\text{compression}  
$$
 
$$
\text{feature learning}  
$$


三者容易混淆，但含义不同。

---

## 3. 第一种含义：abstraction，即 MDP 抽象

早期 RL 中的表征学习往往指 **MDP 抽象**。设原始 MDP 为：
$$
M=(\mathcal S,\mathcal A,R,p,\gamma)  
$$

抽象的目标是构造一个更小的 MDP：
$$
\bar M=(\bar{\mathcal S},\bar{\mathcal A},\bar R,\bar p,\gamma)  
$$
并定义映射：
$$
\phi:\mathcal S\to\bar{\mathcal S}  
$$
或者更一般地：
$$
\phi:\mathcal S\times\mathcal A\to\bar{\mathcal S}\times\bar{\mathcal A}  
$$

**使得原 MDP 中“行为等价”或“价值等价”的状态被合并。**

例如，若两个状态 ($s_1,s_2$) 在所有动作下具有相同奖励和相同转移结构，则可以认为它们等价：

$$
R(s_1,a)=R(s_2,a)  
$$
$$
p(\cdot\mid s_1,a)\approx p(\cdot\mid s_2,a)  
$$


于是可以把它们映射到同一个抽象状态：

$$
\phi(s_1)=\phi(s_2)  
$$

这种抽象的重点是：

$$
\boxed{  
\text{压缩 MDP，同时尽量保持最优价值函数或最优策略不变}  
}  
$$

因此，abstraction 更接近理论 RL 中的结构保持映射，而不是深度学习中的 encoder 表征。

---

## 4. 第二种含义：compression，即高维观测压缩

随着深度 RL 处理图像任务，representation learning 更多变成了 **压缩**。

原始观测可能是图像：
$$
o_t\in\mathbb R^{H\times W\times C}  
$$
例如 Atari 图像、机器人视觉输入。直接学习：
$$
Q(o,a)  
$$
非常困难，因此通常先学习 encoder：
$$
z=f_\theta(o)  
$$
其中：
$$
z\in\mathbb R^d,\quad d\ll HWC  
$$
然后基于 ($z$) 学习策略或价值函数：
$$
\pi(a\mid z),\qquad Q(z,a)  
$$
这种表征学习的核心目标是：
$$
\boxed{  
\text{把高维、冗余的原始观测压缩成较低维的潜在向量}  
}  
$$
这与图像任务高度相关，因为图像中存在大量冗余信息，例如背景、纹理、无关像素。论文指出，近年 RL 中的表征学习常用于 image-based tasks，原因正是图像观测维度高且冗余多。TD7 的动机则是：低维状态任务虽然没有高维图像，但仍然可能有复杂动力学结构，因此也需要表征学习。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## 5. 第三种含义：feature learning，即特征学习

feature learning 不一定要求维度更低，也不一定要求严格保持 MDP 结构。它的目标是学习对任务有用的中间特征。

例如，**可以通过辅助任务训练 encoder**：
$$
z=f_\theta(s)  
$$
辅助任务可以是：
$$
\text{预测下一状态}  
$$
$$
\text{预测奖励}  
$$
$$
\text{预测终止信号}  
$$
$$
\text{预测未来 latent state}  
$$
$$
\text{对比学习目标}  
$$
**这种情况下，表征学习的目标不是严格的 MDP homomorphism，也不是单纯压缩，而是让 ($z$) 包含对策略学习或价值学习有用的信息。**
因此：
$$
\boxed{  
\text{feature learning 更强调“对学习有用”，而不是“严格等价”或“最低维压缩”}  
}  
$$
SALE 更接近 feature learning，而不是传统 abstraction。原因是 SALE 通过建模 latent dynamics 来学习有用的状态—动作嵌入，其目的主要是改善 actor-critic 学习，而不是构造一个严格等价的小 MDP。

---

## 6. 为什么图像任务中的表征学习不能直接代表连续控制中的表征学习？

图像任务的表征学习通常处理：
$$
o\mapsto z  
$$
也就是从高维观测到低维 latent state。

但连续控制中的状态通常已经是低维向量：
$$
s=[q,\dot q,c,\dots]  
$$
例如关节角、关节速度、接触信息等。因此直觉上可能认为：
$$
\text{状态已经低维}  
\Rightarrow  
\text{不需要表征学习}  
$$
TD7 反驳这个直觉。任务难度不只来自观测维度，还来自动力学复杂性：
$$
p(s'\mid s,a)  
$$
即使 ($s$) 维度不高，映射：
$$
(s,a)\mapsto s'  
$$
仍然可能高度非线性、高耦合、不稳定。

因此，连续控制中的表征学习重点不是“把图像压缩成向量”，而是：
$$
\boxed{  
\text{学习状态和动作之间的动力学交互结构}  
}  
$$
这也是 SALE 名称中 state-action learned embeddings 的含义。

---

## 7. 通过预测未来状态进行表征学习

原文提到：

> Representation learning by predicting future states draws inspiration from a rich history ...

意思是：通过预测未来状态来学习表征，是一个历史很长的方向。

其基本思想是：
$$
z_t=f(s_t)  
$$
$$
\hat z_{t+1}=g(z_t,a_t)  
$$
然后让：
$$
\hat z_{t+1}\approx z_{t+1}=f(s_{t+1})  
$$
或者直接预测：
$$
\hat s_{t+1}\approx s_{t+1}  
$$
这种方法认为：如果一个表征能够预测未来，那么它就包含了环境动力学相关信息。

在 RL 中，这种思想可以有两种用途。

第一，作为 **model-free RL 的辅助任务**：

$$
\mathcal L_{\text{aux}}

||g(f(s_t),a_t)-f(s_{t+1})||^2  
$$

然后主算法仍然用 Bellman loss 学习 (Q) 或策略。

第二，作为 **model-based RL 的 latent dynamics model**：
$$
z_{t+1}\sim p_\theta(z_{t+1}\mid z_t,a_t)  
$$
随后可以在 latent space 中进行规划、想象 rollout 或 value prediction。

原文同时列举 model-free 和 model-based latent-space 方法，是为了说明：未来状态预测是表征学习中的常见策略，但 SALE 的重点仍然不同。SALE 不是只学习状态 latent，也不是完整做模型预测规划，而是学习 state-action joint embedding。

---

## 8. 动作表征学习与状态—**动作联合表征**

原文提到另一类相关方法：
$$
\text{representation learning over actions}  
$$
动作表征学习关注的是：
$$
a\mapsto z_a  
$$
它希望动作之间的相似性可以在 latent space 中表达。例如，在离散大动作空间中，两个动作可能具有相似效果；在连续控制中，不同动作方向可能对应不同运动模式。

**但是，单独学习动作表征仍然不够。原因是动作的意义依赖状态。**

同一个动作 ($a$) 在不同状态下可能产生完全不同的后果：
$$
p(s'\mid s_1,a)\neq p(s'\mid s_2,a)  
$$
例如在机器人控制中，同一个力矩：
$$
a  
$$
在稳定站立状态下可能推动前进，在失衡状态下可能导致摔倒。因此动作不能脱离状态解释。

SALE 强调的是：
$$
(s,a)\mapsto z_{sa}  
$$
而不是：
$$
s\mapsto z_s  
$$
或：
$$
a\mapsto z_a  
$$
这就是原文中 “joint representations of both state and action” 的关键含义。

---

## 9. state-action representation 与 abstraction 的区别

原文说：

> Methods which do learn state-action representations ... emphasize abstraction more than feature learning.

意思是，一些已有方法确实学习状态—动作表征，但它们往往是为了构造抽象 MDP 或保持结构等价，而不是为了直接改善深度 actor-critic 的特征质量。

例如 MDP homomorphism 关注的是保持转移和奖励结构：
$$
(s,a)\sim(s',a')  
$$
当两个状态—动作对具有相似奖励和相似抽象转移时，可以被合并。
这类方法重视的是：
$$
\boxed{  
\text{结构等价与抽象正确性}  
}  
$$
SALE 重视的是：
$$
\boxed{  
\text{学习能提高 actor-critic 性能的状态—动作特征}  
}  
$$
因此 SALE 的定位不是传统理论抽象，而是深度 RL 中的实用特征学习。

---

## 10. SALE 与 OFENet 的关系

原文说：

> Our approach can be viewed as an extension of OFENet.

也就是说，SALE 可以看作 OFENet 的扩展。

OFENet 也是学习 state-action embedding 的方法。SALE 在此基础上进一步强调几个问题：
$$
\text{如何设计 state embedding?}  
$$
$$
\text{如何设计 state-action embedding?}  
$$
$$
\text{embedding 是否输入 actor? 是否输入 critic?}  
$$
$$
\text{如何处理 action-dependent input 维度扩大带来的外推误差?}  
$$
$$
\text{如何让 representation learning 与 TD3 类 actor-critic 稳定结合?}  
$$
所以 SALE 的贡献不只是“也学习一个状态—动作嵌入”，而是系统研究了设计空间，并处理了使用 decoupled state-action embeddings 时出现的稳定性问题。TD7 论文摘要也强调，该工作 extensive study 了这些 embedding 的设计空间，并指出了重要设计考虑。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## 11. 什么是 decoupled state-action embeddings？

“decoupled state-action embeddings” 可以理解为：**状态嵌入和状态—动作嵌入不是直接由同一个端到端 critic 隐层自然产生，而是由相对独立的 encoder 学习出来。**

一种典型结构是：
$$
z_s=f(s)  
$$
$$
z_{sa}=g(z_s,a)  
$$
其中：
$$
f  
$$
是状态 encoder；
$$
g  
$$
是状态—动作 encoder。

critic 可以使用：
$$
Q(s,a,z_s,z_{sa})  
$$
actor 可以使用：
$$
\pi(s,z_s)  
$$
这类结构的好处是：可以显式学习动力学相关表征。

但困难也很明显：

第一，($z_s$) 和 ($z_{sa}$) 的训练目标如何设计？

第二，($z_{sa}$) 如果维度很大，会不会加剧动作外推误差？

第三，critic 是否会过度依赖不稳定 embedding？

第四，actor 是否会利用 embedding 空间中的错误高值？

TD7/Sale 论文提到，在显著扩大 action-dependent input 时会观察到外推误差，并引入 clipping 技术缓解该问题。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## 12. **Stability in RL 的含义**

这一段转向第二个相关工作主题：RL 稳定性。

深度 RL 的不稳定性来自多个方面：
$$
\text{非平稳数据分布}  
$$
$$
\text{bootstrapping target}  
$$
$$
\text{函数近似误差}  
$$
$$
\text{off-policy 分布偏移}  
$$
$$
\text{actor 和 critic 相互耦合}  
$$
$$
\text{超参数敏感}  
$$
TD3 论文就指出，actor-critic 中函数近似误差会导致价值过估计和次优策略，因此提出 clipped double Q-learning、delayed policy updates 等机制来缓解误差积累。([arXiv](https://arxiv.org/abs/1802.09477?utm_source=chatgpt.com "Addressing Function Approximation Error in Actor-Critic Methods"))

TD7 的 checkpoint 机制属于另一种稳定化策略：不一定让每一步更新都安全，而是在训练过程中保存历史上表现更稳定、更好的策略。

---

## 13. checkpoint 与 safe policy improvement 的关系

safe policy improvement 的目标通常是保证新策略不要比旧策略差太多，甚至希望满足某种单调改进性质：
$$
J(\pi_{\text{new}})\ge J(\pi_{\text{old}})  
$$
TRPO、PPO 等方法都可以被看作在一定程度上限制策略更新幅度，避免策略性能突然崩溃。

TD7 的 checkpoint 与 safe policy improvement 相关，但机制不同。

safe policy improvement 更像是：
$$
\text{约束每次策略更新}  
$$
checkpoint 更像是：
$$
\text{允许当前策略波动，但保存历史上表现最好的策略}  
$$
也就是说，checkpoint 不保证：
$$
J(\pi_{t+1})\ge J(\pi_t)  
$$
但它试图保证最终测试策略是训练过程中观测到的较好策略：
$$
\pi_c=\arg\max_{\pi_t} C(\pi_t)  
$$
其中 ($C(\pi_t)$) 是 assessment criterion，例如 TD7 中的 minimum episode return。

因此 checkpoint 是一种 **选择机制**，不是严格的策略改进约束。

---

## 14. checkpoint 与进化算法的关系

原文说 checkpoint 也与 evolutionary algorithms + RL 的结合相关，其中： 
$$
\text{checkpoint resembles the fittest individual}  
$$
$$
\text{mutation is defined exclusively by the underlying RL algorithm}  
$$

这句话的意思是：在进化算法中，通常维护一个种群：
$$
{\pi_1,\pi_2,\dots,\pi_N}  
$$
每个个体有适应度：
$$
F(\pi_i)  
$$
选择适应度最高者：
$$
\pi^\star=\arg\max_i F(\pi_i)  
$$
然后通过 mutation 产生新个体。

TD7 的 checkpoint 可以类比为一个“当前最优个体”：
$$
\pi_c  
$$
当前策略经过 RL 梯度更新后发生变化，可以类比 mutation：
$$
\pi_{\text{cur}}\rightarrow\pi_{\text{cur}}'  
$$
如果新策略表现更好，则替换 checkpoint：
$$
\pi_c\leftarrow\pi_{\text{cur}}'  
$$
区别在于，TD7 没有显式种群，也没有随机 mutation operator。策略变化完全由底层 RL 算法产生。因此原文说：
$$
\text{mutation is defined exclusively by the underlying RL algorithm}  
$$
也就是“变异”来自 actor-critic 更新，而不是额外设计的进化扰动。

---

## 15. Background 中 MDP 定义的精确解释

原文把 RL 问题定义为 MDP：
$$
(\mathcal S,\mathcal A,R,p,\gamma)  
$$
每个元素含义如下。

状态空间：
$$
\mathcal S  
$$
表示环境可能处于的所有状态集合。
动作空间：
$$
\mathcal A  
$$
表示智能体可选择的所有动作集合。

奖励函数：
$$
R  
$$
通常可以写成：
$$
R(s,a)  
$$
或：
$$
R(s,a,s')  
$$
表示在状态 ($s$) 执行动作 ($a$)，并可能转移到 ($s'$) 后得到的即时奖励。

动力学模型：
$$
p(s'\mid s,a)  
$$
表示在状态 ($s$) 执行动作 ($a$) 后转移到下一状态 ($s'$) 的概率。

折扣因子：
$$
\gamma\in[0,1)  
$$
用于控制未来奖励的重要性。若 ($\gamma$) 越接近 1，远期奖励越重要；若 ($\gamma$) 越接近 0，近期奖励越重要。

---

## 16. 策略 ($\pi:\mathcal S\to\mathcal A$) 的解释

原文写：
$$
\pi:\mathcal S\to\mathcal A  
$$
这是确定性策略形式。也就是说：
$$
a=\pi(s)  
$$
在 TD3 / TD7 这类确定性 actor-critic 方法中，actor 通常就是确定性策略：
$$
a=\pi_\phi(s)  
$$
但更一般地，RL 中也可以使用随机策略：
$$
\pi(a\mid s)  
$$
表示在状态 ($s$) 下选择动作 ($a$) 的概率。

因此，原文的写法适合 TD3/TD7 背景，因为 TD3 是 deterministic policy gradient 类方法。TD3 论文也明确属于 actor-critic 连续控制方法，并针对函数近似误差提出 clipped double Q-learning 和 delayed policy update 等机制。([arXiv](https://arxiv.org/abs/1802.09477?utm_source=chatgpt.com "Addressing Function Approximation Error in Actor-Critic Methods"))

---

## 17. return 的解释

原文中的 return 是：
$$
\sum_{t=1}^{\infty}\gamma^{t-1}r_t  
$$
它表示从某个起点开始，沿策略执行获得的折扣奖励总和。

展开为：
$$
r_1+\gamma r_2+\gamma^2r_3+\cdots  
$$
其中：
$$
r_1  
$$
是最近一步奖励；
$$
r_2  
$$
是下一步奖励；
$$
r_3  
$$
是再下一步奖励。

折扣因子使得越远的奖励权重越小：
$$
1,\gamma,\gamma^2,\dots  
$$
如果：
$$
\gamma=0.99  
$$
远期奖励仍然重要；如果：
$$
\gamma=0.5  
$$
远期奖励快速衰减。

---

## 18. ($Q^\pi(s,a)$) 的解释

原文定义：
$$
Q^\pi(s,a)  
:=  
\mathbb E  
\left[  
\sum_{t=1}^{\infty}\gamma^{t-1}r_t  
\mid  
s_0=s,\ a_0=a  
\right]  
$$


它表示动作价值函数，也叫 state-action value function。

含义是：
$$
\boxed{  
Q^\pi(s,a)
=
\text{从状态 }s\text{ 先执行动作 }a\text{，之后遵循策略 }\pi\text{ 所能获得的期望折扣回报}  
}  
$$

注意这里包含两个阶段：

第一步动作被固定为：
$$
a_0=a  
$$
之后的动作由策略决定：
$$
a_t=\pi(s_t)  
$$
或随机策略情形：
$$
a_t\sim\pi(\cdot\mid s_t)  
$$
因此，($Q^\pi(s,a)$) 不是只评价当前一步奖励，而是评价“当前动作对长期回报的影响”。

---

## 19. ($Q^\pi$) 与 Bellman 方程

虽然原文这一段还没有写 Bellman 方程，但 ($Q^\pi$) 的定义天然对应 Bellman 递归：

$$
Q^\pi(s,a)
=
\mathbb E  
\left[  
r+\gamma Q^\pi(s',\pi(s'))  
\mid s,a  
\right]  
$$
确定性策略下：
$$
a'=\pi(s')  
$$
随机策略下：
$$
Q^\pi(s,a)
=
\mathbb E  
\left[  
r+\gamma  
\mathbb E_{a'\sim\pi(\cdot\mid s')}[  
Q^\pi(s',a') ] 
\mid s,a  
\right]  
$$
TD3/TD7 这类算法就是用函数近似器学习：
$$
Q_\theta(s,a)\approx Q^\pi(s,a)  
$$
并用 critic 指导 actor：
$$
\max_\phi Q_\theta(s,\pi_\phi(s))  
$$
SALE 的作用是让 ($Q_\theta$) 不只依赖原始 ($(s,a)$)，而可以利用学习到的状态—动作嵌入。

---

## 20. 这段 Related Work + Background 与 TD7 主线的关系

这一节整体服务于 TD7 的核心论证：
$$
\text{传统表征学习主要关注图像压缩或状态抽象}  
$$
$$
\Downarrow  
$$
$$
\text{低维连续控制中的状态—动作交互没有得到充分重视}  
$$
$$
\Downarrow  
$$
$$
\text{SALE 学习 state-action embeddings}  
$$
$$
\Downarrow  
$$
$$
\text{TD7 将 SALE 与 TD3、checkpoint 等机制结合}  
$$
TD7 的创新点可以概括为：
$$
\boxed{  
\text{把表征学习从“观测压缩”推进到“状态—动作动力学结构建模”}  
}  
$$
其中 Related Work 用来说明 SALE 与 abstraction、compression、feature learning、future prediction、action representation、OFENet、safe policy improvement、evolutionary RL 的关系；Background 则给出后续算法描述所需的 MDP、策略、return、($Q^\pi$) 等基础符号。




---


## 1. SALE 试图解决什么问题？

SALE 的核心目标是：在低维状态连续控制任务中，显式学习状态—动作交互结构。

普通 actor-critic 通常直接使用：
$$
Q(s,a),  
\qquad  
\pi(s).  
$$
也就是说，价值函数和策略网络直接接收原始状态、动作。此时网络必须仅依靠 Bellman loss 和 policy objective 自己发现：
$$
s \text{ 中哪些信息重要}  
$$
$$
a \text{ 如何影响下一状态}  
$$
$$
(s,a) \text{ 如何共同决定未来回报}  
$$
SALE 的思路是：不要完全依赖价值学习信号来发现动力学结构，而是额外学习嵌入：
$$
z_s,  
\qquad  
z_{sa}.  
$$
其中：
$$
z_s  
$$
描述状态结构；
$$
z_{sa}  
$$


描述当前状态下执行动作后的状态—动作动力学结构。

因此，SALE 的表征学习目标不是普通的图像压缩，也不是单纯状态编码，而是：
$$
\boxed{  
\text{学习状态和动作共同决定下一状态的潜在结构}  
}  
$$

---

## 2. 为什么需要两个编码器 ($f$) 和 ($g$)？

SALE 定义：
$$
z_s=f(s),  
$$
$$
z_{sa}=g(z_s,a).  
$$
这形成一个两阶段结构：

$$
s  
\rightarrow  
z_s  
\rightarrow  
(z_s,a)  
\rightarrow  
z_{sa}.  
$$

其中 ($f$) 只看状态，($g$) 同时看状态嵌入和动作。

这样设计有两个理由。

第一，策略网络只需要状态输入，不能依赖当前动作。因此策略可以使用：
$$
\pi(z_s,s)  
$$
而不能使用：


$$
\pi(z_{sa},s)  
$$


因为 ($z_{sa}$) 本身需要动作 ($a$) 才能计算。

第二，价值函数需要评价状态—动作对，因此可以使用：

$$
Q(z_{sa},z_s,s,a).  
$$

这使得 actor 和 critic 可以分别使用合适的嵌入：

$$
\text{actor 使用状态嵌入}  
$$
$$
\text{critic 使用状态嵌入和状态—动作嵌入}  
$$

---

## 3. 式（2）的动力学预测损失是什么意思？

SALE 的表征学习损失是：


$$
\mathcal L(f,g)
=
\left|| 
g(f(s),a)-|f(s')|_{\times}  
\right||_2^2.  
$$


代入定义：


$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
\qquad  
z_{s'}=f(s'),  
$$


得到：


$$
\mathcal L(f,g)

||z_{sa}-|z_{s'}||_{\times}|_2^2.  
$$


这表示：

$$
\boxed{  
\text{状态—动作嵌入 }z_{sa}\text{ 被训练为接近下一状态嵌入 }z_{s'}  
}  
$$


也就是说，($g(f(s),a)$) 要编码“从 ($s$) 执行动作 ($a$) 后会进入什么样的下一状态”。

这不是直接预测原始下一状态：
$$
s'  
$$
而是在潜在空间中预测：
$$
f(s').  
$$

因此，它是 latent dynamics prediction，而不是 raw-state prediction。

---

## 4. stop-gradient 的作用

式（2）中：

$$
|f(s')|_{\times}  
$$

表示对 ($f(s')$) 停止梯度。

这意味着，在计算损失：

$$
||g(f(s),a)-|f(s')|_{\times}||_2^2  
$$
]

时，**($f(s')$) 被当作目标值，不从这一路径反向传播梯度。**

如果没有 stop-gradient，损失会同时推动预测端和目标端移动：

$$
g(f(s),a)  
\quad \text{和} \quad  
f(s')  
$$

==都可能为了降低距离而发生变化。这样容易导致退化解，例如所有嵌入都变成同一个常数：==
$$
f(s)=c,  
\qquad  
g(f(s),a)=c.  
$$
==此时损失可以很小，但嵌入没有任何有效信息。==

stop-gradient 的作用是把下一状态嵌入作为相对固定的目标，使当前状态—动作嵌入去匹配它：
$$
z_{sa}  
\rightarrow  
z_{s'}.  
$$
它不完全消除塌缩风险，但可以减少目标端和预测端同时逃逸或同时塌缩造成的不稳定。

---

## 5. 为什么 SALE 不依赖下一动作或当前策略？

如果用普通 Bellman target 训练 critic，目标通常包含：
$$
a'=\pi(s')  
$$
以及：
$$
Q(s',a').  
$$
这使目标依赖当前策略。

而 SALE 的动力学预测目标只使用：
$$
(s,a,s')  
$$

即：
$$
z_{sa}\approx z_{s'}.  
$$
它不需要：
$$
a'  
$$
也不需要：
$$
\pi(s').  
$$
**因此，SALE 的表征学习目标比 Bellman target 更局部、更直接、更少依赖当前策略。**

**这点很关键。因为策略在训练中不断变化，如果表征目标强依赖策略，则表征学习目标也会随策略变化而非平稳。SALE 通过只预测下一状态嵌入，使表征学习更接近环境动力学本身：**
$$
P(s'\mid s,a).  
$$
---

## 6. 为什么嵌入还要与原始 ($s,a$) 拼接？

式（3）写作：

$$
Q(s,a)\rightarrow Q(z_{sa},z_s,s,a),  
$$
$$
\pi(s)\rightarrow \pi(z_s,s).  
$$
这表示 SALE 没有用嵌入完全替代原始输入，而是把嵌入和原始输入拼接。

原因是：动力学嵌入不一定包含所有对回报和控制有用的信息。
例如，某些特征可能：
$$
\text{不影响短期动力学}  
$$
但：
$$
\text{影响奖励}  
$$
或者：
$$
\text{与任务时域有关}  
$$
又或者：
$$
\text{对当前策略的动作选择重要}  
$$
如果只使用 ($z_s,z_{sa}$)，价值函数和策略可能丢失这些信息。

因此 SALE 使用保守设计：

$$
\text{原始输入} + \text{学习嵌入}.  
$$

这样，网络可以自行决定哪些信息有用，而不是强迫所有信息都经过表征瓶颈。

---

## 7. 为什么编码器要与 actor/critic 解耦？

原文说：

> gradients from the value function and policy are not propagated to ((f,g))

意思是：
$$
Q \text{ loss}  
$$

和：

$$
\pi \text{ loss}  
$$


不会更新编码器 ($f,g$)。

编码器只通过动力学预测损失更新：
$$
\mathcal L(f,g)
=
||z_{sa}-|z_{s'}|_\times||^2.  
$$
因此，($f,g$) 的训练目标是相对独立的。

这种设计有利也有弊。

好处是：编码器不会被不稳定的 Bellman target 或 actor objective 直接污染。critic 学习早期可能非常不准，如果它的梯度直接更新 encoder，可能导致表征跟随错误价值目标剧烈变化。

缺点是：嵌入只针对动力学预测优化，不一定最适合价值估计或策略优化。因此 SALE 又把原始 ($s,a$) 拼接进去，避免完全依赖嵌入。

所以这里存在一个平衡：

$$
\boxed{  
\text{解耦编码器提高表征稳定性，但可能降低任务适配性}  
}  
$$
$$
\boxed{  
\text{拼接原始输入补偿嵌入可能缺失的任务信息}  
}  
$$

---

## 8. SALE 为什么不是 world model？

原文明确说，SALE 的嵌入不是用于规划或 rollout 的 world model。

world model 通常要学习：
$$
\hat P(s'\mid s,a)  
$$
或：
$$
\hat P(z'\mid z,a),  
$$
**然后用于模拟未来**：
$$
s_0,a_0  
\rightarrow  
\hat s_1  
\rightarrow  
\hat s_2  
\rightarrow  
\cdots  
$$
或者在 latent space 中进行规划。

SALE 虽然也学习：


$$
z_{sa}\approx z_{s'},  
$$


但它的目的不是用 ($g$) 反复 rollout：


$$
z_t,a_t\rightarrow z_{t+1}  
\rightarrow z_{t+2}  
\rightarrow \cdots.  
$$


它**只是把学到的表征作为 actor 和 critic 的输入增强**：
$$
Q(z_{sa},z_s,s,a),  
\qquad  
\pi(z_s,s).  
$$
因此，SALE 是：
$$
\boxed{  
\text{model-free actor-critic 中的辅助表征学习模块}  
}  
$$
不是：
$$
\boxed{  
\text{用于规划的模型学习模块}  
}  
$$

---

## 9. AvgL1Norm 的数学含义

AvgL1Norm 定义为：
$$
\operatorname{AvgL1Norm}(x)
=
\frac{x}{\frac{1}{N}\sum_i |x_i|}.  
$$
设：
$$
m(x)=\frac{1}{N}\sum_i |x_i|.  
$$
则：
$$
\operatorname{AvgL1Norm}(x)=\frac{x}{m(x)}.  
$$
归一化之后，向量各维绝对值的平均值为：
$$
\frac{1}{N}\sum_i  
\left|  
\frac{x_i}{m(x)}  
\right|
=
 \frac{1}{m(x)}  
\frac{1}{N}\sum_i |x_i|
$$
因此，AvgL1Norm 保证输出向量满足：
$$
\boxed{  
\frac{1}{N}\sum_i |\operatorname{AvgL1Norm}(x)_i|=1  
}  
$$
它不是标准 ($L_2$) 归一化，也不是 BatchNorm。它只是把向量整体尺度固定到平均绝对值为 1。

---

## 10. 为什么需要归一化嵌入？

式（2）最小化嵌入距离：
$$
||z_{sa}-z_{s'}||^2.  
$$
这种目标可能出现两类问题。

第一，**单调增长**。嵌入尺度不断变大，使下游 ($Q$) 和 ($\pi$) 输入尺度不断变化。

第二，**塌缩**。所有状态都映射到类似向量：
$$
z_s\approx c,  
$$
导致动力学预测损失变小，但表征没有区分能力。

AvgL1Norm 至少可以稳定尺度，使：
$$
z_s  
$$
不会在训练过程中任意放大或缩小。

这尤其重要，因为编码器与 actor/critic 是解耦训练的。若嵌入尺度不断变化，则 actor/critic 的输入分布也不断变化，会造成不稳定。

---

## 11. 为什么 AvgL1Norm 不用于 (z_{sa})？

原文说：

> AvgL1Norm is not applied to the state-action embedding ($z_{sa}$), as it is trained to match the normalized next state embedding ($z_{s'}$).

原因是：
$$
z_{sa}  
$$
的训练目标是：
$$
z_{sa}\approx z_{s'}.  
$$
==而 ($z_{s'}$) 已经是归一化后的下一状态嵌入。因此，若 ($z_{sa}$) 成功匹配 ($z_{s'}$)，它自然会具有相似尺度。==

如果再对 ($z_{sa}$) 额外归一化，可能改变预测端的几何结构，使匹配目标变得不必要地复杂。

因此：
$$
z_s \text{ 归一化}  
$$
$$
z_{s'} \text{ 归一化}  
$$
$$
z_{sa} \text{ 通过匹配 } z_{s'} \text{ 获得尺度约束}  
$$
---

## 12. 为什么原始状态动作输入也要经过 Linear + AvgL1Norm？

式（5）为：
$$
Q(z_{sa},z_s,\operatorname{AvgL1Norm}(\operatorname{Linear}(s,a))),  
$$
$$
\pi(z_s,\operatorname{AvgL1Norm}(\operatorname{Linear}(s))).  
$$
这里有两个目的。

第一，使原始输入和嵌入输入具有相近尺度。否则，如果：
$$
||z_s||\gg||s||  
$$
或：
$$
||s||\gg||z_s||,  
$$
网络可能过度依赖某一类输入。

第二，Linear 层是 actor/critic 网络的一部分，可以端到端学习适合价值函数或策略的输入变换。

因此这里形成两类表示：
$$
\text{动力学表征： } z_s,z_{sa}  
$$
$$
\text{任务表征： } \operatorname{Linear}(s),\operatorname{Linear}(s,a)  
$$
前者由动力学预测损失训练，后者由价值函数或策略目标训练。

---

## 13. fixed embeddings 要解决什么不稳定性？

如果编码器 ($f,g$) 每一步都更新，那么同一个原始状态动作对：
$$
(s,a)  
$$
在不同训练时刻对应的嵌入会变化：
$$
z^t_{sa}=g_t(f_t(s),a),  
$$
$$
z^{t+1}_{sa}=g_{t+1}(f_{t+1}(s),a).  
$$
于是，价值函数 ($Q$) 的输入空间本身在移动。

这会造成一种额外非平稳性：
$$
Q \text{ 正在学习一个输入表示不断变化的函数}  
$$
而 actor-critic 本身已经具有非平稳 target。如果再让输入表示同步快速变化，训练会更加不稳定。
因此，SALE 冻结用于训练当前 ($Q,\pi$) 的嵌入：在第 ($t+1$) 轮训练 ($Q_{t+1},\pi_{t+1}$) 时，使用上一轮编码器产生的嵌入。
这类似 target network 的思想：

$$
\boxed{  
\text{让训练目标和输入表示在若干步内保持相对固定}  
}  
$$
---
## 14. 式（6）的含义

式（6）：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\approx  
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'),  
$$
$$
a'\sim \pi_t(z^{t-1}_{s'},s').  
$$
左边是当前要训练的新价值函数：
$$
Q_{t+1}.  
$$
它接收当前固定版本的嵌入：
$$
z^t_{sa},z^t_s.  
$$
右边是 target：
$$
r+\gamma Q_t(\cdots).  
$$
它使用上一版 target value network：
$$
Q_t  
$$
以及更旧一版的目标嵌入：
$$
z^{t-1}_{s'},z^{t-1}_{s'a'}.  
$$
这里的核心不是索引本身，而是机制：
$$
\boxed{  
\text{当前 Q 网络的输入嵌入被冻结}  
}  
$$
$$
\boxed{  
\text{Bellman target 使用 target network 和 target embeddings}  
}  
$$
这样可以减少 actor-critic 训练中的非平稳性。

---

## 15. 式（7）的含义

式（7）：
$$
\pi_{t+1}(z^t_s,s)  
\approx  
\arg\max_{\pi}  
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
\qquad  
a\sim\pi(z^t_s,s).  
$$
含义是：策略更新仍然遵循 actor-critic 思想，即选择能够使 critic 评价更高的动作。

普通 deterministic actor update 是： 
$$
\max_\pi Q(s,\pi(s)).  
$$
SALE 中变为：

$$
\max_\pi Q(z_{sa},z_s,s,\pi(z_s,s)).  
$$
其中：
$$
z_s  
$$

提供状态表征；
$$
z_{sa}=g(z_s,a)  
$$
提供状态—动作表征。
因此，策略不是直接基于原始状态 (s) 更新，而是基于：
($z_s,s$)  
生成动作，并通过 critic 对：
($z_{sa},z_s,s,a$)  
进行评价。

这里用
$$
\approx  
$$
而不是
$$
=
$$

是因为式（6）和式（7）不是在写严格成立的数学恒等式，而是在写 **TD7 中 critic 和 actor 的近似训练目标**。它们分别对应：
$$
\text{近似策略评价}  
$$
和：
$$
\text{近似策略改进}.  
$$
论文原文也说明，SALE 的 embedding 用于增强 value function 和 policy 的输入，encoder 与 value/policy 解耦训练；同时，由于 fixed embeddings，训练 ($Q_{t+1},\pi_{t+1}$) 时使用上一轮 encoder ($(f_t,g_t)$) 产生的嵌入，而 Bellman target 使用更旧的 target 网络和 target fixed encoder。式（6）（7）就是在这个语境下给出的近似更新关系。

---

# 1. 式（6）本质上是近似 Bellman backup

式（6）是：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\approx  
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'),  
$$
其中：
$$
a'\sim \pi_t(z^{t-1}_{s'},s').  
$$
如果在理想 tabular 情况下，且已知完整环境模型，可以写 Bellman 方程：
$$
Q^{\pi}(s,a)
=
\mathbb E  
\left[  
r+\gamma Q^{\pi}(s',\pi(s'))  
\mid s,a  
\right].  
$$
这里是真正的等式，因为 ($Q^\pi$) 被定义为满足 Bellman equation 的真值函数。

但 TD7 中的 ($Q_{t+1}$) 不是精确的 ($Q^\pi$)，而是神经网络近似器。因此实际做的是最小化某种损失：

$$
\min_{\theta}  
\left(  
Q_\theta(z^t_{sa},z^t_s,s,a)
-
y  
\right)^2  
$$


或 Huber loss，其中 target 为：
$$
y=  
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a').  
$$

也就是说，训练目标是让：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
$$
尽量接近：
$$
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a').  
$$
所以只能写：
$$
\boxed{  
Q_{t+1}(\cdot)\approx \text{Bellman target}  
}  
$$
而不是：

$$
Q_{t+1}(\cdot)=\text{Bellman target}.  
$$

---

# 2. 为什么 ($Q_{t+1}$) 不能精确等于右侧？

主要有六个原因。

---

## 2.1 右侧是采样 target，不是完整期望

严格 Bellman 方程应当包含环境转移和奖励的期望：


$$
Q^\pi(s,a)
=
\mathbb E_{r,s'\sim p(\cdot|s,a)}  
[  
r+\gamma Q^\pi(s',\pi(s'))  
].  
$$

**但 replay buffer 中只有采样 transition**：


$$
(s,a,r,s').  
$$


所以 TD7 用的是单样本 target：

$$
r+\gamma Q_t(s',a').  
$$
这只是 Bellman expectation 的随机样本估计，而不是精确期望。

因此，即使 ($Q$) 函数足够强，也不能要求每个样本都严格满足等式。

---

## 2.2 ($Q_{t+1}$) 是函数近似器，表示能力有限

神经网络 ($Q_{t+1}$) 需要同时拟合大量样本：


$$
(s_i,a_i,r_i,s'_i).  
$$

每个样本都有一个 target：


$$
y_i=r_i+\gamma Q_t(s'_i,a'_i).  
$$


如果要求：
$$
Q_{t+1}(s_i,a_i)=y_i  
\quad  
\forall i,  
$$
通常不可能。原因是神经网络参数共享，一个参数更新会同时影响多个状态—动作对。

因此，训练只能最小化整体误差：


$$
\min_\theta  
\sum_i  
\ell(Q_\theta(s_i,a_i)-y_i).  
$$


这就是近似，而不是精确赋值。

---

## 2.3 target 本身来自旧网络 ($Q_t$)，不是当前真值函数

式（6）右侧使用：
$$
Q_t  
$$
而不是：
$$
Q_{t+1}  
$$
也不是真实：
$$
Q^{\pi_t}.  
$$
($Q_t$) 是 target network，是上一阶段参数的滞后版本。它本身也是近似器。
因此右侧 target 是：
$$
\text{由旧近似器生成的 bootstrapped target}.  
$$
这类 target 本身就不是真实回报，只是用于稳定训练的近似监督信号。

---

## 2.4 **fixed embeddings 使左右两边处在不同版本的表示空间中**

左侧使用当前训练网络的输入 embedding：
$$
z^t_{sa},z^t_s,  
$$
这些来自：
$$
(f_t,g_t).  
$$
右侧使用 target backup 的 embedding：
$$
z^{t-1}_{s'a'},z^{t-1}_{s'},  
$$
这些来自更旧的：
$$
(f_{t-1},g_{t-1}).  
$$
也就是说，左右两侧甚至不是同一套 encoder 产生的表示。这样设计是为了稳定训练，但也说明式（6）不是严格函数恒等式，而是一个滞后版本网络之间的近似 bootstrapping relation。

---

## 2.5 实际训练只做有限步 SGD

即使存在某个参数 ($\theta^\star$) 可以使：
$$
Q_\theta(\cdot)=y  
$$
完全成立，实际训练也只是若干次 stochastic gradient descent 更新：
$$
\theta  
\leftarrow  
\theta-\alpha\nabla_\theta \mathcal L.  
$$

单次或有限次梯度更新不会精确解出最优参数。

因此式（6）只能表示“朝这个目标拟合”。

---

## 2.6 TD7 的实际 critic target 还包含双 critic、target noise、clipping、Huber loss

主文式（6）是简化写法。附录中的 TD7 critic target 实际还包括：
$$
\min(Q_{t,1},Q_{t,2}),  
$$
target policy smoothing noise：

$$
a'=\pi_t(\cdot)+\epsilon,  
$$
value clipping：
$$
\operatorname{clip}(\cdot,Q_{\min},Q_{\max}),  
$$
以及 Huber loss。论文主文也说明后续会用 clipping 稳定式（6）的 target。

因此，式（6）不是精确定义完整实现，而是概念层面的近似 Bellman update。

---

# 3. 式（7）本质上是近似 policy improvement

式（7）是：
$$
\pi_{t+1}(z^t_s,s)  
\approx  
\arg\max_{\pi}  
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
$$
其中：
$$
a\sim \pi(z^t_s,s).  
$$
这对应 actor-critic 中的 policy improvement。

如果 critic 是精确的，并且可以对每个状态求出精确最优动作，那么可以写：
$$
\pi_{\text{new}}(s)
=
\arg\max_a Q(s,a).  
$$
但 TD7 中不能写等号，因为 actor 不是逐状态精确求解的 argmax，而是用 deterministic policy gradient 近似优化神经网络策略。

---

# 4. 为什么式（7）不能写成等号？

---

## 4.1 连续动作空间中 argmax 通常没有闭式解

MuJoCo 任务动作空间是连续的：

$$
a\in[-1,1]^d.  
$$


要精确求：
$$
\arg\max_a Q(s,a)  
$$
通常需要非凸优化。由于 ($Q$) 是深度网络，对动作 ($a$) 的函数高度非线性，精确全局最大化几乎不可行。

实际做法是用 actor network：
$$
a_\phi=\pi_\phi(z_s,s)  
$$
并通过梯度上升提高：

$$
Q(s,\pi_\phi(s)).  
$$
因此只是：
$$
\pi_{t+1}  
\text{ 被训练得让 } Q \text{ 更大},  
$$

不是精确等于全局 argmax。

---

## 4.2 actor 受参数化策略族限制

策略不是任意函数，而是某个神经网络族：
$$
\pi_\phi\in\Pi_\Phi.  
$$
即使逐状态最优动作函数存在：
$$
\pi^\star(s)=\arg\max_a Q(s,a),  
$$
也未必能被当前 actor 网络精确表示。

因此最多只能求：
$$
\pi_{t+1}  
\approx  
\arg\max_{\pi\in\Pi_\Phi}  
\mathbb E_{s\sim D}  
[  
Q(s,\pi(s))  
].  
$$
这已经是受限函数类中的近似优化，而不是逐状态精确 argmax。

---

## 4.3 critic 本身是近似的

式（7）依赖：
$$
Q_{t+1}.  
$$
但 ($Q_{t+1}$) 是通过式（6）近似训练出来的 critic。它包含 Bellman 误差、函数近似误差、采样误差和外推误差。
因此，即使 actor 能精确最大化 ($Q_{t+1}$)，也只是最大化一个近似 critic，而不是最大化真实回报：
$$
J(\pi).  
$$
所以 policy improvement 也只能写成：
$$
\approx.  
$$
---

## 4.4 实际 actor update 是梯度更新，不是求解 argmax

实际 actor loss 大致是：

$$
\mathcal L_\pi
=
Q_{t+1}(z^t_{sa_\pi},z^t_s,s,a_\pi),  
$$
其中：

$$
a_\pi=\pi_{t+1}(z^t_s,s).  
$$
最小化 ($-Q$) 等价于最大化 ($Q$)。但优化过程是：

$$
\phi  
\leftarrow  
\phi  
+  
\alpha  
\nabla_\phi  
Q_{t+1}(z^t_{sa_\pi},z^t_s,s,\pi_\phi(z^t_s,s)).  
$$
这只是一步或若干步梯度上升，不是求解：

$$
\arg\max_\pi.  
$$
所以式（7）中的：
$$
\arg\max_\pi  
$$
是描述 actor update 的目标方向，而不是精确计算结果。

---

# 5. 从策略迭代角度理解这两个 ($\approx$)

式（6）和式（7）对应近似策略迭代：
$$
\text{policy evaluation}  
\rightarrow  
\text{policy improvement}.  
$$
---

## 5.1 精确策略迭代中的等式

在理想 tabular setting 中，可以有：
$$
Q^{\pi_t}
=
T^{\pi_t}Q^{\pi_t},  
$$
以及：


$$
\pi_{t+1}(s)
=
\arg\max_a Q^{\pi_t}(s,a).  
$$


这里可以使用等号，因为：

1. ($Q^{\pi_t}$) 是精确 value function；
    
2. Bellman equation 精确成立；
    
3. 每个状态的 greedy action 可以精确求出。
    

---

## 5.2 TD7 中是近似策略迭代

TD7 中变为：

$$
Q_{t+1}  
\approx  
T^{\pi_t}Q_t,  
$$

$$
\pi_{t+1}  
\approx  
\operatorname{Greedy}(Q_{t+1}).  
$$


因此写成：
$$
Q_{t+1}(\cdot)  
\approx  
r+\gamma Q_t(\cdot),  
$$

$$
\pi_{t+1}  
\approx  
\arg\max_\pi Q_{t+1}.  
$$


**这正是 deep actor-critic 的本质：不是精确动态规划，而是用神经网络、采样数据和梯度优化来近似策略评价与策略改进。**

---

# 6. 式（6）中的 ($\approx$) 具体表示什么？

可以把式（6）理解为：
$$
Q_{t+1}  
$$
通过训练被推动到接近以下 target：
$$
y
=
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a').  
$$
即：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\approx y.  
$$
它不是说所有样本上严格满足：
$$
Q_{t+1}=y.  
$$
而是说训练损失希望使误差变小：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)-y  
\approx 0.  
$$
更准确地写，应该是：
$$
Q_{t+1}
=
 \arg\min_Q  
\mathbb E_{(s,a,r,s')\sim D}  
\left[  
\ell  
\left(  
Q(z^t_{sa},z^t_s,s,a)
-
y  
\right)  
\right],  
$$
其中：
$$
y=r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a').  
$$

因此，式（6）的 ($\approx$) 是 **损失最小化意义下的接近**。

---

# 7. 式（7）中的 ($\approx$) 具体表示什么？

式（7）可以更准确地写成：
$$
\pi_{t+1}
=
\arg\max_{\pi\in\Pi}  
\mathbb E_{s\sim D}  
\left[  
Q_{t+1}  
\left(  
z^t_{sa_\pi},  
z^t_s,  
s,  
\pi(z^t_s,s)  
\right)  
\right],  
$$
其中：
$$
z^t_{sa_\pi}
=
g_t(z^t_s,\pi(z^t_s,s)).  
$$
但实际中也不会精确求解这个优化问题，而是用梯度更新 actor 参数。因此更实际地说：
$$
\pi_{t+1}  
\text{ 是通过梯度上升近似提高 }  
Q_{t+1}  
\text{ 的策略。}  
$$

所以式（7）的 ($\approx$) 是 **近似贪婪策略改进意义下的接近**。

---

# 8. 为什么作者不用“=”还有一个写作原因：这是算法描述，不是定义

式（6）（7）出现在 “Fixed embeddings” 说明中。该段重点是说明：
$$
Q_{t+1},\pi_{t+1}  
$$
使用固定的：
$$
z^t_{sa},z^t_s,  
$$
而 target 使用更旧的：
$$
z^{t-1}_{s'a'},z^{t-1}_{s'}.  
$$
因此作者用：
$$
\approx  
$$
表示“训练更新朝这个目标进行”，而不是给出精确封闭形式。

如果写成等号，会错误暗示：

1. critic 被精确设为 Bellman target；
    
2. actor 被精确设为 greedy policy；
    
3. 神经网络优化可以一次性求出全局最优；
    
4. 采样 target 等于期望 Bellman target；
    
5. fixed embedding 不带来任何近似误差。
    

这些都不成立。

---

# 9. 总结

式（6）：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\approx  
r+\gamma Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a')  
$$

使用 ($\approx$)，因为它只是 **用神经网络 critic 拟合 bootstrapped Bellman target**。该 target 来自采样 transition、旧 target network、fixed embeddings 和近似 critic，因此不是精确等式。

式（7）：
$$
\pi_{t+1}(z^t_s,s)  
\approx  
\arg\max_\pi Q_{t+1}(z^t_{sa},z^t_s,s,a)  
$$
使用 ($\approx$)，因为 actor 只是通过 deterministic policy gradient 近似提高 critic 评价，不是在连续动作空间中精确求解全局 argmax。

最核心理解是：
$$
\boxed{  
\text{式（6）是近似策略评价；式（7）是近似策略改进。}  
}  
$$
更严格地说：
$$
\boxed{  
Q_{t+1}  
\approx  
T^{\pi_t}Q_t  
}  
$$
$$
\boxed{  
\pi_{t+1}  
\approx  
\operatorname{Greedy}(Q_{t+1})  
}  
$$
它们是 deep actor-critic 中的近似动态规划步骤，而不是精确 Bellman 方程和精确 greedy improvement。



---

## 16. 式（8）的同步更新是什么意思？

式（8）：
$$
Q_t\leftarrow Q_{t+1},  
\qquad  
\pi_t\leftarrow \pi_{t+1},  
$$
$$
(f_{t-1},g_{t-1})\leftarrow(f_t,g_t),  
\qquad  
(f_t,g_t)\leftarrow(f_{t+1},g_{t+1}).  
$$
这表示每隔 ($n$) 步，把当前训练好的网络同步为 target 版本。

其中：
$$
Q_t,\pi_t  
$$
是 target value / target policy；
$$
Q_{t+1},\pi_{t+1}  
$$
是当前正在训练的网络。

对编码器也类似，需要保留多个时间版本：

$$
(f_{t-1},g_{t-1})  
$$
$$
(f_t,g_t)  
$$
$$
(f_{t+1},g_{t+1})  
$$
因为不同训练位置需要不同版本的嵌入：

$$
\text{当前网络输入}  
$$
$$
\text{target 网络输入}  
$$
$$
\text{正在训练的新 encoder}  
$$

这套设计的本质是：**通过冻结和滞后更新，让输入表征和 target 估计不同时剧烈变化**。

---

## 17. clipped values 要解决什么问题？

SALE 增加了状态—动作嵌入：
$$
z_{sa}  
$$
并把它输入 critic：
$$
Q(z_{sa},z_s,s,a).  
$$
这增加了动作相关输入的维度。维度越高，数据覆盖越稀疏，critic 越容易在未见或少见动作附近产生不现实估计。

这就是外推误差：
$$
Q(s,a)  
$$
在数据不足区域可能输出异常大的值。

由于 actor 更新会最大化 critic：
$$
\pi(s)=\arg\max_a Q(s,a),  
$$
actor 很容易利用这些虚假的高值。于是：
$$
\text{未知动作}  
\rightarrow  
\text{虚假高 }Q  
\rightarrow  
\text{actor 选择该动作}  
\rightarrow  
\text{Bellman target 被污染}  
$$
SALE 中的 value clipping 用来限制这种异常 target。

---

## 18. 式（9）的精确含义

式（9）：
$$
Q_{t+1}(s,a)  
\approx  
r+\gamma  
\operatorname{clip}  
\left(  
Q_t(s',a'),  
\min_{(s,a)\in\mathcal D}Q_t(s,a),  
\max_{(s,a)\in\mathcal D}Q_t(s,a)  
\right).  
$$
其中：
$$
Q_t(s',a')  
$$
是 target 中对下一状态动作的价值估计。

裁剪下界是：
$$
\min_{(s,a)\in\mathcal D}Q_t(s,a),  
$$
裁剪上界是：
$$
\max_{(s,a)\in\mathcal D}Q_t(s,a).  
$$
也就是说，如果 target value 超出数据集中当前估计价值范围，就把它截断回数据价值范围内。

形式上：
$$
\operatorname{clip}(x,l,u)
=
\begin{cases}  
l, & x<l,\\  
x, & l\le x\le u,\\  
u, & x>u.  
\end{cases}  
$$
所以式（9）防止：
$$
Q_t(s',a')  
$$
在未知动作上出现极端不现实值。

---

## 19. 为什么在线 RL 中 clipping 是“暂时稳定”而不是永久保守？

原文强调：在线 RL 中，错误估计最终可以通过环境反馈修正。

如果 actor 真的选择了某个动作：

$$
a=\pi(s)  
$$

并与环境交互，就会得到真实反馈：
$$
(s,a,r,s').  
$$
这些 transition 会进入 replay buffer，之后 critic 可以基于真实数据修正该区域的估计。

因此，在在线 RL 中，value clipping 的作用不是永远禁止探索未知动作，而是：
$$
\boxed{  
\text{在真实反馈到来之前，避免 value target 出现极端错误}  
}  
$$
这与离线 RL 不同。离线 RL 不能收集新反馈，因此数据外动作的错误估计更难被纠正。

---

## 20. SALE 的完整数据流

SALE 的训练可以概括为以下流程。

给定 replay buffer 中样本：
$$
(s,a,r,s')  
$$
首先计算状态嵌入：
$$
z_s=f(s),  
\qquad  
z_{s'}=f(s').  
$$
然后计算状态—动作嵌入：
$$
z_{sa}=g(z_s,a).  
$$

用动力学预测损失更新 encoder：
$$
\mathcal L(f,g)
=
||z_{sa}-|z_{s'}|_\times||^2.  
$$
同时，用增强输入训练 critic：
$$
Q(z_{sa},z_s,s,a).  
$$
再用状态嵌入增强 actor：


$$
\pi(z_s,s).  
$$

实际训练中还会加入：


$$
\operatorname{AvgL1Norm}  
$$


控制尺度；

$$
\text{fixed embeddings}  
$$


减少输入非平稳性；


$$
\text{value clipping}  
$$

限制外推造成的异常 target。

---

# 第三部分：关键机制总结

## 1. SALE 的核心公式

$$
z_s=f(s)  
$$
$$
z_{sa}=g(z_s,a)  
$$
$$
\mathcal L(f,g)
=
||z_{sa}-|z_{s'}|_\times||^2  
$$
$$
Q(s,a)\rightarrow Q(z_{sa},z_s,s,a)  
$$
$$
\pi(s)\rightarrow \pi(z_s,s)  
$$
---

## 2. 三个实现考虑

### 第一，normalized embeddings

防止嵌入尺度单调增长或塌缩，使下游网络输入尺度稳定：


$$
\operatorname{AvgL1Norm}(x)
=
\frac{x}{\frac{1}{N}\sum_i |x_i|}.  
$$


### 第二，fixed embeddings

冻结用于当前 actor/critic 训练的嵌入，避免输入表示每一步变化导致训练不稳定。

### 第三，clipped values

限制 Bellman target 中的下一状态价值估计，避免高维状态—动作嵌入引起严重外推误差：
$$
Q_t(s',a')  
\in  
\left[  
\min_{\mathcal D}Q_t(s,a),  
\max_{\mathcal D}Q_t(s,a)  
\right].  
$$
---

# 第四部分：最核心理解

SALE 的本质可以概括为：

$$
\boxed{  
\text{通过预测下一状态嵌入，学习状态—动作对的动力学表征}  
}  
$$

它不是单纯压缩状态，也不是完整世界模型，而是为 actor 和 critic 提供更结构化的输入。

其关键设计思想是：

$$
\boxed{  
\text{状态嵌入 }z_s\text{ 服务于策略和价值函数}  
}  
$$
$$
\boxed{  
\text{状态—动作嵌入 }z_{sa}\text{ 服务于价值函数}  
}  
$$
$$
\boxed{  
\text{动力学预测损失训练 encoder}  
}  
$$
$$
\boxed{  
\text{actor/critic 梯度不更新 encoder}  
}  
$$
$$
\boxed{  
\text{归一化、固定嵌入、价值裁剪用于稳定训练}  
}  
$$
更简洁地说：
$$
\text{SALE}

\text{latent dynamics representation}  
+  
\text{state-action embedding}  
+  
\text{stable actor-critic input augmentation}.  
$$


这段内容的重点不是“多加一个神经网络模块”，而是：通过一个只依赖 ($(s,a,s')$) 的辅助预测目标，将环境动力学结构编码进 ($z_s$) 和 ($z_{sa}$)，再把这些结构化特征提供给价值函数和策略，从而改善低维连续控制中的表征质量。

---



## Algorithm 1 Online TD7

### 1. 初始化：训练前

初始化以下网络：

- policy：
    
$$
\pi_{t+1}  
$$
- value function：
    
$$
Q_{t+1}  
$$
- encoders：
    
$$
(f_{t+1},g_{t+1})  
$$
- target policy：
    
$$
\pi_t  
$$
- target value function：
    
$$
Q_t  
$$
- fixed encoders：
    
$$
(f_t,g_t)  
$$
- target fixed encoders：
    
$$
(f_{t-1},g_{t-1})  
$$
- checkpoint policy：
    
$$
\pi_c  
$$
- checkpoint encoder：
    
$$
f_c  
$$
---

### 2. 对每个 episode，从 1 到 final_episode

#### 数据收集

使用当前策略：
$$
\pi_{t+1}  
$$
收集 transitions，并存入 LAP replay buffer。

---

#### Checkpointing

如果 checkpoint condition 成立，则判断当前 actor：
$$
\pi_{t+1}  
$$

是否优于 checkpoint policy：
$$
\pi_c.  
$$
如果当前 actor 更好，则更新 checkpoint networks：
$$
\pi_c\leftarrow \pi_{t+1},  
\qquad  
f_c\leftarrow f_t.  
$$

---


## 1. 本节要回答的问题

第 4.1 节提出 SALE 的基本形式：

$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
$$


并用动力学预测损失训练：


$$
\mathcal L(f,g)
=
||z_{sa}-|z_{s'}||_{\times}|_2^2.  
$$

第 4.2 节要回答的问题不是“SALE 是否能工作”，而是更细的设计问题：

$$
\text{学习目标应该是什么？}  
$$
$$
\text{嵌入应该输入哪些网络？}  
$$
$$
\text{输入和嵌入是否需要归一化？}  
$$
$$
\text{编码器应该解耦训练，还是和价值函数端到端训练？}  
$$

这些问题都没有显然的理论唯一答案。因此本文通过系统消融实验来确定哪些选择真正重要。

---

## 2. 为什么说“通过动力学学习嵌入”与价值函数天然相关？

价值函数 ($Q^\pi(s,a)$) 定义为：

$$
Q^\pi(s,a)
=
\mathbb E  
\left[  
\sum_{t=0}^{\infty}\gamma^t r_t  
\mid s_0=s,a_0=a  
\right].  
$$


Bellman 递归为：

$$
Q^\pi(s,a)
=
\mathbb E  
[  
r+\gamma Q^\pi(s',\pi(s'))  
\mid s,a  
].  
$$
因此，($Q^\pi(s,a)$) 取决于：
$$
r,  
\qquad  
s',  
\qquad  
\text{以及 }s'\text{ 之后的未来状态序列}.  
$$

换言之，价值函数本质上依赖环境动力学：

$$
P(s'\mid s,a).  
$$

**如果表征 ($z_{sa}$) 能够编码“从 ($s$) 执行动作 ($a$) 后会进入什么样的下一状态”，那么它自然有助于价值函数学习**：

$$
(s,a)\mapsto Q(s,a).  
$$

这就是原文中：

> The effectiveness of learning embeddings by modeling the dynamics of the environment is a natural consequence of the relationship between the value function and future states.

的含义。

---

## 3. “mean percent loss” 表示什么？

图 3 中比较的不是绝对回报，而是修改 SALE 某个设计后，相对于完整 SALE 设计的平均性能损失。

可以理解为：
$$
\text{percent loss}  
\approx  
\frac{  
\text{完整 SALE 性能}
-
\text{变体性能}  
}{  
|\text{完整 SALE 性能}|  
}  
\times 100%.  
$$
这类指标的作用是：把不同环境中的性能下降归一到可比较尺度上。

由于 HalfCheetah、Hopper、Walker2d、Ant、Humanoid 的原始回报量级不同，直接平均绝对回报差异不合适。使用百分比损失可以更清楚地显示某个设计修改对整体性能的相对影响。

---

## 4. Learning target：学习目标为什么重要？

SALE 的默认学习目标是：
$$
z_{sa}\approx z_{s'}.  
$$
即：
$$
g(f(s),a)  
\approx f(s').  
$$
这个目标只依赖 transition：
$$
(s,a,s').  
$$
它的优点是：不依赖当前策略，不依赖下一步动作，也不依赖当前 critic。

也就是说，这个目标主要反映环境动力学：
$$
P(s'\mid s,a),  
$$
而不是反映正在变化的策略：
$$
\pi_t.  
$$
这有助于保持表征学习目标相对稳定。

---

## 5. 为什么使用 ($z_{s'}$) 优于直接使用 ($s'$)？

一种替代目标是直接预测下一状态：


$$
z_{sa}\approx s'.  
$$

这类似 OFENet 的选择。

SALE 默认使用的是：


$$
z_{sa}\approx z_{s'}=f(s').  
$$


两者区别在于：

$$
s'  
$$


是原始状态空间中的下一状态；


$$
z_{s'}  
$$


是经过编码器提取后的下一状态表征。

使用 ($z_{s'}$) 有几个潜在好处。

第一，编码器可以学习对控制更相关的状态结构，而不是被迫重构原始状态的所有维度。

第二，原始状态各维尺度、含义不同，直接拟合 ($s'$) 可能让损失受某些高尺度维度主导。

第三，latent target 允许表示空间自己形成适合预测和价值学习的几何结构。

因此，实验结果显示：所有基于下一状态 ($s'$) 的目标大体表现相近，但使用嵌入目标 ($z_{s'}$) 可以进一步提升性能。

---

## 6. 为什么 target network 的 ($z_{s'}$) 不是最佳？

SPR 使用来自 target network 的 ($z_{s'}$) 作为目标，并通过指数滑动平均更新 target encoder：

$$
\bar f \leftarrow \tau f + (1-\tau)\bar f.  
$$


这种做法常见于自监督学习，可减少目标表示剧烈变化。

但 SALE 中默认没有采用这种 target embedding 方案，而是直接使用当前 ($f(s')$) 加 stop-gradient：
$$
|f(s')|_{\times}.  
$$


其可能原因是：SALE 的 encoder 已经通过 stop-gradient、AvgL1Norm、fixed embeddings 等机制稳定训练；额外引入 EMA target 不一定带来显著收益。

实验结论也表明：基于下一状态的几类目标表现相近，说明关键点不是是否使用 target encoder，而是目标应当主要来自下一状态，而不是来自下一状态—动作。

---

## 7. 为什么加入奖励预测影响很小？

DeepMDP 风格的目标会同时考虑：
$$
z_{s'}  
$$

和：
$$
r.  
$$
直觉上，奖励对价值函数很重要，因此加入奖励预测似乎可能提高表征质量。

但实验显示影响很小。原因可能在于：在这些连续控制 benchmark 中，奖励通常是状态和动作的相对简单函数，而 critic 本身已经直接接收原始输入：


$$
(s,a)  
$$

以及学习嵌入：


$$
(z_s,z_{sa}).  
$$


因此，即使 encoder 不显式预测奖励，价值函数也可以从原始输入和表征中学习奖励相关特征。

更重要的是，SALE 的设计目标不是让 ($z_{sa}$) 包含所有任务信息，而是让它捕捉动力学结构。奖励相关信息可以由下游 value network 自己学习。

所以加入奖励预测没有明显收益，并不矛盾。

---

## 8. 为什么 ($z_{s'a'}$) 作为目标明显更差？

替代目标：
$$
z_{sa}\approx z_{s'a'}  
$$
其中：
$$
a'\sim \pi_t(s')  
$$
这会让表征目标依赖当前策略。

问题在于策略 ($\pi_t$) 在训练中不断变化：
$$
\pi_1,\pi_2,\dots,\pi_t,\dots  
$$
因此：
$$
a'=\pi_t(s')  
$$
也不断变化。

于是目标：
$$
z_{s'a'}=g(f(s'),a')  
$$
**不只反映环境动力学，还反映当前策略。这样表征学习目标变为非平稳目标**：

$$
\text{target changes because policy changes}.  
$$

这会损害 encoder 学习稳定的环境结构。

默认目标：
$$
z_{sa}\approx z_{s'}  
$$
只依赖：
$$
(s,a,s')  
$$
不依赖：
$$
\pi_t.  
$$
因此更稳定。

这正是原文结论：
$$
\boxed{  
\text{基于非平稳策略的学习信号会损害学习}  
}  
$$


---

## 9. Network input：为什么新增特征对 critic 更重要？

critic 估计：
$$
Q(s,a).  
$$


它必须理解：
$$
\text{状态 }s  
$$
$$
\text{动作 }a  
$$
$$
\text{动作对未来状态的影响}  
$$
因此，状态—动作嵌入：
$$
z_{sa}=g(f(s),a)  
$$
直接对应 critic 所需的信息。

actor 只输出动作：
$$
a=\pi(s).  
$$
actor 需要理解状态结构，但不直接评价动作后果。动作后果主要通过 critic 的梯度传递给 actor。

因此新增特征对 critic 的影响通常更大：
$$
z_{sa}  
\rightarrow  
Q\text{ 学习更直接受益}.  
$$
但 actor 使用状态嵌入：
$$
\pi(z_s,s)  
$$

也有帮助，因为 ($z_s$) 提供了更结构化的状态表示。

---

## 10. 为什么 ($Q$) 的所有输入 ($(z_{sa},z_s,s,a)$) 都必要？

完整 critic 输入是：

$$
Q(z_{sa},z_s,s,a).  
$$

每一项承担不同功能。

### 10.1 ($z_{sa}$)：动力学相关状态—动作表征
$$
z_{sa}  
$$
编码：


$$
(s,a)\rightarrow s'  
$$


的潜在结构，对价值学习非常关键。

### 10.2 ($z_s$)：状态结构


$$
z_s  
$$


提供状态层面的抽象信息。它既能帮助解释 ($z_{sa}$)，也能提供状态本身的上下文。

### 10.3 ($s,a$)：原始任务信息

原始输入：

$$
(s,a)  
$$


保留所有未被嵌入捕捉的信息，包括奖励相关信息、细粒度控制信息、可能对当前任务重要但对下一状态预测不显著的信息。

因此，如果只用：
$$
z_{sa}  
$$
会丢失许多非动力学但对价值有用的信息。

如果只用：
$$
(s,a)  
$$
则退化接近普通 actor-critic，不能充分利用动力学表征。

最佳性能需要：
$$
\boxed{  
\text{动力学表征}+\text{原始输入}  
}  
$$
也就是：
$$
(z_{sa},z_s)+(s,a).  
$$
---

## 11. 为什么只使用 ($z_{sa}$) 效果差？

($z_{sa}$) 的训练目标是：


$$
z_{sa}\approx z_{s'}.  
$$


这意味着 ($z_{sa}$) 主要被优化为预测下一状态嵌入。

但是价值函数还需要其他信息：


$$
Q(s,a)
=
\mathbb E  
[  
r+\gamma Q(s',\pi(s'))  
].  
$$

其中不仅有下一状态，还包括即时奖励：
$$
r=R(s,a),  
$$
以及长期任务结构。

如果某些状态—动作特征对奖励很重要，但对下一状态预测不重要，那么它们可能不会被 (z_{sa}) 充分编码。

因此，只使用：

$$
Q(z_{sa})  
$$


会造成信息瓶颈。

加入原始输入：
$$
Q(z_{sa},z_s,s,a)  
$$
可以避免该问题。

---

## 12. 为什么 fixed embeddings 优于 current embeddings？

SALE 默认使用固定嵌入，即用上一迭代的 encoder 输出作为当前 actor/critic 的输入。

如果改用当前嵌入：

$$
z^{t+1}_{sa},z^{t+1}_s,  
$$

则同一个 ($(s,a)$) 的输入表示会随着 encoder 每次更新而改变。

这会产生输入非平稳性：
$$
(s,a)\mapsto z_{sa}^{t}  
$$
$$
(s,a)\mapsto z_{sa}^{t+1}.  
$$
critic 在学习时面对的是一个不断移动的输入空间。这会叠加强化学习本身已有的非平稳性：
$$
\text{target network changes}  
$$
$$
\text{policy changes}  
$$
$$
\text{replay buffer distribution changes}  
$$

因此 fixed embeddings 的作用是稳定 actor/critic 的输入，使 value learning 和 policy learning 不必追随每一步变化的 encoder 表示。

---

## 13. Normalization：为什么 AvgL1Norm 重要？

AvgL1Norm 定义为：
$$
\operatorname{AvgL1Norm}(x)
=
\frac{x}{\frac{1}{N}\sum_i |x_i|}.  
$$

它保证输出向量的平均绝对值为 1：

$$
\frac{1}{N}\sum_i  
|\operatorname{AvgL1Norm}(x)_i|=1
$$

这有两个作用。

第一，防止嵌入尺度单调增长：
$$
||z_s||\rightarrow\infty.  
$$

第二，使嵌入与原始输入经过线性层后的表示处于相近尺度，避免某一类输入因尺度过大而主导下游网络。

由于 SALE 的 encoder 与 actor/critic 解耦训练，actor/critic 不能通过端到端梯度直接控制 encoder 输出尺度。因此显式归一化特别重要。

---

## 14. 为什么 BatchNorm 和 LayerNorm 不一定替代 AvgL1Norm？

BatchNorm 依赖 batch 统计量：
$$
\mu_B,\sigma_B.  
$$
在 RL 中，数据来自 replay buffer，分布随策略变化，batch 统计可能不稳定。此外，训练和评估时统计差异也可能影响策略表现。

LayerNorm 对单个样本的特征维度做归一化，通常会标准化均值和方差：
$$
\frac{x-\mu(x)}{\sigma(x)}.  
$$
它比 BatchNorm 少依赖 batch，但会改变特征的均值结构和尺度结构。

AvgL1Norm 更简单，只按平均绝对值缩放：
$$
x\mapsto \frac{x}{\text{mean}(|x|)}.  
$$
它保留方向和相对比例，只固定整体尺度。因此在 SALE 中更适合保持嵌入几何结构和下游输入尺度。

实验结论是：AvgL1Norm 有益，相关替代方案未达到相同性能。

---

## 15. 为什么不直接用 cosine loss 替代 MSE + normalization？

cosine loss 关注向量方向：
$$
1-\frac{x^\top y}{||x||||y||}.  
$$

它天然忽略尺度，因此可以避免某些尺度问题。

但问题在于：下游 actor/critic 使用的是嵌入向量本身，不只是方向。如果训练损失只约束方向，而不提供合适尺度，输入到价值函数和策略的表示可能仍然不稳定或不适配。

AvgL1Norm + MSE 的组合同时控制：
$$
\text{方向}  
$$
和：
$$
\text{尺度}  
$$


其中尺度被固定到平均绝对值为 1。实验显示这种设计优于直接用 cosine loss 替代。

---

## 16. End-to-end：为什么端到端训练更差？

端到端方案中，encoder 同时受到两类梯度影响：
$$
\nabla \mathcal L_{\text{encoder}}  
$$
和：
$$
\nabla \mathcal L_Q.  
$$
其中：
$$
\mathcal L_{\text{encoder}}
=
||z_{sa}-z_{s'}||^2  
$$
是动力学表征损失；
$$
\mathcal L_Q
=
(Q-y)^2  
$$
或 Huber loss，是价值函数损失。

问题在于，value loss 的目标 ($y$) 本身是 bootstrapped、近似且非平稳的：
$$
y=r+\gamma Q_{\text{target}}(s',\pi_{\text{target}}(s')).  
$$
如果 value loss 直接更新 encoder，则 encoder 会受到不稳定 critic 目标牵引。
结果可能是：
$$
\text{encoder 不再稳定地编码动力学结构}  
$$
而是不断适应当前 critic 的误差和当前 policy 的变化。

这会损害表征学习。

因此，实验结果显示：

$$
\boxed{  
\text{解耦表征学习显著优于端到端训练}  
}  
$$
---

## 17. 解耦表征学习的核心优势

解耦训练意味着：
$$
(f,g)  
$$
只由动力学预测损失训练：

$$
||z_{sa}-z_{s'}||^2.  
$$

value loss 和 policy loss 不反向传播到 encoder。

这样，encoder 学到的是相对稳定的环境动力学结构：
$$
P(s'\mid s,a).  
$$
critic 和 actor 则把这些结构作为额外输入使用：
$$
Q(z_{sa},z_s,s,a),  
$$
$$
\pi(z_s,s).  
$$


这形成一种分工：

$$
\boxed{  
\text{encoder 负责动力学表征}  
}  
$$
$$
\boxed{  
\text{critic 负责价值估计}  
}  
$$
$$
\boxed{  
\text{actor 负责策略优化}  
}  
$$

这种分工避免了不稳定的 Bellman 误差直接破坏表征空间。

---

## 18. 四类设计选择的结论汇总

| 设计维度            | SALE 默认选择                            | 实验结论                                          |
| --------------- | ------------------------------------ | --------------------------------------------- |
| Learning target | ($z_{sa}$) 预测 ($z_{s'}$)             | 基于下一状态的目标都可行，($z_{s'}$) 最好；($z_{s'a'}$) 明显更差  |
| Network input   | ($Q(z_{sa},z_s,s,a)$)，($\pi(z_s,s)$) | 新增特征对 critic 更重要，但对 actor 也有益；critic 所有输入都必要  |
| Normalization   | AvgL1Norm                            | 有益，BatchNorm、LayerNorm、cosine loss 等替代方案效果不如它 |
| Training mode   | encoder 与 actor/critic 解耦            | 显著优于端到端训练                                     |

---

# 第三部分：核心总结

第 4.2 节的核心结论可以压缩为四句话。

第一，SALE 的表征目标应当主要依赖下一状态，而不是依赖下一动作或当前策略：

$$
z_{sa}\rightarrow z_{s'}  
$$
优于：

$$
z_{sa}\rightarrow z_{s'a'}.  
$$


第二，状态—动作嵌入不能完全替代原始输入；最佳 critic 输入需要同时包含：

$$
z_{sa},z_s,s,a.  
$$

第三，嵌入尺度稳定非常重要，AvgL1Norm 是该设计中性能最好的归一化方式。

第四，encoder 应该与 value/policy 解耦训练，而不是由不稳定的 Bellman value loss 端到端更新。

因此，本节最终支持的 SALE 设计是：
$$
\boxed{  
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
\qquad  
z_{sa}\approx |z_{s'}|_{\times}  
}  
$$
并且：
$$
\boxed{  
Q=Q(z_{sa},z_s,s,a),  
\qquad  
\pi=\pi(z_s,s)  
}  
$$
同时配合：
$$
\boxed{  
\text{AvgL1Norm}  
+  
\text{fixed embeddings}  
+  
\text{decoupled representation learning}.  
}  
$$
更概括地说，第 4.2 节说明：SALE 的性能并不是随便加入一个辅助预测任务就能得到，而是依赖一组相互配合的设计选择——稳定的下一状态嵌入目标、完整的 critic 输入、尺度归一化，以及与 actor/critic 解耦的表征学习。


---


#### Training

对于从上次训练以来累计的每一个 timestep，执行一次训练：

1. 从 LAP replay buffer 中采样 transitions；
    
2. 训练 encoder；
    
3. 训练 value function；
    
4. 训练 policy；
    
5. 如果已经经过 target update frequency 个步骤，则更新 target networks。
    

encoder 使用式（2）训练，value function 使用式（6）和式（9）训练，policy 使用式（11）训练。

详细超参数说明见附录。

---
## 这一节的核心目标

第 5 节的主题是：

$$
\boxed{  
\text{如何把解耦表征学习稳定地放进 actor-critic 强化学习中}  
}  
$$

第 4 节已经介绍 SALE：

$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a).  
$$

SALE 的编码器与 actor/critic 解耦训练，这带来一个好处：表征学习不会直接被不稳定的 value loss 和 policy loss 牵动。

但也带来额外问题：actor、critic、encoder、target network、replay buffer 都在同时变化，训练非平稳性更强。因此，第 5 节加入一组稳定化设计：
$$
\text{policy checkpoints}  
$$
$$
\text{LAP prioritized replay}  
$$
$$
\text{Huber loss}  
$$
$$
\text{offline behavior cloning regularization}  
$$

这些组件与 SALE 共同形成 TD7。

---

## 2. 为什么需要 policy checkpoints？

**深度强化学习中的策略性能通常不是单调提升的。** 设训练过程中产生一串策略：

$$
\pi_1,\pi_2,\dots,\pi_T.  
$$

普通 RL 默认最终使用：
$$
\pi_T.  
$$
但 RL 中经常出现：
$$
J(\pi_k)>J(\pi_T),  
\qquad  
k<T.  
$$
也就是说，某个中间策略可能比最终策略更好。

原因包括：
$$
\text{critic 估计误差}  
$$
$$
\text{Bellman target 非平稳}  
$$
$$
\text{策略更新利用 }Q\text{ 函数错误}  
$$
$$
\text{replay buffer 分布滞后}  
$$
$$
\text{函数近似优化不稳定}  
$$
因此，checkpoint 的作用是保存训练过程中表现较好的策略：
$$
\pi_c.  
$$
最终测试时使用：
$$
\pi_c  
$$
而不是当前策略：
$$
\pi_{t+1}.  
$$
更形式化地说，checkpoint policy 是：
$$
\pi_c
=
\arg\max_{\pi_k}  
C(\pi_k),  
$$
其中 ($C(\pi_k)$) 是训练期间用 assessment episodes 得到的策略表现指标。

---

## 3. checkpoint 和 target network 的区别

checkpoint 容易和 target network 混淆，但二者作用完全不同。

target network 用于稳定 Bellman target：
$$
y=r+\gamma Q_t(s',\pi_t(s')).  
$$
它影响的是 critic 训练过程。

checkpoint policy 用于选择最终测试策略：
$$
\pi_c.  
$$
它影响的是 evaluation time 使用哪个策略。

因此：
$$
\boxed{  
\text{target network 是训练稳定工具}  
}  
$$
$$
\boxed{  
\text{checkpoint policy 是策略选择工具}  
}  
$$
在 Algorithm 1 中，二者同时存在：
$$
Q_t,\pi_t  
$$
是 target networks；
$$
\pi_c,f_c  
$$
是 checkpoint networks。

---

## 4. 为什么标准 off-policy 训练不适合直接做 assessment？

标准 off-policy RL 通常执行：

$$
\text{collect one transition}  
\rightarrow  
\text{one gradient update}.  
$$

这意味着，在一个 episode 内，策略可能已经发生多次改变：
$$
\pi^{(0)}  
\rightarrow  
\pi^{(1)}  
\rightarrow  
\cdots  
\rightarrow  
\pi^{(T)}.  
$$

如果用这一整个 episode 的 return 评价“当前策略”，就会出现问题：这个 return 并不对应一个固定策略，而是多个逐步变化的策略共同产生的结果。

因此，TD7 改为：
$$
\text{固定当前策略，收集若干 assessment episodes}  
$$
$$
\text{然后批量执行本应发生的 }N\text{ 次训练}.  
$$
这样，assessment episodes 的 return 对应同一个固定策略，性能判断更有意义。

---

## 5. “Collect N data points → train N times” 的含义

标准 off-policy RL：
$$
1\text{ 个 transition}  
\Rightarrow  
1\text{ 次 gradient step}.  
$$

TD7 的 checkpoint 训练节奏：
$$
N\text{ 个 transitions}  
\Rightarrow  
N\text{ 次 gradient steps}.  
$$
二者的总训练更新数量可以保持一致。差别在于训练更新的时机。

标准方式是交错执行：
$$
\text{collect},\text{train},\text{collect},\text{train},\dots  
$$
TD7 方式是分段执行：
$$
\underbrace{\text{collect},\dots,\text{collect}}_{N}  
\rightarrow  
\underbrace{\text{train},\dots,\text{train}}_{N}.  
$$
这使得数据收集阶段的策略固定，方便评估策略表现。

---

## 6. 为什么用 minimum performance，而不是 mean performance？

假设 assessment episodes 的回报为：
$$
R_1,R_2,\dots,R_m.  
$$
mean performance 是：
$$
C_{\text{mean}}(\pi)
=
\frac{1}{m}\sum_{i=1}^m R_i.  
$$
minimum performance 是：
$$
C_{\min}(\pi)
=
\min_{1\le i\le m}R_i.  
$$
TD7 使用 minimum。**原因是：minimum 更能惩罚不稳定策略**。

例如：
$$
\pi_A:[1000,1000,1000,1000,1000]  
$$
$$
\pi_B:[2000,2000,2000,2000,-1000]  
$$
mean：
$$
C_{\text{mean}}(\pi_A)=1000,  
$$
$$
C_{\text{mean}}(\pi_B)=1400.  
$$
按 mean，($\pi_B$) 更好。
minimum：
$$
C_{\min}(\pi_A)=1000,  
$$
$$
C_{\min}(\pi_B)=-1000.  
$$
按 minimum，($\pi_A$) 更好。

这符合稳定性目标：checkpoint policy 不应只是偶尔高分，而应尽量避免严重失败。

因此：
$$
\boxed{  
\text{mean 偏向平均表现}  
}  
$$
$$
\boxed{  
\text{minimum 偏向稳健表现}  
}  
$$
---

## 7. minimum criterion 为什么允许提前结束 assessment？

设当前 checkpoint performance 为：
$$
C_c.  
$$

当前策略已经运行若干 assessment episodes，得到：
$$
R_1,\dots,R_k.  
$$
当前 minimum 为：
$$
m_k=\min(R_1,\dots,R_k).  
$$
如果：
$$
m_k<C_c,  
$$
那么即使后面 episodes 表现很好，最终 minimum 也不可能超过 checkpoint：
$$
\min(R_1,\dots,R_k,R_{k+1},\dots,R_m)  
\le m_k<C_c.  
$$
因此，可以提前停止 assessment，恢复训练。

这就是原文中：

> extra assessment episodes do not need to be wasted on poorly performing policies

的数学原因。

---

## 8. 为什么 assessment length 要变化？

使用较多 assessment episodes 的优点是评价更可靠：
$$
m \uparrow  
\Rightarrow  
C(\pi)\text{ 更稳定}.  
$$

但缺点是早期训练会变慢。

训练早期策略变化快、数据覆盖不足。如果长时间冻结策略：
$$
\pi_{\text{old}}  
$$
让它连续探索许多 episodes，则可能产生两个问题：

- 第一，数据多样性降低。因为很多数据来自同一个 stale policy。

- 第二，策略更新反馈延迟。收集完许多 episodes 之后才训练，早期学习速度下降。

因此 TD7 使用 variable assessment length：

$$
\text{早期少量 assessment episodes}  
$$
$$
\text{后期更多 assessment episodes}  
$$
其设计逻辑是：
$$
\boxed{  
\text{早期重视学习速度}  
}  
$$
$$
\boxed{  
\text{后期重视策略评估稳定性}  
}  
$$
---

## 9. TD7 的组成

原文说：
$$
\text{TD7}=\text{TD3}+4\text{ additions}.  
$$
四个 additions 是：
$$
\text{SALE}  
$$
$$
\text{policy checkpoints}  
$$
$$
\text{LAP}  
$$
$$
\text{offline behavior cloning term}  
$$
因此，TD7 不是只加一个表征学习模块，而是一个组合算法。

其中：

- SALE 解决 representation quality；
    
- checkpoints 解决 policy selection stability；
    
- LAP 改变 replay sampling；
    
- BC term 处理 offline setting 中策略偏离数据的问题。
    

---

## 10. LAP 的作用

LAP 是一种优先经验回放。普通 replay buffer 均匀采样：

$$
p(i)=\frac{1}{|\mathcal D|}.  
$$

LAP 根据 TD error 大小调整采样概率：
$$
p(i)
=
\frac{  
\max(|\delta(i)|^\alpha,1)  
}{  
\sum_{j\in\mathcal D}\max(|\delta(j)|^\alpha,1)  
}.  
$$
其中：
$$
\delta(i)=Q(s,a)-y.  
$$
($\delta(i)$) 越大，说明当前 value estimate 与 target 差异越大，该样本可能包含更多学习信号。

因此：
$$
|\delta(i)| \uparrow  
\Rightarrow  
p(i)\uparrow.  
$$
但由于使用：
$$
\max(|\delta(i)|^\alpha,1),  
$$

即使 TD error 很小，样本优先级也至少为 1。这避免某些样本被完全忽略。

---

## 11. 超参数 ($\alpha$) 的作用

$$
\alpha  
$$


控制优先采样强度。

如果：

$$
\alpha=0,  
$$


则：


$$
|\delta(i)|^\alpha=1,  
$$
于是所有样本概率相近，接近均匀采样。

如果：

[  
$$
\alpha>0,  
$$
]

TD error 较大的样本获得更高采样概率。

如果 ($\alpha$) 越大，采样越偏向高 TD-error 样本。

因此：
$$
\boxed{  
\alpha \text{ 越大，优先级越强}  
}  
$$
$$
\boxed{  
\alpha \text{ 越小，越接近均匀采样}  
}  
$$


---

## 12. 为什么用 Huber loss，而不是 MSE？

MSE 为：


$$
\mathcal L_{\text{MSE}}(\delta)=\delta^2.  
$$


当 TD error 很大时，梯度为：


$$
2\delta,  
$$

可能导致异常大的更新。

Huber loss 在误差小时像 MSE，误差大时像 L1 loss。典型形式为：


$$
\mathcal L_{\kappa}(\delta)=
\begin{cases}  
\frac{1}{2}\delta^2, & |\delta|\le \kappa,\\  
\kappa(|\delta|-\frac{1}{2}\kappa), & |\delta|>\kappa.  
\end{cases}  
$$


其作用是：
$$
\boxed{  
\text{保留小误差区域的平滑二次优化性质}  
}  
$$
$$
\boxed{  
\text{限制大误差样本造成的过大梯度}  
}  
$$

在深度 RL 中，TD target 本身可能噪声大，Huber loss 通常比 MSE 更稳健。

---

## 13. Offline RL 中为什么加入 behavior cloning term？

offline RL 只能使用固定数据集：

$$
\mathcal D.  
$$

策略不能继续与环境交互。如果 actor 通过最大化 critic 选择数据集中很少出现的动作：

$$
a=\pi(s),  
$$
critic 对这些 out-of-distribution actions 的估计可能不可靠。

因此，需要约束策略不要过度偏离数据动作：

$$
\pi(s)\approx a,\qquad (s,a)\sim\mathcal D.  
$$


这就是 behavior cloning term 的作用。

式（11）中：
$$
Q(s,\pi(s))  
$$
鼓励策略选择 critic 认为价值高的动作；
$$
(\pi(s)-a)^2  
$$
惩罚策略动作偏离数据动作。

所以式（11）是一个折中：
$$
\boxed{  
\text{追求高 }Q  
}  
$$
同时：
$$
\boxed{  
\text{保持接近数据行为}  
}  
$$

这种做法受到 TD3+BC 启发；TD3+BC 的核心思路正是在离线 actor update 中加入行为克隆约束，使策略不会过度利用数据外动作上的错误 Q 值。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## 14. 式（11）的逐项解释

式（11）为：
$$
\pi  
\approx  
\arg\max_{\pi}  
\mathbb E_{(s,a)\sim\mathcal D}  
\left[  
Q(s,\pi(s))
-
\lambda  
\left|  
\mathbb E_{s\sim\mathcal D}  
[  
Q(s,\pi(s))  
]  
\right|_{\times}  
(\pi(s)-a)^2  
\right].  
$$
第一项：
$$
Q(s,\pi(s))  
$$
是 RL 项，鼓励 actor 输出高价值动作。

第二项：
$$
\lambda  
\left|  
\mathbb E_{s\sim\mathcal D}  
[  
Q(s,\pi(s))  
]  
\right|_{\times}  
(\pi(s)-a)^2  
$$
是 **behavior cloning penalty**。

其中：
$$
(\pi(s)-a)^2  
$$
表示策略动作与数据动作之间的平方距离。

$$
\lambda  
$$
控制 BC penalty 强度。
$$
\left|  
\mathbb E_{s\sim\mathcal D}  
[  
Q(s,\pi(s))  
]  
\right|_{\times}  
$$
是一个尺度因子，用来根据当前 Q 值量级调整 BC penalty 的尺度。

stop-gradient：
$$
|\cdot|_{\times}  
$$

表示这个尺度因子只作为数值使用，不通过它反向传播梯度。

---

## 15. 为什么 online setting 中 ($\lambda=0$)？

online RL 可以继续收集环境反馈。若策略选择了陌生动作：
$$
a=\pi(s),  
$$
环境会返回真实：
$$
r,s'.  
$$
因此，错误估计有机会被新数据修正。

offline RL 没有这种修正机会，所以需要 BC penalty 约束策略靠近数据动作。

所以：
$$
\lambda=0  
$$
时，式（11）退化为普通 actor update：
$$
\max_\pi  
\mathbb E_{s\sim\mathcal D}  
[  
Q(s,\pi(s))  
].  
$$
这对应 online setting。

offline setting 中：
$$
\lambda>0,  
$$
此时策略更新同时包含价值最大化和行为克隆约束。

---

## 16. 为什么 offline setting 不使用 checkpoints？

**checkpoints 需要 assessment episodes。assessment episodes 意味着当前策略要与环境交互，获得真实 episode return。**

但 offline RL 的定义是：
$$
\text{不能与环境交互}  
$$

只能使用固定数据集：
$$
\mathcal D.  
$$
因此没有在线 assessment episodes，也就无法可靠判断：
$$
\pi_{\text{current}}  
\text{ 是否优于 }  
\pi_c.  
$$
所以原文说：
$$
\boxed{  
\text{Checkpoints are not used in the offline setting}  
}  
$$
原因不是 checkpoint 思想无意义，而是 offline setting 缺少环境交互反馈。

---

## 17. “Both value function and policy use SALE embeddings” 的含义

虽然式（10）和式（11）为了简洁写成：

$$
Q(s,a)  
$$
和：
$$
\pi(s),  
$$


但实际 TD7 中输入是增强形式。

价值函数实际使用：


$$
Q(z_{sa},z_s,s,a).  
$$


策略实际使用：
$$
\pi(z_s,s).  
$$
其中：
$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a).  
$$
因此，TD7 的 critic 不只是评价原始状态—动作对，而是评价由 SALE 表征增强后的状态—动作对。

---

## 18. Algorithm 1 的整体训练流程

Algorithm 1 可以分成四个阶段。

### 18.1 初始化阶段

初始化当前网络：
$$
\pi_{t+1},Q_{t+1},f_{t+1},g_{t+1}.  
$$
初始化 target 网络：
$$
\pi_t,Q_t.  
$$
初始化 fixed encoders：
$$
f_t,g_t.  
$$
初始化 target fixed encoders：
$$
f_{t-1},g_{t-1}.  
$$
初始化 checkpoint 网络：
$$
\pi_c,f_c.  
$$
这些多个版本的网络是为了同时支持：
$$
\text{当前训练}  
$$
$$
\text{target backup}  
$$
$$
\text{固定嵌入}  
$$
$$
\text{checkpoint evaluation}  
$$

---

### 18.2 数据收集阶段

使用当前策略：

$$
\pi_{t+1}  
$$

收集 transition：
$$
(s,a,r,s').  
$$
这些数据进入 LAP replay buffer。

与普通 off-policy RL 不同，数据收集可能持续若干 assessment episodes，然后再集中训练。

---

### 18.3 checkpoint 阶段

如果满足 checkpoint condition，则比较：
$$
\pi_{t+1}  
$$
和：


$$
\pi_c.  
$$

如果当前 actor 更好，则更新：


$$
\pi_c\leftarrow\pi_{t+1}.  
$$


同时更新 checkpoint encoder：


$$
f_c\leftarrow f_t.  
$$


这里需要保存 ($f_c$)，因为 checkpoint policy 的输入包含状态嵌入：

$$
\pi_c(f_c(s),s).  
$$

如果只保存 actor，不保存对应 encoder，测试时输入表征可能不一致。

---

### 18.4 训练阶段

训练阶段重复：

$$
\text{timesteps-since-training}  
$$
次。也就是说，自上次训练以来收集了多少环境步，就补多少梯度步。

每次训练包括：

1. 从 LAP replay buffer 按优先级采样；
    
2. 用式（2）训练 SALE encoder；
    
3. 用式（6）和式（9）训练 value function；
    
4. 用式（11）训练 policy；
    
5. 按 target update frequency 更新 target networks。
    

因此，TD7 仍然保持 off-policy replay learning 的基本结构，只是改变了采样、输入表征、策略选择和 offline 约束。

---

# 第三部分：几个关键概念的精确区分

## 1. assessment episode 与 evaluation episode

assessment episode：
$$
\text{训练期间用于判断是否更新 checkpoint 的 episode}  
$$
$$
evaluation\ episode：
$$
$$
\text{测试或报告性能时使用的 episode}  
$$
assessment episode 仍然属于训练过程，产生的数据可以进入 replay buffer。

evaluation episode 通常不用于训练，只用于最终性能报告。

---

## 2. current policy 与 checkpoint policy

current policy：
$$
\pi_{t+1}  
$$
是当前正在训练和用于数据收集的策略。

checkpoint policy：

$$
\pi_c  
$$
是训练过程中保存的历史较优策略。

训练时可能继续使用 current policy 探索和更新；测试时使用 checkpoint policy。

---

## 3. online TD7 与 offline TD7

online setting 中：
$$
\lambda=0  
$$

使用 policy checkpoints，因为可以与环境交互获得 assessment return。

offline setting 中：
$$
\lambda>0  
$$
使用 behavior cloning term，因为需要约束策略靠近数据动作。

offline setting 不使用 checkpoints，因为没有环境交互，无法运行 assessment episodes。

---

## 4. TD7 中四个新增模块的功能分工

|组件|主要作用|
|---|---|
|SALE|学习状态—动作动力学表征，改善 actor/critic 输入|
|Policy checkpoints|保存训练过程中表现较稳定的策略，避免最终策略退化|
|LAP|根据 TD error 优先采样更有学习信号的 transitions|
|BC term|offline setting 中约束 actor 靠近数据动作，减少数据外动作风险|

---

# 第四部分：核心总结

第 5 节的核心思想是：

$$
\boxed{  
\text{SALE 提供更好的表征，但解耦表征学习和 RL 训练仍然需要稳定化机制}  
}  
$$


因此 TD7 在 TD3 基础上加入：

$$
\text{SALE}  
+  
\text{policy checkpoints}  
+  
\text{LAP}  
+  
\text{offline BC term}.  
$$

其中 policy checkpoint 的本质是：
$$
\boxed{  
\text{训练过程中保存历史表现更好的策略，测试时使用该策略而不是当前策略}  
}  
$$
LAP 的本质是：
$$
\boxed{  
\text{根据 TD error 优先采样更可能有学习价值的 transition}  
}  
$$
offline BC term 的本质是：
$$
\boxed{  
\text{在离线数据上限制策略不要过度偏离数据动作}  
}  
$$
Algorithm 1 可以概括为：

$$
\text{固定当前策略收集数据}  
\rightarrow  
\text{根据 assessment 更新 checkpoint}  
\rightarrow  
\text{按收集步数补足训练更新}  
\rightarrow  
\text{训练 SALE、critic、actor}  
\rightarrow  
\text{周期性更新 target networks}.  
$$


因此，第 5 节不是单纯介绍一个新模块，而是在解决一个整体问题：

$$
\boxed{  
\text{如何在 actor-critic 中稳定地使用解耦状态—动作表征学习}  
}  
$$


---



#  Results

本节在 **在线强化学习** 和 **离线强化学习** 两种设置下评估 TD7 的性能。关于实验设置、baseline 方法和超参数的详细描述，可以在附录中找到；附录中还包含额外的学习曲线和消融实验。

---

## Online

在在线设置中，本文使用 OpenAI Gym，对 MuJoCo 环境上的 TD7 进行基准测试。比较对象包括：

$$
\text{TD3},\quad \text{SAC},\quad \text{TQC},\quad \text{TD3+OFE}.  
$$

其中，SAC 和 TD3+OFE 的结果来自根据作者描述进行的重新实现；TD3 和 TQC 的结果使用作者提供的代码。所有方法都采用一致的评估协议。

学习曲线展示在图 4 中，最终结果和中间结果列在表 1 中。

虽然 TQC 和 TD3+OFE 使用了针对每个环境单独设置的超参数，并且使用了更大、更昂贵的网络结构，但 TD7 在早期性能和最终性能上都显著优于这些 baseline。

这里的早期性能指：
$$
300k \text{ time steps}  
$$
最终性能指：
$$
5M \text{ time steps}.  
$$
在 ($300k$) 时间步时，TD7 通常已经超过 TD3 在 ($5M$) 时间步时的性能，这突出了 TD7 的显著性能提升。TD7 论文摘要中也报告，TD7 相比 TD3 在 OpenAI Gym benchmark 上，在 ($300k$) 和 ($5M$) 时间步分别有 (276.7%) 和 (50.7%) 的平均性能提升。([arXiv](https://arxiv.org/abs/2306.02451?utm_source=chatgpt.com "For SALE: State-Action Representation Learning for Deep Reinforcement Learning"))

---

## Offline

在离线设置中，本文使用 D4RL 中的 MuJoCo 数据集，将 TD7 与以下方法比较：

$$
\text{CQL},\quad \text{TD3+BC},\quad \text{IQL},\quad \text{X-QL}.  
$$


虽然有些方法通过对每个数据集单独调超参数来获得更高总分，但本文省略了这些方法，因为这种做法会使直接比较变得困难。

baseline 结果通过重新运行作者提供的代码获得，并且所有方法都使用单一超参数集合和一致的评估协议。最终性能报告在表 2 中。

TD7 优于所有 baseline。由于 TD7 和 TD3+BC 在离线强化学习中采用相同的基本处理方式，因此二者之间显著的性能差距突出了 SALE 在离线设置中的有效性。

---

## Ablation study

图 5 报告了 TD7 各组成部分的消融实验结果，包括：

$$
\text{SALE},\quad \text{checkpoints},\quad \text{LAP}.  
$$
这些组件之间的相互作用在附录 G 中进一步探讨。

---

## Run time

为了理解使用 SALE 和 TD7 算法带来的计算代价，本文在相同计算资源和相同深度学习框架下，对所有在线 baseline 的运行时间进行了基准测试。结果报告在图 6 中。

---

## 7 Conclusion

表征学习通常主要用于基于图像的任务，因为这些任务中的观测大而且没有结构。然而，通过学习考虑状态与动作之间相互作用的嵌入，本文使表征学习能够更广泛地应用于低层状态任务。

本文提出了 SALE，一种通过考虑潜在空间动力学模型来学习状态—动作嵌入的方法。通过广泛的经验评估，本文研究了 SALE 中的多种设计选择。

本文强调，由于使用状态—动作嵌入会增加输入维度，因此存在外推误差风险；但实验表明，可以通过使用已见 value 对 target 进行裁剪来修正这种不稳定性。本文还通过引入 policy checkpoints 进一步增强稳定性。

虽然 SALE 和 policy checkpoints 都是通用技术，可以加入大多数 RL 方法中，但本文将它们与 TD3 以及若干近期改进方法结合起来，提出 TD7 算法。

实验发现，TD7 能够匹配昂贵离线算法的性能，并且在最终性能和早期学习速度上都显著优于现有连续控制方法。

---

# 解释

## 1. Results 这一节要证明什么？

第 6 节的目标不是提出新方法，而是用实验回答三个问题：
$$
\text{TD7 在线强化学习是否更强？}  
$$
$$
\text{TD7 离线强化学习是否也有效？}  
$$
$$
\text{TD7 的性能提升来自哪些组件？}  
$$
因此，实验部分分成四块：
$$
\text{online benchmark}  
$$
$$
\text{offline benchmark}  
$$
$$
\text{ablation study}  
$$
$$
\text{runtime comparison}  
$$
其中 online benchmark 检验 TD7 在主动交互环境中的学习速度和最终性能；offline benchmark 检验 TD7 在固定数据集上的学习能力；ablation study 检验各模块贡献；runtime comparison 检验额外表征学习是否带来不可接受的计算成本。

---

## 2. Online 实验的含义

在线强化学习中，agent 可以持续与环境交互：

$$
\pi_t  
\rightarrow  
\text{collect data}  
\rightarrow  
\text{update}  
\rightarrow  
\pi_{t+1}.  
$$


本文使用 MuJoCo 连续控制任务作为 benchmark。典型任务包括：
$$
\text{HalfCheetah},\quad  
\text{Hopper},\quad  
\text{Walker2d},\quad  
\text{Ant},\quad  
\text{Humanoid}.  
$$
这些任务的共同特征是：
$$
\mathcal A \subseteq \mathbb R^m  
$$
即动作空间连续；状态通常是低维物理量，例如位置、速度、关节角、接触信息等。

TD7 的核心论点是：即使状态已经是低维向量，仍然可以通过状态—动作表征学习提升连续控制性能。

因此，online 实验直接检验 SALE 的主张：
$$
\boxed{  
\text{低维状态任务也能从 representation learning 中受益}  
}  
$$
---

## 3. 为什么比较 TD3、SAC、TQC、TD3+OFE？

这些 baseline 代表了连续控制中的几类重要方法。

### 3.1 TD3

TD3 是 TD7 的基础算法。比较 TD7 和 TD3，可以衡量 TD7 的新增组件是否真正带来提升。

可以理解为：

$$
\text{TD7} - \text{TD3}  
$$

大致反映 SALE、checkpoints、LAP 等模块的综合贡献。

---

### 3.2 SAC

SAC 是另一类强大的 off-policy continuous control 算法。它使用最大熵目标：
$$
\mathbb E  
\left[  
\sum_t r_t+\alpha \mathcal H(\pi(\cdot\mid s_t))  
\right].  
$$
因此，SAC 不只是最大化回报，还鼓励策略保持较高熵。比较 TD7 和 SAC，可以说明 TD7 相比最大熵 off-policy actor-critic 的优势。

---

### 3.3 TQC

TQC 是一种更强、更复杂的连续控制方法，使用 distributional critic 和 truncation 技术来降低过估计。原文指出 TQC 使用 per-environment hyperparameters 和更大、更昂贵的网络结构。

因此，如果 TD7 在不依赖这些额外复杂性的情况下超过 TQC，就说明 TD7 的表征学习和稳定化机制带来了较强实用价值。

---

### 3.4 TD3+OFE

TD3+OFE 是一个与表征学习更接近的 baseline。OFE/OFENet 也学习 state-action embedding。比较 TD7 和 TD3+OFE，可以更直接说明 SALE 在设计选择上的改进是否有效。

换言之：
$$
\text{TD7 vs TD3}  
$$
检验“是否比基础算法强”；
$$
\text{TD7 vs TD3+OFE}  
$$
检验“是否比已有状态—动作表征方法强”。

---

## 4. early performance 与 final performance 的区别

原文同时强调：

$$
300k \text{ time steps}  
$$
和：
$$
5M \text{ time steps}.  
$$
二者对应不同评价标准。

### 4.1 Early performance

早期性能衡量样本效率：

$$
\text{少量环境交互后能学到多好？}  
$$

如果一个算法在 ($300k$) 时间步表现好，说明它能够更有效地利用样本。

这对真实机器人等场景非常重要，因为环境交互成本很高。

---

### 4.2 Final performance

最终性能衡量充分训练后的最优水平：
$$
\text{训练足够久后能达到多高回报？}  
$$
有些算法早期学得快，但最终性能不高；有些算法早期慢，但最终高。TD7 同时在 early 和 final 上优于 baseline，说明它不仅提升学习速度，也提升收敛后的策略质量。

---

## 5. “300k 的 TD7 通常超过 5M 的 TD3”意味着什么？

这句话非常关键。

它表示：
$$
J_{\text{TD7}}(300k)
=
J_{\text{TD3}}(5M)  
$$
在许多任务中成立。

这不是简单的最终回报提升，而是样本效率数量级上的提升。含义是：TD7 用少得多的环境交互，就能达到甚至超过 TD3 充分训练后的性能。

从机制上看，这支持论文核心观点：
$$
\text{TD3 直接从 }(s,a)\text{ 学 }Q  
$$
而 TD7 通过 SALE 额外学习：
$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
$$
使 critic 和 actor 看到更结构化的输入：
$$
Q(z_{sa},z_s,s,a),  
\qquad  
\pi(z_s,s).  
$$
因此，价值函数不必完全依赖 Bellman target 从零发现动力学结构。

---

## 6. Offline 实验的含义

离线强化学习中，agent 不能继续与环境交互，只能使用固定数据集：

$$
\mathcal D={(s,a,r,s')}.  
$$
这比在线设置更困难，因为策略可能选择数据集中很少出现的动作，而 critic 对这些动作的估计不可靠。

离线 RL 的核心风险是：
$$
\pi(s)\notin \text{support of dataset actions}  
$$
导致：
$$
Q(s,\pi(s))  
$$
成为分布外估计。

因此，offline 实验检验的是：

$$
\boxed{  
\text{SALE 学到的状态—动作表征是否能在固定数据中提升价值学习}  
}  
$$

如果 TD7 在 offline benchmark 上也优于 baseline，说明 SALE 的作用不只是帮助在线探索，也能帮助从已有数据中提取有用的状态—动作结构。

---

## 7. 为什么使用 D4RL MuJoCo 数据集？

D4RL 是离线强化学习常用 benchmark，其中 MuJoCo 数据集提供不同质量、不同覆盖程度的轨迹数据。

常见数据类型包括：
$$
\text{random}  
$$
$$
\text{medium}  
$$
$$
\text{medium-replay}  
$$
$$
\text{medium-expert}  
$$
这些数据集检验算法在不同数据分布下的能力。

例如：

- random 数据覆盖广但质量低；
    
- medium 数据质量中等；
    
- medium-expert 混合了中等策略和专家策略；
    
- medium-replay 包含训练过程中 replay buffer 的轨迹，分布更杂。
    

因此，D4RL 可以测试离线算法是否既能利用高质量数据，又能处理次优或混合数据。

---

## 8. 为什么比较 CQL、TD3+BC、IQL、X-QL？

这些 baseline 代表离线 RL 中不同思想。

### 8.1 CQL

CQL 通过保守化 Q 函数，降低数据外动作的价值估计：
$$
Q(s,a_{\text{OOD}})  
\downarrow.  
$$

核心思想是：不要让 critic 对未知动作过度乐观。

---

### 8.2 TD3+BC

TD3+BC 在 actor update 中加入行为克隆项：
$$
\pi(s)\approx a,\qquad (s,a)\sim\mathcal D.  
$$

核心思想是：让策略在追求高 (Q) 的同时，不要偏离数据动作太远。

---

### 8.3 IQL

IQL 避免直接查询数据外动作的 (Q)，通过 expectile value regression 和 advantage-weighted regression 学习策略。

核心思想是：尽量在数据动作上做价值学习和策略提取，减少 OOD action 问题。

---

### 8.4 X-QL

X-QL 也是较新的 offline RL baseline，属于更强的离线算法比较对象。

因此，TD7 与这些方法比较，能够说明它不仅比简单 TD3+BC 强，也能与专门设计的 offline RL 方法竞争。

---

## 9. 为什么“使用单一超参数集合”很重要？

原文强调：有些方法通过 per-dataset hyperparameters 可以获得更高总分，但本文省略这些方法。

原因是，如果每个数据集都单独调超参数，那么比较会变得不公平或难以解释。

例如，对于 12 个 D4RL 数据集，如果某方法为每个数据集选择最优：
$$
\lambda_1,\lambda_2,\dots,\lambda_{12},  
$$
而另一方法只使用一个固定 ($\lambda$)，那么结果不再只反映算法本身，也反映了调参预算。

因此，本文要求：
$$
\boxed{  
\text{single set of hyperparameters}  
}  
$$
并使用一致评估协议。这使比较更接近“算法默认配置的稳健性”。

---

## 10. “TD7 和 TD3+BC 使用相同 offline RL approach”是什么意思？

原文说：

> Since TD7 and TD3+BC employ the same approach to offline RL, the significant performance gap highlights the effectiveness of SALE in the offline setting.

含义是：在 offline setting 中，TD7 使用与 TD3+BC 类似的行为克隆正则策略更新：


$$
Q(s,\pi(s))
=
\lambda(\pi(s)-a)^2.  
$$

因此，TD7 与 TD3+BC 的差异不主要来自 offline RL 约束形式，而来自 TD7 的其他组件，尤其是 SALE 表征。

如果 TD7 显著优于 TD3+BC，则说明：

$$
\boxed{  
\text{SALE 在固定数据集价值学习中提供了额外收益}  
}  
$$


也就是说，TD7 的提升不仅来自“加了 BC 项”，因为 TD3+BC 也有类似 BC 项；更关键的是状态—动作表征增强了 critic 和 actor 的输入。

---

## 11. Ablation study 的作用

消融实验的目标是把 TD7 拆开，查看每个组件贡献。

TD7 包含：
$$
\text{SALE}  
$$
$$
\text{checkpoints}  
$$
$$
\text{LAP}  
$$
消融实验通常比较：
$$
\text{完整 TD7}  
$$
与：
$$
\text{去掉 SALE}  
$$
$$
\text{去掉 checkpoints}  
$$
$$
\text{去掉 LAP}  
$$
等变体。

如果去掉某个组件后性能显著下降，说明该组件对 TD7 的整体表现有重要贡献。

但原文也指出，组件之间的相互作用在附录 G 中进一步研究。这说明组件贡献不一定是简单相加的。例如：
$$
\text{SALE 改变 critic 输入}  
$$
可能会影响：
$$
\text{LAP 的 TD error 分布}  
$$
也可能影响：
$$
\text{checkpoint 策略选择稳定性}  
$$
所以需要进一步分析组件交互。

---

## 12. Run time 实验的意义

SALE 增加了额外编码器：
$$
f,g,  
$$
并且 critic 和 actor 的输入维度更大。因此，性能提升可能伴随额外计算开销。

runtime 实验要回答：
$$
\boxed{  
\text{TD7 的性能提升是否以过高计算成本为代价？}  
}  
$$
原文说使用相同计算资源和相同深度学习框架比较各在线 baseline，这样可以避免由于硬件、实现框架不同导致的运行时间差异。

这很重要，因为有些 baseline 可能性能强，但使用更大的 ensemble、更复杂网络或更多 gradient updates。TD7 的优势之一是：不依赖大型 ensemble、额外每步更新或 per-environment hyperparameters。

---

# Conclusion 的解释

## 1. 为什么传统表征学习主要用于图像任务？

图像观测通常是：

$$
o\in\mathbb R^{H\times W\times C}.  
$$

维度高、冗余多、结构复杂。因此很自然需要 encoder：

$$
z=f(o).  
$$

而低维状态任务中，状态已经是紧凑向量：
$$
s\in\mathbb R^d.  
$$
例如 MuJoCo 状态可能包含位置、速度、角度等。传统直觉认为这类状态不需要额外表征学习。

论文反驳这个直觉：
$$
\boxed{  
\text{任务难度不只由观测维度决定，也由状态—动作动力学复杂性决定}  
}  
$$
因此，即使 ($s$) 是低维向量，($(s,a)\mapsto s'$) 的结构仍然可能复杂，值得学习表征。

---

## 2. SALE 的贡献

SALE 的核心是：
$$
z_s=f(s),  
$$
$$
z_{sa}=g(z_s,a),  
$$
并通过 latent dynamics 目标训练：
$$
z_{sa}\approx z_{s'}.  
$$
这使得 ($z_{sa}$) 捕捉状态—动作对如何影响未来状态。

因此，SALE 的贡献不是“压缩高维图像”，而是：
$$
\boxed{  
\text{把状态—动作交互编码为可供 actor/critic 使用的特征}  
}  
$$
这拓宽了 representation learning 在 RL 中的适用范围。

---

## 3. 外推误差风险

使用状态—动作嵌入会增加 critic 的动作相关输入维度：
$$
Q(z_{sa},z_s,s,a).  
$$
输入维度增加后，数据覆盖变稀疏，critic 在少见动作上的估计可能更容易失真。

这就是外推误差：
$$
Q(s,a_{\text{rare}})  
$$
可能被估计成不现实的高值或低值。

如果 actor 最大化这个错误值：
$$
\pi(s)=\arg\max_a Q(s,a),  
$$
就可能选择虚假高值动作，导致训练不稳定。

论文提出用已见数据中的 value range 裁剪 target：
$$
\operatorname{clip}  
\left(  
Q(s',a'),  
\min_{\mathcal D}Q(s,a),  
\max_{\mathcal D}Q(s,a)  
\right).  
$$
核心作用是：
$$
\boxed{  
\text{防止 target value 因外推而出现极端值}  
}  
$$
---

## 4. Policy checkpoints 的贡献

RL 训练过程中，当前策略不一定是历史最好策略：
$$
J(\pi_T) < J(\pi_k),\quad k<T.  
$$

policy checkpoint 保存训练期间表现更好的策略：
$$
\pi_c.  
$$
最终 evaluation 使用：
$$
\pi_c  
$$
而不是最后的 current policy。

因此，checkpoint 解决的是：
$$
\boxed{  
\text{策略性能非单调和训练后期退化问题}  
}  
$$
它不改变 Bellman 方程，也不直接改变 actor loss，而是一种策略选择与稳定化机制。

---

## 5. 为什么说 SALE 和 checkpoint 是 general-purpose techniques？

SALE 只要求算法中有状态、动作和下一状态 transition：
$$
(s,a,s').  
$$

大多数 off-policy RL 方法都具备这样的数据。因此 SALE 理论上可以加入多种 actor-critic 框架。

Policy checkpoint 也不依赖某个特定 critic 或 actor objective，只需要能够在训练中评估策略表现。因此它也可以用于多种 RL 方法。

所以原文说：
$$
\boxed{  
\text{SALE 和 policy checkpoints 都是通用技术}  
}  
$$

TD7 只是把它们具体整合到 TD3 框架中。

---

## 6. TD7 的整体结论

TD7 可以概括为：
$$
\text{TD7}
=
\text{TD3}  
+  
\text{SALE}  
+  
\text{policy checkpoints}  
+  
\text{LAP}  
+  
\text{offline BC term}.  
$$

实验结果说明：

1. 在线连续控制中，TD7 早期学习速度更快；
    
2. 在线连续控制中，TD7 最终性能更高；
    
3. 离线 MuJoCo 数据集中，TD7 优于多个强 baseline；
    
4. SALE 在 online 和 offline setting 中都有效；
    
5. checkpoint 和其他稳定化组件进一步提高策略稳定性。
    

最核心结论是：
$$
\boxed{  
\text{状态—动作表征学习可以显著改善低维连续控制任务中的强化学习}  
}  
$$

---

# 第四部分：整体逻辑总结

第 6 节和第 7 节的逻辑可以总结为：
$$
\text{传统 RL 表征学习主要服务图像任务}  
$$
$$
\Downarrow  
$$
$$
\text{本文提出低维状态任务也需要表征学习}  
$$
$$
\Downarrow  
$$
$$
\text{SALE 学习状态—动作嵌入}  
$$
$$
\Downarrow  
$$
$$
\text{TD7 将 SALE 与 TD3、checkpoint、LAP、offline BC 项结合}  
$$
$$
\Downarrow  
$$
$$
\text{在线和离线实验均显示明显性能提升}  
$$
因此，论文最终想表达的是：
$$
\boxed{  
\text{连续控制中的关键表征问题不是“状态是否高维”，而是“状态和动作之间的动力学交互是否被有效建模”。}  
}  
$$

TD7 的实验结果支持了这一点：通过显式学习 state-action embeddings，即使在低维 MuJoCo 状态空间中，也可以显著提升样本效率、最终性能和离线学习能力。


---

# 翻译

## A TD7 Additional Details

## A.1 Algorithm

TD7，即 **TD3 + 4 个附加组件**，包含若干网络和子组件：

- 两个价值函数：
    
$$
Q_{t+1,1},\ Q_{t+1,2}  
$$
- 两个目标价值函数：
    
$$
Q_{t,1},\ Q_{t,2}  
$$
- 一个策略网络：
    
$$
\pi_{t+1}  
$$
- 一个目标策略网络：
    
$$
\pi_t  
$$
- 一个编码器，其子组件为：
    
$$
(f_{t+1},g_{t+1})  
$$
- 一个固定编码器，其子组件为：
    
$$
(f_t,g_t)  
$$
- 一个目标固定编码器，其子组件为：
    
$$
(f_{t-1},g_{t-1})  
$$
- 一个 checkpoint policy：
    
$$
\pi_c  
$$
以及一个 checkpoint encoder：
$$
f_c  
$$
其中不需要 ($g$)。

---

## Encoder

编码器由两个子网络组成：


$$
f_{t+1}(s),\qquad g_{t+1}(z_s,a)  
$$


每个网络输出一个嵌入：


$$
z_s:=f(s),  
\qquad  
z_{sa}:=g(z_s,a).  
\tag{12}  
$$


在每个训练步，编码器使用如下损失更新：


$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|\left|  
g_{t+1}(f_{t+1}(s),a)
-
|f_{t+1}(s')|_{\times}  
\right|\right|_2^2  
\tag{13}  
$$


也即：


$$
\mathcal L(f_{t+1},g_{t+1})
=
 \left|\left|
z^{t+1}_{sa}
-
|z^{t+1}_{s'}|_{\times}  
\right|\right|_2^2.  
\tag{14}  
$$


其中：
$$
|\cdot|_{\times}  
$$

表示 stop-gradient operation，即停止梯度操作。

---

## Value function

TD7 使用一对价值函数：

$$
Q_{t+1,1},\ Q_{t+1,2}.  
$$

这受到 TD3 的启发。每个价值函数的目标输入包含：

$$
[z^{t-1}_{s'a'}, z^{t-1}_{s'}, s', a'].  
$$

在每个训练步，两个价值函数都使用如下损失更新：


$$
\mathcal L(Q_{t+1})  
:=  
\operatorname{Huber}  
\left(  
\text{target}
-
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\right).  
\tag{15}  
$$

其中 target 定义为：


$$
\text{target}  
:=  
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},  
Q_{\max}  
\right),  
\tag{16}  
$$


并且：
$$
x:=[z^{t-1}_{s'a'}, z^{t-1}_{s'}, s', a'],  
\tag{17}  
$$
$$
a':=\pi_t(z^{t-1}_{s'},s')+\epsilon,  
\tag{18}  
$$
$$
\epsilon\sim  
\operatorname{clip}  
\left(  
\mathcal N(0,\sigma^2),  
-c,  
c  
\right).  
\tag{19}  
$$

对两个价值函数取最小值，来自 TD3 的 **Clipped Double Q-learning，CDQ**。使用 Huber loss 则与使用 LAP 经验回放的 TD3 保持一致。

动作 (a') 的采样和裁剪方式与 TD3 相同。两个价值函数使用相同的嵌入：

$$
(z^t_{sa},z^t_s).  
$$
($Q_{\min}$) 和 ($Q_{\max}$) 在每个时间步更新：


$$
Q_{\min}  
\leftarrow  
\min(Q_{\min},\text{target}),  
\tag{20}  
$$
$$
Q_{\max}  
\leftarrow  
\max(Q_{\max},\text{target}),  
\tag{21}  
$$


其中 target 由式（16）定义。

---

## Policy

TD7 使用单个策略网络，其输入为：

$$
[z_s,s].  
$$

按照 TD3 的 delayed policy updates，每隔两个训练步更新一次策略 ($\pi_{t+1}$)。策略使用如下损失更新：
$$
\mathcal L(\pi_{t+1})  
:=
-
Q  
+  
\lambda  
\left|  
\mathbb E_{s\sim \mathcal D}[Q]  
\right|_{\times}  
(a_\pi-a)^2.  
\tag{22}  
$$
其中：
$$
Q:=0.5\left(Q_{t+1,1}(x)+Q_{t+1,2}(x)\right),  
\tag{23}  
$$
$$
x:=[z^t_{sa_\pi},z^t_s,s,a_\pi],  
\tag{24}  
$$
$$
a_\pi:=\pi_{t+1}(z^t_s,s).  
\tag{25}  
$$

该 policy loss 是 deterministic policy gradient，DPG，加上一个用于正则化的 behavior cloning term。在线强化学习中：
$$
\lambda=0.  
$$

---

每经过：

$$
\text{target\_update\_frequency}=250  
$$

个训练步，就更新一次迭代索引，并且每个 target network 或 fixed network 都复制更高一层迭代的网络：
$$
(Q_{t,1},Q_{t,2})  
\leftarrow  
(Q_{t+1,1},Q_{t+1,2}),  
\tag{26}  
$$
$$
\pi_t\leftarrow\pi_{t+1},  
\tag{27}  
$$
$$
(f_{t-1},g_{t-1})  
\leftarrow  
(f_t,g_t),  
\tag{28}  
$$
$$
(f_t,g_t)  
\leftarrow  
(f_{t+1},g_{t+1}).  
\tag{29}  
$$
checkpoint policy 和 checkpoint encoder 只在测试时使用，见附录 F。

---

## LAP

收集到的经验被存储在 replay buffer 中，并根据 LAP 采样。LAP 是一种 prioritized replay buffer。

对于 transition tuple：
$$
i:=(s,a,r,s')  
$$
其采样概率为：
$$
p(i)
=
\frac{  
\max(|\delta(i)|^\alpha,1)  
}{  
\sum_{j\in\mathcal D}  
\max(|\delta(j)|^\alpha,1)  
}.  
\tag{30}  
$$
其中：
$$
|\delta(i)|  
:=  
\max  
\left(  
\left|  
Q_{t+1,1}(z^t_{sa},z^t_s,s,a)-\text{target}  
\right|,  
\left|  
Q_{t+1,2}(z^t_{sa},z^t_s,s,a)-\text{target}  
\right|  
\right).  
\tag{31}  
$$

target 由式（16）定义。

按照 Fujimoto 等人的建议，($|\delta(i)|$) 被定义为两个价值函数中最大绝对误差。优先级强度由超参数：
$$
\alpha  
$$
控制。新的 transition 会被赋予 replay buffer 中任意样本的最大优先级。

本文在 Algorithm 2 中概述了 TD7 的 train function。online TD7 和 offline TD7 的 train function 没有区别，唯一不同是 ($\lambda$) 的取值：online 中为 0，offline 中为 0.1。

---
## A.2 Hyperparameters

动作空间假设在范围：
$$
[-1,1]  
$$
内；如果不是，则会被归一化到该范围。

除下面提到的一些例外之外，超参数和网络架构直接取自 TD3。

---
## Table 3：TD7 超参数

### TD3 相关超参数

| 超参数                                | 数值                      |
| ---------------------------------- | ----------------------- |
| Target policy noise ($\sigma$)     | ($\mathcal N(0,0.2^2)$) |
| Target policy noise clipping ($c$) | ($(-0.5,0.5)$)          |
| Policy update frequency            | 2                       |

---

### LAP 相关超参数

| 超参数                              | 数值  |
| -------------------------------- | --- |
| Probability smoothing ($\alpha$) | 0.4 |
| Minimum priority                 | 1   |

---

### TD3+BC 相关超参数

| 超参数                                         | 数值  |
| ------------------------------------------- | --- |
| Behavior cloning weight ($\lambda$)，online  | 0.0 |
| Behavior cloning weight ($\lambda$)，offline | 0.1 |

---

### Policy Checkpoints 相关超参数

|超参数|数值|
|---|---|
|Checkpoint criteria|minimum|
|Early assessment episodes|1|
|Late assessment episodes|20|
|Early time steps|750k|
|Criteria reset weight|0.9|

---

### Exploration 相关超参数

| 超参数                                   | 数值                      |
| ------------------------------------- | ----------------------- |
| Initial random exploration time steps | 25k                     |
| Exploration noise                     | ($\mathcal N(0,0.1^2)$) |

---

### 通用超参数

| 超参数                        | 数值   |
| -------------------------- | ---- |
| Discount factor ($\gamma$) | 0.99 |
| Replay buffer capacity     | 1M   |
| Mini-batch size            | 256  |
| Target update frequency    | 250  |

---

### Optimizer 相关超参数

| 超参数           | 数值                  |
| ------------- | ------------------- |
| Optimizer     | Adam                |
| Learning rate | ($3\times 10^{-4}$) |

---

除算法层面不同于 TD3 之外，还有三个实现层面的变化：

1. 更新 policy 时，不是只使用 ($Q_1$)，而是同时使用两个价值函数，即式（22）。
    
2. value function 使用 ELU 激活函数，而不是 ReLU 激活函数。
    
3. target network 不是每个时间步使用指数滑动平均更新，而是每 250 个时间步周期性更新一次。由于使用 fixed encoders，这一改变是必要的。
    

这些变化的重要性在附录 G 的消融实验中评估。网络架构细节见 Pseudocode 1。

---

## Algorithm 2 TD7 Train Function

1. 根据式（30）中的概率，从 LAP replay buffer 中采样 transition。
    
2. 根据式（13）训练 encoder。
    
3. 根据式（15）训练 value function。
    
4. 根据式（20）和式（21）更新：
    
$$
Q_{\min},Q_{\max}.  
$$


5. 如果：
    


$$
i \bmod \text{policy\_update\_frequency}=0,  
$$
则根据式（22）训练 policy。

6. 如果：
    
$$
i \bmod \text{target\_update\_frequency}=0,  
$$
则根据式（26）更新 target networks。

---

# 第二部分：解释

## 1. 这段附录的作用

这段附录是在主文 TD7 描述基础上，给出更精确的实现细节。主文中为了简洁，很多公式省略了双 critic、target policy smoothing、Huber loss、LAP priority、网络版本索引等内容。

附录 A.1 的核心问题是：
$$
\boxed{  
\text{TD7 训练一步到底更新哪些网络？目标值如何构造？采样优先级如何计算？}  
}  
$$
附录 A.2 的核心问题是：
$$
\boxed{  
\text{TD7 使用哪些超参数？哪些地方与原始 TD3 实现不同？}  
}  
$$
---

# 2. TD7 为什么有这么多网络版本？

TD7 中有三类网络版本：
$$
t+1,\quad t,\quad t-1.  
$$
它们不是时间步状态，而是网络版本索引。

可以粗略理解为：
$$
t+1:  
\text{当前正在训练的网络}  
$$
$$
t:  
\text{当前 actor/critic 使用的固定或目标版本}  
$$
$$
t-1:  
\text{target backup 中使用的更旧固定编码器}  
$$

具体来说：

| 网络                      | 含义                                    |
| ----------------------- | ------------------------------------- |
| ($Q_{t+1,1},Q_{t+1,2}$) | 当前正在训练的两个 critic                      |
| ($Q_{t,1},Q_{t,2}$)     | 目标 critic，用于 Bellman target           |
| ($\pi_{t+1}$)           | 当前正在训练的 actor                         |
| ($\pi_t$)               | 目标 actor，用于 target action             |
| ($f_{t+1},g_{t+1}$)     | 当前正在训练的 encoder                       |
| ($f_t,g_t$)             | fixed encoder，用于当前 critic/actor 输入    |
| ($f_{t-1},g_{t-1}$)     | target fixed encoder，用于 target backup |
| ($\pi_c,f_c$)           | checkpoint policy 与其状态 encoder，用于测试   |

TD7 需要多个版本，是因为它同时引入了：
$$
\text{target network}  
$$
$$
\text{fixed embeddings}  
$$
$$
\text{checkpoint policy}  
$$
如果只保留一套网络，那么 encoder 每步变化会使 critic 输入不断变化，target 也会不稳定。

---

# 3. 为什么 checkpoint 只需要 ($f_c$)，不需要 ($g_c$)？

checkpoint policy 在测试时只需要根据状态输出动作：

  
$$
a=\pi_c(z_s,s).  
$$

其中：


$$
z_s=f_c(s).  
$$


policy 不需要输入动作 (a)，因此不需要状态—动作嵌入：
$$
z_{sa}=g(z_s,a).  
$$
($g$) 主要服务于 critic，因为 critic 需要评价状态—动作对：
$$
Q(z_{sa},z_s,s,a).  
$$
测试时若只执行 policy，不评估 critic，则 checkpoint 只需：
$$
\pi_c,\quad f_c.  
$$
所以原文说：
$$
\boxed{  
g \text{ is not needed}  
}  
$$
---

# 4. Encoder loss 的机制

编码器损失为：
$$
\mathcal L(f_{t+1},g_{t+1})
=
 \left|  \left| 
g_{t+1}(f_{t+1}(s),a)
-
|f_{t+1}(s')|_{\times}  \right|
\right|_2^2.  
$$
定义：
$$
z^{t+1}_s=f_{t+1}(s),  
$$
$$
z^{t+1}_{sa}=g_{t+1}(z^{t+1}_s,a),  
$$
$$
z^{t+1}_{s'}=f_{t+1}(s').  
$$
则损失是：
$$
||z^{t+1}_{sa}-|z^{t+1}_{s'}|_{\times}||^2.  
$$
含义是：
$$
\boxed{  
\text{状态—动作嵌入要预测下一状态嵌入}  
}  
$$
它在 latent space 中学习：

$$
(s,a)\rightarrow s'  
$$

的动力学结构。

---

# 5. stop-gradient 的精确作用

式中：
$$
|z^{t+1}_{s'}|_{\times}  
$$
表示停止梯度。也就是说，计算 encoder loss 时，目标端 (f_{t+1}(s')) 被当作常量。

梯度主要推动：


$$
g_{t+1}(f_{t+1}(s),a)  
$$


接近：

$$
f_{t+1}(s').  
$$

不让目标端同时被同一个损失任意拉动，可以降低表示塌缩或目标漂移风险。

注意，这并不表示 ($f_{t+1}$) 完全不更新。因为 ($f_{t+1}$) 还出现在预测端：

$$
g_{t+1}(f_{t+1}(s),a)  
$$

所以 ($f_{t+1}(s)$) 这一路径仍然接收梯度；只是 ($f_{t+1}(s')$) 这一路径不接收梯度。

---

# 6. Value function：双 critic 的作用

TD7 使用两个 critic：
$$
Q_{t+1,1},Q_{t+1,2}.  
$$
target 中使用：

$$
\min(Q_{t,1}(x),Q_{t,2}(x)).  
$$

这是 TD3 的 Clipped Double Q-learning。其目的是降低过估计偏差。

如果一个 critic 对某个动作过估计，另一个 critic 不一定同样过估计。取较小值：

$$
\min(Q_1,Q_2)  
$$

可以抑制由于最大化操作和函数近似误差导致的虚高 target。

因此 target 为：
$$
\text{target}
=
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},  
Q_{\max}  
\right).  
$$

这里包含两层稳定化：

$$
\min(Q_{t,1},Q_{t,2})  
$$

用于抑制双 critic 过估计；
$$
\operatorname{clip}(\cdot,Q_{\min},Q_{\max})  
$$

用于限制外推导致的异常值。

---

# 7. target 输入 ($x$) 的组成

target critic 的输入是：
$$
x=[z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'].  
$$
各项含义如下：
$$
s'  
$$
是下一状态；

$$
a'  
$$

是目标策略在下一状态下产生的动作，并加上平滑噪声；
$$
z^{t-1}_{s'}
=
f_{t-1}(s')  
$$
是 target fixed encoder 产生的下一状态嵌入；
$$
z^{t-1}_{s'a'}
=
g_{t-1}(z^{t-1}_{s'},a')  
$$

是 target fixed encoder 产生的下一状态—动作嵌入。

所以 target critic 估计的是：
$$
Q_t(z^{t-1}_{s'a'},z^{t-1}_{s'},s',a').  
$$
使用 ($t-1$) 版本的 encoder，是为了使 target backup 的输入表征也保持稳定。

---

# 8. target policy smoothing 的作用

目标动作定义为：
$$
a'=\pi_t(z^{t-1}_{s'},s')+\epsilon,  
$$
$$
\epsilon\sim  
\operatorname{clip}  
(\mathcal N(0,\sigma^2),-c,c).  
$$
这是 TD3 的 target policy smoothing。

其作用是避免 critic 在某些狭窄动作区域产生尖锐虚高值，并被 actor 或 target backup 过度利用。

如果没有平滑，target 使用：
$$
Q(s',\pi_t(s')).  
$$
如果 ($Q$) 在某个动作点存在尖峰误差，target 会直接使用该值。

加入噪声后，target 更接近局部动作邻域的平滑估计：
$$
Q(s',\pi_t(s')+\epsilon).  
$$
噪声又被裁剪到：
$$
[-c,c]  
$$

避免扰动过大。

在 TD7 中：
$$
\sigma=0.2,  
\qquad  
c=0.5.  
$$
---

# 9. Huber loss 为什么用于 critic？

critic 损失为：
$$
\operatorname{Huber}  
(\text{target}-Q_{t+1}(\cdot)).  
$$
若误差为：

$$
\delta=\text{target}-Q.  
$$
MSE 损失为：
$$
\delta^2,  
$$

大误差会产生很大梯度。

Huber loss 在小误差区域像 MSE，在大误差区域像 L1 loss：
$$
\mathcal L_{\kappa}(\delta)
=
\begin{cases}  
\frac{1}{2}\delta^2, & |\delta|\le \kappa,\\  
\kappa(|\delta|-\frac{1}{2}\kappa), & |\delta|>\kappa.  
\end{cases}  
$$
这使 critic 对异常 target 或高 TD-error 样本更稳健。

由于 TD7 使用 LAP 优先采样高 TD-error transition，critic 更容易看到大误差样本。因此用 Huber loss 限制大误差梯度是合理的。

---

# 10. ($Q_{\min},Q_{\max}$) 的作用

TD7 使用：
$$
Q_{\min},Q_{\max}  
$$
作为 value clipping 范围。

target 中：
$$
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},  
Q_{\max}  
\right)  
$$

会把下一状态 value 限制在已追踪到的取值范围内。

然后每个时间步更新：
$$
Q_{\min}\leftarrow \min(Q_{\min},\text{target}),  
$$
$$
Q_{\max}\leftarrow \max(Q_{\max},\text{target}).  
$$
需要注意一个细节：式（16）中的 clipping 使用的是更新前已有的 ($Q_{\min},Q_{\max}$)，随后用新 target 更新范围。这样形成一个随训练逐渐扩展或调整的 observed target range。

其目的不是精确估计全局最小最大 ($Q$)，而是防止 target 由于外推误差突然变成极端值。

---

# 11. Policy loss 的结构

策略损失为：
$$
\mathcal L(\pi_{t+1})
=
-Q  
+  
\lambda  
\left|  
\mathbb E_{s\sim\mathcal D}[Q]  
\right|_{\times}  
(a_\pi-a)^2.  
$$

由于优化时通常最小化 loss，所以第一项：
$$
-Q  
$$

等价于最大化：
$$
Q.  
$$

第二项是 behavior cloning 正则：
$$
(a_\pi-a)^2.  
$$
它惩罚当前策略动作：
$$
a_\pi=\pi_{t+1}(z^t_s,s)  
$$

偏离 replay buffer 中的数据动作 (a)。

因此 policy update 同时包含：
$$
\text{价值最大化}  
$$
和：
$$
\text{行为克隆约束}.  
$$
在线 RL 中：
$$
\lambda=0,  
$$
所以只剩：
$$
\mathcal L(\pi)=-Q.  
$$
离线 RL 中：
$$
\lambda=0.1,  
$$
所以策略会被约束在数据动作附近。

---

# 12. 为什么 policy update 使用两个 critic 的平均？

式（23）：
$$
Q=0.5(Q_{t+1,1}(x)+Q_{t+1,2}(x)).  
$$
TD3 原始实现中，policy update 通常只用第一个 critic：

$$
Q_1(s,\pi(s)).  
$$
TD7 这里使用两个 critic 的平均。

这有两个可能作用：

1. 减少单个 critic 的偶然误差对 actor 更新的影响；
    
2. 让 actor 接收到两个 critic 的综合梯度，而不是完全依赖 ($Q_1$)。
    
这与 target 中使用 ($\min(Q_1,Q_2)$) 不同。

target 使用最小值是为了保守地构造 Bellman target；actor update 使用平均值是为了利用两个 critic 的信息产生更平滑的策略梯度。

---

# 13. 为什么 policy 每两步更新一次？

TD7 继承 TD3 的 delayed policy updates：
$$
\text{policy\_update\_frequency}=2.  
$$
也就是说，每训练 critic 两次，训练 actor 一次。

原因是 critic 需要先相对充分地拟合当前 Bellman target，然后 actor 再根据 critic 更新。如果 actor 更新太频繁，可能会追逐还不准确的 critic，导致不稳定。

因此 delayed update 的思想是：
$$
\boxed{  
\text{critic 学得稍微稳一些，再更新 actor}  
}  
$$

---

# 14. target networks 为什么每 250 步周期性复制？

原始 TD3 通常使用 Polyak averaging：


$$
\theta_{\text{target}}  
\leftarrow  
\tau\theta  
+  
(1-\tau)\theta_{\text{target}}.  
$$


也就是每一步进行指数滑动平均。

TD7 改为每 250 步硬更新一次：

$$
Q_t\leftarrow Q_{t+1},  
$$

$$
\pi_t\leftarrow\pi_{t+1}.  
$$

编码器也同时更新：

$$
(f_{t-1},g_{t-1})\leftarrow(f_t,g_t),  
$$
$$
(f_t,g_t)\leftarrow(f_{t+1},g_{t+1}).  
$$


原因是 TD7 使用 fixed encoders。如果 target networks 每一步用 EMA (指数移动平均)变化，那么 encoder 表示也会连续漂移，fixed embeddings 的稳定性被削弱。

周期性硬更新可以让一段训练期间内 target 和 fixed encoder 保持不变，从而减少输入非平稳性。

---

# 15. LAP 采样概率的含义

LAP 中样本 (i) 的采样概率为：


$$
p(i)
=
\frac{  
\max(|\delta(i)|^\alpha,1)  
}{  
\sum_{j\in\mathcal D}  
\max(|\delta(j)|^\alpha,1)  
}.  
$$


其中 ($|\delta(i)|$) 是 transition 的 TD error 大小。

如果某样本 TD error 大：
$$
|\delta(i)|\uparrow,  
$$
则：
$$
p(i)\uparrow.  
$$
这表示 TD7 更频繁采样当前预测误差大的 transition。
但通过：

$$
\max(|\delta(i)|^\alpha,1)  
$$
引入 minimum priority 1，保证低误差样本也不会完全没有采样概率。

---

# 16. 为什么 ($|\delta(i)|$) 取两个 critic 误差的最大值？

TD7 定义：
$$
|\delta(i)|
=
\max  
\left(  
|Q_1-\text{target}|,  
|Q_2-\text{target}|  
\right).  
$$

原因是只要任意一个 critic 对该样本误差很大，该样本就仍然值得学习。

如果使用平均误差，可能出现：

$$
Q_1 \text{ 误差很大},\quad Q_2 \text{ 误差很小}  
$$

但平均后优先级被削弱。

取最大值可以确保两个 critic 中任何一个尚未学好的样本都被更频繁采样。

---

# 17. 新 transition 为什么给最大优先级？

新 transition 刚进入 replay buffer 时，尚未被充分训练，TD error 也可能还没有可靠估计。

将新 transition 赋予最大优先级，可以保证新数据尽快被采样和学习。

这对在线 RL 尤其重要，因为最新数据来自当前或近期策略，能反映当前策略正在访问的状态—动作分布。

---

# 18. online TD7 与 offline TD7 的 train function 为什么几乎相同？

原文说 train function 唯一区别是：
$$
\lambda  
$$
online：
$$
\lambda=0.  
$$
offline：
$$
\lambda=0.1.  
$$
原因是 TD7 将 offline RL 的特殊处理集中在 policy loss 的 behavior cloning term 上。
online 中，策略可以通过环境反馈修正错误动作，所以不强制靠近数据动作。
offline 中，不能与环境交互，策略若偏离数据动作，critic 对这些动作可能不可靠。因此加入：
$$
(a_\pi-a)^2  
$$
正则项。
除此之外，encoder、critic、LAP、target update 等训练流程保持一致。

---

# 19. 超参数表的含义

## 19.1 TD3 超参数

### Target policy noise

$$
\epsilon\sim\mathcal N(0,0.2^2)  
$$
用于 target policy smoothing：
$$
a'=\pi_t(s')+\epsilon.  
$$
### Noise clipping

$$
\epsilon\in[-0.5,0.5].  
$$
避免 target action 扰动过大。

### Policy update frequency

$$
2  
$$

表示每两个 critic update 更新一次 actor。

---

## 19.2 LAP 超参数

### Probability smoothing
$$
\alpha=0.4.  
$$
控制优先采样强度。若 ($\alpha=0$)，接近均匀采样；($\alpha$) 越大，高 TD-error 样本越容易被采样。
### Minimum priority
$$
1.  
$$
保证所有样本都有基本采样概率。

---

## 19.3 Behavior cloning weight

online：
$$
\lambda=0.  
$$
offline：
$$
\lambda=0.1.  
$$
表示 online 不使用 BC 约束，offline 使用一定强度的 BC 约束。

---

## 19.4 Policy checkpoint 超参数

### Checkpoint criteria

$$
\text{minimum}  
$$
使用 assessment episodes 中的最低回报作为策略表现指标。

### Early assessment episodes
$$
1  
$$
早期只用一个 episode 评估策略，避免阻碍早期学习。

### Late assessment episodes
$$
20  
$$
后期用更多 episodes 评估策略，提升 checkpoint 选择可靠性。

### Early time steps
$$
750k  
$$

前 750k 时间步属于 early phase。
### Criteria reset weight
$$
0.9  
$$

从 early criterion 切换到 late criterion 时，降低已有 checkpoint 门槛，避免早期单 episode 偶然高分过度影响后续选择。

---

## 19.5 Exploration 超参数

### Initial random exploration
$$
25k  
$$

训练开始时先随机探索 25k 步，填充 replay buffer。

### Exploration noise
$$
\mathcal N(0,0.1^2)  
$$
用于数据收集时对 actor action 加噪声，促进探索。

---

## 19.6 Common 超参数

$$
\gamma=0.99  
$$
表示未来奖励衰减较慢。
$$
\text{buffer capacity}=1M  
$$
表示 replay buffer 最多存 100 万个 transition。

$$
\text{mini-batch size}=256  
$$

每次训练采样 256 个 transition。
$$
\text{target update frequency}=250  
$$
每 250 个训练步更新 target networks 和 fixed encoders。

---

## 19.7 Optimizer

使用 Adam，学习率：
$$
3\times 10^{-4}.  
$$
这与很多 TD3/SAC 类连续控制实现的默认设置一致。

---

# 20. 三个实现层面变化的解释

## 20.1 policy update 使用两个 critic

原始 TD3 更新 actor 时通常只使用：
$$
Q_1.  
$$
TD7 使用：
$$
0.5(Q_1+Q_2).  
$$

这可以减少单 critic 偏差对 actor 的影响。

---

## 20.2 value function 使用 ELU 而不是 ReLU

ReLU 为：
$$
\operatorname{ReLU}(x)=\max(0,x).  
$$

负半轴梯度为 0，可能导致部分神经元死亡。

ELU 在负半轴仍有非零、平滑输出：

$$
\operatorname{ELU}(x)
=
\begin{cases}  
x, & x>0,\\  
\alpha(e^x-1), & x\le 0.  
\end{cases}  
$$

这可能使 critic 表达和优化更稳定。

---

## 20.3 target network 周期性硬更新

原始 TD3 常用 EMA/Polyak 更新：

$$
\theta'  
\leftarrow  
\tau\theta+(1-\tau)\theta'.  
$$
TD7 改为：
$$
\theta_{\text{target}}\leftarrow\theta  
$$

每 250 步执行一次。

原因是 fixed encoders 需要输入表示在一段时间内保持固定；若每步 EMA，表示会持续漂移，fixed embedding 机制无法发挥作用。

---

# 21. Algorithm 2 的完整训练顺序

一次 TD7 train step 的逻辑是：

$$
\text{从 LAP buffer 采样}  
$$
$$
\Downarrow  
$$

$$
\text{训练 encoder}  
$$
$$
\Downarrow  
$$
 
$$
\text{训练两个 critic}  
$$
$$
\Downarrow  
$$

$$
\text{更新 }Q_{\min},Q_{\max}  
$$

$$
\Downarrow  
$$
$$
\text{每 2 步训练 actor}  
$$
$$
\Downarrow  
$$
$$
\text{每 250 步同步 target networks 和 fixed encoders}  
$$

更细地说：

1. replay buffer 根据 TD error 优先采样；
    
2. encoder 学习 ($z_{sa}\approx z_{s'}$)；
    
3. critic 使用 clipped double Q target 和 value clipping 训练；
    
4. ($Q_{\min},Q_{\max}$) 更新 value clipping 范围；
    
5. actor 通过 DPG + 可选 BC 项训练；
    
6. target/fixed networks 周期性同步。
    

---

# 第三部分：核心总结

这段附录可以概括为：
$$
\boxed{  
\text{TD7 是一个多版本网络系统，而不是单纯的 TD3 + 一个 encoder}  
}  
$$
它同时维护：


$$
\text{current networks}  
$$

$$
\text{target networks}  
$$

$$
\text{fixed encoders}  
$$

$$
\text{target fixed encoders}  
$$

$$
\text{checkpoint policy}  
$$

核心训练公式包括：


$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
$$

$$
\mathcal L_{\text{enc}}
=
||z^{t+1}_{sa}-|z^{t+1}_{s'}|_{\times}||^2,  
$$

$$
\text{target}
=
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},  
Q_{\max}  
\right),  
$$

$$
\mathcal L_Q
=
\operatorname{Huber}(\text{target}-Q_{t+1}),  
$$



$$
\mathcal L_\pi
=
-Q  
+  
\lambda  
|\mathbb E_{s\sim\mathcal D}[Q]|_{\times}  
(a_\pi-a)^2.  
$$


其中：

- 双 critic 和 target policy smoothing 来自 TD3；
    
- Huber loss 与 LAP 提升 critic 训练稳定性；
    
- value clipping 用 ($Q_{\min},Q_{\max}$) 限制外推造成的异常 target；
    
- fixed encoders 用版本滞后来稳定输入表征；
    
- online 与 offline 的训练函数几乎相同，只是 (\lambda) 不同；
    
- checkpoint policy 和 checkpoint encoder 只用于测试时选择历史较优策略。
    

最关键的实现思想是：


$$
\boxed{  
\text{用固定版本的表征稳定 actor/critic 输入，用目标网络稳定 Bellman target，用 LAP 提升样本利用，用 BC 项处理离线分布偏移。}  
}  
$$


---

# 翻译

## B 实验细节

### Environment

实验评估基于 MuJoCo 模拟器，任务由 OpenAI Gym 定义，并使用 v4 环境。状态空间、动作空间和奖励空间均未做修改。

---

### Terminal transitions

所有方法对非终止 transition 使用折扣因子：


$$
\gamma=0.99.  
$$

对终止 transition 使用：

$$
\gamma=0.  
$$

如果一个 episode 是由于时间限制结束的，那么该 episode 的最后一个 transition 不被视为 terminal transition。

---

### Exploration

为了在训练开始前填充 replay buffer，所有方法最初都使用均匀随机策略收集数据。前：

$$
25k  
$$

个时间步使用随机策略；TQC 例外，只使用：

$$
256  
$$

个时间步进行初始随机数据收集。

这一初始数据收集阶段也被计入所有图表。因此，文中的 “time steps” 指的是与环境交互的次数，而不是训练步数。

基于确定性 TD3 的方法会向策略动作加入 Gaussian noise。基于随机策略 SAC 的方法不额外加入噪声。

---

### Evaluation

每经过：

$$
5000  
$$
个时间步，对 agent 进行一次评估。评估指标是 10 个 episode 中 undiscounted sum of rewards 的平均值。

每个实验重复：

$$
10  
$$

个随机种子。

评估时使用确定性策略。也就是说，评估时不向策略动作加入噪声；对于随机方法，则使用动作分布的均值动作。

使用本文提出的 policy checkpoints 的方法，在评估时使用 checkpoint policy。

评估被认为与训练完全独立：评估过程中不保存数据，也不更新任何网络。

---

### Visualization and tables

如前所述，图和表中的 time steps 表示环境交互次数。除初始随机数据收集阶段外，所有方法每次环境交互后训练一次。

表格报告的数值对应给定时间步处 10 个随机种子的平均 evaluation 结果。在线实验报告：

$$
300k,\quad 1M,\quad 5M  
$$

时间步处的结果；离线实验报告：
$$
1M  
$$
训练步后的结果。

图中的阴影区域以及表格中的 ($\pm$) 项表示一个置信区间。由于每个方法在 10 个随机种子上评估，该置信区间计算为：

$$
CI=  
1.96\frac{\sigma}{\sqrt{10}},  
\tag{32}  
$$

其中 ($\sigma$) 是对应 evaluation 处使用 Bessel correction 计算的样本标准差。

除非另有说明，所有曲线都使用长度为 10 次 evaluation 的均匀窗口进行平滑。

---

### Offline Experiments

离线实验结果基于 D4RL 数据集，并使用 v2 版本。状态空间、动作空间和奖励空间均未做修改。

报告的性能来自训练：
$$
1M  
$$

步之后的一次最终评估。该评估使用 10 个 episode 的平均 D4RL score。

TD7 的结果在 10 个随机种子上重复实验。Baseline 结果来自其他论文，因此在 episode 数量和随机种子数量方面，可能并不完全使用相同评估协议。

---

### Software

实验使用以下软件版本：

- Python 3.9.13
    
- PyTorch 2.0.0
    
- CUDA 11.8
    
- Gym 0.25.0
    
- MuJoCo 2.3.3
    

---

## C Baselines

## C.1 TD3 与 TD3+OFE 超参数

TD3 baseline 使用作者实现：

```text
https://github.com/sfujim/TD3
```

TD3+OFE baseline 使用上述 TD3 代码，并重新实现 OFENet。

对于超参数，动作空间假设位于：

[  
$$
[-1,1]  
$$
]

范围内。

---

### Environment-specific hyperparameters

OFE 根据环境使用不同数量的 encoder layers。不过，OFE 作者也提供了一种基于 representation loss 的离线超参数调节方法。本文每个环境所使用的层数，是该超参数调节过程的结果。

此外，训练 state-action encoder 时，OFE 会丢弃某些状态维度。这些维度对应难以预测的 external forces。实践中，这只影响 Humanoid 环境。Humanoid 使用 376 个状态维度中的 292 个。其他任务使用完整状态空间。

TD3 和 TD3+OFE 的超参数列于表 4。TD3 的网络架构细节见 Pseudocode 2。TD3+OFE 的网络架构细节见 Pseudocode 3 和 Pseudocode 4。

---

## Table 4：TD3 与 TD3+OFE 超参数

### OFE

|超参数|数值|
|---|---|
|HalfCheetah encoder layers|8|
|Hopper encoder layers|6|
|Walker2d encoder layers|6|
|Ant encoder layers|6|
|Humanoid encoder layers|8|

---

### TD3

| 超参数                              | 数值                      |
| -------------------------------- | ----------------------- |
| Target policy noise ($\sigma$)   | ($\mathcal N(0,0.2^2)$) |
| Target policy noise clipping (c) | ($(-0.5,0.5)$)          |
| Policy update frequency          | 2                       |

---

### Exploration

| 超参数                                   | 数值                      |
| ------------------------------------- | ----------------------- |
| Initial random exploration time steps | 25k                     |
| Exploration noise                     | ($\mathcal N(0,0.1^2)$) |


---

### Common

| 超参数                         | 数值    |
| --------------------------- | ----- |
| Discount factor ($\gamma$)  | 0.99  |
| Replay buffer capacity      | 1M    |
| Mini-batch size             | 256   |
| Target update rate ($\tau$) | 0.005 |

---

### Optimizer

| 超参数           | 数值                  |
| ------------- | ------------------- |
| Optimizer     | Adam                |
| Learning rate | ($3\times 10^{-4}$) |

---

## C.2 SAC 与 TQC 超参数

SAC baseline 基于本文的 TD3 实现，并在可能的情况下保持超参数不变。其余细节基于 SAC 作者实现：

```text
https://github.com/haarnoja/sac
```

TQC baseline 使用作者提供的 PyTorch 实现：

```text
https://github.com/SamsungLabs/tqc_pytorch
```

其中 evaluation code 对所有方法保持一致。

对于超参数，动作空间假设位于：


$$
[-1,1].  
$$


TQC 基于 SAC，并使用类似超参数。一个例外是 (\epsilon) offset 的使用。

按照 Haarnoja 等人在附录中的建议，Tanh Normal 分布的 log probability 计算为：


$$
\log \pi(a|s)
=
 \log \mathcal N(u|s)
-
\log(1-\tanh(u)^2+\epsilon),  
\tag{33}  
$$

其中 (u) 是动作的 pre-activation value，从分布 ($\mathcal N$) 中采样；该正态分布由 actor network 输出的：


$$
\mu,\quad \log\sigma  
$$

确定。

Kuznetsov 等人使用了另一种 Tanh Normal 分布 log probability 的计算方式，这种方式不需要 ($\epsilon$) offset：


$$
\log \pi(a|s)
=
\log \mathcal N(u|s)
-
\left(  
2\log(2)  
+  
\log(\operatorname{sigmoid}(2u))  
+  
\log(\operatorname{sigmoid}(-2u))  
\right).  
\tag{34}  
$$

---

### Environment-specific hyperparameters

TQC 会根据环境改变 dropped quantiles 的数量。虽然可以根据启发式规则选择该数量，但本文使用作者为每个环境建议的取值。

SAC 的超参数列于表 5。SAC 的网络架构细节见 Pseudocode 5。

TQC 的超参数列于表 6。TQC 的网络架构细节见 Pseudocode 6。

---

## C.3 Offline RL Baselines

本文使用四种 offline RL baseline。每种方法的结果通过重新运行作者提供的代码获得，命令如下。

---

### CQL

代码库：

```text
https://github.com/aviralkumar2907/CQL
commit d67dbe9
```

运行命令：

```bash
python examples/cql_mujoco_new.py --env=ENV \
  --policy_lr=3e-5 --langrange_thresh=-1 --min_q_weight=10
```

将 Lagrange threshold 设为小于 0，意味着不使用 Lagrange 版本的代码；这是 CQL 论文中定义的设置。GitHub 默认超参数表现明显更差，总 normalized score 为：

[  
$$
221.3 \pm 34.4.  
$$
]

为了匹配 TD7 使用的评估协议，对 evaluation code 做了一些修改。

---

### TD3+BC

代码库：

```text
https://github.com/sfujim/TD3_BC
commit 8791ad7
```

运行命令：

```bash
python main.py --env=ENV
```

---

### IQL

代码库：

```text
https://github.com/ikostrikov/implicit_q_learning
commit 09d7002
```

运行命令：

```bash
python train_offline.py --env_name=ENV --config=configs/mujoco_config.py
```

---

### X-QL

代码库：

```text
https://github.com/Div99/XQL
commit dff09af
```

运行命令：

```bash
python train_offline.py --env_name=ENV --config=configs/mujoco_config.py \
  --max_clip=7 --double=True --temp=2 --batch_size=256
```

该设置对应 X-QL-C 版本，其中所有数据集使用固定超参数。

---

# 第二部分：解释

## 1. 这部分附录的作用

这部分不是提出新算法，而是说明实验如何执行。其核心作用是保证结果具备：

$$
\text{可复现性}  
$$

$$
\text{可比较性}  
$$

$$
\text{统计可靠性}  
$$

$$
\text{公平性}  
$$


强化学习实验非常容易因为环境版本、随机种子、评估方式、时间步计数、terminal 处理、初始探索、超参数选择不同而产生显著差异。因此，附录 B 和 C 详细说明这些设置。

这部分可以理解为回答以下问题：
$$
\text{使用什么环境？}  
$$
$$
\text{如何处理终止状态？}  
$$
$$
\text{如何探索？}  
$$
$$
\text{如何评估？}  
$$
$$
\text{如何计算置信区间？}  
$$
$$
\text{baseline 如何实现？}  
$$
$$
\text{baseline 是否使用环境特定超参数？}  
$$
$$
\text{offline baseline 如何运行？}  
$$
---

## 2. Environment：为什么环境版本重要？

文中使用：


$$
\text{MuJoCo simulator}  
$$


以及：


$$
\text{OpenAI Gym v4 environments}.  
$$


这点很重要，因为 Gym 和 MuJoCo 的不同版本可能改变：


$$
\text{初始状态分布}  
$$

$$
\text{termination condition}  
$$

$$
\text{reward implementation}  
$$

$$
\text{wrapper 行为}  
$$

$$
\text{time limit}  
$$


即使算法相同，环境版本不同也可能导致结果不可直接比较。

“状态、动作、奖励空间均未修改”表示实验没有使用额外特征工程、奖励重塑或动作空间重参数化。这样结果更直接反映算法本身，而不是环境改造带来的收益。

---

## 3. Terminal transitions：为什么 time-limit 结束不视为 terminal？

这句话很重要：

> The final transition from an episode which ends due to a time limit is not considered terminal.

MDP 中真正的 terminal 表示任务进入吸收终止状态。此时后续价值应为 0，因此 Bellman target 写作：
$$
y=r.  
$$
这等价于使用：
$$
\gamma=0.  
$$
对于非终止 transition，Bellman target 是：
$$
y=r+\gamma Q(s',a').  
$$
问题在于，Gym 中很多 episode 会因为 time limit 截断，而不是因为环境真正终止。例如 MuJoCo 任务通常设定最大 episode 长度：


$$
T=1000.  
$$


如果 episode 达到时间上限结束，这并不意味着物理系统进入终止状态，只是评估过程被截断。因此最后状态 ($s'$) 仍然可能具有未来价值。

如果错误地把 time-limit truncation 当成 terminal，则 target 会变成：
$$
y=r,  
$$
而不是：
$$
y=r+\gamma Q(s',a').  
$$
这会系统性低估接近时间上限处的状态价值。

因此，本文只对真正 terminal transition 使用：
$$
\gamma=0,  
$$
而对 time-limit 截断仍按非终止处理：
$$
\gamma=0.99.  
$$
---

## 4. Exploration：为什么先随机探索？

off-policy actor-critic 方法依赖 replay buffer：
$$
\mathcal D={(s,a,r,s')}.  
$$

**如果训练初期 replay buffer 太小或数据过于集中，critic 学习会不稳定。随机探索阶段用于先填充 replay buffer，使训练开始时有基本数据覆盖。**

本文对多数方法使用：


$$
25k  
$$


随机环境交互。

其作用是：
$$
\text{提供初始状态—动作覆盖}  
$$

$$
\text{减少最早期 critic 过拟合少量样本}  
$$

$$
\text{让 replay buffer 能够形成 mini-batch}  
$$


TQC 使用：


$$
256  
$$


个随机时间步，这是一个 baseline-specific 设置。

---

## 5. “time steps” 为什么指环境交互，而不是训练步？

文中强调：
$$
\text{time steps}=\text{environment interactions}  
$$
而不是：
$$
\text{gradient steps}.  
$$
这是强化学习论文中非常关键的约定。因为 RL 的样本效率主要关心环境交互成本：
$$
\text{收集多少真实 transition 才能达到某性能？}  
$$
如果用训练步计数，则一个算法可以通过每个环境步做很多次 gradient update 来获得表面优势，但这不反映真实交互样本效率。

因此，本文把初始随机探索也计入 time steps，保证：

$$
300k,\ 1M,\ 5M  
$$

都表示总环境交互数。

---

## 6. 确定性方法和随机方法的探索差异

基于 TD3 的方法是确定性策略：
$$
a=\pi(s).  
$$
如果没有探索噪声，同一状态下总会输出同一动作，探索不足。因此训练时加入 Gaussian noise：
$$
a_{\text{explore}}

\pi(s)+\epsilon,  
\qquad  
\epsilon\sim \mathcal N(0,0.1^2).  
$$
基于 SAC 的方法本身是随机策略：
$$
a\sim\pi(\cdot|s).  
$$
策略分布已经包含探索随机性，因此不额外加噪声。

这一区分保证不同算法按自身设计进行合理探索。

---

## 7. Evaluation：为什么评估时使用确定性策略？

训练时加入噪声是为了探索；评估时关注策略本身已经学到的控制能力。因此评估时：
$$
\epsilon=0.  
$$
对于确定性策略：
$$
a=\pi(s).  
$$
对于随机策略，例如 SAC：
$$
a=\mathbb E_{\pi(\cdot|s)}[a],  
$$
即使用 mean action。

这样可以减少评估方差，使评估结果更稳定地反映策略质量，而不是采样噪声。

---

## 8. checkpoint policy 在评估中的作用

如果某方法使用 policy checkpoints，则 evaluation 时使用：

$$
\pi_c  
$$

而不是当前策略：


$$
\pi_{t+1}.  
$$

这与 TD7 的设计一致。checkpoint policy 表示训练过程中被 assessment 选择出的历史较优策略。

因此，评估结果反映的是算法最终实际要部署的策略，而不是训练中的临时当前策略。

---

## 9. 为什么评估要完全独立于训练？

文中说评估期间：

$$
\text{no data is saved}  
$$

$$
\text{no network is updated}  
$$


含义是 evaluation episodes 不进入 replay buffer，也不影响模型参数。

这样可以防止 evaluation 过程变成额外训练数据来源。否则算法可能通过 evaluation 获得额外环境交互，导致不公平比较。

因此，评估只测量性能，不参与学习。

---

## 10. 置信区间公式的解释

文中使用：
$$
CI=  
1.96\frac{\sigma}{\sqrt{10}}.  
$$
其中：
$$
\sigma  
$$
是 10 个随机种子上的样本标准差，且使用 Bessel correction：

$$
\sigma
=
\sqrt{  
\frac{1}{n-1}  
\sum_{i=1}^{n}(x_i-\bar x)^2  
}.  
$$
这里：

$$
n=10.  
$$
因此：

$$
\frac{\sigma}{\sqrt{10}}  
$$

是样本均值的标准误差。

系数：


$$
1.96  
$$


是标准正态分布的 97.5% 分位数：

$$
\Phi^{-1}(0.975)\approx 1.96.  
$$

所以图中阴影或表格中的 (\pm) 表示：

$$
\bar x \pm 1.96\frac{\sigma}{\sqrt{10}}.  
$$

严格地说，这种写法通常对应正态近似下的双侧 95% 置信区间，因为上下两侧各留 2.5%。原文称为 97.5% confidence interval，主要是因为使用了 97.5% 正态分位点 (1.96)。实际展示形式是常见的：

$$
\bar x\pm CI.  
$$

---

## 11. 曲线平滑的含义

文中说除非另有说明，曲线使用长度为 10 次 evaluation 的均匀窗口平滑。

由于每：


$$
5000  
$$


个 time steps 评估一次，所以窗口长度 10 对应：


$$
50000  
$$

个环境交互范围内的平滑。

这可以降低学习曲线噪声，使趋势更清楚。但也意味着图中的曲线不是原始 evaluation 点，而是局部平均后的结果。

---

## 12. Offline Experiments：为什么 offline 设置不同？

在线实验中，time steps 表示环境交互：


$$
\text{environment interactions}.  
$$
离线实验中没有环境交互，只有固定数据集。因此离线实验报告：


$$
1M \text{ training steps}  
$$
后的结果。

这里的 training steps 指 gradient updates，而不是环境交互。

离线评估使用 D4RL score。D4RL score 通常是归一化分数，使不同任务之间更容易比较。报告 10 个 episode 的平均 D4RL score，表示最终策略在环境中执行后的 normalized performance。

---

## 13. Offline baseline 结果为什么可能不完全一致？

文中说明 baseline 结果来自其他论文，可能在以下方面与 TD7 不完全一致：

$$
\text{evaluation episodes 数量}  
$$

$$
\text{random seeds 数量}  
$$

$$
\text{evaluation protocol}  
$$


这意味着 offline 结果的比较需要谨慎。尤其当某些 baseline 的 reported score 来自不同数量种子或 episode 时，统计不确定性可能不同。

不过，作者仍然尽量通过重新运行作者代码和统一部分协议来增强可比性。

---

# 第三部分：Baseline 细节解释

## 14. TD3 baseline 的意义

TD3 是 TD7 的基础算法。使用作者官方实现可以减少实现偏差。

TD3 的核心机制包括：
$$
\text{双 critic}  
$$
$$
\text{target policy smoothing}  
$$
$$
\text{delayed policy update}  
$$
$$
\text{Polyak target update}  
$$

因此，TD3 baseline 用于衡量 TD7 相对基础连续控制算法的提升。

---

## 15. TD3+OFE baseline 的意义

TD3+OFE 使用 TD3 加 OFENet。OFE/OFENet 也是状态—动作表征学习方法，因此它是 SALE 的关键对照。

比较：

$$
\text{TD7}  
$$
与：


$$
\text{TD3+OFE}  
$$

可以检验 SALE 是否相较已有 state-action embedding 方法更有效。

---

## 16. OFE 的环境特定超参数

OFE 为不同环境使用不同 encoder layers：

$$
\text{HalfCheetah}:8  
$$
$$
\text{Hopper}:6  
$$
$$
\text{Walker2d}:6  
$$
$$
\text{Ant}:6  
$$
$$
\text{Humanoid}:8.  
$$

这说明 TD3+OFE baseline 不是一个完全统一配置，而是使用了环境相关结构选择。

这些层数来自 OFE 作者提供的离线调参方法，而不是随意选择。

---

## 17. OFE 为什么丢弃 Humanoid 的部分状态维度？

Humanoid 状态中包含 external forces 等维度。这些维度可能很难预测。

如果 state-action encoder 的目标是预测下一状态，而某些状态维度高度噪声、难以建模或与控制结构关系弱，那么强迫 encoder 预测这些维度可能损害表示学习。

因此 OFE 在 Humanoid 上只使用：

$$
292  
$$

个状态维度，而非完整：


$$
376.  
$$

其他任务则使用完整状态空间。

这点说明 TD3+OFE 包含一定任务特定处理，而 TD7 的实验设置中状态空间没有修改。

---

## 18. TD3 超参数解释

### Target policy noise

[  
$$
\epsilon\sim\mathcal N(0,0.2^2).  
$$
]

用于构造 target action：

[  
$$
a'=\pi_{\text{target}}(s')+\epsilon.  
$$
]

### Target policy noise clipping

[  
$$
\epsilon\in[-0.5,0.5].  
$$
]

防止目标动作扰动过大。

### Policy update frequency

[  
$$
2.  
$$
]

表示 actor 每两个 critic update 更新一次。

### Target update rate

[  
$$
\tau=0.005.  
$$
]

TD3 使用 Polyak averaging：

[  
$$
\theta_{\text{target}}  
\leftarrow  
\tau\theta  
+  
(1-\tau)\theta_{\text{target}}.  
$$
]

---

## 19. SAC baseline 的意义

SAC 是随机策略、最大熵 off-policy actor-critic 方法。它优化的不只是回报，还包含熵项：

# [  
$$
J(\pi)
=
\mathbb E  
\left[  
\sum_t r_t+\alpha \mathcal H(\pi(\cdot|s_t))  
\right].  
$$
]

SAC baseline 用于比较 TD7 与随机最大熵连续控制方法的性能。

---

## 20. TQC baseline 的意义

TQC 基于 SAC，但使用 distributional critic，并通过丢弃高估的 quantiles 来减少过估计。

它是一个较强、较复杂的 continuous control baseline。文中还指出 TQC 使用环境特定的 dropped quantiles 数量。

因此，TQC 用来检验 TD7 是否能超过更复杂、更强的现代 baseline。

---

## 21. Tanh Normal log probability 的两个公式

SAC/TQC 中常用 squeashd Gaussian policy。

先从高斯分布采样 pre-activation：

$$
u\sim\mathcal N(\mu(s),\sigma^2(s)).  
$$
然后通过 tanh 映射到动作范围：
$$
a=\tanh(u).  
$$
由于变量变换，动作概率密度需要加 Jacobian correction：
$$
\log \pi(a|s)
=
 \log \mathcal N(u|s)
-
\log\left|  
\frac{da}{du}  
\right|.  
$$
而：
$$
\frac{d}{du}\tanh(u)
=
1-\tanh^2(u).  
$$

所以有：

$$
\log \pi(a|s)
=
 \log \mathcal N(u|s)
-
\log(1-\tanh^2(u)).  
$$
实际计算中，当 ($|u|$) 很大时：
$$
\tanh(u)\approx \pm 1,  
$$
导致：
$$
1-\tanh^2(u)\approx 0.  
$$
此时：
$$
\log(0)  
$$
会造成数值问题。因此公式（33）加入：

$$
\epsilon  
$$
得到：
$$
\log(1-\tanh^2(u)+\epsilon).  
$$

TQC 使用公式（34），通过数学等价的稳定形式避免显式 (\epsilon)。该形式利用 sigmoid 和 log-sigmoid 的稳定数值实现，减少 tanh 饱和区域的数值不稳定。

---

## 22. TQC 的 dropped quantiles 为什么是环境特定的？

TQC 的 critic 估计 return distribution 的多个 quantiles。为了减少过估计，它会丢弃部分较高 quantiles。

丢弃数量影响保守程度：

$$
\text{drop more quantiles}  
\Rightarrow  
\text{更保守}  
$$
$$
\text{drop fewer quantiles}  
\Rightarrow  
\text{更激进}  
$$

不同 MuJoCo 环境的奖励尺度、难度、过估计风险不同，因此 TQC 作者为不同环境建议不同 dropped quantiles。

这也是一种 environment-specific hyperparameter。

---

# 第四部分：Offline baselines 解释

## 23. CQL

CQL，即 Conservative Q-Learning，核心思想是保守估计 Q 函数，降低数据外动作的价值：


$$
Q(s,a_{\text{OOD}})  
\downarrow.  
$$


运行命令中：

```bash
--policy_lr=3e-5
--langrange_thresh=-1
--min_q_weight=10
```

其中 `langrange_thresh` 应为 `lagrange_thresh` 的命令参数拼写语境；原文写作 `langrange_thresh`，按原文保留。将阈值设为小于 0，表示不使用 Lagrange 版本。

`min_q_weight=10` 控制 CQL 保守项强度。

文中指出 GitHub 默认超参数表现明显更差，因此采用论文设置以获得合理 baseline。

---

## 24. TD3+BC

TD3+BC 是一个简单强力的 offline RL baseline。它在 TD3 的 actor loss 中加入 behavior cloning penalty：


$$
\pi(s)\approx a,\qquad (s,a)\sim\mathcal D.  
$$


其目标是防止策略选择数据集外动作，从而减少 extrapolation error。

运行命令非常简单：

```bash
python main.py --env=ENV
```

这说明使用作者默认配置。

---

## 25. IQL

IQL，即 Implicit Q-Learning，是一种避免显式最大化数据外动作的 offline RL 方法。

其核心思想是主要在数据分布内部做 value learning 和 policy extraction，减少 OOD action 问题。

文中使用作者代码和 MuJoCo config：

```bash
python train_offline.py --env_name=ENV --config=configs/mujoco_config.py
```

---

## 26. X-QL

X-QL 是另一种 offline RL baseline。文中使用：

```bash
--max_clip=7
--double=True
--temp=2
--batch_size=256
```

该设置对应 X-QL-C，其中超参数在所有数据集上固定。

这点很重要，因为固定超参数可以避免为每个数据集单独调参带来的不公平优势。

---

# 第五部分：这段实验设置的核心含义

这段附录的核心可以总结为：


$$
\boxed{  
\text{作者尽量控制环境版本、评估协议、随机种子、时间步定义和 baseline 实现，以保证比较尽可能公平。}  
}  
$$

其中最重要的实验规范包括：

1. 使用 MuJoCo + OpenAI Gym v4；
    
2. 不修改状态、动作、奖励空间；
    
3. time-limit 截断不视为 terminal；
    
4. time steps 统一定义为环境交互数；
    
5. 每 5000 环境步评估一次；
    
6. 每次评估使用 10 个 episode；
    
7. 在线实验使用 10 个随机种子；
    
8. evaluation 不参与训练；
    
9. 图表报告均值和置信区间；
    
10. baseline 尽量使用作者官方代码；
    
11. offline baseline 尽量使用固定超参数或作者推荐设置；
    
12. 软件版本明确列出，便于复现。
    

从方法比较角度看，这些设置特别重要。强化学习结果高度敏感于实现细节。如果不明确 terminal 处理、time step 计数、评估是否加噪声、是否保存 evaluation 数据、是否使用 per-environment 超参数，就很难判断性能差异来自算法本身，还是来自实验协议差异。

因此，附录 B 和 C 的主要价值是为 TD7 的实验结果提供复现基础和公平性说明。


---

# 翻译

## D.1 Learning Target

TD7 中的编码器：
$$
(f_{t+1}, g_{t+1})  
$$
使用如下更新：
$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|  
g_{t+1}(f_{t+1}(s),a)

|f_{t+1}(s')|_{\times}  
\right|_2^2  
\tag{35}  
$$
也就是：

$$
\mathcal L(f_{t+1},g_{t+1})
=
 \left|  \left|
z^{t+1}_{sa}
-
|z^{t+1}_{s'}|_{\times}  
\right|\right|_2^2.  
\tag{36}  
$$

其中，本节改变学习目标。原始学习目标是：

$$
z^{t+1}_{s'}.  
$$
---

### Target 1: (s')

将学习目标设为下一状态：


$$
s'.  
$$


于是编码器损失变为：


$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|  
z^{t+1}_{sa}
-
s'  
\right|_2^2.  
\tag{37}  
$$


这个目标受到 OFENet 的启发。

---

### Target 2: ($z_{s'}^{\text{target}}$)

将学习目标设为来自一个缓慢移动的 target network 的下一状态嵌入：


$$
z_{s'}^{\text{target}}.  
$$


于是编码器损失变为：


$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|  
z^{t+1}_{sa}
-
|z_{s'}^{\text{target}}|_{\times}  
\right|_2^2.  
\tag{38}  
$$

其中：

[  
$$
z_{s'}^{\text{target}}  
$$
]

来自 target network：

[  
$$
f_{\text{target}}.  
$$
]

设 ($f_{t+1}$) 的参数为：

[  
$$
\theta,  
$$
]

($f_{\text{target}}$) 的参数为：

[  
$$
\theta',  
$$
]

则 ($\theta'$) 在每个时间步按如下方式更新：

[  
$$
\theta'  
\leftarrow  
0.99\theta'  
+  
0.01\theta.  
\tag{39}  
$$
]

这个目标受到 SPR 的启发。

注：原文转写中的式（38）若写成  
$$
 |z^{t+1}_{sa}-|z^{t+1}_{sa}|_{\times}|^2  
$$

则与文字描述不一致，并且会成为近似自匹配目标；根据上下文，应理解为 ($z^{\text{target}}_{s'}$)。

---

### Target 3: ($z_s$) and ($r$)

将学习目标仍设为下一状态嵌入：

[  
$$
z^{t+1}_{s'}  
$$
]

也就是原始损失中的目标，同时额外加入一个对奖励：

[  
$$
r  
$$
]

的预测损失。

具体做法是让 (g) 的输出包含两个部分：第一部分是：

[  
$$
z^{t+1}_{sa},  
$$
]

第二部分是：

[  
$$
r^{t+1}_{\text{pred}}.  
$$
]

编码器损失变为：


$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|  \left|
g_{t+1}(f_{t+1}(s),a)[0]
-
 |f_{t+1}(s')|_{\times}  \right|
\right|_2^2  
+  
\left| \left|   
g_{t+1}(f_{t+1}(s),a)[1]
-
r  
\right|\right|_2^2.  
\tag{40}  
$$


也就是：


$$
\mathcal L(f_{t+1},g_{t+1})
=
 \left|  \left|
z^{t+1}_{sa}
-
 |z^{t+1}_{s'}|_{\times}  
\right|\right|_2^2  
+  
\left| \left| 
r^{t+1}_{\text{pred}}
-
r  
\right|\right|_2^2.  
\tag{41}  
$$


这个目标受到 DeepMDP 的启发。

---

### Target 4: ($z_{s'a'}$)

将学习目标设为下一状态—动作嵌入：

 
$$
z^{t+1}_{s'a'}.  
$$


其中动作：


$$
a'  
$$


按照 target policy 采样，并添加噪声和裁剪，方式与 TD3 相同。编码器损失变为：


$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\left|  
z^{t+1}_{sa}
-
|z^{t+1}_{s'a'}|_{\times}  
\right|_2^2.  
\tag{42}  
$$


其中：

$$
a'  
:=  
\pi_t(z^{t-1}_{s'},s')  
+  
\epsilon,  
\tag{43}  
$$

$$
\epsilon  
\sim  
\operatorname{clip}  
\left(  
\mathcal N(0,\sigma^2),  
-c,c  
\right).  
\tag{44}  
$$


---

## D.2 Network Input

SALE 修改了价值函数和策略，使二者接收嵌入作为额外输入：


$$
Q_{t+1}(s,a)  
\rightarrow  
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
$$

$$
\pi_{t+1}(s)  
\rightarrow  
\pi_{t+1}(z_s,s).  
\tag{45}  
$$

本节改变价值函数和策略的输入。在所有情况下，改变都是独立进行的。也就是说，若改变策略输入，则价值函数仍固定为上述使用嵌入的形式；若改变价值函数输入，则策略仍固定为上述使用嵌入的形式。

---

### Input 1: (Q)，移除 ($z_{sa}$)

从价值函数输入中移除：

[  
$$
z_{sa}.  
$$
]

于是输入变为：

[  
$$
Q_{t+1}(z^t_s,s,a).  
$$
]

---

### Input 2: ($Q$)，移除 ($z_s$)

从价值函数输入中移除：
$$
z_s.  
$$
于是输入变为：


$$
Q_{t+1}(z^t_{sa},s,a).  
$$


---

### Input 3: (Q)，移除 (s,a)

从价值函数输入中移除原始状态和动作：

[  
$$
s,a.  
$$
]

于是输入变为：

[  
$$
Q_{t+1}(z^t_{sa},z^t_s).  
$$
]

---

### Input 4: ($Q$)，仅使用 ($z_{sa}$)

价值函数输入仅使用：

[  
$$
z_{sa}.  
$$
]

于是输入变为：

[  
$$
Q_{t+1}(z^t_{sa}).  
$$
]

---

### Input 5: ($Q$)，仅使用 ($s,a$)

价值函数输入仅使用原始状态和动作：

[  
$$
s,a.  
$$
]

于是输入变为：

$$
[  
Q_{t+1}(s,a).  
$$
]

和所有其他情况一样，此时策略仍然接收状态嵌入：

[  
$$
z_s.  
$$
]

---

### Input 6: ($\pi$)，仅使用 ($s$)

从策略输入中移除：

[  
$$
z_s,  
$$
]

仅使用状态：

[  
$$
s.  
$$
]

于是输入变为：

[  
$$
\pi_{t+1}(s).  
$$
]

注意，此时价值函数仍然使用嵌入作为输入。

---

### Input 7: ($\pi$)，仅使用 ($z_s$)

从策略输入中移除原始状态：


$$
s,  
$$


仅使用状态嵌入：


$$
z_s.  
$$


于是输入变为：


$$
\pi_{t+1}(z^t_s).  
$$


---

### Input 8: No fixed embeddings

从价值函数和策略中移除 fixed embeddings。也就是说，网络使用当前编码器产生的嵌入，而不是使用前一轮固定编码器产生的嵌入。

于是输入变为：


$$
Q_{t+1}(z^{t+1}_{sa},z^{t+1}_s,s,a),  
$$


以及：


$$
\pi_{t+1}(z^{t+1}_s,s).  
$$


---

## D.3 Normalization

SALE 通过提出的 AvgL1Norm 对嵌入和输入进行归一化：


$$
\operatorname{AvgL1Norm}(x)  
:=  
\frac{x}  
{  
\frac{1}{N}\sum_i |x_i|  
}.  
\tag{46}  
$$


AvgL1Norm 被嵌入到 SALE 使用的网络架构中，并应用于状态编码器 (f) 的输出，得到状态嵌入：


$$
z_s
=
\operatorname{AvgL1Norm}(f(s)).  
$$


此外，AvgL1Norm 也用于价值函数和策略输入中的线性层之后。

于是价值函数和策略的输入为：


$$
Q  
\left(  
z_{sa},  
\operatorname{AvgL1Norm}(f(s)),  
\operatorname{AvgL1Norm}(\phi_{sa})  
\right),  
\tag{47}  
$$

$$
\pi  
\left(  
\operatorname{AvgL1Norm}(f(s)),  
\operatorname{AvgL1Norm}(\phi_s)  
\right).  
\tag{48}  
$$
]

其中：


$$
\phi_{sa}  
$$


是对状态—动作输入 ($(s,a)$) 经过线性层后的输出：


$$
\phi_{sa}=\operatorname{Linear}(s,a),  
$$

$$
\phi_s  
$$


是对状态输入 (s) 经过线性层后的输出：


$$
\phi_s=\operatorname{Linear}(s).  
$$
]

本节改变归一化的使用方式，包括改变归一化用于哪些组件，以及改变所使用的归一化函数。

---

### Normalization 1: No normalization on ($\phi$)

不对任何 ($\phi$) 应用归一化。于是价值函数和策略输入变为：


$$
Q  
\left(  
z_{sa},  
\operatorname{AvgL1Norm}(f(s)),  
\phi_{sa}  
\right),  
\tag{49}  
$$

$$
\pi  
\left(  
\operatorname{AvgL1Norm}(f(s)),  
\phi_s  
\right).  
\tag{50}  
$$
]

---

### Normalization 2: No normalization

不在任何地方应用归一化。于是价值函数和策略输入变为：


$$
Q(z_{sa},f(s),\phi_{sa}),  
\tag{51}  
$$
$$
\pi(f(s),\phi_s).  
\tag{52}  
$$


---

### Normalization 3: Normalization used on (z_{sa})

由于：

[  
$$
z_{sa}  
$$
]

被训练为预测下一状态嵌入：

[  
$$
z_{s'},  
$$
]

而 ($z_{s'}$) 已经被归一化，因此也许没有必要对状态—动作编码器 ($g$) 的输出再做归一化。该实验尝试也对 ($g$) 的输出应用归一化。

于是价值函数和策略输入变为：

[  
$$
Q  
\left(  
\operatorname{AvgL1Norm}(g(z_s,a)),  
\operatorname{AvgL1Norm}(f(s)),  
\operatorname{AvgL1Norm}(\phi_{sa})  
\right),  
\tag{53}  
$$

$$
\pi  
\left(  
\operatorname{AvgL1Norm}(f(s)),  
\operatorname{AvgL1Norm}(\phi_s)  
\right).  
\tag{54}  
$$
]

---

### Normalization 4: BatchNorm

使用 BatchNorm 替代 AvgL1Norm。于是价值函数和策略输入变为：

$$
Q  
\left(  
z_{sa},  
\operatorname{BatchNorm}(f(s)),  
\operatorname{BatchNorm}(\phi_{sa})  
\right),  
\tag{55}  
$$
$$
\pi  
\left(  
\operatorname{BatchNorm}(f(s)),  
\operatorname{BatchNorm}(\phi_s)  
\right).  
\tag{56}  
$$


---

### Normalization 5: LayerNorm

使用 LayerNorm 替代 AvgL1Norm。于是价值函数和策略输入变为：


$$
Q  
\left(  
z_{sa},  
\operatorname{LayerNorm}(f(s)),  
\operatorname{LayerNorm}(\phi_{sa})  
\right),  
\tag{57}  
$$
$$
\pi  
\left(  
\operatorname{LayerNorm}(f(s)),  
\operatorname{LayerNorm}(\phi_s)  
\right).  
\tag{58}  
$$

---

### Normalization 6: Cosine similarity loss

该设计受到 SPR 的启发。不使用归一化，并且在更新编码器时使用 cosine similarity loss 替代 MSE。

原始编码器损失为：
$$
\mathcal L(f,g)  
:=  
\left|  
g(f(s),a)
-
|f(s')|_{\times}  
\right|_2^2
=
 \left|  
z_{sa}
-
|z_{s'}|_{\times}  
\right|_2^2.  
\tag{59}  
$$

现在变为：

$$
\mathcal L(f,g)  
:=  
\operatorname{Cosine}  
\left(  
z_{sa},  
|z_{s'}|_{\times}  
\right),  
\tag{60}  
$$
其中：

$$
\operatorname{Cosine}  
\left(  
z_{sa},  
|z_{s'}|_{\times}  
\right)  
:=  
\left(  
\frac{z_{sa}}{|z_{sa}|_2}  
\right)^\top  
\left(  
\frac{|z_{s'}|_{\times}}  
{||z_{s'}|_{\times}|_2}  
\right).  
\tag{61}  
$$


其他地方不使用归一化。

> 注：若训练过程是最小化 loss，则通常会使用负余弦相似度或 (1-\text{cosine similarity})。原文这里写作 Cosine，具体实现可能是将其作为需要最大化的相似度，或在代码中取负号；从文字看，核心含义是“用方向相似性替代 MSE 距离”。

---

## D.4 End-to-end

SALE 中使用的嵌入是解耦的，意思是：输出嵌入的编码器独立于价值函数或策略进行训练。相反，也可以考虑让编码器与价值函数端到端训练。

这样做需要用 value function loss 来训练当前嵌入，而不是使用 fixed embedding。也就是说，编码器使用如下损失训练：
$$
\mathcal L(f_{t+1},g_{t+1})  
:=  
\operatorname{Huber}  
\left(  
\text{target}
-
 Q_{t+1}(z^{t+1}_{sa},z^{t+1}_s,s,a)  
\right)  
+  
\beta  
\left|  
z^{t+1}_{sa}
-
|z^{t+1}_{s'}|_{\times}  
\right|_2^2.  
\tag{62}  
$$
其中：
$$
\text{target}  
:=  
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},Q_{\max}  
\right),  
\tag{63}  
$$
$$
x:=  
[z^t_{s'a'},z^t_{s'},s',a'],  
\tag{64}  
$$

$$
a'  
:=  
\pi_t(z^t_{s'},s')  
+  
\epsilon,  
\tag{65}  
$$
$$
\epsilon  
\sim  
\operatorname{clip}  
\left(  
\mathcal N(0,\sigma^2),  
-c,c  
\right).  
\tag{66}  
$$


表 11 和图 17 展示了改变超参数：
$$
\beta  
$$
时的性能。

---

# 第二部分：解释

## 1. 附录 D.1-D.4 的整体目的

这几节是在细化 SALE 的设计消融。SALE 的基本形式是：

$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
$$

默认训练目标是：


$$
z_{sa}\approx z_{s'}.  
$$


然后 actor 和 critic 使用：


$$
Q(z_{sa},z_s,s,a),  
\qquad  
\pi(z_s,s).  
$$


附录 D 逐项改变这些设计，以回答四个问题：

$$
\text{编码器应该预测什么？}  
$$
$$
\text{critic 和 actor 应该接收哪些输入？}  
$$
$$
\text{嵌入和输入应如何归一化？}  
$$
$$
\text{编码器应解耦训练还是端到端训练？}  
$$

这些问题看似是实现细节，但实际上决定了 SALE 是否稳定、是否有信息瓶颈、是否会被非平稳 RL 目标污染。

---

# 2. D.1 Learning Target：编码器应该预测什么？

默认目标是：


$$
z_{sa}^{t+1}  
\approx  
z_{s'}^{t+1}.  
$$


这个目标的含义是：当前状态 ($s$) 下执行动作 ($a$) 后，状态—动作嵌入应当接近下一状态嵌入。

也就是说，($z_{sa}$) 应该表达：


$$
(s,a)\mapsto s'  
$$


的潜在动力学结构。

---

## 2.1 Target 1: 预测原始下一状态 (s')

该目标为：


$$
\mathcal L
=
|z_{sa}^{t+1}-s'|^2.  
$$


这是最直接的动力学预测形式：


$$
(s,a)\rightarrow s'.  
$$


优点是目标清晰，不需要另一个嵌入空间。

缺点是：原始状态空间中的维度可能尺度不同、语义不同、可预测性不同。例如 MuJoCo 状态中可能同时包含位置、速度、角度、接触相关变量。直接预测 (s') 会让 MSE 被某些尺度较大的维度主导。

此外，SALE 希望得到的是适合 actor-critic 使用的表征，而不是精确重构原始下一状态。因此，预测原始 (s') 不一定是最合适的表征学习目标。

---

## 2.2 Target 2: 预测缓慢移动目标网络的 ($z_{s'}^{\text{target}}$)

该目标为：

# [  
$$
\mathcal L
=
|z_{sa}^{t+1}-|z_{s'}^{\text{target}}|_\times|^2.  
$$
]

其中 target encoder 的参数按指数滑动平均更新：

[  
$$
\theta'  
\leftarrow  
0.99\theta'  
+  
0.01\theta.  
$$
]

这类似 self-supervised learning 中的 target network 思想。目标网络变化较慢，因此目标嵌入更稳定。

这种方法的动机是减少表示目标的快速漂移：

[  
$$
f_{t+1}(s') \text{ 快速变化}  
\quad\Rightarrow\quad  
z_{s'} \text{ 快速变化}.  
$$
]

使用 EMA target：

[  
$$
f_{\text{target}}(s')  
$$
]

可以使目标更平滑。

不过，SALE 默认已经使用 stop-gradient、AvgL1Norm 和 fixed embeddings 等稳定机制，因此 EMA target 未必带来显著优势。

---

## 2.3 Target 3: 同时预测 ($z_{s'}$) 和奖励 ($r$)

该目标为：

# [  
$$
\mathcal L
=
|z_{sa}-|z_{s'}|_\times|^2  
+  
|r_{\text{pred}}-r|^2.  
$$
]

这是将动力学预测和奖励预测结合起来。

动机来自 Bellman 方程：

# [  
$$
Q(s,a)
=
r  
+  
\gamma \mathbb E[Q(s',a')].  
$$
]

价值函数依赖两个关键对象：

[  
$$
r  
$$
]

和：

[  
$$
s'.  
$$
]

因此，让 encoder 同时预测奖励和下一状态表征，看起来能够使表征更贴近价值学习。

但实验中该设计通常影响有限。一个主要原因是：critic 本身直接接收原始输入：

[  
$$
(s,a)  
$$
]

也直接通过 Bellman target 学习奖励。因此奖励信息可以由 critic 自己学习，不一定需要强行放进 encoder 目标中。

---

## 2.4 Target 4: 预测下一状态—动作嵌入 (z_{s'a'})

该目标为：

# [  
$$
\mathcal L
=
|z_{sa}^{t+1}-|z_{s'a'}^{t+1}|_\times|^2.  
$$
]

其中：

[  
$$
a'=\pi_t(z_{s'}^{t-1},s')+\epsilon.  
$$
]

这个目标把表征学习目标从：

[  
$$
(s,a)\rightarrow s'  
$$
]

改成更接近：

[  
$$
(s,a)\rightarrow (s',a')  
$$
]

的问题。

表面看，这更接近 Bellman backup，因为 critic target 中也有：

[  
$$
Q(s',a').  
$$
]

但问题在于：

[  
$$
a'  
$$
]

依赖当前策略：

[  
$$
\pi_t.  
$$
]

策略在训练中不断变化，所以目标：

[  
$$
z_{s'a'}  
$$
]

也是非平稳的。

这会把表征学习从环境动力学目标变成策略依赖目标：

[  
$$
\text{environment dynamics}  
+  
\text{current policy}.  
$$
]

而 SALE 的设计意图是学习相对稳定的环境结构，而不是追随当前策略变化。因此 (z_{s'a'}) 通常是较差目标。

核心结论：

[  
$$
\boxed{  
\text{学习目标应主要依赖环境转移 }(s,a,s')\text{，而非依赖当前策略生成的 }a'.  
}  
$$
]

---

# 3. D.2 Network Input：critic 和 actor 应该使用哪些输入？

默认输入为：

[  
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
$$
]

[  
$$
\pi_{t+1}(z_s,s).  
$$
]

这里包含两类信息：

[  
$$
\text{学习嵌入： } z_s,z_{sa}  
$$
]

[  
$$
\text{原始输入： } s,a  
$$
]

附录 D.2 通过移除某些成分，判断这些成分是否必要。

---

## 3.1 ($Q$) 移除 ($z_{sa}$)

输入变为：

[  
$$
Q(z_s,s,a).  
$$
]

这会删除状态—动作动力学嵌入。

由于 critic 的核心任务是估计：

[  
$$
Q(s,a),  
$$
]

也就是评价一个具体动作在当前状态下的长期后果，因此 $(z_{sa}$) 是最直接相关的嵌入。

移除 ($z_{sa}$) 后，critic 仍能看到 ($s,a,z_s$)，但失去通过辅助动力学目标学习到的状态—动作交互特征。

---

## 3.2 ($Q$) 移除 ($z_s$)

输入变为：


$$
Q(z_{sa},s,a).  
$$


这保留了状态—动作嵌入，但删除了状态嵌入。

虽然 ($z_{sa}$) 由 ($z_s$) 和 ($a$) 计算而来，但它被训练为接近下一状态嵌入：


$$
z_{sa}\approx z_{s'}.  
$$


因此 ($z_{sa}$) 更偏向“执行动作后的结果表示”，不一定完整保留当前状态结构。

保留 ($z_s$) 可以给 critic 提供当前状态上下文。

---

## 3.3 ($Q$) 移除 ($s,a$)

输入变为：

[  
$$
Q(z_{sa},z_s).  
$$
]

这测试“嵌入能否完全替代原始输入”。

结论通常是否定的。原因是 ($z_s,z_{sa}$) 的训练目标只与下一状态嵌入有关：

[  
$$
z_{sa}\rightarrow z_{s'}.  
$$
]

它们不保证包含所有奖励相关或任务相关信息。原始：

[  
$$
(s,a)  
$$
]

保留了完整信息，能弥补嵌入的信息缺失。

因此 SALE 的嵌入应被视为补充特征，而不是压缩后完全替代原始输入的 bottleneck。

---

## 3.4 ($Q$) 仅使用 ($z_{sa}$)

输入变为：

[  
$$
Q(z_{sa}).  
$$
]

这是更极端的信息瓶颈。critic 只能根据状态—动作嵌入估计价值。

由于 ($z_{sa}$) 只被训练为预测下一状态嵌入，它可能忽略：


$$
\text{当前奖励}  
$$

$$
\text{动作幅值}  
$$

$$
\text{任务时域信息}  
$$

$$
\text{状态中与奖励相关但与转移弱相关的细节}  
$$


因此该设置通常表现较差。

---

## 3.5 ($Q$) 仅使用 ($s,a$)

输入变为：

[  
$$
Q(s,a).  
$$
]

这接近普通 TD3 critic 输入。该设置保留原始信息，但删除 SALE 嵌入。

如果性能下降，说明 ($z_s,z_{sa}$) 确实提供了原始输入以外的有用结构。

该消融用于回答：

[  
$$
\boxed{  
\text{SALE 嵌入是否真的有用？}  
}  
$$
]

---

## 3.6 (\pi) 仅使用 (s)

输入变为：

[  
$$
\pi(s).  
$$
]

这表示 actor 不使用状态嵌入 ($z_s$)。

由于 actor 的动作选择依赖状态表示，移除 ($z_s$) 可能降低策略学习效率。但 actor 的主要梯度来自 critic，因此该影响通常小于对 critic 移除 ($z_{sa}$) 的影响。

---

## 3.7 ($\pi$) 仅使用 ($z_s$)

输入变为：

[  
$$
\pi(z_s).  
$$
]

这测试状态嵌入是否足以替代原始状态。

如果性能下降，说明 ($z_s$) 没有保留所有策略所需细节。因此默认设计：

[  
$$
\pi(z_s,s)  
$$
]

更稳健。

---

## 3.8 No fixed embeddings

默认 SALE 使用固定嵌入：

[  
$$
z^t_s,z^t_{sa}.  
$$
]

该变体使用当前编码器产生的嵌入：

[  
$$
z^{t+1}_s,z^{t+1}_{sa}.  
$$
]

问题在于，编码器每个训练步都会更新。于是同一个样本：

[  
$$
(s,a)  
$$

的输入表示不断变化：


$$
z^t_{sa}  
\neq  
z^{t+1}_{sa}.  
$$
]

critic 不仅要拟合非平稳 Bellman target，还要面对非平稳输入表示。这会增加训练难度。

fixed embeddings 的作用是：

[  
$$
\boxed{  
\text{在若干训练步内固定 actor/critic 的输入表征，降低输入非平稳性。}  
}  
$$
]

---

# 4. D.3 Normalization：为什么需要 AvgL1Norm？

默认归一化为：

# [  
$$
\operatorname{AvgL1Norm}(x)
=
\frac{x}{\frac{1}{N}\sum_i |x_i|}.  
$$
]

归一化后：

# [  
$$
\frac{1}{N}\sum_i  
|\operatorname{AvgL1Norm}(x)_i|
$$

]

也就是说，AvgL1Norm 固定向量的平均绝对值。

它的作用不是把向量变成单位 ($L_2$) 范数，也不是做均值方差标准化，而是稳定整体尺度。

---

## 4.1 为什么 (z_s) 需要归一化？

encoder loss 是：

[  
$$
|z_{sa}-z_{s'}|^2.  
$$
]

如果没有尺度控制，嵌入可能出现两类问题：

[  
$$
\text{尺度单调增长}  
$$
]

或：

[  
$$
\text{塌缩成低信息表示}.  
$$
]

同时，actor/critic 会直接使用 (z_s,z_{sa})。如果嵌入尺度随训练不断变化，下游网络输入分布也会不断变化。

AvgL1Norm 使：

[  
$$
z_s  
$$
]

保持稳定尺度，从而稳定下游输入。

---

## 4.2 为什么 ($\phi_s,\phi_{sa}$) 也需要归一化？

($\phi_s,\phi_{sa}$) 是原始输入经过线性层后的表示：


$$
\phi_s=\operatorname{Linear}(s),  
$$

$$
\phi_{sa}=\operatorname{Linear}(s,a).  
$$


下游输入是嵌入和原始输入投影的拼接：


$$
(z_{sa},z_s,\phi_{sa}).  
$$


如果 ($z_s$) 的尺度稳定在平均绝对值 1，但 ($\phi_{sa}$) 的尺度很大或很小，critic 可能过度依赖某一部分输入。

因此，对 ($\phi$) 也做 AvgL1Norm，可以让各类输入特征处在相近尺度。

---

## 4.3 为什么默认不归一化 ($z_{sa}$)？

($z_{sa}$) 的训练目标是：

[  
$$
z_{sa}\approx z_{s'}.  
$$
]

而：

# [  
$$
z_{s'}
=
\operatorname{AvgL1Norm}(f(s')).  
$$
]

因此 ($z_{s'}$) 已经是归一化目标。

如果 ($z_{sa}$) 成功匹配 ($z_{s'}$)，它自然会具有相近尺度。额外对 ($z_{sa}$) 归一化可能限制 ($g$) 的表达能力，或者改变预测端与目标端之间的距离关系。

因此默认只对 ($z_s$) 和 ($\phi$) 做显式 AvgL1Norm，而不直接对 ($z_{sa}$) 做归一化。

---

## 4.4 No normalization on ($\phi$)

此变体只归一化状态嵌入：

[  
$$
\operatorname{AvgL1Norm}(f(s)),  
$$
]

但不归一化：

[  
$$
\phi_s,\phi_{sa}.  
$$
]

该实验检验：原始输入线性特征是否需要与嵌入保持同等尺度。

若性能下降，说明不同输入分量尺度不匹配会影响 actor/critic 学习。

---

## 4.5 No normalization

此变体完全移除归一化：

[  
$$
Q(z_{sa},f(s),\phi_{sa}),  
$$
]

[  
$$
\pi(f(s),\phi_s).  
$$
]

该实验检验 AvgL1Norm 是否整体必要。

没有归一化时，嵌入尺度和输入投影尺度均由优化过程自由决定，可能造成训练不稳定。

---

## 4.6 Normalization used on (z_{sa})

此变体额外归一化：


$$
g(z_s,a).  
$$

输入为：


$$
Q  
\left(  
\operatorname{AvgL1Norm}(g(z_s,a)),  
\operatorname{AvgL1Norm}(f(s)),  
\operatorname{AvgL1Norm}(\phi_{sa})  
\right).  
$$


它检验默认不归一化 ($z_{sa}$) 是否合理。

若性能没有提升甚至下降，则说明通过匹配已归一化目标 ($z_{s'}$) 已足够约束 ($z_{sa}$) 尺度，额外归一化反而可能干扰表示学习。

---

## 4.7 BatchNorm 替代 AvgL1Norm

BatchNorm 使用 batch 统计：

$$
\mu_B,\sigma_B.  
$$


在监督学习中很常用，但在 RL 中存在问题：

$$
\text{数据分布随策略变化}  
$$
$$
\text{replay buffer 混合旧策略和新策略数据}  
$$
$$
\text{batch 统计可能不稳定}  
$$

此外，评估时使用的统计量和训练时 batch 统计可能不一致。  
因此 BatchNorm 不一定适合 off-policy actor-critic 中的嵌入输入稳定化。

---

## 4.8 LayerNorm 替代 AvgL1Norm

LayerNorm 对单个样本的特征维度做均值方差标准化：

$$
x\mapsto  
\frac{x-\mu(x)}{\sigma(x)}.  
$$


它不依赖 batch 统计，但会移除样本内部的均值和尺度信息。

AvgL1Norm 只做整体缩放：
$$
x\mapsto  
\frac{x}{\operatorname{mean}(|x|)}.  
$$

因此它更温和，保留了向量的偏移结构和相对坐标结构。

这可能是 AvgL1Norm 更适合 SALE 的原因。

---

## 4.9 Cosine similarity loss

Cosine loss 只关心方向相似性：
$$
\frac{z_{sa}}{|z_{sa}|_2}  
^\top  
\frac{z_{s'}}{|z_{s'}|_2}.  
$$
它不关心尺度。因此可以避免某些尺度增长问题。

但是，下游 actor/critic 使用的是嵌入本身，而不仅是方向。若训练目标不控制尺度，嵌入输入的尺度仍可能不适合下游网络。

因此，SALE 默认选择：


$$
\text{AvgL1Norm + MSE}  
$$

而不是只用 cosine similarity。

---

# 5. D.4 End-to-end：为什么测试端到端训练？

默认 SALE 是解耦式：
$$
\mathcal L_{\text{encoder}}
=
|z_{sa}-|z_{s'}|_\times|^2.  
$$

critic loss 和 policy loss 不更新 encoder。

端到端变体则让 encoder 同时受到 value loss 和 encoder loss 影响：
$$
\mathcal L
=
\operatorname{Huber}  
(\text{target}-Q(z^{t+1}_{sa},z^{t+1}_s,s,a))  
+  
\beta  
|z^{t+1}_{sa}-|z^{t+1}_{s'}|_\times|^2.  
$$

这里：

$$
\beta  
$$

控制动力学表征损失相对于 value loss 的权重。

---

## 5.1 端到端训练中的 target

target 定义为：

$$
\text{target}
=
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},Q_{\max}  
\right).  
$$

其中：
$$
x=[z^t_{s'a'},z^t_{s'},s',a'].  
$$

与默认 SALE 不同的是，当前 value loss 使用当前嵌入：
$$
z^{t+1}_{sa},z^{t+1}_s.  
$$
这意味着 value loss 的梯度可以直接进入：
$$
f_{t+1},g_{t+1}.  
$$

---

## 5.2 为什么端到端训练可能有吸引力？

从普通深度学习角度看，端到端训练通常有吸引力，因为下游任务损失可以直接塑造表示：

$$
\text{representation optimized for final task}.  
$$


如果 value loss 是稳定且可靠的监督信号，那么让 encoder 直接服务于 value prediction 似乎合理。

---

## 5.3 为什么在 TD7/Sale 中端到端反而可能更差？

强化学习中的 value loss 不是普通监督学习损失。Bellman target：


$$
y=r+\gamma Q_{\text{target}}(s',a')  
$$

具有以下特征：

$$
\text{bootstrap}  
$$

$$
\text{approximate target network}  
$$

$$
\text{policy-dependent action }a'  
$$

$$
\text{off-policy replay distribution}  
$$

$$
\text{target 随训练变化}  
$$


因此，value loss 是非平稳且可能带偏差的。

如果它直接更新 encoder，则 encoder 会追随 critic 的短期误差和策略变化，而不是稳定地学习环境动力学：
$$
(s,a)\rightarrow s'.  
$$
这会破坏 SALE 的核心设计：

$$
\boxed{  
\text{encoder 学稳定动力学结构，critic 使用该结构估计价值。}  
}  
$$

端到端训练把两者重新耦合，可能导致表示空间被不稳定的 Bellman 误差污染。

---

## 5.4 ($\beta$) 的意义

端到端损失为：

# [  
$$
\mathcal L
=
\mathcal L_Q  
+  
\beta \mathcal L_{\text{enc}}.  
$$
]

如果：

[  
$$
\beta\ll 1,  
$$
]

value loss 主导 encoder，表征更容易被 critic 误差牵引。

如果：

[  
$$
\beta\gg 1,  
$$
]

encoder loss 主导，但此时端到端 value loss 仍会进入 encoder，而且整体优化权衡可能困难。

因此调节 ($\beta$) 是在尝试平衡：

[  
$$
\text{价值任务适配}  
$$
]

和：

[  
$$
\text{动力学表征稳定性}.  
$$
]

表 11 和图 17 显示不同 ($\beta$) 下的性能，用于判断这种平衡是否有效。

---

# 第三部分：整体机制总结

这几节可以概括为四个实验问题。

---

## 1. 学习目标

默认：

[  
$$
z_{sa}\rightarrow z_{s'}.  
$$
]

替代：

[  
$$
z_{sa}\rightarrow s',  
$$
]

[  
$$
z_{sa}\rightarrow z^{\text{target}}_{s'},  
$$
]

[  
$$
z_{sa}\rightarrow (z_{s'},r),  
$$
]

[  
$$
z_{sa}\rightarrow z_{s'a'}.  
$$
]

关键判断是：

[  
$$
\boxed{  
\text{目标是否稳定、是否主要来自环境动力学、是否避免依赖当前策略。}  
}  
$$
]

---

## 2. 网络输入

默认：

$$
Q(z_{sa},z_s,s,a),  
\qquad  
\pi(z_s,s).  
$$

消融：

[  
$$
Q(z_s,s,a),  
\quad  
Q(z_{sa},s,a),  
\quad  
Q(z_{sa},z_s),  
\quad  
Q(z_{sa}),  
\quad  
Q(s,a),  
$$
]

[  
$$
\pi(s),  
\quad  
\pi(z_s),  
$$
]

以及 no fixed embeddings。

关键判断是：

[  
$$
\boxed{  
\text{嵌入应增强原始输入，而不是完全替代原始输入。}  
}  
$$
]

---

## 3. 归一化

默认：

[  
$$
\operatorname{AvgL1Norm}(f(s)),  
\qquad  
\operatorname{AvgL1Norm}(\phi_s),  
\qquad  
\operatorname{AvgL1Norm}(\phi_{sa}).  
$$
]

变体包括：

[  
$$
\text{不归一化 }\phi,  
$$
]

[  
$$
\text{完全不归一化},  
$$
]

[  
$$
\text{归一化 }z_{sa},  
$$
]

[  
$$
\text{BatchNorm},  
$$
]

[  
$$
\text{LayerNorm},  
$$
]

[  
$$
\text{Cosine loss}.  
$$
]

关键判断是：

[  
$$
\boxed{  
\text{嵌入与原始输入投影必须处于稳定且相近的尺度。}  
}  
$$
]

---

## 4. 端到端训练

默认是解耦：

# [  
$$
\mathcal L_{\text{enc}}
=
|z_{sa}-|z_{s'}|_\times|^2.  
$$
]

端到端变体：

# [  
$$
\mathcal L
=
\mathcal L_Q  
+  
\beta\mathcal L_{\text{enc}}.  
$$
]

关键判断是：

[  
$$
\boxed{  
\text{value loss 是否应该直接更新 encoder。}  
}  
$$
]

SALE 的结论倾向于否定：encoder 应独立学习动力学结构，而不是被非平稳 Bellman loss 直接支配。

---

# 第四部分：最核心结论

附录 D.1-D.4 的核心结论是：

[  
$$
\boxed{  
\text{SALE 的有效性依赖于“稳定、解耦、动力学驱动”的表征学习。}  
}  
$$
]

具体来说：

[  
$$
\boxed{  
z_{sa}\approx z_{s'}  
}  
$$
]

比依赖当前策略的：

[  
$$
\boxed{  
z_{sa}\approx z_{s'a'}  
}  
$$
]

更合理；

[  
$$
\boxed{  
Q(z_{sa},z_s,s,a)  
}  
$$
]

比只用嵌入或只用原始输入更稳健；

[  
$$
\boxed{  
\operatorname{AvgL1Norm}  
}  
$$
]

比 BatchNorm、LayerNorm 或单纯 cosine loss 更符合该架构需求；

[  
$$
\boxed{  
\text{decoupled encoder training}  
}  
$$
]

比 end-to-end value-loss-driven representation learning 更稳定。

所以，这些设计不是孤立技巧，而是共同服务于同一个目标：

[  
$$
\boxed{  
\text{让编码器学习相对稳定的环境动力学结构，再把该结构作为 actor-critic 的额外输入。}  
}  
$$
]

这正是 SALE 与普通端到端 actor-critic 表征学习的根本区别。




----

# 第一部分：翻译

## E 外推误差研究

## E.1 外推误差

外推误差是深度强化学习中的一个问题，指的是：**价值函数会对未见过的动作或很少见的动作给出很差的价值估计。**

如果假设某个状态—动作对：
$$
(s,a)  
$$
不包含在数据集中，那么：
$$
Q(s,a)  
$$
实际上就是价值函数 ($Q$) 生成的一个猜测。

在训练过程中，状态 ($s$) 总是从数据集中采样得到，但动作 ($a$) 经常由策略生成：
$$
a\sim \pi(s).  
$$
因此，价值函数可能需要估计一个数据集中没有充分覆盖的动作的价值，从而产生很差的估计。

外推误差通常被认为是离线强化学习中的问题。在离线强化学习中，agent 得到的是一个固定数据集，不能再继续与环境交互；因此，从当前策略采样得到的动作可能并不包含在数据集中。

外推误差通常不被认为是在线强化学习中的主要问题，因为在线 RL 中策略可以与环境交互，并为它自己生成的动作收集对应数据。

在本文的经验分析中，即第 E.2 节，作者观察到：使用 SALE 时也会出现外推误差。作者的假设是：SALE 显著扩展了价值函数输入中依赖动作的那部分维度，使网络更容易产生错误的外推。

例如，在 Ant 环境中，原始动作维度是：
$$
8,  
$$
但状态—动作嵌入：

$$
z_{sa}  
$$
的维度是：
$$
256.  
$$

由于表示动作相关输入所用的维度数量大幅增加，未见过的动作可能在表示空间中显得与已见动作更加不同。因此，价值函数更容易在这些未见动作上给出错误外推。

---

## E.2 经验分析

本节通过改变 TD7 中价值函数的输入，来理解输入维度大小和外推误差之间的关系。

TD7 中价值函数的默认输入如下：
$$
Q(z_{sa},z_s,\phi),  
\tag{67}  
$$
其中：
$$
\phi:=\operatorname{AvgL1Norm}(\operatorname{Linear}(s,a)).  
\tag{68}  
$$
在所有实验中，不使用 value clipping。原因是：value clipping 正是根据本节分析结果提出的。因此，这里先移除 value clipping，以观察未裁剪情况下的外推误差。

于是，原本的价值函数损失变为：

$$
\mathcal L(Q_{t+1})  
:=  
\operatorname{Huber}  
\left(  
\text{target}
-
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\right),  
\tag{69}  
$$

其中：
$$
\text{target}  
:=  
r+\gamma  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
\tag{70}  
$$
$$
x:=[z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'],  
\tag{71}  
$$
$$
a':=\pi_t(z^{t-1}_{s'},s')+\epsilon,  
\tag{72}  
$$
$$
\epsilon  
\sim  
\operatorname{clip}  
\left(  
\mathcal N(0,\sigma^2),  
-c,c  
\right).  
\tag{73}  
$$
本节不使用 policy checkpoints，并且不修改策略。由于外推误差与可用数据密切相关，作者还改变了 replay buffer 的最大容量。默认 replay buffer 大小为：
$$
1M.  
$$
---

### Extrapolation 1: No clipping

这是不在价值函数损失中使用 value clipping 的 TD7，即上面讨论的设置。

---

### Extrapolation 2: No ($z_{sa}$)

从价值函数输入中移除：

$$
z_{sa}.  
$$
于是价值函数输入变为：
$$
Q_{t+1}(z^t_s,\phi).  
$$
---

### Extrapolation 3: Small ($\phi$)

将：
$$
\phi  
$$
的维度从：
$$
256  
$$
减少到：
$$
16.  
$$
---

### Extrapolation 4: No ($z_{sa}$) and small ($\phi$)

从价值函数输入中移除：
$$
z_{sa},  
$$
同时将：
$$
\phi  
$$
的维度从：
$$
256  
$$
减少到：
$$
16.  
$$
---

### Extrapolation 5: Frozen embeddings

**在整个训练过程中保持编码器不变，即编码器不训练。**

这意味着价值函数输入为：
$$
Q_{t+1}(z^0_s,\phi).  
$$
---

### Extrapolation 6: TD7

完整 TD7 方法，但不使用 checkpoints。

---

# 第二部分：解释

## 1. 这一节要解决的问题

前文已经说明，SALE 会给价值函数加入状态—动作嵌入：

$$
z_{sa}=g(z_s,a),  
$$
从而使 critic 输入从普通的：

$$
Q(s,a)  
$$
变成：
$$
Q(z_{sa},z_s,\phi).  
$$
其中：
$$
\phi=\operatorname{AvgL1Norm}(\operatorname{Linear}(s,a)).  
$$
这带来两个相反效果。

一方面，($z_{sa}$) 可以提供有用的状态—动作动力学结构：

$$
(s,a)\mapsto s'.  
$$
另一方面，($z_{sa}$) 也大幅扩展了动作相关输入维度。例如 Ant 中：
$$
\dim(a)=8,  
$$
但：
$$
\dim(z_{sa})=256.  
$$
这可能使 critic 更容易在数据外动作上产生不可靠估计。

因此，附录 E 的核心问题是：
$$
\boxed{  
\text{SALE 的状态—动作嵌入是否会加剧外推误差？}  
}  
$$
以及：
$$
\boxed{  
\text{这种误差是否与动作相关输入维度有关？}  
}  
$$

---

## 2. 外推误差的精确定义

设 replay buffer 或数据集为：
$$
\mathcal D=\{(s_i,a_i,r_i,s'_i)\}_{i=1}^N.  
$$
在训练 critic 时，当前 batch 中的状态和动作：

$$
(s,a)  
$$

来自数据集：

$$
(s,a)\sim \mathcal D.  
$$

但是 Bellman target 中的下一动作：


$$
a'=\pi_t(s')+\epsilon  
$$


是由当前策略生成的，而不一定来自数据集。

如果：


$$
(s',a')\notin \operatorname{supp}(\mathcal D),  
$$


那么：
$$
Q_t(s',a')  
$$
**就是对数据支持之外的状态—动作对的估计。此时 critic 没有充分监督信号保证该值准确**。

外推误差可以写成：
$$
\epsilon_{\text{ext}}(s,a)
=
Q_\theta(s,a)-Q^\pi(s,a),  
$$
其中关键条件是：

$$
(s,a)  
$$

位于数据覆盖不足的区域。

---

## 3. 为什么在线 RL 通常不太担心外推误差？

在线 RL 中，策略可以继续和环境交互。

如果策略产生一个新动作：
$$
a=\pi(s),  
$$
环境会返回真实反馈：
$$
r,\ s'.  
$$

这个 transition 会进入 replay buffer：


$$
(s,a,r,s')\rightarrow\mathcal D.  
$$
因此，即使 critic 一开始对这个动作估计错误，只要策略真的执行该动作，后续数据就能修正这个估计。

所以在线 RL 中通常认为：
$$
\boxed{  
\text{外推误差可以通过继续收集数据被纠正。}  
}  
$$
离线 RL 则不同。离线数据集固定，不能执行新动作，也就无法获得纠正信号。因此外推误差在离线 RL 中尤其严重。

---

## 4. 为什么 SALE 会让在线 RL 也出现外推误差？

SALE 增加了动作相关输入维度。

普通 TD3 critic 的动作相关部分大致是：
$$
a\in\mathbb R^m.  
$$

SALE 中 critic 不只看到 ($a$)，还看到：

$$
z_{sa}=g(z_s,a).  
$$


如果：

$$
z_{sa}\in\mathbb R^{256},  
$$

那么动作相关输入从原始低维动作扩展到了高维非线性表示。

此时，一个未见动作 ($a_{\text{new}}$) 在原始动作空间中可能离已有动作不远：


$$
||a_{\text{new}}-a_i|| \text{ small},  
$$

但经过非线性编码器后：
$$
||g(z_s,a_{\text{new}})-g(z_s,a_i)||  
$$

可能变大。

也就是说，动作在嵌入空间中的差异被放大。critic 在高维动作相关输入空间中更容易遇到“看起来远离训练数据”的点，从而外推出不现实的 ($Q$) 值。

因此，SALE 的风险是：
$$
\boxed{  
\text{表征增强提高了 critic 表达能力，同时也扩大了外推空间。}  
}  
$$

---

## 5. 为什么外推误差与输入维度有关？

高维空间中数据覆盖通常更稀疏。
假设有 ($N$) 个样本。如果动作相关输入维度是：
$$
d=8,  
$$
样本覆盖可能尚可。但如果动作相关表示维度变为：
$$
d=256,  
$$
同样数量样本在该空间中会变得极其稀疏。
这就是所谓维度灾难的一种体现。

更高维的动作相关输入意味着：
$$
\text{已见样本之间距离更大}  
$$
$$
\text{未见动作更容易落在低密度区域}  
$$
$$
\text{critic 更依赖函数近似外推}  
$$
因此，作者提出假设：
$$
\boxed{  
\dim(z_{sa}) \uparrow  
\Rightarrow  
\text{extrapolation risk} \uparrow.  
}  
$$

---

## 6. 为什么本节先移除 value clipping？

完整 TD7 使用 value clipping：

$$
\operatorname{clip}  
\left(  
Q_t(s',a'),  
Q_{\min},  
Q_{\max}  
\right).  
$$

但本节的目的是研究是否存在外推误差，以及外推误差来自哪里。

**如果一开始就使用 value clipping，极端外推值会被裁剪掉，现象会被掩盖**。

因此，E.2 明确设定：

$$
\text{no value clipping}.  
$$

这样才能观察：

$$
Q_t(s',a')  
$$

是否会由于高维状态—动作输入而出现不现实估计。

这是一种合理的实验逻辑：
$$
\text{先暴露问题}  
\rightarrow  
\text{再提出 clipping 作为修正}  
$$

---

## 7. 式（69）—（73）的含义

未使用 value clipping 时，critic target 是：


$$
\text{target}
=
r+\gamma  
\min(Q_{t,1}(x),Q_{t,2}(x)).  
$$

其中：
$$
x=[z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'].  
$$

这说明 target 中仍然有两个稳定化机制。

第一，使用双 critic 的较小值：

$$
\min(Q_{t,1},Q_{t,2}).  
$$

这来自 TD3 的 clipped double Q-learning，用于缓解过估计。

第二，使用 target policy smoothing：
$$
a'=\pi_t(z^{t-1}_{s'},s')+\epsilon.  
$$
其中：
$$
\epsilon  
\sim  
\operatorname{clip}(\mathcal N(0,\sigma^2),-c,c).  
$$
这用于平滑 target action，防止 critic 在动作空间中形成尖峰误差。

但是，本节去掉了第三个机制：
$$
\operatorname{clip}(\cdot,Q_{\min},Q_{\max}).  
$$

因此，如果高维输入导致 target ($Q$) 外推出极端值，式（70）不会阻止它。

---

## 8. 为什么 policy checkpoints 不使用？

policy checkpoints 会影响 evaluation 使用的策略：
$$
\pi_c  
$$
而不是当前策略：
$$
\pi_{t+1}.  
$$
如果本节使用 checkpoints，实验曲线可能反映的是 checkpoint selection 对性能的稳定化效果，而不是 critic 外推误差本身。

因此，E.2 不使用 policy checkpoints，是为了隔离研究：
$$
\boxed{  
\text{value function 输入维度与外推误差之间的关系。}  
}  
$$

---

## 9. 为什么 replay buffer 大小也要变化？

外推误差与数据覆盖密切相关。

如果 replay buffer 很大：

$$
|\mathcal D|=1M,  
$$

它包含较多历史 transition，可能覆盖更多状态—动作区域。

如果 replay buffer 较小，则数据覆盖变窄，某些动作区域更容易成为未见或少见区域。

因此，改变 replay buffer 容量可以检验：
$$
\boxed{  
\text{外推误差是否随着可用数据减少而加剧。}  
}  
$$

如果小 buffer 下更容易出现不稳定，就支持“数据覆盖不足导致外推误差”的解释。

---

# 10. 六个 Extrapolation 实验逐项解释

## 10.1 Extrapolation 1: No clipping

该实验是：
$$
\text{TD7 without value clipping}.  
$$
critic 输入仍是：
$$
Q(z_{sa},z_s,\phi),  
$$
但 target 不做 value clipping。

这个实验是基准，用来观察完整 SALE 输入在没有 clipping 时是否产生外推不稳定。

如果该设置中 value estimate 出现极端增长、性能崩坏或曲线不稳定，则说明仅靠双 critic 和 target policy smoothing 不足以控制 SALE 引入的外推风险。

---

## 10.2 Extrapolation 2: No ($z_{sa}$)

输入变为：
$$
Q(z_s,\phi).  
$$
这里移除了状态—动作嵌入：

$$
z_{sa}.  
$$
这个实验检验：

$$
\boxed{  
z_{sa}\text{ 是否是外推误差的重要来源？}  
}  
$$
如果移除 ($z_{sa}$) 后外推现象减弱，说明高维状态—动作嵌入确实加剧了外推。

但需要注意：移除 ($z_{sa}$) 也会降低表征能力。因此这个实验不是为了寻找最佳性能，而是为了定位外推来源。

---

## 10.3 Extrapolation 3: Small ($\phi$)

默认：
$$
\phi=\operatorname{AvgL1Norm}(\operatorname{Linear}(s,a))  
$$
维度为：
$$
256.  
$$
该实验把 ($\phi$) 维度降到：
$$
16.  
$$

这里 ($z_{sa}$) 仍然存在，因此动作相关输入仍包含高维嵌入。

该实验检验：

[  
$$
\boxed{  
\phi\text{ 的维度是否也会影响外推误差？}  
}  
$$
]

如果仅减小 ($\phi$) 就能减少不稳定，说明不只是 ($z_{sa}$)，任何扩大的动作相关输入都可能加剧外推。

---

## 10.4 Extrapolation 4: No ($z_{sa}$) and small ($\phi$)

该实验同时：
$$
\text{移除 }z_{sa},  
$$
并将：

$$
\dim(\phi):256\rightarrow16.  
$$
此时 critic 的动作相关输入显著减少。

该实验检验：

$$
\boxed{  
\text{当动作相关输入维度整体变小时，外推误差是否明显减弱？}  
}  
$$

如果该设置最稳定，就支持作者假设：

$$
\text{动作相关输入维度越大，外推风险越高。}  
$$


---

## 10.5 Extrapolation 5: Frozen embeddings

编码器不训练，整个训练中保持初始状态。

价值函数输入为：
$$
Q(z^0_s,\phi).  
$$
这里的：
$$
z^0_s  
$$
来自未训练 encoder，因此不包含有意义的动力学表征。

这个实验检验：

$$
\boxed{  
\text{外推误差是否来自“学习到的嵌入结构”，还是仅来自“额外随机特征维度”？}  
}  
$$

**如果 frozen embeddings 也导致外推问题，说明只是增加随机高维输入就可能加剧外推。**

如果 frozen embeddings 不导致相同问题，而训练后的 ($z_{sa}$) 导致问题，则说明外推误差与学习到的动作相关嵌入结构有关。

不过原文给出的输入写作：

$$
Q_{t+1}(z^0_s,\phi),  
$$

这里没有 ($z^0_{sa}$)。因此该实验主要考察：不训练状态嵌入时，额外状态表征和 (\phi) 对 critic 稳定性的影响。

---

## 10.6 Extrapolation 6: TD7

这是完整 TD7 方法，但不使用 checkpoints。

也就是说，它包括 value clipping：
$$
\operatorname{clip}  
\left(  
Q_t(s',a'),  
Q_{\min},  
Q_{\max}  
\right).  
$$
与 Extrapolation 1 的区别是：
$$
\text{Extrapolation 1: no clipping}  
$$
$$
\text{Extrapolation 6: with clipping}  
$$

这个实验检验：


$$
\boxed{  
\text{value clipping 是否能够修正由 SALE 引起的外推不稳定？}  
}  
$$


如果完整 TD7 更稳定，说明裁剪 target value 是有效补救措施。

---

# 11. 为什么 value clipping 可以缓解外推误差？

未裁剪 target 为：
$$
y
=
r+\gamma Q_t(s',a').  
$$
如果：
$$
Q_t(s',a')  
$$
对未见动作产生极端高估：
$$
Q_t(s',a')\gg \text{reasonable range},  
$$
则 target 也会变大：
$$
y\gg r+\gamma \text{reasonable value}.  
$$
critic 会被训练去拟合这个错误 target，错误进一步传播。

value clipping 改为：
$$
y
=
r+\gamma  
\operatorname{clip}  
(Q_t(s',a'),Q_{\min},Q_{\max}).  
$$
其中：
$$
Q_{\min},Q_{\max}  
$$
来自已见数据上的 value range。

因此，即使某个未见动作的 ($Q$) 被外推到不现实的极端值，也会被限制在已见范围内。

这不会保证 target 完全正确，但可以防止极端错误传播：
$$
\boxed{  
\text{value clipping 主要防止异常外推值污染 Bellman target。}  
}  
$$
---

## 12. 为什么 online RL 中只需要“暂时稳定”？

在线 RL 可以通过环境交互修正错误。也就是说，如果策略选择了某个动作：
$$
a=\pi(s),  
$$
环境会给出真实反馈：
$$
r,\ s'.  
$$
因此，critic 后续可以在真实数据上修正：
$$
Q(s,a).  
$$
所以在线 RL 中 value clipping 的作用不是永久禁止外推，也不是让 critic 永远保守，而是在真实反馈到达前避免极端 target 破坏训练。

可以概括为：
$$
\boxed{  
\text{在在线 RL 中，clipping 是过渡稳定器，不是最终价值约束。}  
}  
$$
---

# 13. 这节与前文 SALE 设计的关系

第 4 节说明 SALE 的好处：

$$
z_{sa}  
$$
能捕捉状态—动作动力学，有助于 value learning。

附录 E 补充说明 SALE 的代价：
$$
z_{sa}  
$$
扩大动作相关输入维度，可能加剧外推误差。

因此 SALE 不是无条件有益，而是需要配合稳定机制：

$$
\boxed{  
\text{SALE 提供更强表征，但必须防止高维动作相关输入导致过度外推。}  
}  
$$

这正解释了为什么 TD7 同时包含：
$$
\text{SALE}  
$$
和：

$$
\text{value clipping}.  
$$


---

# 14. 最核心总结

附录 E 的核心逻辑是：

$$
\text{SALE 引入高维状态—动作嵌入 }z_{sa}  
$$
$$
\Downarrow  
$$
$$
\text{critic 的动作相关输入维度显著增加}  
$$
$$
\Downarrow  
$$

$$
\text{未见动作在表示空间中更容易远离已见动作}  
$$
$$
\Downarrow  
$$

$$
\text{价值函数更容易对未见动作产生不现实外推}  
$$
$$
\Downarrow  
$$
$$
\text{Bellman target 被异常 }Q(s',a')\text{ 污染}  
$$
$$
\Downarrow  
$$
$$
\text{训练不稳定或性能下降}  
$$
因此，作者通过 E.2 的消融实验改变：
$$
z_{sa}  
$$
和：
$$
\phi  
$$
的存在与维度，以验证外推误差是否与动作相关输入维度有关。

最终完整 TD7 通过 value clipping 处理该问题：
$$
Q_t(s',a')  
\mapsto  
\operatorname{clip}(Q_t(s',a'),Q_{\min},Q_{\max}).  
$$
最重要的结论是：
$$
\boxed{  
\text{状态—动作嵌入提高了表征能力，但也增加了高维外推风险；TD7 通过 value clipping 控制这种风险。}  
}  
$$

---

# 翻译

## F Policy Checkpoints

## F.1 Motivation

深度强化学习算法广泛地被认为具有内在不稳定性，这种不稳定性经常导致训练过程中性能出现显著方差。

深度强化学习中的不稳定性可能发生在两个时间尺度上。

第一种是 **微观时间尺度**：性能可能在相邻 episode 之间发生剧烈变化。

第二种是 **宏观时间尺度**：随着训练过多，算法可能发散或崩溃。

在图 24 和图 25 中，本文展示了强化学习方法的不稳定性：

1. 图 24 展示了：只呈现平均性能可能会掩盖单次 RL trial 中的不稳定性；
    
2. 图 25 衡量了：相邻 evaluation 之间性能可能下降多少。
    

---

## F.2 Method

本文在 RL 中使用 checkpoints 的方法概要如下：

- 使用训练 episode 评估当前策略；
    
- 训练当前策略，训练时间步数量等于或正比于 assessment 阶段观察到的时间步数量；
    
- 如果当前策略优于 checkpoint policy，则更新 checkpoint policy。
    

需要注意，本文目标是使用 **training episodes** 来评估 checkpoint policy，因为任何 evaluation 或 test-time episodes 都被认为与训练过程完全分离。

为了清晰起见，本文使用 **assessment** 一词，而不是 evaluation，表示训练过程中发生的任何性能测量。

Algorithm 3 给出了基本 policy checkpoint 策略。

---

## Minimum performance criteria

一个仍然需要决定的重要选择是：如何判断当前策略是否优于 checkpoint policy。

本文不使用平均性能，而是考虑少量 assessment episodes 上的 **minimum performance**。

使用 minimum 能够提供一个对不稳定性更敏感的标准，从而偏好能够取得一致性能的策略。

此外，使用 minimum 还允许 assessment phase 提前结束。如果当前策略的 minimum performance 低于 checkpoint policy 的 minimum performance，则可以提前终止当前 assessment phase。

这使得可以使用更大的最大 assessment episode 数量，同时不会把宝贵的训练 episode 浪费在评估次优策略上。

Algorithm 4 给出了使用 minimum performance 且由于 early termination 而具有可变长度 assessment phase 的 policy checkpoints。

---

## Algorithm 3 Basic Policy Checkpoints

1. 对于 episode (=1) 到 assessment_episodes，执行 assessment：
    
2. 跟随当前策略：
    
$$
\pi_{t+1}  
$$
并确定 episode_reward。

3. 更新当前策略的性能度量。
    
4. 将该 episode 的长度加到：
    
$$
\text{timesteps\_since\_training}  
$$
中。

5. 如果 actor：
    
$$
\pi_{t+1}  
$$
优于 checkpoint policy：
$$
\pi_c,  
$$
则执行 checkpointing。

6. 更新 checkpoint networks：
    
$$
\pi_c \leftarrow \pi_{t+1},  
\qquad  
f_c \leftarrow f_t.  
$$
6. 更新 checkpoint performance。
    
7. 对于 ($i=1$) 到 timesteps_since_training，执行 training：
    
8. 训练 RL agent。
    
9. 重置当前策略的性能度量。
    

---

## Algorithm 4 Policy Checkpoints with Minimum Performance and Early Termination

1. 对于 episode (=1) 到 assessment_episodes，执行 assessment：
    
2. 跟随当前策略：
    
$$
\pi_{t+1}  
$$
    并确定 episode_reward。

3. 更新 minimum performance：
    
$$
\text{min\_performance}  
\leftarrow  
\min(\text{min\_performance},\text{episode\_reward}).  
$$
4. 将该 episode 的长度加到：
    
$$
\text{timesteps\_since\_training}.  
$$
5. 如果：
    
$$
\text{min\_performance}  
\le  
\text{checkpoint\_performance},  
$$
    则执行 early termination。
3. 结束当前 assessment。
    
4. 如果：
    
$$
\text{min\_performance}  
\ge  
\text{checkpoint\_performance},  
$$
    则执行 checkpointing。
5. 更新 checkpoint networks：
    
$$
\pi_c \leftarrow \pi_{t+1},  
\qquad  
f_c \leftarrow f_t.  
$$
6. 更新 checkpoint performance：
    
$$
\text{checkpoint\_performance}  
\leftarrow  
\text{min\_performance}.  
$$

7. 对于 (i=1) 到 timesteps_since_training，执行 training：
    
8. 训练 RL agent。
    
9. 重置 min_performance。
    

---

## Early learning

在经验分析中，本文观察到：较长的 assessment phase 会对早期学习产生负面影响，见表 13。

因此，对 policy checkpoints 做最后一个调整：在学习早期阶段，将 assessment episodes 的数量固定为 1；在学习后期，再将其增加到一个更大的值。

由于策略或环境可能具有随机性，当增加 assessment episodes 数量时，本文会降低 checkpoint policy 的 performance 值，乘以一个系数：
$$
0.9.  
$$
原因是 checkpoint performance 可能已经过拟合到用于评估其表现的单个 episode。

---

在主文 Algorithm 1 中引用了若干变量，其含义如下：

### checkpoint_condition

checkpoint condition 指以下两种情况之一：

1. 达到了最大 assessment episode 数量，即 20；
    
2. 当前 minimum performance 低于 checkpoint policy 的 minimum performance。
    

### outperforms

outperforms 指：

1. 达到了最大 assessment episode 数量；
    
2. 当前 minimum performance 高于 checkpoint policy 的 minimum performance。
    

---

## Variable descriptions

在第 A.2 节的表 3 中，即 TD7 超参数表中，引用了若干变量，其含义如下：

### Checkpoint criteria

用于评估当前策略和 checkpoint policy 性能的度量。默认是 assessment episodes 上的 minimum performance。

### Early assessment episodes

早期学习阶段中 assessment episodes 的最大数量。默认值为：
$$
1.  
$$
### Late assessment episodes

后期学习阶段中 assessment episodes 的最大数量。默认值为：
$$
20.  
$$
### Early time steps

早期学习阶段的持续时间，以 time steps 计。本文将前：
$$
750k  
$$
个 time steps 视为 early learning。

### Criteria reset weight

early learning 阶段结束后，对 checkpoint policy 当前 performance 施加的一次性乘数。默认值为：
$$
0.9.  
$$

---

## F.3 Empirical Analysis

TD7 使用的 checkpointing scheme 包含以下设计：

- 使用 20 个 assessment episodes 上的 minimum performance 来衡量当前策略和 checkpoint policy 的性能；
    
- 使用可变长度 assessment phase：如果当前策略的 minimum performance 低于 checkpoint policy 的 minimum performance，则 assessment phase 提前终止；
    
- 使用 early learning 阶段：最大 assessment episode 数量从 1 开始，并在 (750k) time steps 后增加到 20。
    

本节改变 policy checkpoints 中的一些设计选择，并分析使用 checkpoints 带来的稳定性收益。

---

### Checkpoint 1: Maximum number of assessment episodes

改变用于评估当前策略性能的最大 episode 数量。默认值是：
$$
20.  
$$
仍然使用 assessment phase 的 early termination。

---

### Checkpoint 2: Mean, fixed assessment length

使用 mean performance，而不是默认的 minimum performance，来判断当前策略是否优于 checkpoint policy。

在这种情况下，不使用 assessment phase 的 early termination。assessment episodes 的数量固定为：
$$
20.  
$$
---

### Checkpoint 3: Mean, variable assessment length

使用 mean performance 来判断当前策略是否优于 checkpoint policy。

使用 assessment phase 的 early termination。每个 episode 后，如果当前 mean performance 低于 checkpoint performance，则终止 assessment phase。

这意味着 assessment episodes 数量是可变的，最大为：
$$
20.  
$$

---

### Checkpoint 4: Fixed assessment length

每次 assessment phase 都使用相同数量的 assessment episodes，不使用 early termination。

---

### Checkpoint 5: Immediate

assessment episodes 的数量一开始就使用对应的目标数量，而不是先从 1 开始，并在 early learning 阶段结束，即 ($750k$) time steps 后，再增加到更高数量。

---

在表 12 中，本文展示了 ($5M$) time steps 时的主要结果。

为了衡量早期学习性能，表 13 展示了在 ($300k$) time steps 时使用 immediate checkpoints 的性能。

为了观察稳定性收益，图 30 展示了 5 个单独随机种子在使用和不使用 checkpoints 时的性能。

---

# 第二部分：解释

## 1. Policy checkpoint 要解决什么问题？

Policy checkpoint 要解决的是深度 RL 中的 **策略性能不稳定** 问题。

训练过程中，当前策略：
$$
\pi_{t+1}  
$$
不一定比历史策略更好。可能出现：
$$
J(\pi_{t+1}) < J(\pi_t)  
$$
甚至：
$$
J(\pi_T) < J(\pi_k),\qquad k<T.  
$$
也就是说，最终训练得到的策略不一定是训练过程中表现最好的策略。

这种现象在深度 RL 中非常常见，原因包括：
$$
\text{函数近似误差}  
$$
$$
\text{Bellman target 非平稳}  
$$
$$
\text{策略更新依赖不完美 critic}  
$$
$$
\text{off-policy replay buffer 分布滞后}  
$$
$$
\text{探索噪声导致轨迹质量波动}  
$$
$$
\text{环境随机性导致 episode return 高方差}  
$$
因此，policy checkpoint 的基本思想是：
$$
\boxed{  
\text{不要默认使用最后一个策略，而是保存训练过程中表现更可靠的策略。}  
}  
$$

---

## 2. 微观不稳定性与宏观不稳定性

原文区分了两种时间尺度。

---

### 2.1 微观时间尺度 instability

微观不稳定性指：相邻 episodes 或相邻 evaluations 之间性能剧烈波动。

例如：
$$
R_{k}=5000,  
$$
$$
R_{k+1}=1000.  
$$
这种波动可能来自：
$$
\text{环境随机性}  
$$
$$
\text{策略接近失败边界}  
$$
$$
\text{探索噪声}  
$$
$$
\text{策略对初始状态敏感}  
$$
即使平均性能较高，也可能存在偶发严重失败。

---

### 2.2 宏观时间尺度 instability

宏观不稳定性指：训练时间继续增加后，算法整体性能下降、崩溃或发散。

例如：
$$
J(\pi_{1M})=7000,  
$$
但：
$$
J(\pi_{5M})=3000.  
$$

这说明训练并不单调改进，过度训练可能导致策略退化。

Policy checkpoint 对这两种问题都有帮助：
$$
\text{微观层面：偏好 minimum performance 更高的稳定策略}  
$$
$$
\text{宏观层面：保留历史较优策略，避免最终策略退化}  
$$

---

## 3. 为什么平均性能可能掩盖不稳定性？

假设两个策略在 5 个 episode 上的回报如下：

$$
\pi_A: [1000,1000,1000,1000,1000],  
$$
$$
\pi_B: [2000,2000,2000,2000,-1000].  
$$
平均性能：
$$
\bar R(\pi_A)=1000,  
$$
$$
\bar R(\pi_B)=1400.  
$$

如果只看平均值，($\pi_B$) 更好。

但 ($\pi_B$) 存在一次严重失败：

$$
-1000.  
$$

minimum performance：


$$
R_{\min}(\pi_A)=1000,  
$$

$$
R_{\min}(\pi_B)=-1000.  
$$

按 minimum 判断，($\pi_A$) 更稳定。

这就是 minimum performance criteria 的核心逻辑：

[  
$$
\boxed{  
\text{checkpoint 不只追求高平均回报，还惩罚偶发严重失败。}  
}  
$$
]

---

## 4. **assessment 与 evaluation 的区别**

原文特别强调使用 **assessment**，而不是 evaluation。

### 4.1 assessment

**assessment 发生在训练过程中。它用于判断当前策略是否应该成为新的 checkpoint policy。**
**assessment episodes 仍属于训练流程的一部分。它们产生的 transition 可以用于 replay buffer 或后续训练。**

### 4.2 evaluation

**evaluation 或 test-time episode 完全独立于训练。它们只用于报告性能，不保存数据，不更新网络。**

因此：

$$
\boxed{  
\text{assessment 是训练内性能测量}  
}  
$$
$$
\boxed{  
\text{evaluation 是训练外性能报告}  
}  
$$

这个区分是为了避免“评估数据被用于训练”造成不公平。

---

## 5. Basic Policy Checkpoints 的逻辑

Algorithm 3 的流程可以写成：
$$
\text{Assessment}  
\rightarrow  
\text{Checkpointing}  
\rightarrow  
\text{Training}.  
$$
具体来说：

1. 固定当前策略 ($\pi_{t+1}$)；
    
2. 用它运行若干 assessment episodes；
    
3. 记录 episode_reward；
    
4. 累计这些 episode 中产生的时间步数；
    
5. 判断当前策略是否优于 checkpoint policy；
    
6. 若更优，则更新：
    
$$
\pi_c \leftarrow \pi_{t+1},  
\qquad  
f_c \leftarrow f_t;  
$$
7. 然后按 assessment 阶段收集到的时间步数执行相应数量的训练步。
    

核心思想是：
$$
\boxed{  
\text{先用固定策略收集并评估，再批量补回训练。}  
}  
$$

---

## 6. 为什么要先 assessment 再 batch training？

标准 off-policy RL 通常是：
$$
\text{collect one step}  
\rightarrow  
\text{train one step}.  
$$

这样会导致策略在一个 episode 中途不断变化。

**如果想用一个 episode 的 reward 衡量当前策略性能，就会出现歧义：该 episode 不是由一个固定策略产生的，而是由一系列变化中的策略产生的。**

policy checkpoint 改为：
$$
\text{固定策略运行 assessment episodes}  
\rightarrow  
\text{批量训练}.  
$$
这样，一个 assessment episode 的 return 对应明确的策略：
$$
\pi_{t+1}.  
$$
因此 performance measure 更干净。

---

## 7. 为什么 checkpoint 也要保存 ($f_c$)？

TD7 的策略输入不是单纯：

$$
s,  
$$
而是：
$$
(z_s,s).  
$$
其中：
$$
z_s=f(s).  
$$
因此 checkpoint policy ($\pi_c$) 在测试时需要对应的 checkpoint encoder：
$$
f_c.  
$$

测试动作实际为：
$$
a=\pi_c(f_c(s),s).  
$$

如果只保存 ($\pi_c$)，不保存对应的 ($f_c$)，则策略输入分布可能不一致，checkpoint policy 的表现无法复现。

因此 checkpoint 更新为：

$$
\pi_c \leftarrow \pi_{t+1},  
\qquad  
f_c \leftarrow f_t.  
$$

---

## 8. Minimum performance criteria 的数学形式

设当前策略在 assessment episodes 上得到回报：

$$
R_1,R_2,\dots,R_m.  
$$
mean criterion 是：
$$
C_{\text{mean}}(\pi)
=
\frac{1}{m}\sum_{i=1}^{m}R_i.  
$$

minimum criterion 是：
$$
C_{\min}(\pi)
=
\min_{1\le i\le m}R_i.  
$$
TD7 默认使用：
$$
C(\pi)=C_{\min}(\pi).  
$$

如果：
$$
C_{\min}(\pi_{t+1})>C_{\min}(\pi_c),  
$$

则认为当前策略优于 checkpoint policy。

---

## 9. minimum 为什么可以 early terminate？

设 checkpoint performance 为：

$$
C_c.  
$$


当前策略已经完成 ($k$) 个 assessment episodes，当前 minimum 为：

$$
m_k=\min(R_1,\dots,R_k).  
$$


如果：


$$
m_k\le C_c,  
$$


那么即使后续 episode 回报都很高，最终 minimum 也不可能超过 ($C_c$)，因为：

$$
\min(R_1,\dots,R_k,R_{k+1},\dots,R_m)  
\le  
m_k  
\le  
C_c.  
$$

因此当前策略已经不可能超越 checkpoint policy，可以提前结束 assessment。

这就是 Algorithm 4 中：

$$
\text{if min\_performance}\le \text{checkpoint\_performance}  
\Rightarrow  
\text{End current assessment}  
$$
的原因。

---

## 10. early termination 的意义

early termination 有两个好处。

第一，减少浪费。如果当前策略很差，不需要继续跑满 20 个 assessment episodes。

第二，允许设置较大的最大 assessment episode 数。对于有希望成为新 checkpoint 的策略，可以用更多 episodes 评估其稳定性；对于明显较差的策略，则快速停止。

因此：

$$
\boxed{  
\text{early termination 使“严格评估好策略”和“快速跳过坏策略”同时成立。}  
}  
$$
---

## 11. 为什么 early learning 阶段只用 1 个 assessment episode？

训练早期，策略变化很快，数据覆盖也很不足。如果每次都冻结策略运行很多 assessment episodes，会产生两个问题。

第一，使用 stale policy 探索环境。

所谓 stale policy 指的是：策略已经应该更新了，但由于 assessment phase 很长，仍然继续使用旧策略收集数据。

第二，延迟训练反馈。很多 episode 结束后才进行训练，早期学习速度会降低。

因此早期使用：

$$
\text{Early assessment episodes}=1.  
$$

这使训练过程更接近普通 off-policy RL：


$$
\text{短 assessment}  
\rightarrow  
\text{快速训练反馈}.  
$$

后期策略更成熟后，再使用：
$$
\text{Late assessment episodes}=20.  
$$
这样评估更可靠，checkpoint 更稳定。

---

## 12. 为什么从 1 个 episode 切换到 20 个 episode 时要乘以 0.9？

早期 checkpoint performance 可能只由一个 episode 得到：


$$
C_c=R_1.  
$$


**如果该 episode 因随机性取得异常高分，那么 checkpoint performance 会被高估。**

后期改为 20 个 episodes 的 minimum criterion 后，新策略要超过这个早期单 episode 高分可能很难。尤其 minimum criterion 本身偏保守：
$$
\min(R_1,\dots,R_{20})  
$$
通常比单个高回报 episode 小。

因此，在 early learning 结束时，将 checkpoint performance 乘以：
$$
0.9  
$$
即：
$$
C_c\leftarrow 0.9C_c.  
$$
其作用是降低早期单 episode 偶然高分造成的过高门槛。

---

## 13. checkpoint_condition 的精确定义

原文定义 checkpoint_condition 为两种情况之一。

第一，达到最大 assessment episodes：
$$
m=20.  
$$

这表示 assessment 已经完整完成，可以判断当前策略是否足够好。

第二，当前 minimum performance 低于 checkpoint performance：
$$
m_k<C_c.  
$$
这表示当前策略已经不可能超过 checkpoint，可以提前结束 assessment。

因此 checkpoint_condition 可以概括为：

$$
\boxed{  
\text{assessment 应该结束的条件。}  
}  
$$
---

## 14. outperforms 的精确定义

outperforms 不只是：
$$
\text{当前 minimum performance 更高}.  
$$
还要求已经达到最大 assessment episodes。

也就是说：

$$
\text{outperforms}  
\iff  
\left[  
\text{max assessment episodes reached}  
\right]  
\land  
\left[  
\text{current minimum performance} >  
\text{checkpoint performance}  
\right].  
$$

这样设计是为了避免只跑了少量 episodes 就因为暂时表现好而更新 checkpoint。

例如当前策略第一集表现很高，但后续可能很不稳定。只有完成最大 assessment episodes 后，minimum performance 仍然高，才更新 checkpoint。

---

# 15. F.3 的消融实验在比较什么？

F.3 改变 checkpoint 机制中的几个关键设计：
$$
\text{assessment episode 数量}  
$$
$$
\text{mean vs minimum}  
$$
$$
\text{fixed vs variable assessment length}  
$$
$$
\text{early termination 是否使用}  
$$
$$
\text{是否使用 early learning 阶段}  
$$
这些实验用于回答：

$$
\boxed{  
\text{policy checkpoint 的哪些设计真正带来稳定性收益？}  
}  
$$

---

## 16. Checkpoint 1：最大 assessment episodes 数量

默认最大值为：

$$
20.  
$$

**该实验改变最大 assessment episodes 数量，但仍使用 early termination。**

最大 episodes 越多，策略评估越可靠，但收集 assessment 数据的时间越长，训练反馈越慢。

因此存在权衡：
$$
\text{更多 assessment episodes}  
\Rightarrow  
\text{更可靠评估}  
$$
$$
\text{更多 assessment episodes}  
\Rightarrow  
\text{更慢训练反馈}  
$$

该实验寻找这个权衡的合理范围。

---

## 17. Checkpoint 2：mean + fixed assessment length

该变体使用：
$$
C_{\text{mean}}(\pi)
=
\frac{1}{m}\sum_i R_i  
$$

而不是 minimum。

并且 assessment length 固定为 20，不使用 early termination。

这测试两个问题：

1. mean 是否比 minimum 更适合作为 checkpoint criterion；
    
2. 固定长度评估是否造成训练 episode 浪费。
    

mean 的缺点是对不稳定性不敏感。一个策略如果偶尔崩溃，但多数 episode 很高，mean 仍然可能较好。

---

## 18. Checkpoint 3：mean + variable assessment length

该变体仍使用 mean performance，但允许提前终止：

如果当前 mean performance 低于 checkpoint performance，就终止 assessment。

问题在于，mean criterion 下 early termination 不像 minimum criterion 那样严格可靠。

对 minimum：
$$
m_k\le C_c  
$$
意味着后续无论如何都不能超过 checkpoint。

对 mean：
$$
\bar R_k<C_c  
$$

并不意味着后续不能超过 checkpoint，因为后续高分可能把均值拉上去。

所以 mean + early termination 是一种启发式提前终止，不具备 minimum 那种严格单调保证。

---

## 19. Checkpoint 4：fixed assessment length

该变体每次 assessment 都跑满固定数量 episodes，不使用 early termination。

这会更公平地评估每个策略，但成本高。

如果当前策略明显很差，仍然要跑满所有 episodes，这会浪费训练时间和环境交互机会。

因此 fixed assessment length 可能降低样本效率。

---

## 20. Checkpoint 5：Immediate

默认设计是：
$$
\text{前 }750k\text{ time steps: }1\text{ episode}  
$$
$$
\text{之后: }20\text{ episodes}.  
$$
Immediate 变体则一开始就使用较大的 assessment episodes 数量。

**这测试早期长 assessment phase 是否损害早期学习。**

原文已经说明，经验分析发现长 assessment phases 对 early learning 有负面影响。原因是：
$$
\text{冻结策略过久}  
$$
$$
\text{stale policy 探索}  
$$
$$
\text{训练反馈延迟}  
$$
所以 immediate checkpoint 可能在 ($300k$) time steps 处表现较差。

---

# 21. checkpoint 的稳定性收益如何体现？

图 30 展示 5 个单独随机种子在使用和不使用 checkpoints 时的表现。

这比平均曲线更能显示 checkpoint 的作用。

平均曲线可能掩盖单个 seed 的崩溃。例如：
$$
\text{seed 1 high}  
$$
$$
\text{seed 2 collapse}  
$$
$$
\text{seed 3 high}  
$$
平均后看起来可能只是轻微下降。

但单 seed 曲线可以看到：
$$
\text{某次训练是否突然崩溃}  
$$
$$
\text{checkpoint 是否避免最终使用崩溃后的策略}  
$$
因此，checkpoint 的收益主要体现为：
$$
\boxed{  
\text{减少 evaluation policy 的性能回撤和训练后期退化影响。}  
}  
$$
---

# 22. policy checkpoint 与 safe policy improvement 的区别

**policy checkpoint 并不保证每次策略更新都是安全的。**

也就是说，它不保证：
$$
J(\pi_{t+1})\ge J(\pi_t).  
$$
策略训练本身仍可能波动、退化甚至崩溃。

checkpoint 只是保存历史上评估更好的策略：
$$
\pi_c.  
$$
最终测试时使用：
$$
\pi_c  
$$
而不是当前策略。

因此它是：
$$
\boxed{  
\text{post-hoc policy selection / preservation mechanism}  
}  
$$
不是：
$$
\boxed{  
\text{每一步安全策略改进约束}  
}  
$$

---

# 23. policy checkpoint 与 early stopping 的区别

early stopping 通常是：
$$
\text{性能不再提升}  
\Rightarrow  
\text{停止训练}.  
$$
policy checkpoint 是：
$$
\text{继续训练}  
$$
但保存历史较优策略：
$$
\pi_c.  
$$
即使当前 checkpoint 已经很好，训练仍然继续进行，可能发现更好的策略。

因此：
$$
\boxed{  
\text{checkpoint 不终止训练，只决定测试时使用哪个策略。}  
}  
$$
---

# 24. policy checkpoint 的完整机制总结

TD7 的 checkpoint scheme 可以形式化为：
$$
C(\pi)=  
\min_{1\le i\le m}R_i(\pi),  
$$
其中 ($m$) 后期最大为：
$$
20.  
$$
如果：
$$
C(\pi_{t+1})>C(\pi_c)  
$$
且已经完成最大 assessment episodes，则：
$$
\pi_c\leftarrow\pi_{t+1},  
\qquad  
f_c\leftarrow f_t.  
$$
如果在 assessment 中途出现：
$$
\min_{1\le i\le k}R_i(\pi_{t+1})  
\le  
C(\pi_c),  
$$
则提前终止 assessment。

早期阶段：
$$
m=1,\qquad \text{time steps}<750k.  
$$
后期阶段：
$$
m=20,\qquad \text{time steps}\ge750k.  
$$
切换时：
$$
C(\pi_c)\leftarrow 0.9C(\pi_c).  
$$
---

# 25. 最核心结论

附录 F 的核心思想是：

$$
\boxed{  
\text{深度 RL 的当前策略不可靠，因此需要保存训练过程中表现稳定的历史策略。}  
}  
$$

具体机制是：

$$
\text{固定当前策略运行 assessment episodes}  
$$
$$
\Downarrow  
$$
$$
\text{用 minimum episode return 衡量稳定性能}  
$$
$$
\Downarrow  
$$
$$
\text{若明显不如 checkpoint，则提前终止}  
$$
$$
\Downarrow  
$$
$$
\text{若完成评估且 minimum 更高，则更新 checkpoint}  
$$
$$
\Downarrow  
$$
$$
\text{按 assessment 中收集的时间步数补足训练}  
$$
该方法的关键设计包括：
$$
\boxed{  
\text{minimum over mean}  
}  
$$

用于偏好稳定策略； 
$$
\boxed{  
\text{early termination}  
}  
$$

用于避免浪费训练 episode；
$$
\boxed{  
\text{early learning 使用 1 个 assessment episode}  
}  
$$

用于避免早期学习变慢；
$$
\boxed{  
\text{后期使用 20 个 assessment episodes}  
}  
$$
用于获得更可靠的 checkpoint 选择；


$$
\boxed{  
\text{criteria reset weight}=0.9  
}  
$$

用于降低早期单 episode 过拟合带来的过高 checkpoint 门槛。

因此，policy checkpoints 的本质不是普通“保存模型文件”，而是：
$$
\boxed{  
\text{一种基于训练期 assessment 的策略选择与稳定化机制。}  
}  
$$

---
# 翻译

## **G 消融实验**

本节对 TD7 的各个组成部分进行消融实验。

---

## G.1 主要组件

### Ablation 1: No SALE

完全从 TD7 中移除 SALE。

这意味着价值函数和策略的输入分别回到原始形式：
$$
Q(s,a),  
\qquad  
\pi(s).  
$$
TD7 仍然保留 LAP、policy checkpoints，以及相对于 TD3 的所有实现差异。这些实现差异已在第 A.1 节讨论。

---

### Ablation 2: No checkpoints

与 TD3 和其他 off-policy 深度强化学习算法类似，TD7 在每个时间步都进行训练，而不是在一批 episodes 之后再训练。

测试时使用当前策略，而不是 checkpoint policy。

---

### Ablation 3: No LAP

TD7 使用标准 replay buffer，transition 以均匀概率采样。

价值函数损失，即式（15），使用均方误差 MSE，而不是 Huber loss。

---

## G.2 子组件

### Ablation 4: No SALE, with encoder

保留 encoder，但不通过 SALE loss 训练，而是让 encoder 与价值函数端到端训练。

这意味着 encoder 可以简单看作价值函数架构的一部分。

由于使用价值函数训练得到的 embedding 可能与策略发生冲突，因此策略不使用状态嵌入，只使用原始输入：
$$
\pi(s).  
$$
---

### Ablation 5: TD3 with encoder

向 TD3 中加入 SALE 的 encoder，但该 encoder 与价值函数端到端训练。

encoder 不用于策略。

---

### Ablation 6: Current policy

TD7 的训练方式完全相同，但测试时使用当前策略，而不是 checkpoint policy。

---

### Ablation 7: TD3 with checkpoints

向 TD3 中加入 policy checkpoints，并在测试时使用 checkpoint policy。

---

### Ablation 8: TD3 with LAP

向 TD3 中加入 LAP。这与 TD3 + LAP 完全相同。

---

### Ablation 9: No clipping

移除本文提出的 value clipping。该 clipping 原本用于缓解外推误差。

于是价值函数损失，即原式（15），变为：
$$
\mathcal L(Q_{t+1})  
:=  
\operatorname{Huber}  
\left(  
\text{target}
-
Q_{t+1}(z^t_{sa},z^t_s,s,a)  
\right),  
\tag{74}  
$$
其中：
$$
\text{target}  
:=  
r+\gamma  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
\tag{75}  
$$
$$
x:=[z^{t-1}_{s'a'},z^{t-1}_{s'},s',a'],  
\tag{76}  
$$
$$
a'  
:=  
\pi_t(z^{t-1}_{s'},s')  
+  
\epsilon,  
\tag{77}  
$$
$$
\epsilon  
\sim  
\operatorname{clip}  
\left(  
\mathcal N(0,\sigma^2),  
-c,c  
\right).  
\tag{78}  
$$
---

### Ablation 10: TD3 with clipping

将 value clipping 加入 TD3 的损失函数。

---

### Ablation 11: No normalization

从 TD7 中移除 AvgL1Norm。

这与第 D.3 节设计研究中的 no normalization 相同，区别在于这里包含 policy checkpoints，而设计研究中不使用 checkpoints。

---

### Ablation 12: No fixed encoder

从价值函数和策略中移除 fixed embeddings。

这意味着网络使用当前 encoder 产生的 embeddings，而不是使用上一轮 fixed encoder 产生的 embeddings。

因此输入变为：
$$
Q_{t+1}(z^{t+1}_{sa},z^{t+1}_s,s,a),  
$$
以及：
$$
\pi_{t+1}(z^{t+1}_s,s).  
$$
这与第 D.3 节设计研究中的对应 no fixed embeddings 设置相同，区别在于这里包含 policy checkpoints，而设计研究中不使用 checkpoints。

> 原文最后一句写成 “This is identical to no normalization in the design study in Section D.3”，从上下文看应是笔误；这里对应的应当是设计研究中的 **No fixed embeddings**，而不是 **No normalization**。

---

### Ablation 13: No implementation

移除第 A.1 节讨论的实现细节差异，具体包括：

1. 更新策略时不再同时使用两个价值函数；
    
2. 价值函数网络不再使用 ELU 激活函数。
    

target network 的更新方式不改变，因为改变它可能影响 fixed encoders 的使用。

---

### Ablation 14: Our TD3

TD3 加上第 A.1 节讨论的实现细节差异，包括：

1. 更新策略时同时使用两个价值函数；
    
2. 价值函数网络使用 ELU 激活函数；
    
3. target network 每 250 个时间步更新一次，而不是使用指数滑动平均。
    

---

## I Run time

本文对 TD7 和 baseline 算法的运行时间进行基准测试。

该分析不包含 evaluation episodes。

每个算法都使用相同的深度学习框架 PyTorch 进行训练。所有实验均在单块 Nvidia Titan X GPU 和 Intel Core i7-7700k CPU 上运行。

软件细节见附录 B。

运行时间调整后的学习曲线展示在图 39 中。

---

## J Limitations

### Depth vs. Breadth

虽然本文的经验研究较为广泛，但实验范围更强调深度而不是广度。

连续控制中仍然存在许多其他有趣 benchmark，例如带有图像观测的设置。

---

### Baselines

本文在在线和离线设置中都将 TD7 与高性能 agent 进行比较。

然而，由于大多数表征学习方法并不覆盖低层状态，因此本文只与一种专注于表征学习的方法进行了比较。

虽然一个原本为其他设置设计的方法若能超过已有最强 baseline 会令人意外，但探索更多方法仍可能为低层状态的表征学习提供新的见解。

---

### Computational cost

尽管 TD7 的计算成本低于其他竞争方法，但相对于基础算法 TD3，TD7 的运行时间超过两倍。

---

### Theoretical results

本文进行了大量经验分析，以发现基于动力学的表征学习中哪些因素对性能重要。

然而，本文没有处理表征学习的理论方面。

关于为什么基于动力学的表征学习有效、什么样的表征是好的表征，仍然存在许多重要理论问题。

---

# 解释

## 1. 附录 G 的作用

附录 G 的目标是拆解 TD7 的性能来源。

TD7 由多个模块组成：

$$
\text{TD7}
=
\text{TD3}  
+  
\text{SALE}  
+  
\text{policy checkpoints}  
+  
\text{LAP}  
+  
\text{value clipping}  
+  
\text{若干实现细节}.  
$$
如果只报告完整 TD7 的结果，无法判断性能提升来自哪个组件。因此消融实验逐个移除或单独添加组件，回答以下问题：
$$
\text{SALE 是否必要？}  
$$
$$
\text{policy checkpoints 是否贡献稳定性？}  
$$
$$
\text{LAP 是否提升样本利用？}  
$$
$$
\text{value clipping 是否只对 SALE 有用？}  
$$
$$
\text{简单加 encoder 是否等价于 SALE？}  
$$
$$
\text{实现细节是否解释了 TD7 的提升？}  
$$
这些消融用于区分“真正的方法贡献”和“普通实现差异”。

---

## 2. Ablation 1: No SALE

该实验完全移除 SALE，使：
$$
Q(z_{sa},z_s,s,a)  
$$
退回：
$$
Q(s,a),  
$$
并使：
$$
\pi(z_s,s)  
$$
退回：
$$
\pi(s).  
$$
但仍保留：
$$
\text{LAP},  
\quad  
\text{checkpoints},  
\quad  
\text{实现细节差异}.  
$$
因此，该消融测试的是：
$$
\boxed{  
\text{TD7 的性能提升是否主要来自状态—动作表征学习？}  
}  
$$
如果 No SALE 明显低于完整 TD7，则说明 SALE 不是可有可无的辅助模块，而是核心性能来源。

---

## 3. Ablation 2: No checkpoints

该实验去掉 checkpoint 机制，恢复普通 off-policy RL 的训练节奏：
$$
\text{每个环境步后训练一次}.  
$$
测试时也不使用历史最优 checkpoint policy，而使用当前策略。

该消融测试两个作用：

第一，checkpoint 是否能避免训练后期策略退化；

第二，固定若干 assessment episodes 后再 batch training 的训练节奏是否影响性能。

若 No checkpoints 性能下降或波动增大，说明 checkpoint 对稳定策略性能有贡献。

---

## 4. Ablation 3: No LAP

该实验去掉 LAP，使用普通均匀 replay buffer：

$$
p(i)=\frac{1}{|\mathcal D|}.  
$$

同时 critic loss 从 Huber loss 换回 MSE：

$$
\mathcal L_Q=(Q-y)^2.  
$$

该消融测试：
$$
\boxed{  
\text{优先采样高 TD-error transition 是否重要？}  
}  
$$
LAP 的作用是让学习更关注当前误差大的样本：


$$
p(i)\propto \max(|\delta(i)|^\alpha,1).  
$$

去掉 LAP 后，所有样本采样概率相同，可能降低样本利用效率。

同时，MSE 对大误差更敏感，可能使 critic 更新不如 Huber 稳健。

因此 No LAP 同时移除了两个相关设计：

$$
\text{prioritized sampling}  
+  
\text{Huber loss}.  
$$

---

# 5. 子组件消融的意义

G.2 不只是移除主模块，而是进一步分析模块内部机制。

这些实验回答更细的问题：
$$
\text{只加 encoder 是否足够？}  
$$
$$
\text{checkpoint 的收益来自训练流程，还是来自测试时使用 checkpoint policy？}  
$$
$$
\text{LAP 单独加到 TD3 是否能解释 TD7？}  
$$
$$
\text{value clipping 是否依赖 SALE？}  
$$
$$
\text{AvgL1Norm 和 fixed encoder 是否关键？}  
$$
$$
\text{实现细节是否足以解释性能差距？}  
$$
---

## 6. Ablation 4: No SALE, with encoder

该实验保留 encoder，但不使用 SALE loss：
$$
||z_{sa}-z_{s'}||^2.  
$$
相反，encoder 与 critic 端到端训练。

这意味着 encoder 不再是独立学习动力学结构，而只是 critic 网络前面的一个可学习特征层。

策略不使用 ($z_s$)，只使用：
$$
\pi(s).  
$$
原因是：由 critic loss 训练出的 embedding 可能主要服务于 critic，不一定适合 actor。如果 actor 也使用这种 embedding，可能引入不一致。

该消融用于证明：
$$
\boxed{  
\text{SALE 的关键不是“有 encoder”，而是“encoder 用动力学目标解耦训练”。}  
}  
$$
如果该变体效果不如 SALE，说明简单加网络容量不能替代 SALE 的表征学习机制。

---

## 7. Ablation 5: TD3 with encoder

该实验把 SALE 的 encoder 加到 TD3 上，但仍然端到端训练，且不用于策略。

它比 Ablation 4 更接近“TD3 + 一个额外 encoder”。

该实验的作用是排除一种解释：
$$
\text{TD7 更强只是因为网络更大。}  
$$
如果 TD3 with encoder 不能达到 TD7 性能，说明提升不只是来自参数量增加，而是来自 SALE 的特殊训练目标和输入组织方式。

---

## 8. Ablation 6: Current policy

训练完全按照 TD7 进行，但测试时不使用 checkpoint policy，而使用当前策略。

该实验用于区分 checkpoint 的两个作用：

1. 改变训练流程；
    
2. 测试时选择历史 checkpoint policy。
    

在 Current policy 中，训练流程仍然保留 checkpoint-style assessment/batched training，但最终 evaluation 使用当前策略。

如果该变体低于完整 TD7，则说明：
$$
\boxed{  
\text{测试时使用 checkpoint policy 本身有收益。}  
}  
$$
也就是说，checkpoint 不只是改变训练节奏，还真正避免了当前策略退化。

---

## 9. Ablation 7: TD3 with checkpoints

该实验把 policy checkpoints 加到 TD3 上。

它测试：
$$
\boxed{  
\text{checkpoint 是否是通用稳定化机制，而不只适用于 TD7？}  
}  
$$
如果 TD3 with checkpoints 优于普通 TD3，说明 checkpoint 对一般 off-policy actor-critic 也有帮助。

但若仍明显低于 TD7，则说明 TD7 的主要收益还来自 SALE、LAP、value clipping 等其他模块。

---

## 10. Ablation 8: TD3 with LAP

该实验把 LAP 加到 TD3：
$$
\text{TD3}+\text{LAP}.  
$$
它测试：

$$
\boxed{  
\text{TD7 的提升是否只是来自 LAP？}  
}  
$$
如果 TD3 with LAP 有提升但仍低于 TD7，说明 LAP 有贡献，但不能单独解释 TD7 的性能。

---

## 11. Ablation 9: No clipping

该实验移除 TD7 的 value clipping。

完整 TD7 的 critic target 是：
$$
y
=
r+\gamma  
\operatorname{clip}  
\left(  
\min(Q_{t,1}(x),Q_{t,2}(x)),  
Q_{\min},  
Q_{\max}  
\right).  
$$
No clipping 变为：
$$
y
=
r+\gamma  
\min(Q_{t,1}(x),Q_{t,2}(x)).  
$$
也就是说，仍然保留 TD3 的 clipped double Q-learning：
$$
\min(Q_1,Q_2),  
$$
但不再限制 target value 的取值范围。

该消融测试：
$$
\boxed{  
\text{value clipping 是否确实缓解 SALE 引入的外推误差？}  
}  
$$

如果 No clipping 变差，说明高维状态—动作嵌入带来的外推风险需要额外控制。

---

## 12. Ablation 10: TD3 with clipping

该实验把 value clipping 加到 TD3。

它测试一个关键问题：
$$
\boxed{  
\text{value clipping 是普遍有用，还是主要用于 SALE 引起的高维外推？}  
}  
$$
如果 TD3 with clipping 提升有限，说明 clipping 的主要作用不是普遍增强 TD3，而是针对 SALE 扩展动作相关输入后产生的外推风险。

如果 TD3 with clipping 也明显提升，则说明普通 TD3 也受益于 value target 裁剪。

---

## 13. Ablation 11: No normalization

该实验从完整 TD7 中移除 AvgL1Norm。

AvgL1Norm 原本用于：
$$
z_s=\operatorname{AvgL1Norm}(f(s)),  
$$
以及：

$$
\operatorname{AvgL1Norm}(\phi_s),  
\quad  
\operatorname{AvgL1Norm}(\phi_{sa}).  
$$

其作用是保持 embedding 和输入投影的尺度稳定。

No normalization 测试：
$$
\boxed{  
\text{SALE 的稳定性是否依赖尺度归一化？}  
}  
$$
如果去掉归一化后性能下降，说明嵌入尺度漂移或输入尺度不匹配确实会破坏 actor-critic 训练。

---

## 14. Ablation 12: No fixed encoder

该实验用当前 encoder 输出替代 fixed encoder 输出：

默认：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
\qquad  
\pi_{t+1}(z^t_s,s).  
$$
No fixed encoder：
$$
Q_{t+1}(z^{t+1}_{sa},z^{t+1}_s,s,a),  
\qquad  
\pi_{t+1}(z^{t+1}_s,s).  
$$

这样同一个样本的 embedding 会随着 encoder 每次更新而变化。

该消融测试：
$$
\boxed{  
\text{固定嵌入是否能减少输入非平稳性？}  
}  
$$
如果 No fixed encoder 表现变差，说明 fixed encoder 是 SALE 稳定训练的重要组成部分。

---

## 15. Ablation 13: No implementation

该实验移除 TD7 相对 TD3 的实现层面改动，包括：
$$
\text{policy update 使用两个 critic}  
$$
和：
$$
\text{critic 使用 ELU}.  
$$
但不改变 target network 的周期性更新，因为这可能影响 fixed encoders。

该消融测试：
$$
\boxed{  
\text{TD7 的提升是否依赖这些实现细节？}  
}  
$$
如果移除实现细节后性能变化不大，说明核心贡献仍来自算法模块。  
如果下降明显，则说明这些实现细节也参与了 TD7 的稳定性。

---

## 16. Ablation 14: Our TD3

该实验是 TD3 加上 TD7 的实现细节：

1. policy update 使用两个 critic 的平均；
    
2. critic 使用 ELU；
    
3. target network 每 250 步硬更新，而不是 EMA。
    

该实验的目的是建立一个更公平的 TD3 对照：
$$
\text{TD3 + TD7 implementation details}.  
$$
如果 Our TD3 仍远低于 TD7，则说明 TD7 的提升不能归因于实现差异。

---

# 17. Ablation 之间的逻辑关系

这些消融可以分成四组。

## 17.1 主模块贡献

$$
\text{No SALE}  
$$
$$
\text{No checkpoints}  
$$
$$
\text{No LAP}  
$$
用于判断三个主模块是否必要。

---

## 17.2 encoder 是否只是网络容量

$$
\text{No SALE, with encoder}  
$$
$$
\text{TD3 with encoder}  
$$

用于判断“加一个 encoder”是否足够。

核心结论应关注：
$$
\boxed{  
\text{SALE 不是普通端到端 encoder，而是解耦的动力学表征学习。}  
}  
$$

---

## 17.3 checkpoint 是否独立有效

$$
\text{Current policy}  
$$
$$
\text{TD3 with checkpoints}  
$$
用于区分 checkpoint 的训练流程作用和最终策略选择作用。

---

## 17.4 稳定化子机制
$$
\text{No clipping}  
$$
$$
\text{TD3 with clipping}  
$$
$$
\text{No normalization}  
$$
$$
\text{No fixed encoder}  
$$
用于检验 SALE 周边稳定化技术是否必要。

---

# 18. Run time 的解释

运行时间分析排除了 evaluation episodes，只统计训练过程。

这样做是合理的，因为 evaluation frequency 和 episode 长度可能影响 wall-clock time，但主要关心的是算法训练本身的计算成本。

所有算法使用相同硬件：
$$
\text{Nvidia Titan X GPU}  
$$
$$
\text{Intel Core i7-7700k CPU}  
$$
以及相同深度学习框架：
$$
\text{PyTorch}.  
$$
这使 runtime 比较更公平。

---

## 19. 为什么 TD7 比 TD3 更慢？

TD7 相比 TD3 增加了多个组件：
$$
f,g \text{ encoders}  
$$
$$
z_s,z_{sa} \text{ embedding computation}  
$$
$$
\text{encoder loss update}  
$$
$$
\text{LAP priority computation}  
$$
$$
\text{checkpoint assessment/training batching}  
$$
$$
\text{更大的 critic 输入}  
$$
因此，TD7 的 wall-clock runtime 超过 TD3 是自然结果。

限制部分也明确指出：
$$
\boxed{  
\text{TD7 相比 TD3 的运行时间超过两倍。}  
}  
$$

但论文同时认为，TD7 的计算成本仍低于某些更复杂竞争方法，例如大 ensemble 或更昂贵架构的方法。

---

# 20. Limitations 的解释

## 20.1 Depth vs. Breadth

论文实验强调 depth over breadth，意思是：对少数连续控制 benchmark 做了深入消融和系统分析，但没有覆盖非常广的任务类型。

例如，本文主要研究低层状态任务：
$$
s\in \mathbb R^d.  
$$
但仍缺少图像观测任务：
$$
o\in \mathbb R^{H\times W\times C}.  
$$
因此，一个开放问题是：
$$
\boxed{  
\text{SALE 是否也适用于 image-based continuous control？}  
}  
$$
如果状态来自图像，SALE 可能需要与视觉 encoder、像素增强、自监督视觉目标结合。

---

## 20.2 Baselines

TD7 与在线和离线设置中的强 baseline 比较，但表征学习 baseline 较少。

原因是：许多 RL 表征学习方法主要面向图像输入，而不是低层状态。

因此，本文只比较了一个专注于 low-level state representation learning 的方法。

这意味着 TD7 在表征学习方法族中的横向比较还不充分。

未来可以比较更多方法，例如：

$$
\text{对比学习式表示}  
$$
$$
\text{bisimulation representation}  
$$
$$
\text{successor features}  
$$
$$
\text{latent dynamics models}  
$$
$$
\text{action representation learning}  
$$
不过这些方法若原本不是为低维连续控制设计，需要谨慎改造和调参。

---

## 20.3 Computational cost

TD7 的计算成本低于某些竞争方法，但相对 TD3 超过两倍。

这意味着：

$$
\boxed{  
\text{TD7 提升了样本效率和性能，但牺牲了 wall-clock 训练速度。}  
}  
$$

在真实机器人等环境交互昂贵的场景中，环境样本效率可能比计算成本更重要。

但在仿真环境中，如果交互便宜而 GPU 计算是瓶颈，则 TD7 的额外计算成本需要考虑。

---

## 20.4 Theoretical results

论文主要是经验研究，没有提供严格理论证明。

仍然缺少以下问题的理论答案：
$$
\text{为什么预测下一状态嵌入能改善 value learning？}  
$$
$$
\text{什么样的 dynamics representation 最适合 actor-critic？}  
$$
$$
\text{SALE 学到的 }z_{sa}\text{ 与 bisimulation、successor representation、MDP homomorphism 有何精确关系？}  
$$
$$
\text{AvgL1Norm、fixed embeddings、value clipping 的稳定性是否可形式化证明？}  
$$
$$
\text{高维 state-action embedding 如何影响 extrapolation error？}  
$$
因此，TD7 的贡献主要是经验性和算法性的，而不是理论性。

---

# 第三部分：整体总结

附录 G、I、J 合起来说明三件事。

第一，消融实验表明 TD7 的性能不是来自单个技巧，而是多个组件共同作用：

$$
\text{SALE}  
+  
\text{checkpoints}  
+  
\text{LAP}  
+  
\text{value clipping}  
+  
\text{normalization}  
+  
\text{fixed encoders}.  
$$

第二，TD7 的提升不能简单解释为“网络更大”或“实现细节不同”。因此需要比较：

$$
\text{TD3 with encoder}  
$$
$$
\text{Our TD3}  
$$
$$
\text{No SALE, with encoder}  
$$
这些变体。

第三，TD7 仍有明显限制：实验范围主要集中于 MuJoCo 低维状态连续控制，运行时间明显高于 TD3，理论解释仍不足。

最核心的结论是：

$$
\boxed{  
\text{TD7 的关键不是单纯增加模型容量，而是以解耦方式学习动力学驱动的状态—动作表征，并配套加入稳定化机制。}  
}  
$$
其中 SALE 负责提供状态—动作结构，checkpoints 负责保留稳定策略，LAP 提升样本利用，value clipping 控制高维嵌入引发的外推误差，AvgL1Norm 和 fixed encoders 稳定嵌入输入。完整 TD7 的性能来自这些组件的组合，而不是任意单个模块。




---



# 文献总览

论文 **For SALE: State-Action Representation Learning for Deep Reinforcement Learning** 的核心问题是：**低维物理控制任务是否也需要表征学习？**

传统 RL 表征学习主要用于图像输入，因为图像高维、冗余、无结构；而 MuJoCo 这类连续控制任务的状态通常已经是紧凑向量，例如关节角、速度、接触信息等。因此，一个常见直觉是：低维状态不需要额外 representation learning。该文反驳这一点，认为任务难度不只由观测维度决定，更由底层动力学复杂性决定。即使状态向量很低维，状态与动作之间的动力学交互：
$$
(s,a)\mapsto s'  
$$

仍可能高度非线性、难以直接由 critic 从 Bellman target 中学习出来。论文因此提出 **SALE：State-Action Learned Embeddings**，通过学习状态—动作嵌入来增强 value function 和 policy 的输入，并将 SALE 与 TD3、policy checkpoints、LAP prioritized replay、offline behavior cloning term 组合成 **TD7**。摘要报告 TD7 在 OpenAI Gym benchmark 上相对 TD3 于 300k 和 5M time steps 分别取得 276.7% 和 50.7% 的平均性能提升，并可用于 online 与 offline setting。

---

# 一、研究背景与核心动机

强化学习尤其是 deep off-policy RL 样本效率低。论文给出的一个解释是：多数 off-policy RL 依赖 Bellman equation，而 Bellman target 是近似的、bootstrapped 的、非平稳的学习目标，因此提供的监督信号较弱。相比之下，监督学习中常用 representation learning 从数据中学习中间特征，用于捕捉底层结构。该文将这一思想引入低维连续控制任务，但重点不是压缩状态，而是建模状态和动作的交互。

形式上，value function 满足：
$$
Q^\pi(s,a)
=
\mathbb E  
\left[  
r+\gamma Q^\pi(s',\pi(s'))  
\mid s,a  
\right].  
$$
因此，($Q(s,a)$) 的估计质量依赖于两个方面：
$$
R(s,a)  
$$
和：
$$
p(s'|s,a).  
$$
如果某个表征能编码 ($(s,a)$) 对未来状态 ($s'$) 的影响，那么该表征自然有助于 value learning。SALE 的出发点正是：**价值函数需要理解状态—动作对的后果，而状态—动作嵌入可以提供这种动力学结构。**

---

# 二、SALE 方法

## 1. 状态嵌入与状态—动作嵌入

SALE 使用两个 encoder：
$$
z_s=f(s),  
$$
$$
z_{sa}=g(z_s,a).  
$$
其中：

- ($z_s$)：状态嵌入；
    
- ($z_{sa}$)：状态—动作嵌入；
    
- ($f$)：state encoder；
    
- ($g$)：state-action encoder。
    

训练目标是让状态—动作嵌入预测下一状态嵌入：
$$
\mathcal L(f,g)
=
 \left|\left|  
g(f(s),a)-|f(s')|_{\times}  
\right|\right|^2
+
\left| \left|  
z_{sa}-|z_{s'}|_{\times}  
\right|\right|^2.  
$$
符号：
$$
|\cdot|_{\times}  
$$
表示 stop-gradient，即目标端不反向传播梯度。该设计使 ($z_{sa}$) 学习 latent dynamics：
$$
(s,a)\rightarrow s'  
$$
而不直接依赖下一动作 (a') 或当前 policy。论文强调，这些 embedding 不是 world model，不用于 planning 或 rollout，而只是增强 actor 和 critic 的输入。

---

## 2. critic 与 actor 的输入增强

SALE 不用嵌入完全替代原始输入，而是拼接嵌入与原始信息：
$$
Q(s,a)  
\rightarrow  
Q(z_{sa},z_s,s,a),  
$$
$$
\pi(s)  
\rightarrow  
\pi(z_s,s).  
$$
该设计非常关键。因为 ($z_{sa}$) 只通过动力学预测目标训练，可能遗漏即时奖励、任务 horizon、当前 policy 相关信息。因此，原始 ($(s,a)$) 仍然保留给 critic，原始 ($s$) 仍然保留给 actor。SALE 在这里是 **feature augmentation**，不是 **information bottleneck compression**。

---

## 3. 解耦训练

encoder 与 actor/critic 解耦训练：
$$
\nabla_{f,g}\mathcal L_Q=0,  
\qquad  
\nabla_{f,g}\mathcal L_\pi=0.  
$$
也就是说，value loss 和 policy loss 不回传到 ($f,g$)。encoder 只由 dynamics prediction loss 更新。

这样做的动机是：Bellman target 本身非平稳且近似，如果让 value loss 直接塑造 embedding，embedding 会追随 critic 的短期误差和 policy 变化，可能破坏稳定动力学结构。论文的设计研究显示，端到端训练 embedding 明显差于解耦训练。

---
## 4. AvgL1Norm

SALE 使用归一化层：
$$
\operatorname{AvgL1Norm}(x)
=
\frac{x}  
{  
\frac{1}{N}\sum_i |x_i|  
}.  
$$
该归一化使向量平均绝对值为 1：
$$
\frac{1}{N}\sum_i  
|\operatorname{AvgL1Norm}(x)_i|  
=1.  
$$
作用包括：

1. 防止 embedding 尺度单调增长；
    
2. 防止 embedding collapse；
    
3. 使 embedding 与原始输入线性投影处于相近尺度；
    
4. 避免 BatchNorm 那种依赖 batch statistics 的不稳定性。
    

SALE 对 ($z_s$) 应用 AvgL1Norm，也对原始 ($(s,a)$) 或 ($s$) 经过 linear layer 后的特征应用 AvgL1Norm，但默认不直接对 ($z_{sa}$) 归一化，因为 ($z_{sa}$) 被训练为匹配已归一化的 ($z_{s'}$)。

---

## 5. fixed embeddings

由于 encoder 在训练过程中不断变化，若 actor/critic 每一步都使用当前 embedding：
$$
z^{t+1}_s,\quad z^{t+1}_{sa},  
$$
则同一个 replay buffer 样本 ($(s,a)$) 的输入表示会不断漂移，造成输入非平稳性。SALE 因此使用 fixed embeddings：当前 actor/critic 使用上一迭代 encoder 产生的 embedding：
$$
Q_{t+1}(z^t_{sa},z^t_s,s,a),  
$$
$$
\pi_{t+1}(z^t_s,s).  
$$
target backup 中则使用更旧版本的 target fixed encoder。该设计本质上是将 target network 思想扩展到 representation input。

---

## 6. value clipping 处理外推误差

SALE 扩展了 critic 中动作相关输入维度。例如 Ant 的原始动作维度为 8，而 (z_{sa}) 维度为 256。高维动作相关输入可能让未见动作在表示空间中显得与已见动作更远，从而加剧 value extrapolation error。论文在 Figure 2 和 Appendix E 中显示，在 online RL 中使用 state-action representation 也可能出现外推误差，表现为 value estimate 跳变并伴随 reward 大幅下跌。

TD7 使用 value clipping：
$$
Q_{t+1}(s,a)  
\approx  
r+\gamma  
\operatorname{clip}  
\left(  
Q_t(s',a'),  
\min_{(s,a)\in D}Q_t(s,a),  
\max_{(s,a)\in D}Q_t(s,a)  
\right).  
$$
其作用不是使 critic 永远保守，而是在 online RL 中暂时限制异常外推 target，直到环境交互反馈修正错误估计。

---

# 三、TD7 算法组成

TD7 被定义为：
$$
\text{TD7}
=
\text{TD3}  
+  
\text{SALE}  
+  
\text{policy checkpoints}  
+  
\text{LAP}  
+  
\text{offline BC term}.  
$$
其中 “TD3+4 additions” 中的 4 个 addition 是 SALE、checkpoints、LAP 和 behavior cloning term。

---

## 1. 双 critic 与 TD3 结构

TD7 继承 TD3 的核心结构：
$$
Q_{t+1,1},\quad Q_{t+1,2}.  
$$
target 使用 clipped double Q-learning：
$$
\min(Q_{t,1}(x),Q_{t,2}(x)).  
$$
target action 使用 TD3 的 target policy smoothing：
$$
a'=\pi_t(z^{t-1}_{s'},s')+\epsilon,  
$$
$$
\epsilon\sim  
\operatorname{clip}  
(\mathcal N(0,\sigma^2),-c,c).  
$$
critic loss 使用 Huber loss，而不是 MSE。

---

## 2. LAP：Loss-Adjusted Prioritized replay

TD7 使用 LAP prioritized replay。transition：
$$
i=(s,a,r,s')  
$$
的采样概率为：
$$
p(i)
=
\frac{  
\max(|\delta(i)|^\alpha,1)  
}{  
\sum_{j\in D}  
\max(|\delta(j)|^\alpha,1)  
}.  
$$
其中 ($|\delta(i)|$) 是两个 critic 中最大绝对 TD error：
$$
|\delta(i)|
=
\max  
\left(  
|Q_1-\text{target}|,  
|Q_2-\text{target}|  
\right).  
$$
超参数：
$$
\alpha=0.4  
$$
控制优先级强度。新样本赋予 replay buffer 中最大 priority。TD7 同时配合 Huber loss，以避免高 TD-error 样本造成过大梯度。

---

## 3. policy checkpoints

RL 训练中当前策略不一定是历史最好策略，因此 TD7 保存训练过程中 assessment 表现最好的 checkpoint policy。其基本流程是：
$$
\text{固定当前 policy 收集 assessment episodes}  
\rightarrow  
\text{判断是否超过 checkpoint}  
\rightarrow  
\text{再批量补足训练步}.  
$$
标准 off-policy RL 是：
$$
\text{collect one data point}  
\rightarrow  
\text{train once}.  
$$
TD7 改为：
$$
\text{collect }N\text{ data points over assessment episodes}  
\rightarrow  
\text{train }N\text{ times}.  
$$
这样可以让 assessment return 对应一个固定策略，而不是一个 episode 内不断变化的策略。

checkpoint 判断默认使用 **minimum performance**，而不是 mean performance：
$$
C(\pi)=\min_i R_i.  
$$
若当前 policy 在任意 assessment episode 中低于 checkpoint performance，则 assessment 可以提前终止，因为之后的 minimum 不可能再超过 checkpoint。训练早期 assessment episodes 数量为 1，750k time steps 后增加到 20，并将 checkpoint performance 乘以 0.9，以降低早期单 episode 偶然高分造成的门槛过拟合。

---

## 4. offline behavior cloning term

为了适配 offline RL，TD7 在 policy update 中加入 BC penalty：

$$
\pi  
\approx  
\arg\max_{\pi}  
\mathbb E_{(s,a)\sim D}  
\left[  
Q(s,\pi(s))
-
\lambda  
\left|  
\mathbb E_{s\sim D}[Q(s,\pi(s))]  
\right|_{\times}  
(\pi(s)-a)^2  
\right].  
$$
online setting 中：
$$
\lambda=0.  
$$
offline setting 中：
$$
\lambda=0.1.  
$$
该项约束策略不要过度偏离数据集动作，从而降低 offline RL 中数据外动作的外推风险。offline setting 不使用 checkpoints，因为没有环境交互来运行 assessment episodes。

---

# 四、实验部分总览

实验部分是该文最重要的部分之一。论文没有给出严格理论证明，而是通过系统实验支持以下主张：

1. SALE 在低维连续控制中有效；
    
2. SALE 的设计选择很关键；
    
3. 状态—动作嵌入会引入外推风险，需要 value clipping；
    
4. policy checkpoints 能提高训练稳定性；
    
5. TD7 在 online 与 offline benchmark 上均优于强 baseline；
    
6. TD7 的性能不是单纯由更大网络或实现细节造成。
    

---

# 五、实验设置

## 1. 环境

online 实验使用 MuJoCo simulator，任务由 OpenAI Gym v4 定义。论文明确说明没有修改 state space、action space 或 reward space。也就是说，实验没有使用奖励重塑、状态工程或动作空间改造。

online benchmark 包括 5 个 MuJoCo 任务：
$$
\text{HalfCheetah},\quad  
\text{Hopper},\quad  
\text{Walker2d},\quad  
\text{Ant},\quad  
\text{Humanoid}.  
$$
offline 实验使用 D4RL v2 MuJoCo datasets，包括 HalfCheetah、Hopper、Walker2d 的 Medium、Medium-Replay、Medium-Expert 数据集。

---

## 2. terminal transitions 处理

非终止 transition 使用：
$$
\gamma=0.99.  
$$
真正 terminal transition 使用：
$$
\gamma=0.  
$$
但如果 episode 因 time limit 结束，则最后一个 transition 不被视为 terminal。原因是 time-limit truncation 不是环境真实终止；若错误设为 terminal，会将 bootstrap 项删除，低估接近时间上限的状态价值。

---

## 3. 探索与 replay buffer

**online 实验中，为填充 replay buffer，多数方法先使用 uniform random policy 收集 25k environment interactions。TQC 例外，使用 256 个初始随机步。图表中的 time steps 包含初始随机探索，因此 “300k”、“1M”、“5M” 均表示环境交互次数，而不是 gradient update 次数。**

基于 deterministic TD3 的方法训练时向 action 加 Gaussian exploration noise：
$$
\epsilon\sim \mathcal N(0,0.1^2).  
$$
基于 stochastic SAC 的方法不额外加噪声，因为其策略本身随机。

---

## 4. evaluation protocol

每 5000 environment steps 评估一次。每次评估运行 10 个 episodes，指标是 undiscounted sum of rewards 的平均值。每个 online 实验重复 10 个随机种子。评估时使用 deterministic policy：确定性策略不加噪声，随机策略使用 mean action。若方法包含 policy checkpoints，则评估时使用 checkpoint policy。evaluation 与 training 完全隔离：不保存 evaluation data，也不更新网络。

图中的 shaded area 和表中的 ($\pm$) 项使用：
$$
CI=  
1.96\frac{\sigma}{\sqrt{10}},  
$$

其中 ($\sigma$) 是 10 个随机种子上的样本标准差，使用 Bessel correction。曲线默认用 10 次 evaluation 的均匀窗口平滑。

---

## 5. 软件版本

实验使用：

- Python 3.9.13；
    
- PyTorch 2.0.0；
    
- CUDA 11.8；
    
- Gym 0.25.0；
    
- MuJoCo 2.3.3。
    

---

# 六、baseline 设置

## 1. online baseline

online 比较对象包括：
$$
\text{TD3},\quad  
\text{SAC},\quad  
\text{TQC},\quad  
\text{TD3+OFE}.  
$$
其中 TD3 与 TQC 使用作者提供代码；SAC 和 TD3+OFE 为基于作者描述的 re-implementation；所有方法使用一致 evaluation protocol。

TD3 是 TD7 的基础算法，用于衡量 TD7 相对基础 deterministic actor-critic 的增益。SAC 是 stochastic maximum-entropy off-policy actor-critic。TQC 是更复杂的 distributional quantile critic 方法，使用更大网络和 environment-specific hyperparameters。TD3+OFE 是最接近 SALE 的表征学习 baseline，因为 OFENet 也学习 state-action embedding。

TD3 和 TD3+OFE 的动作空间假设为：
$$
[-1,1].  
$$
TD3 超参数包括：
$$
\sigma=0.2,\quad c=0.5,\quad  
\text{policy update frequency}=2,  
$$
$$
\gamma=0.99,\quad  
\text{buffer}=1M,\quad  
\text{batch size}=256,\quad  
\tau=0.005,  
$$
$$
\text{Adam learning rate}=3\times 10^{-4}.  
$$
TD3+OFE 使用 environment-specific encoder layers：HalfCheetah 和 Humanoid 为 8 层，Hopper、Walker2d、Ant 为 6 层。OFE 在 Humanoid 中还丢弃部分 external-force 相关状态维度，只使用 376 个状态维度中的 292 个，其他任务使用完整状态空间。

---

## 2. offline baseline

offline 比较对象包括：
$$
\text{CQL},\quad  
\text{TD3+BC},\quad  
\text{IQL},\quad  
\text{X-QL}.  
$$
作者强调有些 offline RL 方法可通过 per-dataset hyperparameters 获得更高总分，但为保证直接比较，省略这类方法。baseline 结果通过重新运行作者提供代码获得，并尽量使用单一超参数集合和一致 evaluation protocol。

TD7 与 TD3+BC 在 offline RL 中使用相同基本 BC regularization 思路。因此，TD7 显著优于 TD3+BC 可被解释为 SALE 对 offline value/policy learning 的贡献，而不是仅由 BC term 带来的收益。

---

# 七、online 实验结果

## 1. 总体结果

online 实验在 300k、1M、5M time steps 报告平均 performance。Figure 4 展示学习曲线，Table 1 给出数值。TD7 在 5 个环境上整体优于 TD3、SAC、TQC、TD3+OFE，尤其早期学习表现突出。论文特别指出：TD7 在 300k time steps 时，经常超过 TD3 在 5M time steps 时的性能。

---

## 2. Table 1 关键数值

### HalfCheetah

|time step|TD3|SAC|TQC|TD3+OFE|TD7|
|---|--:|--:|--:|--:|--:|
|300k|7715|8052|7006|11294|**15031**|
|1M|10574|10484|12349|13758|**17434**|
|5M|14337|15526|17459|16596|**18165**|

HalfCheetah 中 TD7 在所有时间点均领先。300k 时 TD7 已超过 TD3 5M 的 14337。

### Hopper

|time step|TD3|SAC|TQC|TD3+OFE|TD7|
|---|--:|--:|--:|--:|--:|
|300k|1289|2370|**3251**|1581|2948|
|1M|3226|2785|**3526**|3121|3512|
|5M|3682|3167|3462|3423|**4075**|

Hopper 中 TQC 在早期略强，但 TD7 最终性能最高。

### Walker2d

|time step|TD3|SAC|TQC|TD3+OFE|TD7|
|---|--:|--:|--:|--:|--:|
|300k|1101|1989|2812|4018|**5379**|
|1M|3946|4314|5321|5195|**6097**|
|5M|5078|5681|6137|6379|**7397**|

Walker2d 中 TD7 的样本效率优势明显。

### Ant

|time step|TD3|SAC|TQC|TD3+OFE|TD7|
|---|--:|--:|--:|--:|--:|
|300k|1704|1478|1830|**6348**|6171|
|1M|3942|3681|3582|7398|**8509**|
|5M|5589|4615|6329|8547|**10133**|

Ant 中 TD3+OFE 300k 略高于 TD7，但 TD7 在 1M 与 5M 明显领先。

### Humanoid

|time step|TD3|SAC|TQC|TD3+OFE|TD7|
|---|--:|--:|--:|--:|--:|
|300k|1344|1997|3117|3181|**5332**|
|1M|5165|4909|6029|6032|**7429**|
|5M|5433|6555|8361|8951|**10281**|

Humanoid 是高维复杂动力学任务，TD7 优势显著，支持“低维状态也需要动力学表征”的主张。

---

## 3. online 结果解释

online 结果说明三个层次的问题。

第一，TD7 不只是最终性能更高，而且早期学习更快。300k time steps 处 TD7 在 HalfCheetah、Walker2d、Humanoid 等任务上已经接近或超过多数 baseline 的后期性能。

第二，TD7 相对 TD3 的提升在复杂任务中更明显，例如 Ant 和 Humanoid。这符合 SALE 的动机：动力学越复杂，状态—动作交互越难直接从 Bellman target 中学习，动力学表征越有价值。

第三，TD7 超过 TD3+OFE，说明性能不是“任意 state-action embedding 都能得到”，而依赖 SALE 的具体设计：解耦训练、next-state embedding target、AvgL1Norm、fixed embeddings、value clipping。

---

# 八、offline 实验结果

offline 实验使用 D4RL MuJoCo v2 datasets，训练 1M steps 后报告 10 episodes 平均 D4RL score。Table 2 中 TD7 总分为：
$$
784.4\pm14.1,  
$$
高于：
$$
\text{CQL}:656.7\pm24.3,  
$$
$$
\text{TD3+BC}:671.3\pm15.7,  
$$
$$
\text{IQL}:666.7\pm34.6,  
$$
$$
\text{X-QL}:674.9\pm20.4.  
$$
这表明 TD7 在固定数据集上也能受益于 SALE，而不是只在 online exploration 中有效。

部分关键数据如下：

|Environment-Dataset|TD3+BC|IQL|X-QL|TD7|
|---|--:|--:|--:|--:|
|HalfCheetah Medium|48.1|47.4|47.4|**58.0**|
|HalfCheetah Medium-Replay|44.6|43.9|44.2|**53.8**|
|HalfCheetah Medium-Expert|93.7|89.6|90.2|**104.6**|
|Hopper Medium|59.1|63.9|67.7|**76.1**|
|Hopper Medium-Replay|52.0|**93.4**|82.0|91.1|
|Hopper Medium-Expert|98.1|64.2|92.0|**108.2**|
|Walker2d Medium|84.3|84.2|79.2|**91.1**|
|Walker2d Medium-Replay|81.0|71.2|61.8|**89.7**|
|Walker2d Medium-Expert|110.5|108.9|110.3|**111.8**|

唯一明显不是最高的是 Hopper Medium-Replay，其中 IQL 93.4 高于 TD7 91.1，但 TD7 总分最高。由于 TD7 与 TD3+BC 采用相同 offline BC regularization 思路，二者差距主要支持 SALE 对 offline value learning 的作用，而不是简单归因于 BC 项。

---

# 九、设计研究：SALE 的关键设计选择

设计研究在 **TD7 without checkpoints** 上进行，以避免 checkpoint 策略选择机制干扰 SALE 设计本身。实验在 1M time steps、5 个 MuJoCo 环境、10 seeds 上比较不同变体。Figure 3 报告 mean percent loss，Table 7 报告具体 performance。

---

## 1. learning target

默认目标：
$$
z_{sa}\rightarrow z_{s'}.  
$$
比较目标包括：

1. 原始下一状态 ($s'$)；
    
2. slow-moving target network 的 ($z_{s'}^{target}$)；
    
3. ($z_{s'}$) 加 reward prediction；
    
4. 下一状态—动作嵌入 ($z_{s'a'}$)。
    

实验结论：

- 所有基于下一状态 ($s'$) 的目标表现相近；
    
- 使用下一状态嵌入 ($z_{s'}$) 效果最好或接近最好；
    
- 加 reward prediction 影响很小；
    
- 使用 ($z_{s'a'}$) 明显更差。
    

关键原因是 ($z_{s'a'}$) 中的 (a') 来自 target policy：

$$
a'\sim \pi_t(s'),  
$$

而 ($\pi_t$) 在训练中不断变化，使表征目标依赖非平稳 policy。SALE 需要学习的是稳定环境动力学，而不是追随当前 policy 的动作选择。

---

## 2. network input

默认 critic 输入：

$$
Q(z_{sa},z_s,s,a).  
$$

默认 actor 输入：

$$
\pi(z_s,s).  
$$

设计研究显示：

1. embedding 对 critic 的影响大于对 actor；
    
2. critic 的所有输入 ($z_{sa},z_s,s,a$) 都有价值；
    
3. 只用 ($z_{sa}$) 效果差；
    
4. 只用 ($s,a$) 也明显弱于默认；
    
5. embedding 应作为原始输入的补充，而不是替代。
    

这说明 SALE 的关键不是把状态压缩成 latent bottleneck，而是把动力学结构作为额外特征交给 critic。

---

## 3. normalization

比较项包括：

- 不对 ($\phi$) 归一化；
    
- 完全无归一化；
    
- 对 ($z_{sa}$) 归一化；
    
- BatchNorm；
    
- LayerNorm；
    
- cosine similarity loss 替代 MSE。
    

实验结论：AvgL1Norm 整体最稳健，替代方案不能达到相同效果。BatchNorm 依赖 batch 统计，而 replay buffer 数据分布非平稳；LayerNorm 改变样本内部均值方差结构；cosine loss 只控制方向，不保证下游 actor/critic 输入尺度稳定。

---

## 4. end-to-end vs decoupled

端到端变体使用：
$$
\mathcal L
=
\mathcal L_Q  
+  
\beta  
\mathcal L_{\text{encoder}},  
$$
其中 ($\beta\in{0.1,1,10}$)。
Table 7 和 Table 11 显示，端到端训练在多个环境中显著下降。例如 Hopper 中默认 TD7 no checkpoints 为 3361，而 end-to-end 0.1、1、10 分别为 1820、1779、1534。

该结果支持核心机制判断：Bellman value loss 是非平稳且有偏的监督信号，不适合直接塑造 dynamics embedding。解耦训练使 encoder 学习相对稳定的 ($(s,a)\rightarrow s'$) 结构，而 critic 只消费该结构。

---

# 十、外推误差实验

Appendix E 专门研究 SALE 引入的 extrapolation error。论文指出，外推误差通常被认为是 offline RL 问题，但 SALE 在 online RL 中也可能诱发类似现象。原因是 SALE 扩大了动作相关输入维度，例如 Ant 中原始动作维度为 8，而 (z_{sa}) 为 256 维。未见动作在高维 embedding 空间中可能显得离已见动作更远，critic 更容易生成不现实的 value estimate。

实验设置中去掉 value clipping，以暴露问题。默认 value input 为：
$$
Q(z_{sa},z_s,\phi),  
$$
$$
\phi=\operatorname{AvgL1Norm}(\operatorname{Linear}(s,a)).  
$$
研究变体包括：

1. No clipping；
    
2. No ($z_{sa}$)；
    
3. Small ($\phi$)：($\dim(\phi):256\rightarrow16$)；
    
4. No ($z_{sa}$) and small ($\phi$)；
    
5. Frozen embeddings；
    
6. 完整 TD7 with clipping。
    

Figure 18–23 使用 Ant 环境，比较 1M 与 100k replay buffer 下的 performance 与 value estimate。结果显示，($z_{sa}$) 和动作相关线性特征 ($\phi$) 是外推不稳定的主要来源；较小 replay buffer 会加剧不稳定；value clipping 能稳定 value estimate，而不必降低输入维度。

---

# 十一、policy checkpoint 实验

Appendix F 研究 checkpoints 的稳定性作用。论文先展示 RL 平均曲线可能掩盖单 seed 的剧烈波动：经过多 seeds、多 episodes 和 smoothing 后，曲线看似平滑，但单次训练可能发生大幅 performance drop。Figure 25 显示在 Hopper 上，TD3 后期相邻 evaluation window 中出现大幅下降并不少见。

TD7 的 checkpoint scheme 为：

1. 当前策略与 checkpoint policy 的表现用 20 个 assessment episodes 的 minimum performance 衡量；
    
2. 若当前 minimum 已低于 checkpoint performance，则 assessment 提前终止；
    
3. early learning 阶段最大 assessment episodes 为 1；
    
4. 750k time steps 后增加到 20；
    
5. 切换时 checkpoint performance 乘以 0.9。
    

实验比较：

- 最大 assessment episodes 数量；
    
- mean vs minimum criterion；
    
- fixed vs variable assessment length；
    
- 是否 immediate 使用长 assessment；
    
- with/without checkpoints 的单 seed 曲线。
    

结果显示，checkpoint 对最终平均性能的提升并非所有任务都显著，但其主要价值在于降低训练后期当前策略退化对 evaluation policy 的影响。特别是 immediate 使用大量 assessment episodes 会损害早期学习，300k time steps 时 immediate 50 episodes 明显较差，说明早期长时间冻结策略会降低数据多样性并延迟学习反馈。

---

# 十二、消融实验

Appendix G 对 TD7 组件做 ablation。主消融包括：

1. No SALE；
    
2. No checkpoints；
    
3. No LAP。
    

Figure 5 中给出的总体结论是影响排序：
$$
\text{SALE} > \text{LAP} > \text{policy checkpoints}.  
$$
Table 14 在 5M time steps 给出结果。例如：

|Method|HalfCheetah|Hopper|Walker2d|Ant|Humanoid|
|---|--:|--:|--:|--:|--:|
|TD7|18165|4075|7397|10133|10281|
|TD3|14337|3682|5078|5589|5433|
|No SALE|17099|4018|6418|7861|7275|
|No checkpoints|18328|3851|6519|10388|9521|
|No LAP|18104|4188|7233|6940|10155|

No SALE 明显降低 Ant、Humanoid 和 Walker2d，说明 SALE 是核心性能来源。No LAP 在 Ant 上下降很大，说明 prioritized replay 与 Huber loss 对某些任务非常重要。No checkpoints 对平均最终性能影响较小，但其稳定性作用需要结合单 seed 曲线理解。

子组件消融进一步排除其他解释：

- **No SALE, with encoder**：保留 encoder，但端到端由 value loss 训练，性能不如 SALE，说明不是“加 encoder”即可；
    
- **TD3 with encoder**：TD3 加 encoder 但端到端训练，也无法达到 TD7；
    
- **TD3 with checkpoints**：checkpoint 可作为通用机制，但不能解释 TD7 性能；
    
- **TD3 with LAP**：LAP 单独加到 TD3 上不能解释 TD7；
    
- **No clipping**：移除 value clipping 后 Ant、Humanoid 等下降，支持外推误差分析；
    
- **TD3 with clipping**：给 TD3 加 clipping 提升有限，说明 clipping 主要服务于 SALE 引入的高维动作相关输入；
    
- **No normalization / No fixed encoder**：验证 AvgL1Norm 与 fixed embeddings 的稳定作用；
    
- **Our TD3 / No implementation**：排除 TD7 只是实现细节更优的解释。
    

---

# 十三、运行时间实验

运行时间实验排除 evaluation episodes，只统计训练成本。所有算法使用相同 PyTorch 框架，在单块 Nvidia Titan X GPU 与 Intel Core i7-7700k CPU 上运行。Figure 6 报告 HalfCheetah 1M steps 的运行时间：
$$
\text{TD3}:47m,  
$$
$$
\text{SAC}:1h28m,  
$$
$$
\text{TQC}:3h50m,  
$$
$$
\text{TD3+OFE}:3h14m,  
$$
$$
\text{TD7}:1h50m.  
$$

TD7 比 TD3 慢超过两倍，但明显快于 TQC 和 TD3+OFE。论文限制部分也承认，虽然 TD7 计算成本低于某些竞争方法，但相对 base TD3 的 runtime 超过两倍。

---

# 十四、实验结论的严谨评价

## 1. 支持充分的结论

第一，SALE 是 TD7 的核心贡献。No SALE 明显下降，TD3 with encoder 不能复现 TD7，说明性能提升不是简单增加网络容量。

第二，低维状态确实可以从 representation learning 中受益。MuJoCo 状态不是图像，但 SALE 仍显著提升样本效率和最终性能。

第三，state-action representation 的设计很关键。next-state embedding target、decoupled training、AvgL1Norm、fixed embeddings 都是必要的稳定设计。

第四，SALE 存在副作用：高维动作相关 embedding 增加外推误差风险。value clipping 是针对该风险的工程性补救。

第五，TD7 在 online 和 offline 两种设置中都有效。offline 结果尤其重要，因为 TD7 与 TD3+BC 使用相同 BC 思路，性能差距说明 SALE 能改善固定数据集上的价值学习。

---

## 2. 需要谨慎的地方

第一，论文实验主要集中于 MuJoCo 低维连续控制，属于 depth over breadth。尚未证明 SALE 对图像输入、多任务、稀疏奖励、真实机器人或离散动作空间同样有效。

第二，offline baseline 的协议可能并不完全一致。论文明确指出 baseline 结果可能在 evaluation episodes 和 seeds 数量上不完全相同，因此 offline 对比虽有参考价值，但统计公平性略弱于 online 对比。

第三，TD7 是多组件组合算法。虽然消融显示 SALE 最重要，但完整性能来自 SALE、LAP、checkpoints、value clipping、normalization、fixed encoders 和实现细节共同作用。

第四，理论解释不足。论文没有证明为什么 (z_{sa}\rightarrow z_{s'}) 是最优表征目标，也没有形式化说明 AvgL1Norm、fixed embeddings、value clipping 的收敛或稳定性质。限制部分明确指出，该文主要是经验分析，没有处理 representation learning 的理论问题。

---

# 十五、整体总结

该文的核心贡献可以概括为：


$$
\boxed{  
\text{将 representation learning 从图像型 RL 推广到低维连续控制，并证明关键在于状态—动作动力学表征。}  
}  
$$

SALE 学习：
$$
z_s=f(s),  
\qquad  
z_{sa}=g(z_s,a),  
$$
并用：
$$
z_{sa}\approx z_{s'}  
$$
作为解耦动力学预测目标。critic 和 actor 使用增强输入：
$$
Q(z_{sa},z_s,s,a),  
\qquad  
\pi(z_s,s).  
$$
TD7 则在 TD3 上加入 SALE、policy checkpoints、LAP、offline BC term，并配合 AvgL1Norm、fixed embeddings 和 value clipping 等稳定机制。

实验部分系统而细致：online MuJoCo、offline D4RL、设计研究、外推误差研究、checkpoint 研究、主组件和子组件消融、runtime 分析都服务于同一论点：

$$
\boxed{  
\text{低维状态任务的困难不在于观测维度，而在于状态—动作动力学结构；显式学习该结构可以显著改善 deep RL。}  
}  
$$

更精确地说，TD7 的成功不是“更大网络”或“更多技巧”的简单叠加，而是以下机制协同作用的结果：


$$
\boxed{  
\text{稳定的动力学表征目标}  
+  
\text{解耦 encoder 训练}  
+  
\text{原始输入与 embedding 拼接}  
+  
\text{尺度归一化}  
+  
\text{fixed embeddings}  
+  
\text{value clipping}  
+  
\text{优先经验重放}  
+  
\text{checkpoint 策略选择}  
}  
$$


其中，SALE 是最核心的性能来源；LAP 和 value clipping 增强样本利用与稳定性；policy checkpoints 主要缓解 RL 训练中当前策略退化和 performance collapse 的问题。该文的实验设计较完整，尤其通过大量消融排除了“只是网络更大”“只是 replay 更好”“只是 checkpoint 更稳”等简单解释，是一篇以经验验证和算法工程为主、理论分析相对不足的深度强化学习表征学习论文。