我在近日读论文的过程中不断地注意到tokens这个概念,同时我总是在网络上,各种源码里见到tokenizer这个东西,我觉得挺混淆的。又因为我自己所持的一个学术态度是永远要消除疑惑,所以正好自己有足够的精力支持自己从正在做的事情脱出,在gemini那里问了几嘴,以下为ai辅助的整合的内容:


“Tokenization”(标记化)是AI领域的一个核心术语,其含义已经历了深刻的演进。它从一个NLP(自然语言处理)的特定预处理步骤,扩展成了当前多模态AI研究中一个**“通用模态翻译器”**的宏大范式。

这个范式解决了AI(特别是Transformer架构)面临的一个根本问题:如何让一个模型“阅读”和“写入”所有类型的信息? 答案就是将所有信息——无论是文本、图像、声音还是物理动作——都“翻译”成一种统一的语言:一个离散的、序列化的“Token”序列


第一阶段:经典定义与工程实现

这是Tokenization的起源,专注于处理“文本”。

1. 📚 学术定义:NLP中的Tokenization (分词)

在经典的NLP中,Tokenization(也常被称为“分词”)是将连续、非结构化的文本流,切分成一系列离散的、有意义的基本单元(Tokens)的过程。

  • 目的: 将自然语言转换为模型可以理解和处理的最小单元。
  • 主流方法(子词 Subword): 现代大模型(如GPT、BERT)主要使用子词(Subword)Tokenization(如 BPE、WordPiece 算法)。
  • 优势: 介于“词”和“字符”之间。例如,"tokenization" 可能会被分为 ["token", "ization"]。这极大地缓解了**OOV(Out-of-Vocabulary,未登录词)**问题,使模型既能理解常见词(如 token),也能通过组合词缀(如 ization)来泛化到新词(如 modernization)。
2. 🔧 工程实现:Hugging Face tokenizers (工具)

tokenizers 是一个将上述“学术概念”变为“高性能生产工具”的典型代表。

  • 它是什么? 一个由Hugging Face公司开发的开源库(主要用Rust编写,以提供极高效率)。
  • 它做什么? 它专门用来高效实现执行各种子词Tokenization算法(BPE, WordPiece等)。
  • 它的角色: 它是一个工程实现。它的任务是快速地将原始文本字符串(Raw Text),转换成模型所需的 input_ids(即Token的数字ID序列)。

第二阶段:广义演进——多模态AI的“通用翻译器”

在多模态和AIGC的浪潮下,“Tokenize”的含义已经扩展为:将任意模态的数据,编码为离散的“Token”序列

以下是这一范式在三个前沿研究领域的具体佐证:

1. 🖼️ 扩散模型 (Diffusion Models):将“图像潜空间”Token化

在潜扩散模型(Latent Diffusion Models, LDM)中,Tokenization是实现计算效率和SOTA性能的基石。

  • 核心思想: 不在原始的、高维的像素空间(如 512x512x3)上操作,而是在一个压缩后的潜空间中进行。
  • 如何Tokenize:
    1. 使用一个强大的自编码器(如 VAE 或 VQGAN)作为“图像Tokenizer”。
    2. 这个Encoder将一张高分辨率图像压缩成一个低维的特征图(Feature Map),例如 64x64x4。
    3. 这个 64x64 的特征网格(Grid),就可以被视作一个由 4096 个“视觉Token” 组成的序列。
  • 佐证: Stable Diffusion等模型的核心扩散过程,学习的是这些“潜空间Token”之间的关系,而不是像素之间的关系。最后,解码器(Decoder)将生成的Token序列“反Tokenize”回一张完整的图像。

代表论文:

2. 🤖 机器人学 (Robotics):将“物理动作”Token化

在机器人学中,最大的挑战之一是统一“看”(视觉)、“想”(语言)和“做”(动作)。RT-2(Robotics Transformer 2)通过将“动作”本身Tokenize,实现了这一目标。

  • 核心思想: 万物皆可Token。将视觉、语言和机器人的物理控制指令,全部转换成一个统一的序列。
  • 如何Tokenize:
    1. 视觉/语言: 按常规方式(如 ViT Patches 和 BPE分词)进行Tokenize。
    2. 动作(Action)- 核心创新: 机器人的动作(如手臂的[dx, dy, dz, ...])是连续的浮点数。RT-2将这些连续值离散化(Discretize)
    3. 例如,将-1到1的连续动作范围,切分成256个“桶”(Bins)。一个动作 [-0.05, 0.1, ...] 就被映射成一个离散的整数Token序列,如 [Token_102, Token_150, ...]
  • 佐证: RT-2模型就像一个语言模型,它自回归地“生成”下一个“动作Token”,就像生成下一个单词一样。这个“动作Token”随后被“反Tokenize”,转换回马达的物理指令。

代表论文:

3. 🌊 流匹配 (Flow Matching):在“Token化”的潜空间中引导“流”

流匹配(Flow Matching)是与扩散模型竞争的新一代生成模型框架。为了在图像等高维数据上应用它,它同样依赖于Tokenization范式。

  • 核心思想: Flow Matching 学习一个向量场(Vector Field)来将噪声连续地“引导”回数据。直接在像素上操作是低效的。
  • 如何Tokenize: 实践中,高效的流匹配模型并在原始像素空间中计算“流”。
  • 步骤(借鉴 LDM 和 DiT 范式):
    1. 数据Tokenize: 图像首先通过一个 VAE Encoder 被“Tokenize”成潜空间中的“Latent Patches”(潜在图块)。
    2. Transformer骨干网: 一个强大的Transformer架构被用来建模这个“流”场。
    3. 输入序列: Transformer的输入正是一个Token序列,它包含了 [潜空间图像Token_1, ..., 潜空间图像Token_N, time_step_token, ...]
  • 佐证: 尽管“流”(Flow)在理论上是连续的,但在SOTA实现中,用于建模这个流的神经网络(特别是Transformer),其操作的输入(Input)是一个被Token化(Patched 和 Embedded)的序列

代表论文:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