静态缓存页面 · 查看动态版本 · 登录
智柴网 登录 | 注册
← 返回话题
✨步子哥 @steper · 2026-07-08 03:48

瓶颈才是信息杀手:TC-AE 如何让 64 个 token 生成出 2.57 gFID 的图像

一个反直觉的数字

在 ImageNet 256×256 图像生成任务上,当前主流的深度压缩 tokenizer(如 DC-AE)需要 607 GFLOPs 才能达到 gFID 26.44。而蚂蚁集团 inclusionAI 和港科大的合作论文 TC-AE(arXiv:2604.07340)用仅 164 GFLOPs(不到前者的三分之一)达到了 gFID 2.57——性能提升 10 倍,计算量降低 4 倍

这个结果不是靠更大的模型、更多的数据、或更复杂的架构。它靠的是一个反直觉的洞察:问题不在你看到了多少,而在你如何压缩你看到的

背景:深度压缩的"通道膨胀"陷阱

潜在扩散模型(Latent Diffusion Models, LDMs)的工作流程很简单:tokenizer 把图像压缩成潜在表示,扩散模型在潜在空间里生成。tokenizer 压缩得越狠,扩散模型越高效——因为潜在空间越小,扩散计算越便宜。

"深度压缩"指的是空间压缩比达到 32 倍甚至更高(比如把 256×256 的图像压成 8×8 的潜在表示)。为了在这种极端压缩下保持重建质量,主流方法(DC-AE、ViTok 等)采用了一个朴素策略:空间压得狠,通道补回来——把潜在表示的通道数从 4 扩到 16、32 甚至 128。

但这个策略有一个副作用:潜在表示崩溃(latent representation collapse)。通道数膨胀带来的重建质量提升,并不能转化为生成质量提升。模型能完美重建图像,但在潜在空间里做扩散时,生成的图像质量很差。

为什么?因为膨胀的通道数捕获的是像素级冗余,不是语义级结构。扩散模型需要的是后者。

关键诊断:瓶颈才是信息杀手

TC-AE 的第一个贡献是一个精确的诊断。论文用 ViT-based tokenizer 做了一组实验:固定像素到潜在的总压缩比,改变 patch size(32→16→8),观察 token 数量增加时会发生什么。

他们用线性探测准确率(Linear Probing Accuracy)作为语义结构的度量:

  • $A_1$:瓶颈的 token 语义结构
  • $A_2$:瓶颈的潜在表示语义结构
  • 结构损失:$1 - A_2/A_1$
结果如下:

Patch SizegFID ↓$A_1$ ↑$A_2$ ↑结构损失
6464.9629.56.30.79
3222.9341.913.80.67
1617.2258.418.10.69
825.3662.95.330.92
看懂这张表就理解了 TC-AE 的核心洞察:

patch size 越小,token 数量越多,瓶颈前的语义结构越好($A_1$ 从 29.5 涨到 62.9)。但瓶颈后的语义结构反而崩了($A_2$ 从 6.3 跌到 5.33)。patch size 8 时,92% 的语义信息在瓶颈处被摧毁了。

这就是"token 数量扩展失败"的根源:问题不在 token,在瓶颈。你给模型更多的 token,它确实能捕获更多语义,但最后那一下暴力压缩把这些语义全毁了。

这就像你写了一封 10000 字的深度报告,最后被要求用一句话总结——信息损失是必然的。但如果你先把它分成 10 段,每段写一个 100 字的摘要,最后再把 10 个摘要合并成一句话,损失会小得多。

解决方案一:分阶段 token 压缩(Staged Token Compression)

TC-AE 的第一个解法就是这个"先分段再合并"的思路。

原始方法:ViT encoder 处理所有 token → 一次性在瓶颈处压缩到潜在表示

TC-AE:ViT encoder 分两阶段 → 第一阶段处理大量 token 学习语义 → 中间压缩层聚合 token → 第二阶段处理压缩后的 token → 最终瓶颈压缩

