将语言拆分成词元:Transformer 模型如何处理信息?

社区文章 发布于 2025 年 5 月 3 日

阅读水平:适合对人工智能基础知识感兴趣的初学者。无需事先具备机器学习知识。

本文解释了 Transformer 模型如何通过将文本分解为词元来处理信息。读者将了解到:

  • 什么是词元化及其重要性
  • Transformer 如何将文本转化为它们能理解的内容
  • “词元”、“词汇表”和“Transformer”等关键术语的含义
  • 这些选择如何影响人工智能模型在不同语言中的表现
Transformer Tokenization Diagram

TL;DR Transformer 是强大的 AI 模型,可以理解和生成文本。但在处理语言之前,它们首先将其分解为称为词元(token)的更小片段——这个过程称为词元化(tokenization)。这一步至关重要:它有助于模型理解含义,但也影响着模型处理不同语言和任务的效果。在本文中,你将获得一个面向初学者的词元化工作原理、重要性以及对 AI 未来意味着什么的介绍。

先决条件术语表

  • 词元化 (Tokenization):将文本分解为更小单元(如单词、子词或字符)的过程,以便计算机能够更有效地处理和理解语言。例如,句子“Transformers are amazing”可能会根据所使用的词元分析器变成 ["Transformers", "are", "amazing"] 或更小的片段。[参见:Zilliz 词汇表]
  • 词元 (Token):文本的基本单元,如单词、单词的一部分,甚至一个字符,模型将其作为理解和生成语言的构建块。[参见:Hugging Face 词元分析器]
  • 词汇表 (Vocabulary):模型已知并可使用的所有唯一词元的完整集合。词汇表的大小和设计会影响模型处理不同单词和语言的能力。[参见:Zilliz 词汇表]
  • Transformer:一种人工智能模型,通过多层自注意力机制处理数据序列(如文本),使其能够理解单词之间的关系,无论它们在句子中的位置如何。Transformer 是现代 AI 模型(如 GPT 和 BERT)的核心。[参见:DataCamp:Transformer 工作原理]

词元化的重要性

在机器学习领域拥有十多年经验的我,曾观察到一个看似平凡的预处理步骤,如何成为模型能力的无声决定因素。当你向任何大型语言模型提出问题时,在进行任何预测之前都会发生一个关键的转换:你的文本被分解成“词元”——这些模型处理的基本单元。这个词元化步骤不仅仅是技术性的;它是一个深刻限制这些系统理解能力的数学约束。

最近关于跨语言迁移学习的研究表明,词元化本身就能解释不同语言之间性能的显著差异——有时会导致严重的下游性能下降和训练成本增加,尤其是在多语言模型中使用以英语为中心的词元分析器时 (Petrov et al., 2023)。例如,由于词元化效率低下,训练成本可能增加多达 68%,而多语言模型的词汇表大小要求可能比仅针对英语的模型大三倍。这一发现从根本上改变了我们设计多语言模型的方式。

词元化提出了一个引人入胜的实际悖论:提高词元效率能立即降低计算成本,但可能引入偏差并损害泛化能力。在本文中,我将分享关于词元化技术的见解,这些技术已被证明可以在降低训练成本的同时提高多语言基准分数。

理解 Transformer 面临的挑战

Transformer 模型的词元化涉及几个相互竞争的目标,这使得设计完美的系统充满挑战

  • 词汇量大小限制:Transformer 模型只能处理固定数量的唯一词元(通常在 10,000 到 100,000 之间)。这看起来很大,但考虑到英语有几十万个单词,并且在基于单词的系统中,每个可能的拼写错误都需要自己的词元。
  • 信息密度:每个词元都应该包含有意义的信息。“the”的词元传达的信息少于“quantum”的词元,理想情况下,模型会为常用词使用较少的词元,为信息丰富的词使用更多的词元。
  • 序列长度约束:Transformer 模型有一个固定的“上下文窗口”——它们一次只能考虑一定数量的词元(从旧模型中的 2,048 个词元到最新版本中的 128,000+ 个)。如果你的词元效率低下,你就会浪费这个宝贵的空间。
  • 语言公平性:如果相同内容,英语文本需要的词元比日语少,那么英语用户在上下文窗口使用方面就能获得更多的“收益”。

