在大语言模型(LLM)处理文本的背后,“词元(Token)”是最基础的运算单元。无论是ChatGPT生成流畅的回答,还是机器翻译精准转换语言,本质都是模型对词元进行一系列数学运算的结果。本文将从词元的生成、数值化表示、模型内运算到结果生成,逐层拆解词元运算的完整逻辑。
第一步:文本→词元
把语言切成“可计算的碎片”
人类看到的文本是连续的字符序列(“我爱自然语言处理”),但模型无法直接理解字符,必须先将其拆分为离散的“词元”。这一步称为分词(Tokenization),核心是平衡“语义完整性”和“计算效率”。
常见分词策略
策略 |
原理 |
示例 (“自然语言处理”) |
特点 |
词级分词 |
按完整词语拆分 |
[“自然”, “语言”, “处理”] |
语义明确,但生僻词/新词易“未登录”(OOV) |
字符级分词 |
按单个字符拆分 |
[“自”, “然”, “语”, “言”, “处”, “理”] |
无OOV问题,但序列过长,语义关联弱 |
子词级分词(主流) |
按高频子词拆分 |
[“自然”, “语言”, “处”, “理”] 或 [“自”, “然”, “语”, “言”, “处理”] |
兼顾语义和灵活性,是BERT、GPT系列的核心选择 |
典型算法:BPE(字节对编码,GPT家族常用)、WordPiece(BERT常用)、Unigram(T5常用)。以BPE为例:它从字符开始,反复合并高频出现的字符对(如“自”+“然”→“自然”),最终得到一套“子词表”——既能覆盖常见词,又能用子词组合出罕见词(如“元宝”=“元”+“宝”)。
第二步:词元→向量
给每个碎片赋予“数学身份”
分词得到的词元仍是符号(如“自然”“语言”),模型需要将它们转换为高维向量(一组浮点数),才能进行计算。这一步的核心是词嵌入(Embedding)。
1. 静态嵌入 vs 动态嵌入
静态嵌入(如Word2Vec、GloVe):一个词元对应唯一向量,无法区分多义词(如“苹果”在“吃苹果”和“苹果手机”中向量相同)。
动态嵌入(LLM的核心):向量会随上下文变化。例如,输入“我爱苹果”和“苹果发布了新手机”,“苹果”的向量完全不同——这正是模型理解语义的关键。
2. 位置编码:让模型知道“词元在哪”
文本的顺序至关重要(“狗咬人”≠“人咬狗”)。除了词嵌入,模型还会为每个词元添加位置编码(Position Embedding),将位置信息转化为向量,与词嵌入相加后得到最终的“输入向量”:
输入向量 = 词嵌入向量 + 位置编码向量
例如,在GPT中,位置编码是通过预定义的三角函数生成的;而在LLaMA等新模型中,则采用“旋转位置编码(RoPE)”,能更好地处理长文本。
第三步:模型内运算
让词元“对话”的核心逻辑
输入向量进入模型的Transformer层后,词元之间开始真正的“交互”。最核心的运算发生在自注意力(Self-Attention)机制中——它让每个词元都能“关注”到其他相关词元,动态调整自身向量。
对每个词元的输入向量,模型会通过3个权重矩阵(训练时学习得到)生成3个向量:
查询向量(Q):当前词元“想找什么”(如“苹果”在“吃苹果”中想找“吃”“甜”等相关词);
键向量(K):当前词元“能提供什么信息”(如“吃”的K向量会匹配“苹果”的Q向量);
值向量(V):当前词元的实际语义内容。
注意力分数的计算(以“我爱自然语言处理”为例)
假设我们要算第3个词元“自然”的注意力:
计算相似度:“自然”的Q向量分别与所有词元(我、爱、自然、语言、处理)的K向量做点积,得到一组分数(如“自然”与“语言”的分数最高,因为两者常一起出现);
归一化:用Softmax将分数转换为概率(总和为1),突出高相关词元;
加权求和:用概率对所有词元的V向量加权求和,得到“自然”的新向量——这个向量已经融合了“语言”等上下文信息。
多头注意力(Multi-Head Attention):模型会并行运行多个独立的自注意力“头”,每个头关注不同的语义关系(如一个头关注语法,一个头关注指代),最后将所有头的输出拼接起来,得到更丰富的语义表示。
第四步:前馈网络与层叠
从“局部关联”到“全局语义”
自注意力层之后,每个词元的向量会进入前馈神经网络(FFN)——它是一个两层的全连接网络(中间有激活函数如ReLU),作用是对自注意力的输出做非线性变换,进一步提取特征(比如判断“自然”是形容词还是名词)。
Transformer层通常会堆叠多次(如GPT-3有96层),每一层都重复“自注意力→FFN”的过程:底层的词元向量主要捕捉语法和局部语义(如“自然”和“语言”相邻),顶层的向量则包含全局语义(如整个句子的主题是“NLP技术”)。
训练 vs 推理:词元运算的两种模式
1. 训练阶段:让模型“学会”运算
输入:完整的文本序列(如“我爱自然语言处理”);
目标:预测下一个词元(如给定“我爱自然语言”,预测“处理”);
运算核心:通过反向传播调整所有权重矩阵(Q/K/V矩阵、FFN参数等),最小化预测误差——本质是让模型学会“哪些词元应该关联”“关联强度是多少”。
2. 推理阶段:用学到的规则生成结果
输入:用户的问题(如“什么是词元运算?”);
生成逻辑:
分词→向量化→逐层Transformer运算,得到最后一个词元的向量;
用“语言模型头(LM Head)”将该向量映射为词表大小的概率分布(每个词元被选中的概率);
按概率采样(或选最高概率)得到下一个词元(如“词元”);
将新词元加入输入序列,重复上述过程,直到生成结束符(如<EOS>)。
关键区别:训练时可以并行处理所有词元(因为已知全部上下文),而推理时必须逐个生成(因为下一个词依赖之前的结果)——这也是为什么长文本生成速度较慢。
挑战与优化:让词元运算更高效
1. 长文本的困境
自注意力的计算量随序列长度呈平方级增长(长度为n时,计算量是O(n²))。当输入超过模型的最大上下文窗口(如GPT-4的8k/32k tokens),就需要截断或压缩——这也是目前LLM处理长文档的主要瓶颈。
2. 优化方向
稀疏注意力:只让每个词元关注部分词元(如局部窗口、关键句),降低计算量;
Flash Attention:通过GPU内存优化,加速自注意力计算;
动态词元:根据语义重要性合并冗余词元(如将“非常非常喜欢”合并为一个词元),减少序列长度。
总结:词元运算的本质
从字符到词元,从向量到注意力交互,再到最终生成文本,词元运算的核心是将人类语言的“语义关联”转化为数学模型中的“向量变换”。每一个词元的移动、融合、更新,都是模型在“理解”和“创造”语言的过程——这背后不仅是算法的精妙,更是对人类语言规律的数字化抽象。下次当你和AI对话时,不妨想象一下:屏幕那端,成千上万个词元正在高维空间中“跳舞”,用数学的方式编织出属于它们的故事。
作者声明:本微信公众号(以下简称“本号”)发布的所有内容,包括但不限于文字、图片、视频、音频等,仅供参考和交流之用,不构成任何投资、法律、医疗或其他专业建议。用户在依据本号内容作出任何决定或采取任何行动前,应自行判断并咨询相关专业人士。
1、本号部分内容来源于网络或其他公开渠道,我们尽力确保信息的准确性和可靠性,但不对其真实性、完整性或及时性作出任何明示或暗示的保证。
2、对于转载和参考内容,我们会在合理范围内注明出处。如有版权问题,请相关权利人及时联系我们,我们将尽快处理。
3、用户因使用本号内容而导致的任何直接或间接损失,本号及其运营团队不承担任何责任。
-END-
-文章推荐-
●广告位招租中·····
●广告位招租中·····

