Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Tokenization

分词会将文本、图像或音频拆分为模型映射到嵌入向量的词元。内容涵盖 BPE 等子词方法、图像块和词元成本。

分词是将原始输入转换为一系列token的步骤;token 是模型读取的离散单位,每个 token 都会从固定词汇表中获得一个整数 ID。文本分词器会将“The bus stopped.”转换成 4 个 ID,模型会为每个 ID 查找一个嵌入向量,因此分词器决定了大型语言模型(LLM)将什么视为一个单位。token 也是模型上下文窗口、推理延迟、文本生成和 API 定价所使用的单位。同一概念也适用于文本以外的内容:视觉 Transformer(ViT)会将图像分割成图块,而语音模型会将音频分割成短帧。

子词分词的工作原理#

早期自然语言处理(NLP)会按空格和标点拆分文本,这会导致罕见词和新词不在词汇表中;而按字符分词又会让序列变得很长。现代 Transformer使用子词分词器,将常见词保留为完整词,并将罕见词拆分成可重复使用的片段。Sennrich 等人于 2015 年将字节对编码(BPE)改用于机器翻译,这种算法会从训练语料中学习词汇表:它从单个字符或字节开始,不断将出现频率最高的相邻词对合并为新 token,直到词汇表达到目标大小。对新文本进行编码时,则会按顺序重放学习到的合并规则。

自 GPT-2起使用的字节级 BPE 从 256 种可能的字节值开始,因此任何字符串、表情符号或源文件都可以编码,无需使用未知 token。其他算法选择片段的方式有所不同。用于 BERT的 WordPiece 会合并最能提高训练数据似然的词对;Google SentencePiece库中的 Unigram 方法则从大型候选词汇表开始并逐步精简,将空格视为普通符号,因此同一个分词器也能处理不使用空格书写的语言。词汇表规模随着时间推移不断扩大:BERT 使用 30,522 个 token,GPT-2 和 GPT-3使用 50,257 个,Llama 3 使用 128,256 个,而 OpenAI 的 o200k_base 使用约 200,000 个。OpenAI 的 tiktoken库对比了其中最早和最新的两种词汇表:

import tiktoken

# Byte-level BPE vocabularies from GPT-2 (2019) and GPT-4o (2024)
for name in ["gpt2", "o200k_base"]:
    encoding = tiktoken.get_encoding(name)
    print(f"{name}: {encoding.n_vocab:,} tokens in the vocabulary")
    for text in ["Ultralytics YOLO26 detects buses.", "バスが止まった。"]:
        ids = encoding.encode(text)

        # Decode each ID on its own to see where the tokenizer split the text
        pieces = [encoding.decode([i]) for i in ids]
        print(f"  {len(ids)} tokens: {pieces}")

GPT-2 的词汇表需要用 11 个 token 表示这个英文句子,并将“Ultralytics”拆分为 Ult、ral、y和 tics;而 o200k_base 只需要 9 个 token。对于日语句子“the bus stopped”,GPT-2 需要 9 个 token,并将字符 止 拆成两个字节级 token;这两个 token 单独解码时都会变成替换字符 �,而 o200k_base 只需要 7 个 token。

  • Token: 分词产生的单位,例如词、子词、字节、图像块或音频帧。
  • 嵌入: 模型根据每个 token ID 查找的学习向量;这些向量与网络的其余部分一起训练,而词汇表由分词器预先确定。
  • 经典 NLP 中的词语切分: spaCy 和 NLTK 等库会将文本切分成词语和标点,用于句法分析和标注;之后通常还会进行词干提取或词形还原,以便开展语言学分析。
  • 数据安全中的令牌化:在支付和数据保护领域,令牌化会用随机替代值替换敏感值(例如银行卡号),并将替代值存储在受保护的保险库中。

令牌数量为何重要#

对于英文文本,OpenAI 的分词器平均每个令牌约对应四个字符,但其他语言和代码所需的令牌可能多得多。Petrov 等人(2023)发现,同一段文本翻译成不同语言后,分词长度最多可相差 15 倍,这会增加 API 成本,并缩小这些语言可用的上下文长度。令牌边界也会影响模型能看到的内容。如果 LLM 将“strawberry”读作几个多字母令牌,它就无法直接看到其中的字母;而 o200k_base 会将“3.14159”拆分为 3、.、141 和 59,这会增加按数字位进行运算的难度。Meta 的 Byte Latent Transformer 等无分词器设计会根据下一个字节的可预测性,将原始字节分组为不同大小的块,从而避免使用固定词汇表。

图像、音频和视频的令牌化#

ViT 会将图像切分为固定大小的图块,因此,使用 16×16 像素图块时,224×224 图像会变成 196 个图块令牌。每个图块会先展平,再线性投影为嵌入,然后进行自注意力计算。视觉语言模型(VLMs)会将图块嵌入与文本令牌一起传给 LLM,因此图像分辨率越高,每个请求包含的令牌就越多。图像生成器通常改用离散视觉令牌:向量量化码本会将每个图块替换为最近代码向量的 ID,使视觉自回归模型能够像生成文本一样逐个令牌生成图像;而令牌合并会合并相似令牌,减少长图像和视频序列中的令牌数量。

视觉模型也会对文本进行令牌化。当 YOLOE-26 通过 set_classes 接收类别名称时,Ultralytics 会使用 CLIP 的字节级 BPE 分词器处理每个名称,将长度填充或截断至 77 个令牌;随后,Apple 的 MobileCLIP2 文本编码器会将结果转换为嵌入,供检测头与图像区域进行匹配。在语音识别中,OpenAI 的 Whisper 会将每个 30 秒音频窗口转换为对数梅尔频谱帧,再由其编码器将这些帧作为包含 1,500 个位置的序列进行处理。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来