Skip to main content
Open on GitHub

令牌

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

什么是令牌?

令牌 是语言模型读取、处理和生成的基本单元。这些单元根据模型提供商的定义而有所不同,但通常它们可能代表:

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

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

语言模型中的令牌是如何工作的

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

  1. 输入分词: 当你向模型提供一个提示(例如,“LangChain很酷!”)时,分词算法会将文本拆分为标记。例如,该句子可能被分词为 ["Lang", "Chain", " is", " cool", "!"] 等部分。请注意,标记的边界并不总是与单词边界对齐。

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

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

使用标记(tokens)而非原始字符,可以让模型专注于语言学上有意义的单元,从而更有效地捕捉语法、结构和上下文。

标记符不必是文本

虽然标记通常用于表示文本,但它们并不局限于文本数据。标记也可以作为多模态数据的抽象表示,例如:

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

在撰写本文时,几乎没有任何模型支持多模态输出,只有少数模型能够处理多模态输入(例如文本与图像或音频的组合)。然而,随着人工智能技术的持续进步,我们预计多模态将变得更加普遍。这将使模型能够处理和生成更广泛的媒体类型,显著扩展令牌所能表示的内容范围,并使模型能够以更多样化的方式与不同类型的数据进行交互。

笔记

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

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

为什么不使用字符呢?

使用标记(tokens)而非单个字符,可以使模型在效率和理解上下文及语法方面表现更佳。标记代表有意义的单元,例如完整的单词或单词的一部分,从而使模型能够比直接处理原始字符更有效地捕捉语言结构。基于标记的处理方式还能减少模型需要处理的单元数量,从而加快计算速度。

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

标记符如何对应文本

请参阅 OpenAI 的这篇文章,了解有关标记(tokens)如何计算及其如何对应文本的更多详情。

根据 OpenAI 的帖子,英文文本的大致标记数如下:

  • 1个标记 ≈ 英文中4个字符
  • 1个标记 ≈ ¾ 个词
  • 100个标记 ≈ 75个单词