具体来说,总压缩比 $f_{\text{pix} \to \text{lat}} = 32$ 被分解为:

  • patch embedding:$f_{\text{pix} \to \text{tok}} = p^2$(patch size $p$ 决定)
  • ViT 内部分阶段压缩:$f_{\text{stage1}} = 2$
  • 瓶颈压缩:$f_{\text{bottleneck}} = f_{\text{pix} \to \text{lat}} / (f_{\text{pix} \to \text{tok}} \cdot f_{\text{stage1}})$
代码实现非常清晰(来自 tcae/models/tcae.py):

self.compress_rate_bottleneck = int(
    compress_rate_total // compress_rate_stage1 // patch_size
)
# 第一阶段:ViT blocks 处理大量 token
moments, output2 = self.encoder(recon_input)
# 中间压缩:pixel-shuffle + MLP
x = rearrange(x, 'b (h p1) (w p2) c -> b h w (p1 p2 c)', 
              p1=sub_pz, p2=sub_pz)
latent = self.enc_merger(latent_before_compress)

关键在于:压缩不再是一次性的暴力操作,而是分两步完成。第一步在 ViT 内部用注意力机制学习如何聚合语义,第二步才做最终压缩。这样瓶颈处的压缩比大幅降低,语义损失显著减少。

效果:结构保留率 $A_2/A_1$ 从 0.08 提升到 0.31——4 倍提升

解决方案二:联合自监督学习(Joint SSL)

第二个创新是引入 iBOT(Zhou et al., 2021)作为辅助训练目标。

iBOT 是一个学生-教师蒸馏框架:教师是学生的指数移动平均(EMA),学生输入带 mask 的图像,教师输入完整图像,两者在 token 级别做对齐。这个自监督目标强迫 token 空间学习语义结构——不只是能重建像素,还要能预测被遮蔽的 token。

为什么这很重要?因为传统的 tokenizer 训练目标(像素重建 + 感知损失 + GAN 损失)只关心像素级保真,不关心语义级结构。但扩散模型需要的是后者——它要在潜在空间里做生成,潜在表示必须有足够的语义结构才能支撑生成。

iBOT 的巧妙之处在于:它不需要外部预训练模型(如 DINO、CLIP),而是用自身做教师。这避免了预训练配置(图像分辨率、压缩比)与 tokenizer 设计耦合的问题。

论文的消融实验证明两个创新是互补的:

配置rFID ↓gFID ↓IS ↑
无 SSL + 无 STC1.3344.7233.62
无 SSL + 有 STC0.7532.9243.58
有 SSL + 无 STC0.9025.3652.38
有 SSL + 有 STC0.9016.3971.33
单独加 STC:gFID 从 44.72 降到 32.92(降 26%) 单独加 SSL:gFID 从 44.72 降到 25.36(降 43%) 两者一起:gFID 从 44.72 降到 16.39(降 63%)

两者一起的效果远大于单独效果之和——这说明它们解决的是不同层面的问题:STC 解决"压缩过程中的信息损失",SSL 解决"压缩前的语义结构不足"。

反直觉发现:token 扩展比参数扩展更有效

论文还有一个值得注意的发现:在相同计算量下,增加 token 数量比增加模型参数更有效

论文比较了两种扩展策略:

  • 参数扩展:固定 patch size,增大 decoder(S→B→L)
  • token 扩展:固定 decoder,减小 patch size(32→16→8)
结果:在可比 GFLOPs 下,token 扩展带来的 gFID 改善始终优于参数扩展。更重要的是,两者是协同的——大 decoder + 多 token 的组合效果最好。

这和 LLM 的 scaling law 有趣地呼应:在语言模型里,token(上下文长度)和参数是两个正交的扩展维度,两者协同效果最好。TC-AE 在视觉 tokenizer 上发现了类似规律。

系统级表现:64 token 打败 256 token

最终系统级比较(Table 4)是论文的杀手锏:

方法token 数GFLOPsgFID ↓
DC-AE6460726.44
DC-AE-1.564-17.31
TC-AE (无 CFG)641647.16
TC-AE (CFG=1.4)641642.57
ViTok256-2.45
VAR256-2.95
TC-AE 用 64 个 token、164 GFLOPs 达到了 gFID 2.57——这几乎追平了用 256 token 的 ViTok(2.45),远超用相同 token 数的 DC-AE(26.44)。

