为什么我们在大型语言模型(LLM)中谈论“token”而不是“单词”?

279 阅读3分钟

在讨论大型语言模型(LLM)时,我们经常会提到“token”而不是“单词”。这是因为将单词拆分成子单词(tokens)对于模型性能来说要高效得多。

Token 的重要性

在自然语言处理(NLP)模型的训练过程中,使用子单词单位(tokens)而不是完整的单词能够显著提高模型的性能。子单词单位可以更好地捕捉语言的细粒度特性,使模型能够更有效地处理不同的语言变体和拼写错误。

Byte Pair Encoding (BPE) 策略

自 GPT-1 以来,大多数现代 LLM 都使用了一种名为 Byte Pair Encoding (BPE) 的策略。BPE 的核心思想是使用在训练数据中经常出现的子单词单位作为 tokens。具体算法如下:

  1. 字符级别的分词:我们首先将文本分解为字符级别的 tokens。

  2. 统计对频率:我们统计每对字符的出现频率。

  3. 合并最频繁的对:我们将出现频率最高的字符对合并为一个新的 token。

  4. 重复过程:我们重复这个过程,直到词典达到我们想要的大小。

通过这种方式,我们可以动态调整词典的大小,使其适应不同的训练数据。

词典大小的调整

词典的大小是一个可以根据训练数据调整的超参数。例如:

  • GPT-1:大约有 40K 次合并

  • GPT-2、GPT-3 和 ChatGPT:大约有 50K 次合并

  • Llama 3:高达 128K 次合并

词典大小的选择取决于模型的复杂性和训练数据的多样性。较大的词典可以捕捉更多的语言细节,但也会增加模型的计算复杂度。

为什么 BPE 更有效?

BPE 策略的优点在于它能够平衡词典的大小和模型的性能:

  • 减少稀疏性:通过将常见的子单词单位作为 tokens,BPE 能够减少稀疏性,使模型更容易学习到有用的模式。

  • 处理未知词汇:BPE 可以有效处理未知词汇,因为它能够将新的单词拆分为已知的子单词单位。

  • 提高模型的泛化能力:通过使用子单词单位,模型能够更好地泛化到不同的语言变体和拼写错误。

实际应用

在实际应用中,BPE 策略已经被广泛应用于各种大型语言模型中,如 GPT 系列和 Llama 系列。通过调整词典大小和优化 token 化过程,这些模型能够在处理复杂语言任务时表现出色。

结论

在大型语言模型的训练和应用过程中,使用 tokens 而不是完整的单词能够显著提高模型的性能和泛化能力。通过 Byte Pair Encoding (BPE) 策略,我们可以动态调整词典的大小,使其适应不同的训练数据,从而优化模型的表现。在未来,随着语言模型的不断发展,token 化策略和词典调整将继续在提高模型性能方面发挥关键作用。

希望这篇文章能帮助你更好地理解为什么在 LLM 中我们更倾向于使用“token”而不是“单词”。如果你有任何问题或需要进一步的指导,请随时联系我。

4c19dda9c6c64c4593956392672b2c26.png~tplv-0es2k971ck-image.png