让我们通过一个具体的例子来说明这些挑战。想象一个简单的 Transformer 模型,它一次只能接受 1,000 个词元。如果你的词元化方案是基于字符的(每个字母是一个词元),你大约可以容纳 1,000 个字符——大约 200 个英语单词或一页文本。如果你的方案是基于单词的,你可能可以容纳 1,000 个单词——大约 4-5 页文本。这种 5 倍的差异显著影响了模型一次能“看到”的内容。

词元化困境与在曼哈顿寻找公寓有着惊人的相似之处:你需要在空间限制、效率、位置和可负担性之间取得平衡。正如纽约人会想出各种巧妙的方法来最大化狭小的居住空间一样,词元化工程师也创造出越来越复杂的方法,以便将最大的意义打包到有限的词元“房产”中。

一个特别有趣且连专家有时也会忽略的洞察是:词元化不可避免地会产生一种有损压缩形式,模型必须学会对其进行补偿。虽然我们关注的是不常见单词被分解成子词片段的明显情况,但即使是常见单词也带有微妙的位置信息,这些信息在词元化过程中会丢失。在“river bank”(河岸)和“bank account”(银行账户)中,“bank”这个词的含义不同,但其词元表示在这两种情况下是相同的。Transformer 模型必须隐式地学会重建这些上下文区别,尽管词元化消除了它们。

我们可以这样用数学方式表达词元化的目标——找到一个词汇表 VV,以平衡这些相互竞争的需求

L(V)=αlLanguageswlAvgSeqLenl(V)+βV+γCrossLingualVariance(V)L(V) = \alpha \cdot \sum_{l \in \text{Languages}} w_l \cdot \text{AvgSeqLen}_l(V) + \beta \cdot |V| + \gamma \cdot \text{CrossLingualVariance}(V)

如果这个公式看起来令人生畏,请不要担心——它只是简单地表示我们正在努力最小化不同语言的平均序列长度(越短越好),管理词汇表大小,并减少语言间的不公平性,其中 α\alphaβ\betaγ\gamma 是每个目标的权重。

字节对编码:Transformer 模型如何学习其词汇表

Transformer 模型最常用的词元化方法是字节对编码(BPE),该方法于 2016 年由 Sennrich 等人改编用于自然语言处理 (Sennrich et al., 2016)。此方法为 GPT-3、GPT-4 等众多模型提供词汇支持。

BPE 的简单工作原理

  1. 从单个字符的词汇表开始(a、b、c 等)
  2. 遍历你的训练数据,找到最常见的相邻字符对
  3. 将此对合并为一个新词元并添加到你的词汇表
  4. 重复步骤 2-3 数千次,直到达到所需的词汇量大小

例如,如果“th”在英语文本中频繁出现,BPE 会在第一次迭代后创建一个新词元“th”。随后,它可能会合并“th”和“e”以创建“the”作为一个单一词元。

以下是 BPE 在代码中工作原理的简化版本

# A simplified example of the BPE algorithm
def basic_bpe_example(text, num_merges):
    # Start with character vocabulary
    vocab = set(text)  # All unique characters
    
    # Initial tokenization: each character is a separate token
    tokens = [[c] for c in text]  # Each character as separate token
    
    for i in range(num_merges):
        # Count all adjacent pairs
        pair_counts = {}
        for token_list in tokens:
            for j in range(len(token_list) - 1):
                pair = (token_list[j], token_list[j+1])
                pair_counts[pair] = pair_counts.get(pair, 0) + 1
        
        # Find most frequent pair
        if not pair_counts:
            break  # No more pairs to merge
        
        best_pair = max(pair_counts.items(), key=lambda x: x[1])[0]
        
        # Create new merged token and add to vocabulary
        new_token = best_pair[0] + best_pair[1]
        vocab.add(new_token)
        
        # Apply the merge throughout the text
        for i, token_list in enumerate(tokens):
            j = 0
            while j < len(token_list) - 1:
                if token_list[j] == best_pair[0] and token_list[j+1] == best_pair[1]:
                    token_list[j] = new_token  # Replace with merged token
                    token_list.pop(j+1)  # Remove the second token
                else:
                    j += 1
    
    return vocab, tokens

