Comparthing Logo
自然语言处理分词文本处理神经网络人工智能

分词器设计与原始文本处理

分词器设计和原始文本处理代表了为 AI 系统准备文本的两种截然不同的方法,分词器将语言分解成离散的单元,而原始处理则保留原始字符序列供模型使用。

亮点

  • 分词器词汇量直接限制了模型的表达能力和多语言公平性。
  • 原始字节处理可以消除词汇表外的错误,但会增加序列长度。
  • 语言模型需要支付隐性的“分词税”,某些语言的处理成本会高出 5 倍。
  • 新兴架构使得原始文本处理与分词方法之间的竞争力日益增强。

分词器设计是什么?

将文本分割成有意义的子词单元,以便进行神经网络处理的架构方法。

  • 现代分词器,例如字节对编码(BPE),在 2018 年 GPT 原始论文发表后得到推广,至今仍是大型语言模型的基础。
  • SentencePiece 是 Google 在 2018 年开发的,它通过将文本视为原始字节序列来实现与语言无关的词法分析。
  • 分词器词汇量通常在 32,000 到 200,000 个词元之间,这直接影响模型的内存占用和多语言处理能力。
  • 糟糕的分词器设计会加剧偏差,例如某些语言每个词获得的分词数量会显著减少,从而增加非英语使用者的计算成本。
  • 分词器架构的选择会显著影响下游模型在从算术运算到代码生成等各种任务上的性能。

原始文本处理是什么?

直接进行字符级或字节级文本读取,无需显式地将其分割成预定义的单元。

  • 字符级模型一次处理一个 ASCII 或 Unicode 字符,彻底消除了词汇表外的问题。
  • ByT5(Google,2022)等字节级模型直接处理 UTF-8 字节,无需专门的分词即可实现具有竞争力的性能。
  • 原始处理避免了困扰子词模型的词元边界伪影,例如标点符号或复合词处理不一致等问题。
  • 主要的权衡之处在于序列长度:原始字符模型所需的序列长度是分词后对应序列的 5-10 倍,这增加了计算需求。
  • 一些架构,例如 MambaByte 和某些状态空间模型,通过提高效率,使原始字节处理更加实用。

比较表

功能 分词器设计 原始文本处理
基本单元 子词标记(词、片段、字节) 单个字符或原始字节
词汇量 固定(通常为 32K-200K 个代币) 实际上没有限制(Unicode 字符集包含超过 149,000 个字符)
词汇超出范围的处理 需要特殊令牌或备用策略 这种情况永远不会发生——每个字符/字节都有效
序列长度效率 精简(1 个词元 ≈ 0.75 个词) 扩展型(比分词后的长度长 5-10 倍)
多语言支持 不均衡——有些语言的标记化效率低下 统一——所有语言均采用相同处理方式
计算开销 预处理:分词步骤;推理:较短序列 无需预处理;推断:更长的序列
典型应用案例 大型语言模型(GPT、LLaMA、Claude) 专用架构,鲁棒性研究

详细对比

文本如何输入模型

分词器设计在人类可读文本和数值表示之间引入了一个显式的转换层。当你输入“hello”时,分词器会将其映射到特定的整数 ID——例如 GPT-2 词汇表中的 [15496, 11]。而原始文本处理则完全跳过了这一间接过程,直接将 ASCII 值或 UTF-8 字节输入到模型中。这种架构上的差异会影响到后续的每一个决策,从模型如何处理拼写错误到它们对 Unicode 规范化特性的敏感度。

处理生僻词和新词

子词分词器在处理罕见词时表现出色,能够将“antidisestablishmentarianism”(反政教分离主义)分解成常见的词块。然而,它们在处理真正新颖的输入时——例如新兴俚语、罕见名称或拼写错误——却常常束手无策,有时甚至会产生奇怪的词符序列。原始字符处理在表示有效性方面将拼写错误的“teh”与“the”视为相同,尽管模型必须从上下文中学习它们之间的关系。这使得字符级模型本质上对对抗性拼写错误更具鲁棒性,但也需要更多的训练数据来学习组合模式。

计算权衡

效率差距十分显著。一个典型的英文句子可能被分解成 15 个词元或 80 个字符。对于注意力机制复杂度为二次方的 Transformer 架构而言,序列长度的这 5 倍差异意味着计算量要增加 25 倍。近年来出现的创新——线性注意力机制、状态空间模型和硬件感知架构——正在缩小这一差距。然而,对于运行基于注意力机制模型的标准 GPU 集群而言,分词仍然是处理长文档的实用选择。

语言公平问题

分词器设计无意中编码了语言差异。英语平均每个字符约 0.2 个词元;泰语或缅甸语则可能超过 1.0 个词元,这意味着处理相同内容的成本更高。原始字节或字符模型完全规避了这种差异——无论语言如何,字节就是字节。这激发了越来越多的研究兴趣,尤其是在分词质量往往滞后的低资源语言领域。

