# Test-Time Training (TTT) · 费曼学习

---

## 背景速查

### 核心问题

传统深度学习：
> 训练集上训好 → 参数冻结 → 上线推理

一旦**测试数据分布跟训练集不一样**（distribution shift），模型就抓瞎。比如训练集全是晴天照片，上线遇到雨雾，精度暴跌。

**TTT 的直觉：** 模型在遇到每个测试样本时，先**原地学习一下**再预测。把测试样本本身当成「训练数据」来快速自适应。

### 关键里程碑

| 时间 | 工作 | 核心贡献 |
|------|------|----------|
| 2020 | Sun et al. "TTT with Self-Supervised Learning" (ICLR) | 提出框架：推理前用自监督任务（旋转预测）更新模型 |
| 2021 | TENT (Wang et al.) | 简化方案：只调 BN 层的 γ/β，最小化预测熵 |
| 2022 | CoTTA (Continual TTA) | 解决连续自适应下的灾难性遗忘 |
| 2023 | Sun et al. "Learning to (Learn at Test Time)" | 提出 TTT 层 → 把「学习算法」作为隐藏状态，RNN 风格在线更新 |
| 2024 | TTT-MLP / TTT-Linear | 把 Transformer 的注意力替换成 TTT 层，序列长度不再平方复杂度 |

### 核心分类

```
Test-Time Adaptation (TTA) — 只调统计量 / 归一化参数
  ├── TENT — 熵最小化
  └── MEMO — 边缘熵最小化

Test-Time Training (TTT) — 用自监督信号更新模型参数
  ├── 原始 TTT — 旋转预测
  ├── TTT-MAE — 掩码重建
  └── TTT++ — 多任务自监督

Learning to Learn at Test Time — 把学习算法本身作为可训练组件
  └── TTT 层 — 隐藏状态 = 学习器
```

### 为什么要关注 TTT

- **非稳态环境**：自动驾驶（季节/天气/城市变化）、机器人(Deployment 环境跟仿真不同)
- **大模型时代**：LLM 的长上下文、Agent 的在线学习都可以用 TTT 思路
- **替代 Attention**：TTT 层把 O(n²) 变成 O(n)，理论上可以替代 Transformer

---

## 🤔 等你来写

用你自己的话，写一段 ≤300 字的白话解释。目标是讲给一个**懂编程但没做过 ML 的朋友**听。

> 你想一下——如果模型遇见没见过的数据原地学两下再回答，这跟传统训练有什么本质区别？为什么说 TTT 跟「微调」不是一回事？
>
> 写在下面，我来追问 👇
