当前位置: 首页 > news >正文

【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] θTminExD[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 使用。

架构:
  1. 输入:ViT 输出的 patch embedding X ∈ R P × d X \in \mathbb{R}^{P \times d} XRP×d
  2. 使用 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
  3. 输出 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} TRN×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(Yt)

注意力指导:将高评分 token 在 Attention 中给予更大权重。
优点:
  • 保留信息丰富区域
  • 自适应切分,适合 motif 多样性
缺点:
  • 训练复杂(EM 迭代 + re-tokenization)
  • 收敛依赖初始化

代表任务: 基因调控因子预测、序列分类


四、方法三:Vokenization(ACL 2020)

场景:文本 token 的含义如果可以与图像对齐,能否让文本也“视觉化”?

Vokenization 是一个跨模态的 token alignment 方法,为每个文本 token 匹配一个“视觉 embedding”,形成“视觉 token”或“voken”。

实现流程:
  1. 文本 token 用 WordPiece 切分
  2. 构建 f t e x t ( t i ) f_{text}(t_i) ftext(ti) 表示每个词的 embedding
  3. 对应图像句对中,从图像库中搜索与 t i t_i ti 相似的视觉 patch embedding f v i s i o n ( v j ) f_{vision}(v_j) fvision(vj)
  4. 用对比损失学习匹配
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=ilogjexp(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 是否能有效表达语义结构任务准确率/生成质量
压缩能力是否减少冗余 tokentoken 数减少率 / 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)。


相关文章:

  • C/C++的OpenCV的锐化
  • ojs导入显示空白页错误信息
  • Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用
  • 【android bluetooth 协议分析 02】【bluetooth hal 层详解 6】【高通蓝牙hal主要流程介绍-下】
  • Jmeter一些元件使用的详细记录
  • 详解MYSQL索引失效问题排查
  • 如何描述BUG
  • ubuntu22.04 安装 SecureCRT8.7.3
  • 5.0.7 TabControl的使用
  • Java+Playwright自动化-2-环境准备与搭建-基于Maven
  • ViewModel
  • 设计模式系列(06):抽象工厂模式(Abstract Factory)
  • Vue组件化
  • 用AxumStatusCode细化Rust Web标准格式响应
  • [Vue]浅浅了解vue3响应式的基本原理
  • Jenkins实践(9):pipeline构建历史展示包名和各阶段间传递参数
  • 使用 scikit-learn 库对乌克兰冲突事件数据集进行多维度分类分析
  • MATLAB实现音频参数均衡器(PEQ)
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • mediapipe标注视频姿态关键点
  • 做平面设计图的网站/怎么做网站赚钱
  • 自媒体运营小程序开发网站建设/新闻软文发布平台
  • 宿迁建设局质安站网站/谷歌商店paypal官网
  • 池州网站制作优化/朋友圈软文
  • 做瞹瞹瞹视频免费网站/友情链接的网站有哪些
  • 怎样用javaweb做网站/广州今天刚刚发生的重大新闻