训练动力学和涌现行为

词元边界可能成为偶然的学习信号。模型有时会利用数字逐位分词的特性来简化算术运算,或者利用代码缩进遵循可预测的词元模式。原始处理迫使模型从头开始发现这种结构,这可能导致更具泛化的表征,但初始收敛速度较慢。一些研究人员认为,这使得字符模型成为更“诚实”的学习者,更不容易受到分词器特有的影响。

优点与缺点

分词器设计

优点

  • + 高效的序列长度
  • + 成熟的生态系统和工具
  • + 强劲的基准表现
  • + 可组合子词语义

继续

  • 语言特定偏见
  • 超出词汇范围的边缘案例
  • 词汇设计复杂性
  • 令牌边界构件

原始文本处理

优点

  • + 通用字符覆盖
  • + 无需词汇维护
  • + 对噪声和拼写错误具有鲁棒性
  • + 真正的语言不可知论

继续

  • 更长的序列开销
  • 更高的计算需求
  • 训练收敛速度较慢
  • 工具尚不成熟

常见误解

神话

分词器只是简单的字符串分割,不会影响模型智能。

现实

分词器设计深刻影响着模型的学习内容和推理方式。GPT-4 数学能力的提升部分源于更优的数字分词。糟糕的分词会将逻辑单元割裂,人为地增加某些模式的学习难度。

神话

角色级模型速度太慢,不适用于实际应用。

现实

虽然基于注意力机制的Transformer模型过去确实存在这个问题,但像Mamba这样的新型架构以及各种状态空间模型能够更高效地处理长序列。ByT5在2022年通过纯字节级处理展现出了极具竞争力的下游性能。

神话

更大的分词器词汇表总是更好。

现实

过大的词汇表会增加嵌入矩阵的内存占用,并可能导致常用词被不必要地分割。最佳词汇表大小需要在表示粒度和模型容量之间取得平衡,对于大多数应用而言,通常介于 32K 到 100K 之间。

神话

原始文本处理意味着模型能够像人类一样“自然地”理解文本。

现实

这两种方法都是人为构建的,与人类语言处理相去甚远。人类也不是逐字节地阅读文本——我们会利用数十年来积累的语言学和世界知识。“自然性”论点对这两种范式都具有误导性。

神话

标记化是一个已经解决的问题,并且有成熟的最佳实践。

现实

活跃的研究不断挑战着既有假设。诸如一元词法分词、学习字节级编码以及近期关于可微分词法的研究等方法表明,该领域仍有待探索。每个主要模型的发布通常都会对分词策略进行试验。

常见问题解答

