Comparthing Logo
自然语言处理分词机器学习变压器人工智能

自然语言处理中的分词器训练与模型训练

在自然语言处理中,分词器训练和模型训练从根本上来说是不同的,但又紧密相连。分词器训练创建词汇表和编码规则,使模型能够从数值数据中学习语言模式。

亮点

  • 分词器训练使用贪婪合并算法而非基于梯度的优化,因此它本质上是一个预处理步骤,而非神经网络学习。
  • 模型训练成本比分词器训练成本高出几个数量级,但分词器的质量却对下游模型的性能设定了严格的上限。
  • 一旦模型训练开始,分词器词汇表的决策实际上就是不可逆的,这会造成锁定效应,并持续到所有后续的微调阶段。
  • 多语言模型面临严重的标记化器偏差,英语和主要欧洲语言的标记化效率很高,而许多其他语言则存在序列长度膨胀的问题。

分词器训练是什么?

构建子词词汇表并学习编码规则,将文本转换为数字标记的过程。

  • 分词器训练分析大型文本语料库,以发现表示语言的最有效子词单元。
  • 字节对编码 (BPE) 和 SentencePiece 是目前最广泛用于训练原始文本分词器的算法。
  • 最终得到的词汇表大小是一个固定的超参数,通常在 32,000 到 100,000 个词元之间。
  • 分词器训练不涉及梯度下降或神经网络优化。
  • 训练不足的分词器会产生碎片化或含糊不清的词元序列,从而严重降低下游模型的性能。

自然语言处理中的模型训练是什么?

神经网络优化过程,其中语言模型通过基于梯度的方法从分词数据中学习模式。

  • 模型训练需要预先标记化的数据,并使用反向传播算法来最小化数十亿个参数的预测损失。
  • Transformer架构在现代NLP模型训练中占据主导地位,该架构在2017年的论文《Attention Is All You Need》中提出。
  • 训练像 GPT-4 这样的大型语言模型可能需要耗费数千万美元的计算资源。
  • 模型训练涉及学习率、批次大小和预热步骤等超参数,这些超参数会显著影响收敛性。
  • 微调是指用比从头开始训练少得多的数据和计算资源,使预训练模型适应特定任务。

比较表

功能 分词器训练 自然语言处理中的模型训练
主要目标 创建子词词汇表和编码规则 学习语言模式和特定任务的表征
输入数据 原始文本语料库(通常是数TB的未标注文本) 带有数字 ID 的标记化序列
优化方法 贪婪频率合并(BPE)或最大似然法(SentencePiece) 反向传播梯度下降法
输出工件 词汇文件和编码/解码功能 训练好的神经网络权重和架构配置
计算要求 相对适中;单台机器的使用小时数 规模庞大;大型模型需要数千小时的 GPU/TPU 处理时间
可逆性 完全可逆;文本可以根据标记精确地重建。 不可逆;模型输出是预测结果,而非重建结果。
典型持续时间 耗时几分钟到几小时不等,具体取决于语料库的大小。 基础模型需要几天到几个月的时间
依赖关系 必须在模型训练开始前完成 取决于分词器是否已经训练并修复。

详细对比

核心宗旨和职能

分词器训练充当人类语言和机器可读数字之间的预处理桥梁。它的任务是决定如何拆分单词、哪些序列成为特殊标记以及如何处理未知单词。另一方面,模型训练才是真正学习发生的地方——神经网络在此过程中发现语言中的统计模式,构建语义表征,并发展出生成或分类文本的能力。

算法基础

分词器训练背后的算法与模型训练背后的算法截然不同。BPE 从单个字节开始,迭代地合并出现频率最高的相邻字节对,直到达到所需的词汇量。SentencePiece 则将问题视为语言建模任务,并使用期望最大化(EM)算法。两者都不涉及神经网络。模型训练则完全使用可微优化算法,通常是 Adam 或 AdamW 优化器,来处理高维损失函数。

资源密集度和规模

这些流程之间的计算能力差距令人震惊。在标准硬件上,用 100GB 的文本训练一个 SentencePiece 分词器可能只需要几个小时。而用同样的文本训练 Llama 3 这样的模型则需要庞大的集群,数千个相互连接的加速器需要运行数周时间。有趣的是,分词器的训练通常只需进行一次,即可在多个模型训练过程中重复使用,这使得它在整个开发流程中成为一项相对固定的成本。

