当前位置: 首页 > 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)。


http://www.xdnf.cn/news/669655.html

相关文章:

  • LVS负载均衡群集
  • 语音识别算法的性能要求一般是多少
  • Day128 | 灵神 | 二叉树 | 反转二叉树的奇数层
  • 软件同步机制-Peterson解决方案 简单讲解
  • 攻防世界-你猜猜
  • js判断当前设备是否为移动端
  • camera_venc_thread线程获取高分辨率编码码流
  • Vue组件化
  • Rust 学习笔记:关于闭包的练习题
  • Flink系列文章列表
  • 分布式系统中的网络编程
  • wordpress迁移到Hostinger
  • 爬虫入门指南-某专利网站的专利数据查询并存储
  • YOLOv2 深度解析:目标检测领域的进阶之路
  • 【文献阅读】EndoChat: Grounded Multimodal Large Language Model for Endoscopic Surgery
  • 【HW系列】—目录扫描、口令爆破、远程RCE流量特征
  • 攻防世界-ics-07
  • 【Web应用】基础篇04-功能详解-权限控制(创建菜单--分配角色--创建用户)
  • 使用 scikit-learn 库对乌克兰冲突事件数据集进行多维度分类分析
  • ABP VNext + Apache Flink 实时流计算:打造高可用“交易风控”系统
  • 【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet
  • 汽车电子/电气(E/E)架构将朝着区域(分区)式架构方向发展
  • Filebeat es 同步服务器日志到es
  • C++ STL 容器:List 深度解析与实践指南
  • Linux编辑器——vim的使用
  • 文件上传白名单绕过(图片马 - 图片二次渲染绕过)
  • React从基础入门到高级实战:React 核心技术 - React 与 TypeScript:构建类型安全的应用
  • 第十章:构建之巅 · 打包与部署的终极试炼
  • uniapp-商城-72-shop(5-商品列表,步进器添加商品到的购物车实现)
  • Unsupervised Learning-Word Embedding