当前位置: 首页 > news >正文

大模型修炼秘籍 第一卷灵气采集 第三章:化气为形——Tokenization之秘

第三章:化气为形——Tokenization之秘

分词之道在平衡,子词切分显神功。

【本章导读】

数据清洗后,仍是人类语言的形态,模型无法直接理解。Tokenization,便是将文本切分为模型可处理的基本单元——Token。如同将灵气凝练为丹药,便于吸收修炼。


一、何为Tokenization?

【Token之理】

Token是模型处理文本的最小单元:

  • 英文中,一个Token通常是一个词或词的一部分
  • 中文中,一个Token通常是一个字或词
  • Token是文本与模型之间的桥梁

【为何需要Tokenization?】

  1. 统一表示:将不同语言的文本统一为数字序列
  2. 高效编码:用有限的词表覆盖无限的文本
  3. 灵活切分:平衡词表大小和序列长度

二、分词方法演进

第一代:词级分词

最简单的方法,按空格切分:

"大模型修炼秘籍" → ["大", "模型", "修炼", "秘籍"] "Hello World" → ["Hello", "World"]

问题:

  • 词表太大(百万级)
  • 无法处理未登录词(OOV)
  • 不适合中文等无空格语言

第二代:字符级分词

将文本切分为单个字符:

"Hello" → ["H", "e", "l", "l", "o"] "大模型" → ["大", "模", "型"]

问题:

  • 序列太长,计算效率低
  • 字符本身无语义

第三代:子词分词(主流方法)

结合词级和字符级的优点:

"unhappiness" → ["un", "happiness"] "tokenizer" → ["token", "izer"]

优点:

  • 词表大小适中(3万-10万)
  • 能处理未登录词
  • 保留语义信息

三、BPE算法:字节对编码之术

【BPE心法】

BPE(Byte Pair Encoding)是最常用的子词分词算法,如同武学中的基础内功,简单而强大。

【BPE原理】

BPE的核心思想:不断合并最高频的相邻字节对,直到达到目标词表大小。

BPE训练过程

第一步:初始化

将所有单词拆分为字符:

语料: ["low", "lower", "newest"] 初始状态: "low" → ["l", "o", "w"] "lower" → ["l", "o", "w", "e", "r"] "newest" → ["n", "e", "w", "e", "s", "t"]

第二步:统计频率

统计所有相邻字节对的出现频率:

字节对 频率 ───────────── (l, o) 2 (o, w) 2 (w, e) 2 (e, r) 1 (n, e) 1 (e, s) 1 (s, t) 1

第三步:合并最高频对

最高频的是(l,o)、(o,w)、(w,e),任选一个合并:

合并 (l, o) → "lo" 更新: "low" → ["lo", "w"] "lower" → ["lo", "w", "e", "r"] "newest" → ["n", "e", "w", "e", "s", "t"]

第四步:重复合并

继续统计、合并,直到达到目标词表大小:

合并 (lo, w) → "low" 合并 (e, s) → "es" 合并 (es, t) → "est" ... 最终词表: {l, o, w, e, r, n, s, t, lo, low, es, est, ...}

BPE编码过程

训练好词表后,对新文本进行编码:

输入: "lowest" 步骤1: 拆分为字符 ["l", "o", "w", "e", "s", "t"] 步骤2: 应用合并规则 - (l, o) → "lo" → ["lo", "w", "e", "s", "t"] - (lo, w) → "low" → ["low", "e", "s", "t"] - (e, s) → "es" → ["low", "es", "t"] - (es, t) → "est" → ["low", "est"] 输出: ["low", "est"]

四、其他分词算法

WordPiece

与BPE类似,但合并标准不同:

  • BPE:基于频率
  • WordPiece:基于概率提升

用于BERT等模型。

Unigram Language Model

从大到小,逐步删减:

  • 初始词表包含所有可能的子词
  • 根据语言模型概率逐步删减
  • 保留对整体概率贡献最大的子词

用于T5、ALBERT等模型。

SentencePiece

将文本视为原始字节流,无需预分词:

  • 支持任意语言
  • 空格也作为特殊字符处理
  • 适合多语言模型

【算法对比】

算法合并策略优点代表模型
BPE频率最高简单高效GPT系列
WordPiece概率提升语义更好BERT
Unigram概率贡献多种分法T5
SentencePiece字节级语言无关多语言模型

五、词表构建:建立武学根基

【词表大小选择】

词表大小优点缺点
小(1万)模型小,速度快序列长,覆盖差
中(3-5万)平衡性好-
大(10万+)序列短,覆盖好模型大,训练慢

主流模型词表大小:

模型词表大小
GPT-250,257
GPT-3/4约100,000
LLaMA32,000
DeepSeek128,000
Qwen152,000

【特殊Token】

词表中需要包含特殊Token:

Token用途
<pad>填充序列
<unk>未知Token
<bos>序列开始
<eos>序列结束
<sep>分隔符
<cls>分类标记

六、Tokenization实战

【使用HuggingFace Tokenizers】

fromtransformersimportGPT2Tokenizer# 加载预训练的tokenizertokenizer=GPT2Tokenizer.from_pretrained('gpt2')# 编码text="Hello, 大模型修炼秘籍!"tokens=tokenizer.encode(text)print(f"Tokens:{tokens}")print(f"Token文本:{tokenizer.convert_ids_to_tokens(tokens)}")# 解码decoded=tokenizer.decode(tokens)print(f"解码:{decoded}")

