Skip to main content
Open on GitHub

令牌

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

什么是令牌?

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

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

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

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

语言模型使用 token 的原因与其理解和预测语言的方式密切相关。语言模型并非直接处理字符或整个句子,而是专注于token,它们代表有意义的语言单位。以下是该过程的运作方式:

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

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

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

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

令牌不必是文本

尽管标记(tokens)最常用于表示文本,但它们不必局限于文本数据。标记也可以作为多模态数据的抽象表示,例如:

  • 图片,
  • 音频,
  • 视频,
  • 和其他类型的数据。

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

注意

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

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

为什么不使用字符?

使用令牌(tokens)而非单个字符,使模型在效率和理解上下文及语法的能力上都有显著提升。令牌代表有意义的单元,如整个单词或单词的一部分,使模型能够比处理原始字符更有效地捕捉语言结构。基于令牌的 processing 还减少了模型需要处理的单元数量,从而带来更快的计算速度。

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

令牌如何对应文本

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

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

  • 1 token ~= 4 chars in English
  • 1 token ≈ ¾ words
  • 100 个 token ≈ 75 个单词