机器学习中的分词是什么?
分词将原始文本转换为神经网络可以处理的数值表示。与简单的单词分割不同,现代分词器使用诸如字节对编码(BPE)之类的算法将文本分解成可变长度的子词单元。这在词汇量和覆盖范围之间取得了平衡,使模型能够通过用熟悉的词段组合来处理罕见词,同时保持词典的整体规模适中。
为什么大型语言模型使用分词器而不是原始字符?
主要目的是为了提高计算效率。Transformer 的计算量与序列长度呈二次方关系,因此将“unbelievable”压缩成一两个词元(token)而不是十二个字符,可以显著降低计算量。分词器还能提供有用的归纳偏置——将常用子词分组有助于模型更快地学习词法和词语关系。但缺点是增加了复杂性,并损失了一些通用性。
模型完全不需要分词器也能工作吗?
没错。字符级和字节级模型直接处理文本,无需显式分词。早期的神经语言模型,例如 Karpathy 的 char-rnn,就是以这种方式工作的。现代的例子包括 ByT5 和各种研究系统。挑战在于如何使它们足够高效,能够与分词模型竞争,不过最近的架构进步正在缩小这一差距。
分词器选择如何影响多语言模型?
这种情况非常普遍,有时甚至会引发问题。大多数分词器都是基于以英语为主的语料库进行训练的,这导致其他语言的“分词膨胀”。一个英语句子可能只需要 15 个词元,而对应的泰语句子却需要 60 个词元。这会增加成本和延迟,并可能降低非英语任务的性能。一些研究人员提倡采用针对特定语言或字节级的分词方法来解决这种不公平现象。
当分词器遇到未知单词时会发生什么?
现代子词分词器很少真正失效——它们会将未知词分解成更小的已知词块或单个字节。问题在于分割方式并非最优:例如,“Covfefe”可能会被分割成 ['Cov', 'fe', 'fe'],而不是任何有意义的字符串。这会降低理解度,尤其对于人名、新词或技术术语而言。一些分词器会提供回退机制,使用字节级编码来实现完全覆盖。
字节对编码是唯一的标记化方法吗?
完全不是。BPE 应用广泛,但它也面临着 WordPiece(BERT、DistilBERT)、Unigram 分词(SentencePiece 使用)以及各种学习方法等替代方案的竞争。每种方法优化的目标略有不同——BPE 合并频繁词对,WordPiece 最大化训练数据似然性,而 Unigram 则从较大的词形开始逐步剪枝。随着可微分词等方法的出现,该领域仍在不断发展。
为什么分词器有时会产生奇怪的结果?
分词器从训练数据中学习统计模式,而非语言规则。这导致了一些怪异现象:单词前可能出现空格,标点符号可能出现不可预测的分割,大小写甚至可能产生完全不同的词元(例如,'hello'、'Hello'、'HELLO' 会成为不同的 ID)。有些模型本身就区分大小写;而另一些模型则会进行规范化。这些问题在生产系统中需要谨慎处理。
如何为我的自然语言处理项目选择分词器?
对于大多数从业者而言,使用预先训练好的分词器(通过所选模型进行训练)是最简单有效的方法。构建自定义分词器则适用于特定领域应用,例如化学、医学、编程语言等词汇较为特殊的应用,或者处理一些服务不足的语言。构建自定义分词器时,需要考虑数据分布、目标语言以及字符级分词方法的计算开销是否能够承受。
视觉语言模型和纯文本模型使用相同的分词器吗?
通常情况下可以,但需要进行一些修改。CLIP 使用类似于 GPT-2 的 BPE 分词器。多模态模型通常会在文本分词器的基础上,添加用于图像块或其他模态的特殊标记。难点在于如何协调这些表征——确保文本中的“狗”与视觉上的狗表征能够恰当对应。一些较新的多模态模型正在探索跨模态的统一分词方法。
人工智能领域代币化技术的未来发展方向是什么?
该领域正在积极探讨分词是否必要。研究方向包括:采用高效架构的字节级模型、模糊词元与原始文本界限的学习型压缩方法,以及使用状态空间或其他亚二次方法的“无分词”方法。下一代模型可能会减少甚至消除显式分词,但目前的生产系统仍然严重依赖词元。
分词如何影响提示设计?
直接且有时反直觉地,优秀的提示工程师会了解其模型的标记器——例如,“提示工程”可能会被标记成 ['提示', '工程'],其中前面有一个空格,或者某些短语的压缩效率更高。一些技术,例如“标记走私”或优化标记数量,可以降低成本。极少数情况下,提示注入攻击会利用标记器的行为。
糟糕的令牌化是否会导致安全漏洞?
是的,尽管这仍然是一个新兴的研究领域。分词不一致会导致“提示注入”,即通过利用字符串在分词符之间的分割方式,精心构造的输入可以绕过安全过滤器。同形字(视觉上相似但分词方式不同的Unicode字符)会使模型感到困惑。健壮的系统可能需要分词感知验证或字符级回退处理。

裁决

对于生产环境中的大型语言模型,如果计算效率和成熟的工具至关重要,则应选择分词器设计。而当需要构建适用于多语言环境的健壮系统、处理嘈杂的真实世界文本或研究独立于预处理工件的基本模型能力时,则应选择原始文本处理。

相关比较

AI 错误检测与人工审核对比

人工智能质量检测利用机器学习模型大规模标记低质量或人工智能生成的内容,而人工审核则依靠训练有素的编辑通过判断和上下文来评估内容质量。每种方法各有优势,许多组织现在都将两者结合起来以获得最佳效果。

AI管道中的迭代检索与一次性检索系统

人工智能流程中的迭代检索通过多次搜索和推理循环来优化结果,而一次性检索系统则只需一次遍历即可获取信息。迭代方法擅长处理复杂的多跳查询,而一次性方法则优先考虑速度和简洁性,适用于简单的查询。

AI伙伴 vs 人类友谊

人工智能伴侣是旨在模拟对话、情感支持和临场感的数字系统,而人类友谊则建立在共同的生活经验、信任和情感互惠之上。本文将对比探讨这两种连接方式如何在日益数字化的世界中塑造沟通、情感支持、孤独感和社会行为。

AI计算排放与传统云排放对比

人工智能计算产生的排放主要来自训练大型模型的高能耗GPU集群,而传统云的排放则来自运行日常工作负载的通用数据中心。人工智能工作负载的单次任务耗电量远高于传统云,但传统云的运行规模要大得多。

AI检测与基于规则的检测

现代数字环境需要强大的防御机制,但其底层方法却截然不同,威胁、欺诈或异常情况的检测方式也大相径庭。基于规则的系统依赖于严格的预配置条件来标记已知威胁,而人工智能模型则通过分析行为来发现不常见的异常情况。在两者之间做出选择意味着需要在绝对确定性和适应性灵活性之间取得平衡。