一个鲜为人知但引人入胜的见解是:BPE 具有一种隐含的“富者越富”动态。由于它会反复合并最频繁出现的词对,因此它倾向于为已经常见的模式创建更有效的词元,而让不常见的模式词元化效率低下。这为训练数据中的主导语言和常见使用模式创造了复合优势(Raschka,2025)。

词元化的重要性:Transformer 理解背后隐藏的数学原理

要真正理解词元化对 Transformer 模型为何如此关键,让我们将其与信息论联系起来——即计算机如何高效地编码和处理信息。

压缩联系: BPE 本质上是一种数据压缩形式。当两个字符或子词频繁地一起出现时,将它们组合成一个词元可以节省空间。这类似于 ZIP 文件的工作方式——通过查找模式来更有效地表示信息(Hugging Face LLM 课程)。

词元化本质上是 Transformer 模型处理人类语言混乱、冗余性质的压缩算法——就像一个语言学的 WinRAR,试图同时理解莎士比亚、推文、代码和表情符号。正如实际的文件压缩一样,文件大小和保真度之间总是存在权衡。

是什么让这特别适用于 Transformer 模型? Transformer 模型并行处理词元,而不是顺序处理。每个词元在模型的注意力机制中都有自己的位置。通过拥有有意义的子词词元而不是仅仅字符,Transformer 模型可以在有意义的语言单元之间建立关系,而不仅仅是单个字母,从而大大提高了它们的理解能力。

词元化可视化:不同模型如何拆分你的文本

为了更好地理解词元化如何影响 Transformer 模型,让我们看一个具体的例子,看看同一文本是如何被不同方案词元化的

原始文本:“Transformers revolutionized natural language processing”

字符级词元化:每个字母都是一个单独的词元

[T] [r] [a] [n] [s] [f] [o] [r] [m] [e] [r] [s] [ ] [r] [e] [v] [o] [l] [u] [t] [i] [o] [n] [i] [z] [e] [d] [ ] [n] [a] [t] [u] [r] [a] [l] [ ] [l] [a] [n] [g] [u] [a] [g] [e] [ ] [p] [r] [o] [c] [e] [s] [s] [i] [n] [g]

(54 个词元)

单词级词元化:每个单词是一个词元

[Transformers] [revolutionized] [natural] [language] [processing]

(5 个词元)

BPE(如 GPT-2/GPT-3):子词词元

[Trans][form][ers] [revolution][ized] [natural] [language] [process][ing]

(8 个词元)

大多数生产型 Transformer 模型使用 BPE 或类似的子词方法,因为它们在效率和灵活性之间取得了平衡(Brown et al., 2020)。

Transformer 模型的实际应用

理解词元化有助于解释你在使用基于 Transformer 的 AI 系统时可能观察到的一些“神秘”行为

1. Transformer 模型为何难以处理长词

你是否曾注意到语言模型有时在处理非常长或不寻常的词语时更容易出错?这背后有数学原因。例如,“antidisestablishmentarianism”这个词会被分解成多个词元,这要求模型在多个片段中重新组合意义,并增加了出错的可能性,特别是如果模型在训练期间很少见到这些罕见的子词组合。

2. 跨语言公平性问题

Transformer 模型在英语中的表现通常优于其他语言,部分原因在于词元化。请看以下示例:

英语:“I love machine learning”(4个单词)

GPT 词元化:约 4-5 个词元

中文:“我喜欢机器学习”(5个汉字,含义相同)

GPT 词元化:约 10 个词元

日语:“私は機械学習が大好きです”(8个字符,含义相同)

GPT 词元化:约 12-15 个词元

这造成了一种固有的偏差:与中文或日语使用者相比,英语使用者可以在相同的上下文窗口中容纳 2-3 倍的内容。这方面的技术术语是“词元信息密度”(TID)

TID(language,V)=Information contentToken count\text{TID}(language, V) = \frac{\text{Information content}}{\text{Token count}}

