AI知识分享AI知识分享
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 数学基础
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Agentic AI
  • Transformer
  • PyTorch
  • HuggingFace
  • LangChain
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • Cursor
  • 概念
  • 意图识别
  • 工具
  • 学习路线
  • PyTorch 资料
  • 公式学习
  • PyTorch 基础练习
✿导航
  • 人工智能
  • 神经网络
  • 机器学习
  • 深度学习
  • 强化学习
  • 自然语言处理
  • 计算机视觉
  • 数学基础
  • 大模型基础
  • 动手学深度学习
  • 理论理解
  • 工程实践
  • 应用开发
  • AI For Everyone
  • AIGC_2024大会
  • AIGC_2025大会
  • Agentic AI
  • Transformer
  • PyTorch
  • HuggingFace
  • LangChain
  • 蒸馏
  • RAG
  • 目标检测
  • MCP
  • Cursor
  • 概念
  • 意图识别
  • 工具
  • 学习路线
  • PyTorch 资料
  • 公式学习
  • PyTorch 基础练习
  • 理论理解

    • 理论理解 - Transformers 神经网络图解指南
    • 理论理解 - 构建高效的人工智能体
    • 理论理解 - LLM长上下文
    • 理论理解 - 大模型流程
    • 理论理解 - 什么是token
    • 理论理解 - 模型参数
  • 工程实践

    • 工程实践 - 如何训练自己的大语言模型
    • 工程实践 - 提示工程指南
    • 工程实践 - 上下文工程
  • 应用开发

    • 应用开发 - LLM Agent
    • 应用开发 - 为什么人工智能超越了计算机革命、互联网革命
    • 应用开发 - 人工智能的开源与发展:从模型到基础设施

什么是Token

Context Window

上下文窗口:模型一次能处理的最大信息量

image-20260410060638736

1个Token(1.5~2个汉字,4个英文字母或0.75个英文单词) 4o万 Context Window —— 60~80万个汉字或30万个英文单词

Tokenizer

要理解 Tokenizer(分词器)的实现原理,可以从两个层面来看:一是它处理文本的通用工作流程,二是其核心所采用的分词算法。简单来说,Tokenizer 是大模型与人类语言之间的“翻译官”,它的核心作用是将原始文本转换成模型能够理解和处理的数字序列。

image-20260410061421907

📝 Tokenizer 的通用工作流程

无论是哪种具体的算法,一个现代 Tokenizer 在处理文本时,通常会遵循一个标准化的四步流水线:

  1. 归一化 (Normalization) 这是文本预处理的第一步,目的是清洗和标准化文本。例如,将所有字符转换为小写、移除多余的空格和换行符、统一不同形式的 Unicode 字符(如将 Héllò 标准化为 Hello)。

  2. 预分词 (Pre-tokenization) 这一步会对文本进行初步的、基于简单规则的切分。最常见的是根据空格和标点符号将句子切分成一个个独立的“词”。例如,句子 "Hello, how are you?" 会被初步切分为 ['Hello', ',', 'how', 'are', 'you', '?']。

  3. 模型切分 (Model) 这是 Tokenizer 最核心的一步。它会应用一个训练好的分词算法(如 BPE、WordPiece 等),将预分词后的单元进一步拆解或合并成最终的 Token。这一步决定了文本最终的切分粒度。

  4. 后处理 (Post-processing) 最后,Tokenizer 会添加一些模型所需的特殊标记。例如,在序列开头添加 [CLS] 标记用于分类任务,或在句子之间添加 [SEP] 标记来分隔不同段落。

⚙️ 核心的分词算法

目前主流大模型几乎都采用子词级别 (Subword-level) 的分词方法,因为它在“词级别”(词汇表过大,无法处理生僻词)和“字符级别”(序列过长,语义信息弱)之间取得了最佳平衡。以下是三种最主流的子词分词算法:

BPE (Byte Pair Encoding, 字节对编码)

