用范畴论给语言模型装上"空间直觉":CCT 如何用拓扑替代参数量
想象你在读一本推理小说。普通读者逐字逐句往下读,读到结尾才恍然大悟。但一个有经验的侦探读者不一样——他会在字里行间发现人物之间的隐秘关联,构建一张关系网,在作者揭示真相之前就锁定嫌疑人。
Cognitive Categorical Transformer(CCT)做的就是这件事:它给 GPT-2 装上了一双能看到"词与词之间拓扑关系"的眼睛。
问题:参数量不是万能药
语言模型过去几年的成功,基本靠一个粗暴策略——堆参数。GPT-2 有 1.5B 参数,GPT-3 跳到 175B,GPT-4 更是天文数字。但参数量的边际收益在递减,而且代价惊人:算力、能源、碳排放。
一个互补的问题是:能不能用数学结构替代参数量? 如果我们给模型注入某种"先验知识"——比如来自范畴论和认知科学的结构——能否在同等训练步数、同等数据下,用更少的参数达到更好的效果?
CCT 给出了肯定的回答。
核心创新:单纯复形消息传递
CCT 最关键的组件叫 GT-Full(Geometric-Topological Full),它做的事情在传统 Transformer 里从未出现过。
普通 Transformer 的注意力机制是"全局看一眼"——每个 token 都能看到所有其他 token,然后通过注意力权重决定关注谁。这很强大,但也很浪费:它没有利用 token 之间的几何关系。
GT-Full 的做法完全不同:
1. 坐标投影:先把每个 token 的隐藏状态投影到一个 384 维的坐标空间
2. k-NN 建图:在这个空间里找每个 token 的 6 个最近邻,构建一张图
3. 单纯复形提升:不只看边(两两关系),还找三角形(三体关系)。用稀疏矩阵乘法加速,比暴力 O(n³) 快 2500 倍
4. 分层消息传递:先沿边传递信息,再沿三角形传递信息,最后融合
为什么要找三角形?因为三角形是"最简单的非平凡拓扑结构"。两个点只能告诉你"它们有关",三个点才能告诉你"它们如何共同构成一个结构"。这就像社交网络分析:知道 A 认识 B、B 认识 C,和知道 A、B、C 三人是一个小团体,信息量完全不同。
范畴论怎么进来的?
论文标题里的 "Categorical" 不是随便加的。CCT 的设计灵感来自范畴论中的 Yoneda 引理——数学中最深刻的结构定理之一。
Yoneda 引理的核心思想是:一个对象完全由它与其他对象的关系决定。你不需要知道一个东西"本质上是什么",只需要知道它如何与所有其他东西互动。
CCT 中的 YonedaSelfModel 模块就是这个思想的实现:它维护 8 个"探针嵌入"(probe embeddings),近似 Yoneda 函子,通过观察隐藏状态如何响应这些探针来监控模型自身的"认知状态"。一个叙事 GRU(门控循环单元)追踪这些探针随时间的演化,形成模型对自身推理过程的元认知。
这听起来很抽象,但效果很具体。
实验结果:拓扑 > 参数
CCT 的实验设计堪称教科书级别的严谨:
- 基线:GPT-2 Small(124M 参数),在 WikiText-103 上微调
- CCT:GPT-2 Small + 认知组件(总计 306M 参数)
- 关键约束:相同数据、相同优化器、相同训练步数(215,000 步)、相同学习率调度
结果:
| 模型 | 验证困惑度 | 相对提升 |
|---|
| GPT-2 Small 基线 | 24.19 | — |
| CCT 完整版 | 21.27 | -12% |
| CCT 去 GT-Full 重训 | 23.72 | -2% |
12% 的困惑度下降,完全来自架构创新,而非参数量或训练时间的优势。
更精细的消融实验显示:GT-Full 贡献了 84% 的架构增益(2.45/2.92 PPL)。去掉 GT-Full 重训,模型只比基线好一点点。这意味着单纯复形消息传递不是锦上添花,而是 CCT 的灵魂。
渐进激活:安全地唤醒新能力
CCT 还有一个精巧的训练策略叫"渐进激活协议"(Progressive Activation Protocol)。它不是一次性打开所有认知组件,而是分 7 个阶段逐步引入:
1. 先只训练 GPT-2 骨干(20K 步)
2. 加入因果注意力(10K 步)
3. 加入 GT-Full(15K 步)
4. 加入层次记忆 + 自我模型(20K 步)
5. 加入自上而下预测处理(30K 步)
6. 扩展训练(100K 步)
7. 加入精度加权预测处理(20K 步)
每个新组件都使用"直通初始化"(passthrough initialization):门控偏置设为 -5.0,使得 σ(-5) ≈ 0.007,新组件在激活瞬间几乎不贡献任何输出。模型从上一阶段的最佳检查点继续训练,不会因为新组件的引入而崩溃。
这像极了人类学习:先掌握基础,再逐步叠加高级技能,每一步都建立在前一步的稳定基础上。
其他认知组件
除了 GT-Full,CCT 还有几个有趣的模块:
层次记忆(HierarchicalMemory):三层 DNC 风格的外部记忆——缓冲区(64 槽)、工作记忆(32 槽)、情景记忆(128 槽)。批量实现比顺序 DNC 快 250 倍。
精度加权预测处理(PrecisionWeightedPP):受 Friston 预测编码理论启发。每对相邻层之间,高层预测低层的激活,计算预测误差,然后用"精度"(precision)加权——精度高的误差更重要。这本质上是一种自上而下的注意力调节。
YonedaSelfModel:前面提到的元认知模块,参数量只有 3M,但提供了模型对自身状态的监控能力。
局限与未来
CCT 目前只在 WikiText-103(约 1 亿 token)上验证,规模远小于现代大模型。单种子(seed=42)实验也限制了统计可靠性。下游基准测试(ARC-Easy、HellaSwag 等)尚未在新消融模型上重新评估。
但核心洞察已经足够清晰:拓扑结构可以替代参数量。在一个 306M 参数的模型上,单纯复形消息传递贡献了 84% 的架构增益。如果这个结论在更大规模上成立,它可能改变我们设计语言模型的方式——从"堆参数"转向"设计结构"。
这让人想起物理学中的重正化群:不是所有尺度上的细节都同等重要,找到正确的粗粒化方式,可以用更少的自由度描述同样的物理。CCT 的单纯复形消息传递,或许就是语言建模中的一种"粗粒化"——不是看所有 token 的所有关系,而是只看拓扑上显著的关系。
范畴论告诉我们,结构比数量更根本。CCT 用实验证明了这一点。