对模型行为的影响

分词器选择对模型学习的内容有着微妙但强大的影响。例如,将“反政教分离主义”拆分成多个片段的分词器会迫使模型从这些片段中拼凑出意义,而保持其完整性的分词器则会将其视为一个原子概念。分词器的偏好甚至会影响公平性——分词效率低下的语言会被压缩成更长的序列,这实际上增加了模型的处理成本,有时甚至会导致性能下降。

生命周期和迭代

在实践中,分词器训练通常是在项目早期一次性决定的。模型训练完成后更换分词器意味着需要从头开始重新训练所有内容,因为词元 ID 是任意的,而模型嵌入与特定的词元位置相关联。相比之下,模型训练是一个高度迭代的过程——研究人员会不断地尝试不同的架构、训练方案和微调策略。这种不对称性意味着分词器的选择会产生难以逆转的长期影响。

优点与缺点

分词器训练

优点

  • + 运行成本低廉
  • + 完全确定且可复现
  • + 实现高效文本压缩
  • + 可根据特定领域词汇进行定制
  • + 创建可逆文本编码

继续

  • 固定的词汇量限制了表达能力。
  • 语言演变带来的挑战
  • 可能引入编码偏差
  • 需要重新培训才能改变
  • 对于稀有语言而言,这种方法并非最佳选择。

自然语言处理中的模型训练

优点

  • + 学习丰富的语义表征
  • + 可迁移到其他任务
  • + 随数据和计算量呈可预测的扩展性
  • + 能够产生新兴能力
  • + 支持微调适应

继续

  • 计算成本极高
  • 对环境影响较大的能源使用
  • 需要海量精心整理的数据集
  • 容易出现幻觉和偏见
  • 内部推理难以理解

常见误解

神话

分词器训练只是一个次要的预处理步骤,对最终模型质量影响不大。

现实

分词器的质量直接限制了模型的学习能力。糟糕的分词会导致歧义表示、序列长度增加,甚至使模型几乎无法掌握某些语言现象。研究人员已经证明,分词器的选择会使基准测试的性能产生几个百分点的差异。

神话

训练模型后,您可以通过简单地重新映射标记来更换分词器。

现实

模型嵌入与学习到的参数空间中特定位置的特定词元 ID 相关联。不同的分词器会产生完全不同的词元分布,导致预训练权重在语义上不匹配。唯一可行的办法是从头开始完全重新训练。

神话

更大的分词器词汇表总是有利于模型性能。

现实

虽然更大的词汇量可以缩短序列长度,但会增加嵌入矩阵的大小,并可能降低模型效率。词汇量存在一个最佳平衡点——词汇量过大会导致模型无法充分利用罕见词元;词汇量过小则会导致序列碎片化。大多数从业者认为,对于多语言模型而言,3.2万到10万个词元是最佳选择。

神话

模型训练和分词器训练是作为同一个端到端流程的一部分同时进行的。

现实

这些是顺序且独立的阶段。在模型训练开始之前,分词器必须完全训练并冻结,因为模型架构的嵌入层维度取决于词汇表的大小。一些近期研究探索了联合优化,但标准做法仍然是严格按顺序进行。

神话

在一种分词器上训练的模型可以针对不同分词器的文本进行微调。

现实

微调需要使用完全相同的分词器。如果输入的文本分词方式不同,模型会遇到从未学习过词嵌入的词元 ID,或者更糟糕的是,遇到含义完全错误但熟悉的词元 ID。这就是为什么模型发布时总是会明确指定使用哪种分词器。

神话

分词器训练需要像模型训练一样带有标签的数据。

现实

分词器完全基于原始的、未标注的文本进行训练。它们不需要任何标注、标签或特定任务的格式。这种无监督特性使得分词器能够在海量网络语料库上进行训练,而无需昂贵的人工标注。

常见问题解答

