25层堆叠也不发散:VisionHOPE 用"非扩张动力学"把自修改钉进了安全区
【免费下载链接】VisionHOPE项目地址: https://ai.gitcode.com/hf_mirrors/PSRben/VisionHOPE
让视觉主干在推理时"边看图边改自己"——这个概念足够诱人,但也足够危险。一个自修改系统意味着记忆在内部反馈回路中自我更新,而反馈回路最经典的下场就是指数级放大:误差沿着上下文与层数滚雪球,最终一步 NaN,训练直接蒸发。这正是 VisionHOPE(arXiv:2609.33325)出现之前,自指式学习(self-referential learning)难以落地的根本障碍。VisionHOPE 给出的答案是一套"稳定性匹配步长控制":用软注入上限做光滑限幅,用谱夹强制保留过渡的谱范数上界,并在数学上证明记忆动力学沿每次扫描非扩张(non-expansive)。本文基于论文原文推导、消融实验数据与仓库实据(config.json),拆解这套"安全区"机制的工作原理,并解释为什么 Small/Base 骨架可以在第 3 阶段堆叠 25 层而不发散。
自修改的诱惑与失控的根源
视觉骨干的演化有一条清晰的脉络:CNN 做局部聚合,ViT 引入内容相关的全局交互,SSM/Mamba 让状态转移依赖输入,Test-Time Training(TTT)则更进一步——用一个内层学习器作为循环状态,在图像内实时更新。但 TTT 有一个未竟之处:被更新的内层学习器本身、以及它的更新规则,仍然由外层参数预设。换句话说,网络在"改什么"上变灵活了,但"怎么改"还是死的。
VisionHOPE 基于 Nested Learning 的自指构造,把"记住什么"与"怎么学"同时放进演化:五个耦合记忆——内容记忆 $M^m_t$、键记忆 $M^k_t$、值记忆 $M^v_t$、学习率记忆 $m^\eta_t$、保留记忆 $m^\alpha_t$——沿扫描方向共同演化。每个记忆都用自己的自生成目标来更新自己,即 Self-Referential DGD(SR-DGD):
$$ M^\square_t = M^\square_{t-1}\left(\alpha_t I_d - \eta_t k_t k_t^\top\right) - \eta_t g^\square_t k_t^\top $$
问题在于,这个更新是"自己决定自己"的闭环:更新的量(键、值、步长、保留因子)由记忆自身生成,而记忆又因这些量而更新。论文用反向三角不等式展示了失控的通道:
$$ |\alpha_t I_d - \eta_t (k_t+\delta_t) k_t^\top|_2 \geq \eta_t |k_t|_2 |k_t+\delta_t|_2 - \alpha_t $$
一旦 $\eta_t|k_t|_2|k_t+\delta_t|_2 > 1+\alpha_t$,单步转移就是膨胀的(expansive),而膨胀会被自指反馈沿上下文逐 token 复合。这正是社区文章所称"稳定性壁垒"的技术内核:不约束这个闭环,任何深一点的堆叠都会在训练早期直接数值发散。
步长不是超参:每步在线算"安全剂量"
VisionHOPE 的关键设计之一,是把 $\eta_t$(学习步长)与 $\alpha_t$(保留因子)变成由记忆在线生成的量,而不是人工固定的超参数:
$$ \eta_t = \phi_\eta(m^\eta_{t-1} x_t) = \gamma_\eta,\mathrm{softplus}(s^\eta_t), \qquad \alpha_t = \phi_\alpha(m^\alpha_{t-1} x_t) = \sigma\left(s^\alpha_t + \log\frac{\alpha_{init}}{1-\alpha_{init}}\right) $$
其中 $\gamma_\eta = 0.025$、$\alpha_{init} = 0.9$:初始保留因子保留 90% 的旧记忆,同时留下 $1-\alpha_{init}=0.1$ 的初始稳定性余量给自指注入。注意 $\phi_\eta$ 输出恒正、$\phi_\alpha$ 输出落在 $[0,1)$,这为后续的非扩张证明提供了结构性前提。
社区解读中常说的"在线谱估计动态调控步长",落到论文里就是谱夹那一环——每个 token 依据当前键向量范数即时估算保留过渡的谱界限并据此限幅。而学习率记忆与保留记忆的存在,意味着步长本身也随图像内容与记忆状态实时变化:论文的消融与可视化(执行步长 $\tilde{\eta}_t$ 的热力图)显示,显著物体与独特结构区域对应的步长更大,模型确实学会了"在哪里该更用力地修改自己"。配合 chunk 化(边界状态并行生成 token 相关量、token 顺序累计状态更新),这套步长控制在 chunk 形式下形式不变,让"逐 token 的在线估计"仍能以并行方式高效计算。
软上限与谱夹:光滑限幅 + 互补算子界
有了原始步长 $\eta_t$,还需要把它改造成"安全的步长"。VisionHOPE 的稳定性匹配步长控制由两个互补的闸门组成。
软注入上限(soft injection cap)。记键值差 $\delta_t = k_t - v_t$,先算稳定化幅度 $r_t = \sqrt{|\delta_t|_2^2 + \epsilon^2} + \epsilon$($\epsilon = 10^{-6}$),再定义注入步长上限 $\eta_t^{inj} = (1-\alpha_t)/r_t$,最后做光滑压缩:
$$ \bar{\eta}_t = \eta_t^{inj}\left(1 - \exp\left(-\frac{\eta_t}{\eta_t^{inj}}\right)\right) $$
这个形如软 ReLU 的对偶函数有三个关键性质:光滑、严格递增(导数 $\exp(-\eta_t/\eta_t^{inj}) \in (0,1)$)、且在 $\eta_t=0$ 附近一阶保持小步长——展开得 $\bar\eta_t = \eta_t - \eta_t^2/(2\eta_t^{inj}) + O(\cdot)$。也就是说,它既能把注入步长压到极限之下,又不破坏学习率记忆原本给出的精细调节。对照消融实验:如果换成硬注入夹 $\min(\eta_t, \eta_t^{inj})$,精度从 82.3 掉到 81.8;硬夹在推理时有 49.68% 的 token 更新被触发,粗暴截断反而丢掉了原始步长的量级信息。
谱夹(spectral clamp)。保留过渡的谱上界要求 $|A_t|_2 \le \alpha_t$,其中 $A_t = \alpha_t I_d - \tilde\eta_t k_t k_t^\top$ 的特征值为 $\alpha_t - \tilde\eta_t|k_t|_2^2$(沿 $k_t$ 方向)与 $\alpha_t$(正交方向)。由此反解出谱限 $\eta_t^{spec} = 2\alpha_t/|k_t|_2^2$,最终执行的步长取二者较小者:
$$ \tilde{\eta}_t = \min\left(\bar{\eta}_t,\ \eta_t^{spec}\right) $$
两个闸门合起来给出互补算子界(Proposition 1):保留过渡 $|A_t|_2 \le \alpha_t$,自指注入 $|B_t|_2 < 1-\alpha_t$。注意第二界的微妙之处——$\alpha_t$ 越接近 1,留给注入的收缩余量 $1-\alpha_t$ 越小,即"越保留旧记忆,越不允许大幅自我改写",两者共享同一个资源预算。三角形不等式立刻给出完整过渡界 $|T_t|_2 < \alpha_t + (1-\alpha_t) = 1$,于是 token 级非扩张(Corollary 1)成立:
$$ |T_t|_2 < 1, \qquad |M^\square_t|F \le |M^\square{t-1}|_F $$
每个记忆状态矩阵的 F 范数沿扫描单调不增,被自己的初值牢牢钉住。chunk 级证明(Theorem 1)更进一步:同一 chunk 内五个记忆共享同一个右乘增益 $G_t$,其范数上界可写成伸缩级数 $\prod \alpha_s + \sum_j (1-\alpha_j)\prod \alpha_s$,恰好精确坍缩为 1,从而 $G_t$ 谱范数严格小于 1,chunk 末状态范数不超 chunk 初状态。
工程实现还留了一层"双保险":论文在注入限与谱限上分别乘以 $1-10^{-3}$ 与 $1-10^{-6}$ 的内收因子,$|k_t|_2^2$ 分母被显式下界到 $10^{-20}$,且键向量做稳定化 L2 归一化——保证有限精度下界值也严格落在可证明的安全区内。
25 层深堆叠不放大,意味着什么
先看仓库实据。config.json 给出三档规格:
- VisionHOPE-T:
embed_dims [64,128,256,512],depths [3,4,18,4] - VisionHOPE-S:
embed_dims [64,160,320,512],depths [4,8,25,8] - VisionHOPE-B:
embed_dims [96,192,448,640],depths [4,8,25,8]
第 3 阶段(16× 下采样分辨率)集中堆叠了 18~25 个 VisionHOPE 块,Small 与 Base 都是 25 层——深度一致、仅宽度不同。在一个含自指反馈的骨干里堆 25 层,每一层内又有四个方向的扫描,一张图内累计约 100 条"自修改记忆演化序列"。若非扩张保证失效,任何一层、任何一条序列的误差放大都会指数传导;而恰恰是"$|M^\square_t|F \le |M^\square{t-1}|_F$"这条看似朴素的不等式,把整条链路的范数增长封死在初值处。
这个性质直接转化为两件事。其一,训练不炸:消融表中,移除软注入上限的变体在训练早期前向直接 NaN,这是"反馈回路失控"最直观的实证;而完整方案(软上限+谱夹)稳定跑完全程,且精度 82.3 高于任何单组件替代。其二,深度变得"免费":因为状态范数有界,加深层数不再自动带来稳定性税——这也解释了为什么 S/B 敢把第 3 阶段加深到 25 层,而性能依然随宽度与深度同步增长。
值得注意的是谱夹的激活率:推理时仅有 0.0044% 的 token 更新触发谱限,训练前十个 warmup epoch 内更是只有 0.0011%。这组数字透露的设计哲学是:谱夹像保险丝,常态下几乎不工作,但它以可证明的方式兜住了极少数"应该被拦下"的更新;而软注入上限承担了日常的调节职能。两个闸门一软一硬、一主动一被动,缺一不可。
落到社区最关心的那个问题上:"自修改系统凭什么能当下一代主干?"——答案是先用数学钉住安全区,再谈精度。非扩张保证就是这套系统的安全带:它能"改自己",但每一步改写都被范数界约束,25 层也好、四方向扫描也好,都不会把误差滚成雪球。
从证明到权重:仓库里的落地
理论最终要落到可下载、可复现的工程。仓库 README.md 提供了 12 份官方预训练权重,覆盖 ImageNet-1K 分类、COCO 检测/实例分割(1× 与 3× 双协议)、ADE20K 语义分割,全部按 MIT 协议开源,可用 Hugging Face CLI 一键拉取:
hf download PSRben/VisionHOPE visionhope_small.pth --local-dir weights上手接口同样轻量:SRNL(dim=64, head_dim=16, chunk_size=64)直接处理[batch, tokens, dim]序列,VisionHOPEOperator与VisionHOPEBlock保留[B, C, H, W]特征图形态,prepare_for_inference可把参数原地融合以加速推理——自修改系统并非只能停留在论文公式里,而是可以当普通骨干一样嵌入你的分类、检测、分割项目。
稳定性的价值最终由基准成绩背书。ImageNet-1K 上,VisionHOPE-T/S/B 分别取得84.1 / 85.2 / 85.6Top-1,T 档 27M 参数、4.9G FLOPs,在所有规模面板上压过 ConvNeXt、InternImage、VMamba 乃至 TTT 系 H-ViT3;COCO 1× 协议下 Mask R-CNN 的 box AP 达到47.9 / 49.5 / 50.5,与 H-ViT3-B 并列 B 档最优;ADE20K 上 UPerNet 以49.4 / 50.3 / 51.8mIoU 全面领先,B 档比 ConvNeXt-B 高 2.7 个点。三档模型在第 3 阶段堆 18~25 层、每层跑四方向扫描,仍保持线性的 token 复杂度与内存($\mathcal{O}(BND)$),这正是"非扩张保证 + 工程效率"同时成立的注脚。
自指式学习在语言建模侧已有 Nested Learning、Titans 等先例,VisionHOPE 的意义在于把这条路线推进到通用视觉骨干,并用可证明的非扩张动力学解决了"能学习的学习"在视觉上的稳定性门槛。25 层不发散不是一个营销话术,而是一条可推导、可消融验证、可下载复现的性质链——对想尝试自修改主干的工程团队而言,这或许是比精度数字更值得先读懂的"型号说明"。
【免费下载链接】VisionHOPE项目地址: https://ai.gitcode.com/hf_mirrors/PSRben/VisionHOPE
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考