输出示例:

Tokens: [15496, 11, 32668, 108, 36283, 109, 10541, 0] Token文本: ['Hello', ',', '大', '模', 'å', 'ľ', '¿', '!'] 解码: Hello, 大模型修炼秘籍!

【训练自己的Tokenizer】

fromtokenizersimportTokenizerfromtokenizers.modelsimportBPEfromtokenizers.trainersimportBpeTrainerfromtokenizers.pre_tokenizersimportWhitespace# 创建tokenizertokenizer=Tokenizer(BPE(unk_token="[UNK]"))tokenizer.pre_tokenizer=Whitespace()# 训练trainer=BpeTrainer(vocab_size=30000,special_tokens=["[UNK]","[CLS]","[SEP]","[PAD]","[MASK]"])files=["data/train.txt"]tokenizer.train(files,trainer)# 保存tokenizer.save("tokenizer.json")

七、Tokenization的影响

【对模型性能的影响】

影响方面说明
序列长度好的分词减少序列长度,提高效率
未登录词好的分词减少OOV,提高覆盖率
多语言好的分词支持多语言,扩大应用范围
领域适应领域特定词表提升专业能力

【中文Tokenization的特殊性】

中文没有天然的分隔符,分词更具挑战:

方法1: 字级分词 "大模型修炼" → ["大", "模", "型", "修", "炼"] 方法2: 词级分词 "大模型修炼" → ["大模型", "修炼"] 方法3: 子词分词(推荐) "大模型修炼" → ["大", "模型", "修炼"]

主流中文模型的策略:

  • 字级+子词混合
  • 大词表覆盖常见词
  • 支持繁简转换

八、本章心法总结

【口诀】

分词之道在平衡,子词切分显神功。
BPE算法最常用,词表构建根基成。

【要点回顾】

要点说明
Token模型处理文本的最小单元
子词分词当今主流方法,平衡词表大小和序列长度
BPE算法不断合并高频字节对,构建词表
词表大小3-10万为宜,需平衡效率和覆盖
特殊Token包含pad、unk、bos、eos等

第一卷总结

第一卷"灵气采集篇"到此结束。我们学习了:

  1. 数据采集:从互联网海量数据中采集训练素材
  2. 数据清洗:去重、去劣、过滤有害内容
  3. Tokenization:将文本转化为模型可处理的Token

这三步完成后,我们便拥有了修炼大模型的"灵气"。

【下一卷预告】

第二卷"内功筑基篇",我们将深入预训练之道,学习Transformer架构、规模法则、分布式训练等核心内容。这是大模型修炼最关键、最耗资源的阶段。

http://www.cnnetsun.cn/news/1889270.html

相关文章:

  • 从玩具小车到机器人:如何用你的双目摄像头(OpenCV/C++)生成第一张深度图?
  • 性能测试实战指南:从LoadRunner脚本到场景分析的完整流程
  • Excel多文件智能筛选:一键定位XLSX中的关键数据
  • PPTist:免费开源在线PPT制作工具终极指南
  • 工业无线以太网传输模块杰出榜,谁上榜了?
  • 超越传统温控:FanControl如何重新定义PC风扇智能化管理
  • Vue3 企业级封装:useEventListener + 终极版 BaseEcharts 组件
  • PPTist:如何在浏览器中实现媲美桌面软件的PPT制作体验?
  • # 001、开篇:认知变现时代,普通人如何抓住AI红利
  • Youtu-Parsing科研助手应用:学术PDF图表自动转Mermaid复现实验
  • ESXi性能瓶颈实战攻略:聚焦三大核心,高效排查与优化
  • Cursor Free VIP:AI编程助手试用限制的智能解决方案
  • 案例分享:用cv_unet_image-colorization修复上世纪黑白照片,效果超乎想象
  • 硬件基础专题:三极管的开关与放大实战解析
  • 手眼标定公式
  • 收藏!2026 AI应用开发学习路线(小白/程序员必看):Java+Python双buff,避开弯路快速上岸
  • C++高性能定时器:从标准库到跨平台框架的实现与选型
  • 【AIAgent安全架构黄金法则】:20年专家首曝3大权限失控漏洞与7层防御落地指南
  • QT上位机实战:串口通信与动态波形可视化开发指南
  • PPTist:在浏览器中打造专业级演示文稿的全栈解决方案
  • Blender 3MF插件终极指南:5分钟实现3D打印工作流无缝对接
  • 基于STK的BDS3星座仿真与亚太区域GDOP性能深度评估
  • AI绘画小白必看:SD1.5 Archive 镜像一键部署与基础使用全攻略
  • 5分钟掌握网易云音乐插件安装:BetterNCM Installer终极指南
  • Markdown Viewer:浏览器中的免费终极Markdown阅读神器
  • 网站国产化改造,如何做到软件成本几乎为零?
  • 终极指南:如何用ParsecVDisplay零成本扩展你的Windows虚拟显示器
  • 【AIAgent法律助手开发实战指南】:SITS2026真实项目拆解,3大合规陷阱+5步交付法,法务与开发者必存
  • 如何让Windows 10/11完美运行经典游戏:DDrawCompat兼容性修复完整指南
  • 163MusicLyrics:一站式歌词获取神器,免费搞定网易云QQ音乐歌词下载与格式转换