令牌
现代大型语言模型 (LLM) 通常基于 Transformer 架构,该架构处理称为令牌的单元序列。令牌是模型用来分解输入和生成输出的基本元素。在本节中,我们将讨论什么是令牌以及语言模型如何使用它们。
什么是令牌?
令牌是语言模型读取、处理和生成的基本单元。这些单元可能因模型提供商的定义而异,但通常,它们可以表示
- 整个单词(例如,“apple”),
- 单词的一部分(例如,“app”),
- 或其他语言成分,例如标点符号或空格。
模型对输入进行令牌化的方式取决于其令牌化算法,该算法将输入转换为令牌。 同样,模型的输出以令牌流的形式出现,然后被解码回人类可读的文本。
令牌在语言模型中如何工作
语言模型使用令牌的原因与它们如何理解和预测语言有关。 语言模型不是直接处理字符或整个句子,而是专注于令牌,令牌代表有意义的语言单元。 以下是该过程的工作原理
输入令牌化:当您向模型提供提示时(例如,“LangChain is cool!”),令牌化算法会将文本拆分为令牌。 例如,句子可以被令牌化为类似
["Lang", "Chain", " is", " cool", "!"]
的部分。 请注意,令牌边界并不总是与单词边界对齐。处理:这些模型背后的 Transformer 架构按顺序处理令牌,以预测句子中的下一个令牌。 它通过分析令牌之间的关系,从输入中捕获上下文和含义来做到这一点。
输出生成:模型逐个生成新令牌。 然后,这些输出令牌被解码回人类可读的文本。
使用令牌而不是原始字符允许模型专注于语言上有意义的单元,这有助于它更有效地捕获语法、结构和上下文。
令牌不一定是文本
虽然令牌最常用于表示文本,但它们不一定限于文本数据。 令牌还可以用作多模态数据的抽象表示,例如
- 图像,
- 音频,
- 视频,
- 和其他类型的数据。
在撰写本文时,实际上没有模型支持多模态输出,只有少数模型可以处理多模态输入(例如,文本与图像或音频的组合)。 然而,随着人工智能的不断进步,我们预计多模态性将变得更加普遍。 这将使模型能够处理和生成更广泛的媒体,从而显着扩展令牌可以代表的内容以及模型如何与各种类型的数据交互的范围。
原则上,任何可以表示为令牌序列的事物都可以以类似的方式建模。 例如,DNA 序列(由一系列核苷酸 (A、T、C、G) 组成)可以被令牌化和建模,以捕获模式、进行预测或生成序列。 这种灵活性使基于 Transformer 的模型能够处理各种类型的顺序数据,进一步扩展了它们在各个领域的潜在应用,包括生物信息学、信号处理和其他涉及结构化或非结构化序列的领域。
有关多模态输入和输出的更多信息,请参阅多模态部分。
为什么不使用字符?
使用令牌而不是单个字符使模型更有效率,并且更擅长理解上下文和语法。 令牌代表有意义的单元,例如整个单词或单词的一部分,使模型能够比处理原始字符更有效地捕获语言结构。 令牌级处理还减少了模型必须处理的单元数量,从而加快了计算速度。
相比之下,字符级处理将需要处理更大的输入序列,这使得模型更难学习关系和上下文。 令牌使模型能够专注于语言意义,从而使它们在生成响应时更加准确和高效。
令牌如何对应于文本
有关令牌如何计数以及它们如何对应于文本的更多详细信息,请参阅 OpenAI 的这篇文章。
根据 OpenAI 的帖子,英语文本的近似令牌计数如下
- 1 个令牌 ~= 4 个英文字符
- 1 个令牌 ~= ¾ 个单词
- 100 个令牌 ~= 75 个单词