🔗 视频链接: https://player.bilibili.com/player.html?bvid=BV1xfBkB4Etb&cid=35011297701
⏱️ 视频时长: 00:11:08
大模型并非“理解”语言,而是通过“分词→映射→自回归预测”三步机械流程,将人类文本转化为数字序列,再逐token概率化生成响应——其本质是统计驱动的语言模式续写器。
为什么这个洞见重要:打破“AI会思考”的直觉幻觉,建立对大模型能力边界与失效根源的理性认知,是安全、高效、可解释地使用和调试大模型的前提。
完成本教程学习后,你将能够:
核心知识点:
视频从宏观IO流切入,聚焦大模型最基础但最常被忽略的底层机制:文本如何进入模型?模型又如何“吐出”文字?
这不是黑箱推理,而是可拆解、可干预、可诊断的确定性流程。
常见困境:
核心挑战:
| 概念 | 一句话定义 | 解决问题 |
|---|---|---|
| 分词化(Tokenization) | 将原始文本按预设规则切分为离散、不可再分的语义/语法最小单元(Token),是文本数字化的第一道闸门 | 解决“机器无法直接处理字符串”的根本矛盾,为后续数值计算奠基 |
| 词表映射(Vocabulary Lookup) | 将每个Token查表转换为唯一整数ID(Token ID),使文本成为模型可接收的数值向量序列 | 解决“模型只认数字、不识文字”的输入兼容性问题,建立文本与向量空间的确定性桥梁 |
| 自回归生成(Autoregressive Generation) | 模型基于当前所有已生成Token ID,逐个预测下一个最可能Token ID,并循环追加、迭代推进,直至触发终止信号 | 解决“如何从静态输入生成动态、连贯、有长度的输出文本”这一核心任务 |
生活比喻:想象把一本中文《红楼梦》翻译成摩斯电码——你不会把整本书当一个信号发出去,而是先拆成单字(“贾”“宝”“玉”),再为每个字分配唯一电码(·− ·−− −·)。分词器就是这位“语言电报员”。
一句话定义:分词化是将自然语言文本按语言特性与计算效率权衡,切分为模型可处理的最小离散单元(Token)的过程。
核心要点(MECE原则):
常见误区:
实际应用:当你发现模型对专业术语(如 “BERTology”)回答错误时,应首先检查该词是否被合理分词——若被拆为 ["BERT", "ology"],模型就失去了对新概念的整体认知。
生活比喻:如同给班级每位学生发一张带编号的学生证(ID),老师点名时不喊名字,只念ID号(“请ID 27的同学发言”)。词表就是这本《学生证编号对照册》,映射确保“i”永远对应ID 101,“.”永远对应ID 999。
一句话定义:词表映射是将分词后的每个Token,通过查表(Lookup Table)转换为固定整数ID的操作,形成模型输入所需的数值序列。
核心要点:
常见误区:
实际应用:调试中文Prompt效果差时,用tokenizer.encode("你的中文句子")查看实际Token ID序列——若出现大量单字ID(如[123, 456, 789]),说明子词分词失效,需优化输入或切换分词器。
生活比喻:像一位只看自己刚写下的前文、从不回看全文的速记员。老板说“请总结会议要点”,他写下第一个词(“本次”),立刻根据这个词预测下一个最可能词(“会议”),再根据“本次会议”预测下个(“讨论了”)……直到写满一页或看到“完”字才停笔。
一句话定义:自回归生成是模型以“已生成Token序列”为条件,每次仅预测下一个Token ID,并将预测结果追加至序列、作为下次输入,循环直至满足终止条件的确定性解码过程。
核心要点:
常见误区:
实际应用:当输出出现“... ... ...”无限循环时,大概率是模型在某步持续高概率预测了 或 Token;此时应检查Prompt是否引导不足,或降低采样温度(temperature)增强确定性。
| 层级 | 概念 | 作用 | 支撑关系 |
|---|---|---|---|
| 顶层 | 自回归生成 | 解决“如何生成连贯文本”这一终极任务 | 由词表映射提供输入ID序列,由分词化确保输入有效 |
| 中层 | 词表映射 | 提供模型可计算的数值接口 | 由分词化产出Token,由词表提供ID查表能力 |
| 底层 | 分词化 | 构建语言到计算单元的转换桥梁 | 由语言特性(中/英/法)与词表设计共同决定 |
| 原因 | 结果 | 作用机制 |
|---|---|---|
| 中文采用字级分词(颗粒度细) | 词表ID序列长、上下文窗口易耗尽 | 单字Token信息密度低,需更多Token表达同义内容 |
| 英文采用子词分词(颗粒度粗) | 新词泛化能力强、序列更短 | “unhappiness” 拆为 ["un", "happiness"],复用已有子词嵌入 |
| 某步预测 概率突升 | 输出提前终止 | 模型认为当前上下文已充分回答,触发终止逻辑 |
起点:理解 分词化是语言数字化的必经闸门
中点:掌握 词表映射构建ID序列的确定性
tokenizer.encode(),终于 tokenizer.decode();ID序列是模型唯一真相。transformers 库实操:tokenizer("I love NLP!") → 观察输出ID列表与tokenizer.convert_ids_to_tokens()反查。终点:应用 自回归生成解释一切输出行为
| 对比维度 | 分词化(Tokenization) | 词干提取(Stemming) | 词形还原(Lemmatization) |
|---|---|---|---|
| 定义 | 将文本切分为模型可计算的离散单元 | 粗暴截断词尾(running → run) | 基于词典返回词元(better → good) |
| 核心特征 | 产出Token(可为子词、标点、字),服务于数值计算 | 无词表依赖,规则简单,精度低 | 依赖词性标注与词典,精度高,速度慢 |
| 工作原理 | 查词表、BPE合并、Unicode归一化 | 后缀剥离规则(Porter算法) | 词性消歧 + 词典查询 |
| 适用场景 | 大模型输入预处理(必需) | 传统搜索引擎关键词匹配 | NLP任务如情感分析、摘要(非LLM) |
| 优势 | 保全所有符号、支持多语言、可扩展新词 | 极快、内存省 | 语义准确、减少词汇稀疏 |
| 局限 | 语言特性强(中/英策略迥异)、词表固化 | 过度截断(university → univers) | 无法处理新词、依赖高质量词典 |
核心区别总结:分词化是为计算服务的编码过程,后两者是为语义分析服务的语言学简化;LLM不需要也不进行词干/还原,它直接在Token层面建模。
容易混淆的原因:三者都涉及“切分”,但目标函数完全不同——分词化优化的是模型训练稳定性与泛化性,而非人类可读性。
记忆技巧:Tokenization = Translation(文本→数字);Stemming = Surgery(粗暴切除);Lemmatization = Library(查词典)。
| 抽象概念 | 具体事物 | 类比映射 | 适用说明 |
|---|---|---|---|
| Token | 乐高积木单块 | 每块有唯一形状(代表语义),可拼接成任意结构(句子) | 解释为何不能随意增删Token——破坏物理连接(注意力机制) |
| 词表(Vocabulary) | 乐高零件目录册 | 目录记录每种积木的编号(ID)与实物图(Token) | 理解为何新积木(新词)需先入库(词表扩展)才能使用 |
| 自回归生成 | 乐高拼搭直播 | 主播只看已拼部分,每步选最顺手积木(概率最高),拼错无法拆(单向性) | 解释输出不可编辑、错误累积的本质 |
相似点:均强调模块化、可组合、依赖已有部件。
不同点(重要):乐高有物理约束(凸点凹槽),而Token间关系由注意力权重动态定义——同一Token在不同上下文中权重天差地别。
类比局限性:乐高拼搭是确定性过程,而自回归是概率采样;类比无法体现“温度系数”对创造性的调控。
| 潜在盲点(学习者易误解) | 正确理解 | 为什么容易出错 |
|---|---|---|
| “分词器是通用的,所有模型用同一套” | 分词器与模型强绑定:LLaMA用SentencePiece,GPT用Byte-Pair Encoding,中文Qwen用自研分词器;混用会导致ID错乱 | 视频未提具体实现,易假设存在“标准分词” |
| “Token ID就是词频排名” | ID无序性:ID 1000未必比ID 100更常用;ID顺序由词表构建算法(如BPE频率)决定,非人工排序 | 人类习惯“1,2,3…”隐含序关系,而词表ID是哈希式索引 |
| “模型能‘看到’整个输入再输出” | 解码器严格因果掩码:生成第5个Token时,模型视野仅限前4个ID,绝不知晓第6个及以后 | 视频说“基于现有Token预测”,但未强调“现有”即“已生成且已固定” |
跳步检测:
洞见一:大模型没有“理解”,只有“匹配”
洞见二:中文效能瓶颈在分词,不在模型
洞见三:输出质量由第一步预测决定
行动指南:用Hugging Face Transformers库,可视化一个中文句子的完整IO流。
操作步骤:
Qwen/Qwen2-1.5B-Instruct)
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-1.5B-Instruct")
text = "人工智能正在改变世界。"
tokens = tokenizer.tokenize(text) # 查看Token列表
ids = tokenizer.encode(text) # 查看ID序列
print("Tokens:", tokens)
print("IDs:", ids)
decoded = tokenizer.convert_ids_to_tokens(ids)
print("Decoded:", decoded) # 应与tokens高度一致
# 假设ids=[1,2,3]为输入,模型预测下一个ID为4
next_ids = ids + [4]
output_text = tokenizer.decode(next_ids, skip_special_tokens=True)
print("Output:", output_text) # 观察新增Token如何改变语义
检验标准:当你能说出"人工智能"被分成了几个Token(如["人工", "智能"]或["人", "工", "智", "能"]),并解释该分法对模型理解“人工智能”作为专有名词的影响时,说明已经掌握。
进阶挑战:尝试将同一中文句子翻译为英文,对比tokenizer.encode()后的ID序列长度——验证“中文颗粒度细导致序列更长”的洞见。
["量子", "计算"]),导致模型按两个独立概念响应;应尝试添加术语保护(如"量子计算"加引号强制为单Token)。<eos> 和最大长度阈值如何配合:<eos>是模型“自觉停笔”,阈值是系统“强制收卷”;前者优雅,后者保底;生产环境必设双保险。<eos>或阈值 → 输出完成。大模型并非“理解”语言,而是通过“分词→映射→自回归预测”三步机械流程,将人类文本转化为数字序列,再逐token概率化生成响应——其本质是统计驱动的语言模式续写器。
分词化(Tokenization)
词表映射(Vocabulary Lookup)
<unk>来源、评估词表覆盖度自回归生成(Autoregressive Generation)
<eos>与长度双终止tokenizer.encode()诊断真实中文Prompt(实践可操作)💡 如何将这份知识化为己有?
这篇结构化的笔记,是我用 AI 工具 谛听 处理视频后一键生成的。
它不仅能 批量提取B站视频文案,更能用 费曼学习法 自动梳理出清晰的主干——就像你刚才看到的那样。
🎯 现在就可以体验: 用「30分钟免费额度」处理你收藏夹里第一个"待学习"视频,
不到10分钟,就能得到一份属于你的结构化笔记。
🔗 立即体验: https://diting.cc
⏰ 免费额度: 新用户注册即送30分钟/月
🤖 由 谛听 Diting.cc AI 驱动 | 专注于B站视频知识提取