研究表明,使用标准 BPE 词元化,英语的 TID 比其他某些语言高出 2.5 倍。这意味着:

英语的上下文窗口使用效率更高

相同输入长度下,输出质量更高

商用 API 模型对英语用户来说成本更低

这里有一个专家很少讨论的见解:词元化公平性不仅影响使用不同脚本的语言。即使在西欧语言中,信息密度差异也可能很大。词形丰富(如芬兰语)或复合词(如德语)的语言,通常比英语的词元效率更低。芬兰语单词“epäjärjestelmällistyttämättömyydelläänsäkäänköhän”(大致意思是“我不知道——即使他们没有能力让某些事情变得非系统化”)会消耗几十个词元,而表达一个在英语中可能只需 15-20 个词元就能表达的概念。

3. 输出中可见的词元级别问题

如果你大量使用过 Transformer 模型,你可能会注意到一些奇怪的行为,这些行为直接源于词元化

  • 重复循环:模型有时会因为词元化创建的反馈循环而陷入重复短语的困境。
  • 词元边界处的幻觉:事实错误通常发生在词元之间的边界处。
  • 词中“思考”:模型有时会在词中途改变方向,因为它们实际上在处理多个词元。
  • 不一致的间距:出现不寻常的间距模式,因为空格通常附加到词元上而不是单独存在。

Transformer 模型词元化的未来

随着 Transformer 技术的不断发展,词元化研究的三个令人兴奋的方向有望解决当前的局限性

  • 动态上下文感知词元化: 根据周围文本调整词语拆分方式,改善对技术词汇、命名实体和多语言文档的处理(Chen & Li,2023)。
  • 学习更好的词元化: 教导模型创建自己的最佳词汇表,而不是使用人工设计的算法(Singh & Strouse,2024)。
  • 通过词元对齐弥合语言障碍: 对齐跨语言的词元表示,以提高多语言模型的性能和公平性(Remy et al.,2024)。

在探索了 Transformer 模型词元化的数学原理和实际应用之后,很明显,这个看似技术性的细节深刻地塑造了这些系统能够理解的内容以及它们处理语言的方式。

主要要点

  • 词元化创建了一个人工语言接口——Transformer 模型实际上并不处理人类语言;它们处理词元。这种人工接口既创造了能力,也带来了局限性。
  • 数学选择具有实际影响——关于如何创建词汇表的决策直接影响模型性能、跨语言公平性和计算效率。
  • 观察词元化有助于解释模型行为——当您了解语言模型的词元化工作原理时,它们的许多“神秘”行为都变得有意义。
  • 未来是动态且可学习的——下一代 Transformer 模型可能会超越静态词汇表,转向更具适应性的方法,学习针对不同上下文的最佳词元化方式。

随着 Transformer 模型在我们的 AI 系统中变得越来越核心,理解词元化为它们的实际能力和局限性提供了洞察。它也揭示了令人兴奋的改进可能性——不仅仅是通过使模型更大,更是通过从根本上重新思考它们如何感知和处理人类语言。

进一步阅读与资源

如果你想深入了解词元化及其对语言模型的影响,这里有一些推荐的资源和后续阅读材料

  • 什么是词元化?类型、用例、实现
    词元化工具的实用概述,包括 NLTK、Spacy、BERT 词元分析器、字节对编码和 SentencePiece。非常适合动手实践者和希望实现自定义词元分析器的人。
    DataCamp 阅读

  • 词元化对生物序列 Transformer 的影响
    探讨词元化策略如何影响计算生物学中 Transformer 的性能,提供可推广到其他领域的见解。
    阅读 Bioinformatics 论文

  • 词元化分析:马尔可夫数据下的 Transformer
    从理论和实证角度探讨词元化对 Transformer 中高效学习的必要性,重点关注马尔可夫数据源。
    OpenReview 阅读

  • 一种具有邻域对比词元化的高效 Transformer
    提出了学习紧凑、语义有意义和上下文敏感的 Transformer 词元的新方法。
    ScienceDirect 阅读

要了解更多关于实际实现、理论和最新研究,这些资源将帮助你继续探索词元化及其在现代 AI 中的基础作用。

社区

注册登录 评论