如果我使用错误的标记器来处理预训练模型会发生什么?
使用不匹配的分词器会产生乱码。模型接收到的词元 ID 映射到的子词与模型词嵌入训练所代表的子词完全不同。轻则输出毫无意义,重则模型会生成有害内容,因为词元会激活未预期的学习关联。务必使用模型自带的分词器。
与模型训练相比,分词器训练通常需要多长时间?
分词器训练通常只需数小时,对于较小的语料库,有时甚至只需几分钟。而基础模型的训练则需要在大型计算集群上耗时数周甚至数月。即使是对大型模型进行微调,通常也比从头开始训练分词器花费的时间更长。这种差异反映出分词器使用简单的统计算法,而模型则需要通过迭代梯度下降来优化数十亿个参数。
我可以为像 GPT-4 这样的现有模型训练自己的分词器吗?
理论上可以,但实际上不行。你可以训练一个自定义分词器,但不能将其与 GPT-4 的预训练权重一起使用,因为嵌入维度和学习到的表征都与 OpenAI 的原始分词器绑定。你需要使用自定义分词器从头开始训练一个新模型,这违背了使用预训练模型的初衷。
为什么有些语言的词法分析结果比其他语言多得多?
这源于 BPE 和类似算法如何针对训练数据中的词频进行优化。在训练语料库中拥有大量词汇的语言,尤其是英语,能够获得高效的词元化。而资源较少的语言则会被分割成字符级或子词级的片段,因为它们的词型组合很少是最常用的组合。这种“词元化成本”使得某些语言的处理在计算上更加昂贵。
SentencePiece 在分词器训练方面比 BPE 更好吗?
SentencePiece 在某些应用场景下具有优势。它将空格视为常规字符,这使得它更适用于日语或汉语等没有词边界的语言。它还支持多种编码算法,包括 BPE 和一元语言模型。BPE 在以英语为中心的模型中仍然更为常见。最佳选择取决于您的语言组合以及您是否需要可逆编码。
如何判断我的分词器是否给我的模型带来了问题?
注意观察特定语言或领域中异常高的困惑度、与代表性强的语言中类似文本相比过长的序列长度,以及涉及罕见词或专业术语的任务表现不佳的情况。手动分析分词输出——检查代表性词语的分割方式——通常可以快速发现问题。
什么是“分词器爆炸”?它如何影响模型训练?
当输入数据发生微小变化时,分词器会产生截然不同的词元序列,这通常是由于边界规则不明确或前缀/后缀处理不当造成的。这会破坏模型训练的稳定性,因为模型会看到相似输入数据的不一致表示。训练良好的分词器通过一致的预处理和稳健的合并规则来最大限度地减少这种情况。
大型语言模型会重新训练其分词器吗?
为了向后兼容,主流模型系列通常会在不同版本之间保持分词器不变。当组织发布新的分词器时(例如 OpenAI 在 GPT-2 和 GPT-3 之间所做的那样),通常会伴随全新的模型训练。更换分词器的成本和带来的不便意味着它们的更新迭代速度很慢,通常只会在主要架构迭代时才会出现。
分词器训练能否帮助解决医疗或法律等特定领域的自然语言处理问题?
当然。领域特定的分词器可以将专业术语作为单个词元包含,而不是将其拆分。这既提高了效率,也增强了模型的理解能力。许多生物医学自然语言处理项目都会使用 PubMed 或临床文本训练自定义分词器,以捕捉通用分词器会不恰当拆分的术语。
为什么 ChatGPT 有时难以完成简单的计数或拼写任务?
这种局限性部分源于分词过程。分词器处理的是子词片段,而非单个字符,因此,统计字母数量需要模型从词嵌入中逆向推导出字符级信息。类似地,拼写也涉及将词元分解成字母,而模型从未直接处理过这些字母。这些任务对人类来说轻而易举,但考虑到输入表示是词元级别的,它们却异常困难。

裁决

当您需要为新的语言领域预处理文本,或者现有分词器无法很好地处理您的特定词汇时,请选择分词器训练。如果您的目标是构建功能强大的语言系统,则应优先考虑模型训练,并直接复用 GPT-2、BERT 或 Llama 等成熟的分词器,除非您有充分的理由进行自定义分词。

相关比较

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

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

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

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

AI伙伴 vs 人类友谊

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

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

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

AI检测与基于规则的检测

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