这是目前应用最广泛的算法,被 GPT、LLaMA、RoBERTa 等模型采用。

  • 核心思想:从字符级别开始,通过统计海量语料中相邻字符对的出现频率,反复合并最高频的字符对,逐步构建一个固定大小的词汇表。
  • 工作原理:
    1. 训练阶段:从所有字符组成的词汇表开始,迭代地统计并合并出现频率最高的相邻符号对(例如,e 和 s 经常一起出现,就合并成 es),直到词汇表达到预设的大小。
    2. 推理阶段:将新文本先切分成字符,然后应用训练阶段学到的合并规则,将其组合成最终的 Token。
  • 例子:对于单词 "unhappiness",BPE 可能会将其切分为 ['un', 'happy', 'ness']。
image-20260410063156734

WordPiece

这是 Google 为 BERT 模型开发的算法。

  • 核心思想:与 BPE 类似,但合并规则的选择标准不同。WordPiece 使用一种基于似然估计的准则,选择能最大化训练数据似然概率的子词进行合并。
  • 特点:它有一个显著的标志,即用 ## 前缀来表示一个 Token 是前一个 Token 的延续。
  • 例子:单词 "playing" 可能会被切分为 ['play', '##ing']。

SentencePiece

这是一种更通用的实现,被 T5、mT5 等模型使用。

  • 核心思想:它将输入文本视为一个连续的 Unicode 字符流,不依赖于空格进行预分词。它通常将空格本身也作为一个特殊符号(如 ▁)来处理。
  • 优势:这种设计使其天生对中文、日文等没有显式空格分隔的语言非常友好,实现了语言无关性。

Unigram

Unigram 是一种与 BPE、WordPiece 截然不同的子词分词算法。如果说 BPE 和 WordPiece 是“从小到大”的合并式算法,那么 Unigram 就是“从大到小”的剪枝式算法。它被 T5、ALBERT、mBART 等模型采用,并通常通过 SentencePiece 库来实现。

  • 核心思想:反向剪枝与概率模型

    • Unigram 的核心思想是:从一个包含大量候选子词(如所有高频子串)的巨大词汇表开始,然后通过迭代删除对模型“贡献”最小的子词,逐步将词汇表缩小到目标大小。
    • 这里的“贡献”是基于一个概率模型来衡量的。Unigram 模型假设一个文本序列中每个子词的出现都是相互独立的,因此整个文本的概率就是其中所有子词概率的乘积。
    • 例如,对于文本 "apple",如果拆分为 ["app", "le"],其概率为 P(app) × P(le);如果拆分为 ["a", "pp", "le"],其概率为 P(a) × P(pp) × P(le)。Unigram 的目标是保留那些能让整个训练语料库概率(即似然)最大的子词。
  • 工作原理:EM 算法迭代优化

    • Unigram 的训练过程通常使用期望最大化(EM)算法,交替执行以下两个步骤,直到词汇表达到预设大小:

    • 1.E 步 (Expectation Step): 计算概率

      • 在当前词汇表下,使用 Viterbi 算法(一种动态规划算法)为训练语料中的每个词找到概率最高的切分方式。

      • 统计每个子词在所有最优切分中出现的总次数,并据此计算其在当前词表下的概率。

    • 2.M 步 (Maximization Step): 剪枝

      • 评估词汇表中每个子词的“重要性”。具体做法是计算如果移除该子词,整个语料库的似然会下降多少(即损失值)。

      • 删除那些对整体似然影响最小(即损失值最低)的 10%~20% 的子词。

      • 为了保证任何文本都能被编码,单字符(如 'a', 'b', 'c')会永远保留在词汇表中,不会被删除。

  • 分词逻辑:全局最优而非贪心

    • Unigram 在分词时,不像 BPE 那样按固定顺序进行贪心匹配,而是利用训练好的概率模型,为新的文本寻找全局概率最高的切分方式。

    • 例如,对于一个训练好的 Unigram 分词器,词汇表中有 ["h", "u", "g", "s", "hug", "ugs"]。当处理新词 "hugs" 时,它可能会产生多种切分可能,如 ["hug", "s"] 或 ["h", "ugs"]。Unigram 会计算每种切分的概率:

      • P(["hug", "s"]) = P(hug) × P(s)

      • P(["h", "ugs"]) = P(h) × P(ugs)

最终,它会选择概率值更高的那一种作为最终结果。

最近更新: 2026/5/4 11:15
Contributors: klc407073648
Prev
理论理解 - 大模型流程
Next
理论理解 - 模型参数