大模型中的Token是什么?

发布于:2025-03-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

在自然语言处理(NLP)和大模型中,Token 是文本处理的基本单位,可以看作是文本的“原子”。简单来说,Token 是将一段原始文本分解后得到的最小有意义的单元。大模型(如 GPT、BERT 等)通过接收和处理这些 Token 序列来理解文本的含义、生成新的文本或完成其他任务。

在这里插入图片描述

1. Token 的定义

Token 是文本被分割后的基本组成部分。在自然语言处理中,为了让模型能够理解和处理人类语言,需要将一段连续的文本(如句子或段落)分解成更小的单元,这些单元就是 Token。举个例子:

对于句子 “Hello world”,可以分解为两个 Token:[“Hello”, “world”]。
不同的分解方式会产生不同类型的 Token,具体取决于模型的设计和任务需求。

2. Token 的类型

根据分割粒度的不同,Token 通常可以分为以下几种类型:

  • 单词级 Token
    文本按单词进行分割,每个单词作为一个独立的 Token。
    示例:“I love coding” → [“I”, “love”, “coding”]
    优点:直观,适合理解完整的单词含义。
    缺点:词汇量可能很大,无法处理未见过的新词。

  • 子词级 Token
    将单词进一步分解成更小的有意义的片段,通常用于解决单词级 Token 的局限性。
    示例:“unhappiness” → [“un”, “happi”, “ness”]
    优点:能处理新词或拼写变体,词汇量较小且灵活。
    缺点:单个 Token 的含义可能不完整,需要上下文理解。
    字符级 Token
    文本按单个字符分割,每个字符作为一个 Token。
    示例:“Hello” → [“H”, “e”, “l”, “l”, “o”]
    优点:词汇量极小,能处理任何文本。
    缺点:序列变长,模型需要更多计算资源来捕捉关系。
    大模型通常会根据任务需求选择合适的 Token 类型。例如,BERT 使用子词级 Token(如 WordPiece),而一些轻量级模型可能使用字符级 Token。

3. Token 在大模型中的作用

大模型(如基于 Transformer 架构的模型)以 Token 序列为核心进行工作。Token 在模型的输入、处理和输出阶段都扮演着关键角色:

  • 输入阶段
    原始文本被分解为 Token 序列后,每个 Token 会被映射到一个高维向量(称为 embedding)。这些向量包含了 Token 的语义信息,是模型理解文本的基础。
    示例:[“Hello”, “world”] → [vector1, vector2]

  • 处理阶段
    模型通过多层结构(如注意力机制和前馈网络)对 Token 的 embedding 进行变换,分析 Token 之间的关系和上下文信息。例如,它可以理解 “I love coding” 中 “love” 和 “coding” 的关联。

  • 输出阶段
    模型根据任务输出新的 Token 序列或对输入进行处理。例如:
    文本生成:输出 “Nice to meet you” 的 Token 序列。
    分类:判断输入 Token 序列的情感是正面还是负面。
    Token 是模型与文本之间的桥梁,模型的所有计算和学习都基于这些 Token 序列。

4. Tokenization 过程

将原始文本转换为 Token 序列的过程称为 Tokenization,通常包括以下步骤:

  • 规范化
    对文本进行清洗和标准化,例如去除多余空格、统一大小写等。
    示例:“Hello, World!” → “hello world”

  • 分割
    根据选定的 Token 类型,将文本分割成 Token。
    示例:“hello world” → [“hello”, “world”](单词级)

  • 编码
    将 Token 转换为模型可以处理的数值表示,即向量化(embedding)。具体来说,模型将每个 Token 映射到一个高维稠密向量空间。这些向量能够捕捉到词的语义信息和上下文关系。在分词之后通常使用嵌入层(Embedding Layer)来实现这一点。嵌入层会将每个 token 映射到一个高维空间,例如 12288 维 (gpt3)。
    假如输入的是“ I am a student ”这句话,那么 embeding 层会生成一个 4 x 12288 维的矩阵:
    “I” → [x₁, x₂, …, x₁₂₂₈₈]
    “am” → [y₁, y₂, …, y₁₂₂₈₈]
    “a” → [z₁, z₂, …, z₁₂₂₈₈]
    “student” → [w₁, w₂, …, w₁₂₂₈₈]

    作为 encoder 层的输入在 Transformer 架构中,这一步通常是通过一个嵌入层(Embedding Layer)来完成的。嵌入层负责将每个 Token 转换成对应的向量表示。

经过这些步骤,文本就变成了模型能够理解和计算的格式。

不同的大模型可能会选择不同的 tokenization 策略,以适应其架构和应用需求。比如目前主流大模型所使用的 token 类型如下:

  • ChatGPT(OpenAI)
    Token 类型:Byte Pair Encoding(BPE)
    说明:ChatGPT 基于 GPT 系列模型,采用 BPE tokenization。BPE 通过合并高频出现的字符对来构建词汇表,能有效处理未见词(OOV),并在词汇量与计算效率之间取得平衡。
  • QWen(阿里巴巴)
    Token 类型:SentencePiece
    说明:QWen 使用 SentencePiece,这是一种无监督的 tokenization 方法,支持 BPE 和 unigram language model 两种模式。它特别适合多语言环境,能够灵活适应不同语言的特性。
  • DeepSeek
    Token 类型:WordPiece
    说明:DeepSeek 采用 WordPiece tokenization,这是 Google 开发的一种算法,最初用于 BERT 模型。通过最大化语言模型的似然选择子词单元,WordPiece 能有效捕捉词缀和词根等语言特征。
  • LLama(Meta)
    Token 类型:Byte Pair Encoding(BPE)
    说明:LLama 使用 BPE tokenization,与 ChatGPT 类似。BPE 在处理大规模、多样化的文本数据时表现出色,确保模型的高效性和泛化能力。

5. Token 数量的影响

Token 序列的长度对大模型的性能有重要影响:

  • 序列过长:包含更多信息,但计算复杂度增加,模型可能难以处理(尤其是 Transformer 模型,计算量与序列长度平方相关)。
  • 序列过短:信息不足,可能影响模型对上下文的理解。
    因此,大模型通常会设置一个最大 Token 长度(如 512 或 2048),并根据任务需求进行优化。

总结


Token 是大模型处理文本的核心概念,可以理解为文本的最小构建块。它通过将复杂文本分解为单词、子词或字符等单元,让模型能够一步步分析和生成语言。Token 的类型和数量直接影响模型的性能和效果,而 Tokenization 则是连接原始文本与模型计算的关键步骤。希望这个解释能让你对 Token 有更清晰的认识!




转载请注明出处《大模型中的Token是什么?》 https://blog.csdn.net/huyuyang6688/article/details/145971315