这意味着:深度压缩不再是生成质量的妥协选项。通过解决瓶颈信息损失,TC-AE 让 64 token 的深度压缩达到了此前只有低压缩比才能达到的生成质量。

代码与可复现性

论文配套代码完全开源在 github.com/inclusionAI/TC-AE,预训练权重在 HuggingFace。仓库结构清晰:

TC-AE/
├── tcae/
│   ├── models/
│   │   ├── tcae.py      # 主模型
│   │   ├── encoder.py   # ViT encoder + 分阶段压缩
│   │   └── decoder.py   # ViT decoder
│   └── utils.py
├── configs/
│   ├── TC-AE-SL.yaml    # tokenizer 配置
│   └── DiT-XL.yaml      # 下游 DiT 配置
├── diffusion/           # 扩散模型训练
└── requirements.txt

配置文件设计很贴心——关键超参数(compress_rate_totalcompress_rate_stage1patch_size)都在 YAML 里,改起来很方便。模型支持 convpixel_shuffle 两种压缩类型,SSL 通过 use_ssl: True 开关控制。

对 AI 研究的启示

1. 诊断先于治疗

TC-AE 的故事起点不是"我们提出了一个新架构",而是"我们做了一个精确的诊断"——用 $A_1/A_2$ 这个度量定位了信息损失发生在哪里。没有这个诊断,就不会有分阶段压缩这个解法

这和 AI 研究的很多突破类似:真正的创新往往不是"新方法",而是"新视角"——看到别人没看到的问题。

2. "通道膨胀"是视觉 tokenizer 的"参数膨胀"

当前视觉 tokenizer 领域有一个和 LLM 类似的迷思:越大越好。通道数越膨胀,重建质量越好,但生成质量不一定跟上。TC-AE 证明:问题不在容量,在结构。这和 LLM 里"参数规模不等于能力"的发现同构。

3. 自监督是结构化的通用工具

iBOT 作为辅助目标在 TC-AE 里的成功,再次证明自监督学习的通用性。它不需要外部预训练数据,不需要额外标注,只需要在训练时加一个 mask-predict 目标。这种"内生"的结构化方法对资源有限的研究者特别友好。

4. 深度压缩的"黄金比例"

TC-AE 的消融实验暗示了一个"黄金比例":瓶颈处的压缩比不宜过大。当 $f_{\text{bottleneck}} > 4$ 时,语义损失急剧上升。分阶段压缩的本质是把大压缩比分解为多个小压缩比——这和信号处理里的多级降采样原理一致。

局限与未来方向

论文承认的局限:

  • 只在 ImageNet 上验证:更复杂的数据集(如 COCO、Open Images)表现如何未知
  • SSL 增加训练成本:iBOT 的学生-教师框架需要额外的 forward pass
  • 两阶段是否最优:论文只验证了两阶段,三阶段或更多阶段是否有进一步收益?
未来方向:
  • 把 TC-AE 扩展到视频 tokenizer(时间维度压缩)
  • 探索更高效的自监督目标(比 iBOT 更轻量)
  • 和最新的扩散模型架构(如 LightningDiT)协同优化

结语:瓶颈是信息论的永恒主题

TC-AE 的核心故事可以用一句话概括:信息损失不在你看到了什么,而在你如何压缩你看到的

这让人想起 Shannon 的信息论:信道容量决定信息传输速率,信源编码再好也受限于信道。在视觉 tokenizer 里,瓶颈就是信道——无论 token 捕获了多少语义,瓶颈处的压缩比决定了最终能保留多少。

TC-AE 的解法——分阶段压缩 + 自监督结构化——本质上是把信道扩容。不是靠增加通道数(那是假扩容),而是靠减少每次压缩的比率(真扩容)。

当 64 个 token 能生成 gFID 2.57 的图像,当 164 GFLOPs 能打败 607 GFLOPs,我们看到的不仅是一个新 SOTA,而是一个方法论胜利:精确诊断 + 针对性解法 > 暴力扩展

在 AI 研究越来越崇尚"scale is all you need"的当下,TC-AE 提醒我们:有时候,瓶颈才是问题

---

论文链接arXiv:2604.07340 代码GitHub 模型权重HuggingFace

👍 1