0.
做深度学习,总会产生一种对“端到端(End-to-End)”的执念。
我们费尽心机设计 Transformer,用 RoPE 旋转位置编码处理序列,用 PPO 乃至更复杂的算法去优化策略。但是,当我们回过头看模型的第一步——Tokenizer(分词器)时,却发现它像是一个来自上个世纪的遗留物。
无论是 BPE 还是 SentencePiece,本质上都是基于统计规则的硬切分。它们是离散的、不可导的、预处理层面的。 把这样一个“死”的模块,挂在一个完全可微的、拥有万亿参数的神经网络(法拉利)前面,像极了在法拉利前面套了一辆马车。
我就在想:为什么神经网络不能自己决定怎么“阅读”? 为什么我们不能从字符(Character)或者字节(Byte)开始,让模型自己去学习如何组合语义?
1.
在这个执念的驱动下,我构思了一个自认为很逆天的架构。我不希望做一个缝合怪,我想从 Inductive Bias(归纳偏置)的角度去重新设计它:
-
局部形态 (Morphology): 使用 1D CNN。因为字符组成词根,往往只和相邻的字符有关(比如 'ing', 'ed'),卷积最擅长抓取这种局部特征。
-
全局语义 (Semantics): 使用 Graph (图结构)。语言虽然是线性的序列,但语义往往是网状的。特别是在中文里,字与字之间的潜在联系可能跨越很远。如果能构建一个相似度图(Similarity Graph),或许比 Attention 更能稀疏且高效地捕捉联系。
-
可微压缩 (Compression): 使用 Differentiable Pooling。不要硬切分,而是让网络通过梯度,自己把字符特征“池化”成一个个 Patch Token。
我极其兴奋。我觉得我触碰到了某种从 0 到 1 的东西。
2.
我开始做文献调研,准备大干一场。 然后,我撞车了。
原来,Google 早就搞出了 CANINE,Meta 也在推 MegaByte,还有 Charformer…… 哪怕是“可微池化”这个点子,在 GBST 里也已经被探索过了。
说实话,那一瞬间的挫败感是真实的。 当你以为自己抓住了通往未来的钥匙,却发现 Google DeepMind 和 Meta AI 的大佬们早就把门踹开,甚至已经在里面喝咖啡了。
但是,巨人们虽然走在了前面,他们并没有封死所有的路:
-
CANINE 虽然去掉了 Tokenizer,但它为了处理字符级输入,Transformer 的 Encoder 变得极其沉重,推理速度慢得让人心碎,根本无法在大规模 LLM 上落地。
-
Charformer 虽然用了软注意力机制,但它依然假设语言是纯粹的序列(Sequence)。
-
MegaByte 更多是工程上的分块优化,并没有解决“语义聚合”的本质问题。
他们似乎并没有人真正引入“图 (Graph)”的视角。
现有的模型都在死磕“序列”,但在代码生成、或者像中文这样高密度的语言中,字符之间的关系也许本质上就是一个拓扑图。 “1D CNN + Graph”思路,似乎并没有完全失效。 它或许是解决长文本依赖、降低推理成本的另一块拼图。
3.
接下来的几个月,我会尝试用 PyTorch 把这个 Graph-based Differentiable Tokenizer 搓出来。
这注定是一条少有人走的路,因为在这个 LLM 统治的时代显得有些“不合时宜”。
但我相信,Deep Learning 的未来绝不仅仅是堆算力和堆数据。在底层的架构设计上,一定还有未被发现的宝藏。
如果你也对 Sub-word Free、Graph NN 或 Deep RL 的底层架构感兴趣,欢迎在后台留言。在这个卷到极致的时代,让我们一起做点“没用”但有趣的事情。
写于 [2025.11.25],一个普通人。

被折叠的 条评论
为什么被折叠?



