长上下文模型需要把过去的信息带到当前位置. attention 保存 token 级键值并按查询读取, 状态随序列长度增长;递归模型把历史压进固定状态, 成本稳定, 细节可能碰撞. TTT layer 将递归状态本身写成一个小模型的参数: token 到来时用自监督损失更新 fast weights, 随后的 token 再查询这个模型. 这里的 TestingTime Training 是序列内状态更新, 目标是长上下文建模;它不等于跨任务持续学习, 也不自动让部署模型终身积累知识.
令 token 表示为 , 由投影产生训练视图 与查询 . fast model 在每一步最小化重建损失
输出由 给出. 慢参数 、初始化和学习率由外循环在语言建模目标上训练, fast weights 则在序列内部变化并于边界重置.
1. 线性模型导出 delta rule
若 , 梯度为 , 更新得到
括号内是预测残差. 已经能由状态预测的键值对几乎不再写入, 新信息才产生较大修改. 这就是 delta rule 与简单加和式线性注意力的关键差别: 加和不断累积 , delta 更新先减去当前预测, 相当于覆盖已有关联的误差部分.
如果键归一化且学习率合适, 对同一键重复写入会逐渐接近目标值;不同键相似时, 更新会相互干扰. 键空间的正交程度、值差异与状态维度共同决定碰撞. 固定状态无法无损保存任意长序列, 线性计算复杂度也不等于无限记忆容量.
TTT-Linear 使用线性 fast model, TTT-MLP 提供更强非线性地址能力. 后者参数更多、内循环反向更贵, 更新稳定性也更难. 表达力提升能否转化为长程记忆, 需要在相同状态字节和训练预算下比较, 不能只按总模型参数看 loss.
2. 内循环与外循环怎样连接
内循环写入规则可微, 外循环梯度要穿过整段更新轨迹. 这是一种双层优化: fast model 在当前序列上学习, 慢参数学习什么键和值容易被在线学到、如何初始化、用多大学习率. 截断反向传播降低训练成本, 也限制了外循环能分配多远的信用.
训练稳定取决于键范数、学习率和 fast model 曲率. 步长过大时, 一次残差更新会破坏先前关联;过小时, 信息还没写入便已被查询. 让学习率成为输入相关门控, 可以根据 token 新颖度调节, 也增加门控饱和与错误关闭的风险. 归一化和残差结构限制更新尺度, 其作用应通过谱半径、梯度范数和长序列曲线验证.
mini-batch 形式能够并行一段 token 的更新. 若块内所有 token 都从同一 计算梯度, 它们彼此看不见块内更早的写入;精确 dual form 则利用特殊结构恢复顺序依赖. 算法复杂度和硬件吞吐因此是两件事: 每 token 线性仍可能因为小矩阵反向和串行依赖无法用满 GPU.
3. 它是否真的使用了长上下文
语言 loss 随长度改善是必要证据, 还不够说明状态保存了需要的信息. 可以在特定位置写入键值, 随距离增加查询;清空、交换或冻结 fast weights, 观察相关能力是否消失;改变状态维度与窗口大小, 分开局部 attention 和快速状态的贡献.
大海捞针任务偏向精确检索, 会暴露压缩状态的碰撞;自然语言预测包含大量冗余, 固定状态可能凭主题与统计规律取得不错 loss. 两种结果并不矛盾. 文章声称「长上下文能力」时要说明评测的是精确回忆、语言建模还是推理组合.
与 attention 的等价关系只在特定线性写入和核形式下成立. TTT-MLP、输入相关学习率以及块级近似已经超出简单线性注意力. 机制推导说明模型家族之间的连接, benchmark 与硬件测试才说明某种实现是否更好.
4. 状态生命周期划清研究边界
fast weights 通常在每条序列开始时从学到的初始化重置, 不跨请求保留. 它们在功能上接近可写入隐藏状态, 不是部署后永久修改的知识库. 若将状态跨用户或会话保留, 第 4 章的污染、权限与回滚问题都会回来, 训练目标也没有保证这种用法稳定.
动态 evaluation 会在文本流上更新语言模型参数, 与 fast weights 形式接近, 但更新范围和生命周期可能更长. 传统持续学习又使用有标签或任务数据更新长期参数. 三者应通过状态寿命、写入信号与外循环目标区分, 不能仅因都出现梯度更新便归为同一个算法.
TTT layers 与 fast weights 继续推导 dual form、外循环梯度、复杂度与干预实验. 下一条块级路线讨论怎样扩大一次更新覆盖的 token 数, 以换取硬件利用率, 同时处理块内因果性.
5. 快状态的读写可以分别失效
写入 loss 下降说明 fast model 拟合了训练视图, 查询投影 仍可能无法取回相关信息. 反过来, 查询头可以依靠慢参数和局部窗口完成任务, fast state 实际没有贡献. 分别打乱 , 冻结写入或交换两个序列的状态, 能把写入、寻址和旁路能力拆开.
键空间诊断也比总 loss 更直接. 收集键协方差的有效秩、条件数和不同 head 的冗余, 再将键相似度与值差异配对. 相似键对应不同值时最容易冲突;不同键对应相似值时, 压缩反而无害. 外循环若真正学会地址分配, 应减少高冲突区域或让不同 head 分担.
数值精度限制状态寿命. 连续低秩更新可能让某些方向不断放大, BF16 舍入又会吞掉很小的残差. 定期归一化、门控衰减和更高精度累加各有成本. 长序列测试除了最终 loss, 还应画状态范数、有效秩和写后查询误差随位置的变化, 找到性能恶化来自容量碰撞还是数值不稳.
状态初始化也是慢参数的一部分. 所有序列从零矩阵开始, 写入过程要重新建立通用结构;从学到的初始化开始, fast model 已包含适合在线更新的先验. 将初始化置零、随机化或在不同领域间交换, 可以测量性能来自预训练慢知识还是当前上下文写入. 初始化越强, 单靠最终 loss 越难证明 fast state 真正使用了远处 token.
学习率门控承担类似角色. 输入相关 可以跳过可预测 token、强调 surprise, 也可能只学成位置或频率启发式. 固定学习率、打乱门控和按残差分桶比较, 能验证门控是否真的估计写入价值. 这些实验与状态清空一起, 构成 TTT 机制的最小证据链.
若打乱门控几乎不影响结果, 收益更可能来自额外参数或局部窗口, 不宜归因于学习型写入.
这项归因要在多个长度上成立, 短序列的旁路能力可能掩盖状态贡献.
长序列上的状态交换能进一步验证信息确实写入了 fast weights.
读这一节时可以抓住一个判断:快速权重有没有学到可迁移的更新规则,比它用了哪一种优化器更重要。
参考文献
- Sun, Y. et al. (2024). Learning to (Learn at Test Time).
- Schlag, I. et al. (2021). Linear Transformers Are Secretly Fast Weight Programmers.
- Yang, S. et al. (2024). Parallelizing Linear Transformers with the Delta Rule.
- Krause, B. et al. (2018). Dynamic Evaluation of Neural Sequence Models.