Skip to main content
在 GitHub 上打开

令 牌

现代大型语言模型 (LLM) 通常基于 transformer 架构,该架构处理一系列称为令牌的单元。令牌是模型用来分解输入和生成输出的基本元素。在本节中,我们将讨论什么是标记以及语言模型如何使用它们。

什么是令牌?

令牌是语言模型读取、处理和生成的基本单元。这些单位可能因模型提供程序的定义方式而异,但通常,它们可以表示:

  • 一个完整的单词(例如,“apple”),
  • 单词的一部分(例如,“app”),
  • 或其他语言组成部分,例如标点符号或空格。

模型对输入进行标记的方式取决于其标记器算法,该算法将输入转换为标记。同样,模型的输出以标记流的形式出现,然后将其解码回人类可读的文本。

标记在语言模型中的工作原理

语言模型使用标记的原因与它们理解和预测语言的方式有关。语言模型不是直接处理字符或整个句子,而是关注代表有意义的语言单位的标记。以下是该过程的工作原理:

  1. 输入分词化:当您为模型提供提示(例如,“LangChain 很酷!”)时,分词器算法会将文本拆分为分词。例如,句子可以被标记成["Lang", "Chain", " is", " cool", "!"].请注意,标记边界并不总是与单词边界一致。

  2. 处理:这些模型背后的 transformer 架构按顺序处理标记,以预测句子中的下一个标记。它通过分析标记之间的关系、从输入中捕获上下文和含义来实现这一点。

  3. Output Generation:模型逐个生成新 Token。然后,这些输出标记被解码回人类可读的文本。

使用标记而不是原始字符可以使模型专注于具有语言意义的单元,这有助于它更有效地捕获语法、结构和上下文。

令牌不必是文本

尽管标记最常用于表示文本,但它们不必局限于文本数据。令牌还可以用作多模态数据的抽象表示形式,例如:

  • 图像
  • 音频
  • 视频 /
  • 以及其他类型的数据。

在撰写本文时,几乎没有模型支持多模态输出,只有少数模型可以处理多模态输入(例如,文本与图像或音频相结合)。然而,随着 AI 的不断进步,我们预计多模态将变得更加普遍。这将允许模型处理和生成更广泛的媒体,从而显著扩展令牌可以表示的范围以及模型如何与不同类型的数据交互。

注意

原则上,任何可以表示为标记序列的东西都可以以类似的方式建模。例如,DNA 序列(由一系列核苷酸 (A、T、C、G)组成)可以进行标记化和建模,以捕获模式、进行预测或生成序列。这种灵活性使基于 transformer 的模型能够处理各种类型的顺序数据,进一步拓宽了它们在各个领域的潜在应用,包括生物信息学、信号处理和其他涉及结构化或非结构化序列的领域。

有关多模态输入和输出的更多信息,请参阅多模态部分

为什么不使用字符呢?

使用标记而不是单个字符可以使模型更高效,并且更好地理解上下文和语法。标记表示有意义的单元,例如整个单词或单词的一部分,使模型能够比处理原始字符更有效地捕获语言结构。令牌级处理还减少了模型必须处理的单元数,从而加快了计算速度。

相比之下,字符级处理需要处理更大的输入序列,这使得模型更难学习关系和上下文。标记使模型能够专注于语言含义,从而使它们在生成响应时更加准确和高效。

标记与文本的对应方式

有关如何计算令牌以及它们如何与文本对应的更多详细信息,请参阅 OpenAI 的这篇文章。

根据 OpenAI 的帖子,英文文本的近似令牌计数如下:

  • 1 个令牌 ~= 4 个字符的英文字符
  • 1 个代币 ~= 3/4 个字
  • 100 个代币 ~= 75 个单词