【NLP基础知识系列课程-Tokenizer的前世今生第五课】从静态到可学:Tokenizer 的自适应演化之路
引子:Tokenizer 不再只是“切词器”
在 NLP 或多模态任务中,我们一直使用固定的分词器(如 BPE、WordPiece)在训练前将文本分为 token。但这是一种静态方式,与模型参数解耦,与任务目标无关。
在可微训练、跨模态建模和任务定制兴起的今天,越来越多模型试图摆脱这种静态输入依赖。
于是,“可学习 Tokenizer”(Learnable or Trainable Tokenizer)登场了,它们与模型结构深度耦合,拥有以下特点:
- token 切分方式可被优化
- 粒度与结构可调
- 与模型 loss 联动更新
本篇我们将深入解析这类 tokenizer 的理论背景、典型设计、实现流程、关键机制与实验评估方式。
一、可学习 Tokenizer 的核心目标
输入 token 的切分方式如果是固定的,就会带来:
- Token 冗余或不足(如字符级太长、词级太稀)
- 任务无关性(生成任务 vs 分类任务切分应不同)
- 多模态失配(图像 token 与语言 token 粒度不一致)
因此,可学习 tokenizer 希望满足:
min θ T E x ∼ D [ L ( f ( T ( x ; θ T ) ) ; θ M ) ] \min_{\theta_T} \mathbb{E}_{x \sim D} \left[ \mathcal{L}(f(T(x;\theta_T));\theta_M) \right] θTminEx∼D[L(f(T(x;θT));θM)]
其中:
- T ( x ; θ T ) T(x;\theta_T) T(x;θT):可学习的 tokenizer,对输入 x x x 切分
- f ( ⋅ ; θ M ) f(\cdot;\theta_M) f(⋅;θM):后续模型
- L \mathcal{L} L:任务 loss(分类、生成等)
目标是让 tokenizer 参数 θ T \theta_T θT 直接优化任务性能,而非单独预设。
二、方法一:Token Learner(Google, 2021)
场景:图像 Patch Token 太多,如何选最关键的?
Token Learner 是一个可插拔的模块,它接收图像 patch embedding,并输出 N N N 个压缩后的 token,供后续 transformer 使用。
架构:
- 输入:ViT 输出的 patch embedding X ∈ R P × d X \in \mathbb{R}^{P \times d} X∈RP×d
- 使用 1D-CNN + Attention 模块生成选择 mask:
W = S o f t m a x ( g ( X ) ) ∈ R P × N W = \mathrm{Softmax}(g(X)) \in \mathbb{R}^{P \times N} W=Softmax(g(X))∈RP×N - 输出 token:
T i = ∑ j = 1 P W j , i X j for i = 1... N T_i = \sum_{j=1}^{P} W_{j,i} X_j \quad \text{for } i = 1...N Ti=∑j=1PWj,iXjfor i=1...N
输出的 T ∈ R N × d T \in \mathbb{R}^{N \times d} T∈RN×d 是新的 token 表示。
优点:
- 可以压缩长序列
- 可以实现局部关键区域感知
缺点:
- 结构不稳定,依赖注意力调节
- 无 token identity(无词表)
代表应用:
- EfficientViT、Pix2SeqV2、PaLI
三、方法二:MxDNA(EM-style token learning)
场景:DNA 序列中,不同位置的“motif”不固定,能否自动切分?
MxDNA(ACL 2022)采用 EM 方法动态学习最优 token 划分,结合 attention mask 提高功能片段表达。
核心思路:
- 初始化:随机 token 划分(可重叠)
- E步(估计):用当前划分训练模型,统计每个 token 的对任务 loss 的影响
- M步(优化):更新 token 划分,使得高信息 token 保留,低信息 token 合并或丢弃
信息评分:基于 Shannon Entropy 或 Conditional Mutual Information:
I G ( t ) = H ( Y ) − H ( Y ∣ t ) \mathrm{IG}(t) = H(Y) - H(Y|t) IG(t)=H(Y)−H(Y∣t)
注意力指导:将高评分 token 在 Attention 中给予更大权重。
优点:
- 保留信息丰富区域
- 自适应切分,适合 motif 多样性
缺点:
- 训练复杂(EM 迭代 + re-tokenization)
- 收敛依赖初始化
代表任务: 基因调控因子预测、序列分类
四、方法三:Vokenization(ACL 2020)
场景:文本 token 的含义如果可以与图像对齐,能否让文本也“视觉化”?
Vokenization 是一个跨模态的 token alignment 方法,为每个文本 token 匹配一个“视觉 embedding”,形成“视觉 token”或“voken”。
实现流程:
- 文本 token 用 WordPiece 切分
- 构建 f t e x t ( t i ) f_{text}(t_i) ftext(ti) 表示每个词的 embedding
- 对应图像句对中,从图像库中搜索与 t i t_i ti 相似的视觉 patch embedding f v i s i o n ( v j ) f_{vision}(v_j) fvision(vj)
- 用对比损失学习匹配
Loss:
L = − ∑ i log exp ( f t ( t i ) T f v ( v i ) ) ∑ j exp ( f t ( t i ) T f v ( v j ) ) \mathcal{L} = - \sum_i \log \frac{\exp(f_t(t_i)^T f_v(v_i))}{\sum_j \exp(f_t(t_i)^T f_v(v_j))} L=−i∑log∑jexp(ft(ti)Tfv(vj))exp(ft(ti)Tfv(vi))
输出 voken 被送入下游文本模型,可视为“视觉增强语言建模”。
五、方法四:Token Routing & PerceiverIO(DeepMind)
Perceiver 系列模型使用 latent vector 池代替传统 token 序列,并用 cross-attention 做 token routing。
核心机制:
- 输入 token x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn
- 构造 latent 查询向量 q 1 , . . . , q k q_1, ..., q_k q1,...,qk
- 每个 latent vector 从输入 token 中选择相关 token 汇总:
Latent i = ∑ j α i j x j , α i j = s o f t m a x ( q i T x j ) \text{Latent}_i = \sum_j \alpha_{ij} x_j, \quad \alpha_{ij} = \mathrm{softmax}(q_i^T x_j) Latenti=j∑αijxj,αij=softmax(qiTxj)
即:输入 token 不再决定模型结构,latent query 决定“看哪些 token”。
应用扩展: Flamingo 在 vision-language task 中使用 gated routing,对不同模态 token 分配不同查询门控。
六、评估方法与挑战
可学习 Tokenizer 在实验中应考虑以下维度:
维度 | 说明 | 衡量指标 |
---|---|---|
表达能力 | token 是否能有效表达语义结构 | 任务准确率/生成质量 |
压缩能力 | 是否减少冗余 token | token 数减少率 / latency |
对齐性 | 多模态 token 是否能语义对齐 | cross-modal attention score |
可解释性 | 是否能显式看到 token 学到什么 | Token mask ablation / GradCAM |
七、小结与展望:从“词表”到“认知剪辑器”
可学习 Tokenizer 代表着一种 paradigm shift:
- 从固定词典转向任务驱动
- 从被动输入转向结构感知
- 从分词工具转向模型结构的一部分
未来我们将看到:
- 与 LoRA、Adapter 结合,实现轻量化 tokenizer 迁移
- token sparsity / entropy 控制机制成为训练稳定性关键
- 在生成模型中实现 token 自发现、自演化机制
Tokenizer,不再只是“tokenizer”,而是人工智能系统的输入分配器(Input Orchestrator)。