中文标准叫法:独热编码
一、一句话通俗定义
先建立词汇表,给每个词语分配唯一编号(index索引); 把词语转换成一串数字向量:只有自己索引位置写1,剩下全部填0。
直观小例子
词汇表:【汽车配件,零部件,缺货,物流】一共4个词
- 汽车配件(索引0) →
[1, 0, 0, 0] - 零部件(索引1) →
[0, 1, 0, 0] - 缺货(索引2) →
[0, 0, 1, 0] - 物流(索引3) →
[0, 0, 0, 1]
名字由来:唯一一个位置是“热(1)”,其余全部冷(0)
二、业务类比
相当于公司工位表: 一共有4个工位,一个员工只站在自己编号工位上,其余工位空着。 每个词语互相独立,互不干扰。
三、两大致命短板(重点,解释为什么大模型不用它,改用Embedding词向量)
维度爆炸 词汇表如果有5万个词,向量长度就要5万;99.99%数字都是0,极度浪费内存、计算很慢。
完全无法表达语义相似性 「汽车配件」
[1,0,0,0]「零部件」[0,1,0,0]两者点积=0,模型会认为两者毫无关系。 现实业务我们知道两个词高度近似,但one-hot识别不出近义词。
重点结论: One-Hot只能区分“词不一样”,看不懂词语含义、看不出近义词。
四、串联你学习的模型流程(关键知识点)
- 文字 → token → 获取索引index
- 理论上可以把index转成One-Hot向量
- Transformer不会直接使用one-hot! One-Hot × 嵌入权重矩阵 → 得到稠密词向量(Embedding) 👉 通俗理解:独热编码只是一个中间跳板,用来查表获取真正能用的词向量。
五、区分:One-Hot vs Embedding(词向量)
| 类型 | 形态 | 语义能力 | 规模 |
|---|---|---|---|
| One-Hot独热 | 只有1个1,大量0(稀疏) | 无,近义词相似度=0 | 维度=词表总量(几万维) |
| Embedding词向量 | 一串小数,没有大量0(稠密) | 可以体现词语远近关系 | 固定几百维(例如512、768) |
六、配套你前面学习的推理链路联动
模型最后输出logits → softmax概率分布 → argmax取出最大概率index → 用index反向匹配词汇表。 这个index,就是构建one-hot编码所依靠的编号。
30秒汇报精简话术
独热编码是最简单的文字数字化方式,给每个词汇分配唯一位置,向量仅对应位置为1、其余为0。 缺点是维度巨大,无法识别近义词。在Transformer中它只作为过渡手段,用来查询权重矩阵,生成具备语义信息的低维词向量。
One-Hot → Embedding 完整数字演算示例(极简,配合Transformer输入逻辑)
设定条件
词汇表 vocab = [“汽车配件”, “零部件”, “缺货”, “物流”] 总词数:4 索引: 0:汽车配件 1:零部件 2:缺货 3:物流
嵌入维度:2(简化演示,真实模型一般512/768维) Embedding权重矩阵(查表矩阵 W) $$ W= \begin{bmatrix} 0.8 & 0.2 \ 0.75 & 0.25 \ 0.1 & 0.9 \ 0.05 & 0.03 \end{bmatrix} $$ 每行 = 对应词语最终的词向量
第一步:生成One-Hot向量
词语:零部件 index=1 one-hot向量:$[0,\ 1,\ 0,\ 0]$
第二步:One-Hot 矩阵相乘得到Embedding
$[0,\ 1,\ 0,\ 0] \times W$ = $0\times[0.8,0.2] + 1\times[0.75,0.25]+0\times[0.1,0.9]+0\times[0.05,0.03]$ = $\boldsymbol{[0.75,\ 0.25]}$
✅ 结果:零部件的词向量 = [0.75, 0.25]
同理演示【汽车配件 index=0】 one-hot:$[1,0,0,0]$ 相乘结果:$\boldsymbol{[0.8,\ 0.2]}$
业务关键观察
「汽车配件」[0.8,0.2] 与「零部件」[0.75,0.25] 向量非常接近,模型能够识别二者语义相似。 👉 One-hot做不到这一点,两个one-hot点积=0,完全看不出关联!
工程实操重点 代码不会真的构造巨大one-hot向量做乘法! 直接根据索引取出矩阵对应的一行,效果完全一致,节省算力。
token index → 直接查表取一行 = Embedding向量(底层数学等价one-hot相乘)
再复习核心痛点(方便汇报)
- One-hot:只有0和1,维度=词汇总量。词表5万则向量5万维,无法落地;
- One-hot任意两个不同词语正交,相似度永远为0,不存在近义词概念;
- Embedding:低维稠密小数向量,语义相近词汇向量靠近,是Transformer真正的输入。
串联整条入门链路(你学习主线)
原始文字 → Token分词 → index索引 →(数学理论)One-hot × Embedding矩阵 → 词向量Embedding → 加上位置编码 → 送入Encoder多头自注意力(QKV计算……)
附加思考题自测
Q:模型推理末端,argmax拿到index,能不能理解为反向one-hot? A:可以辅助理解。 Logits经过Softmax得到概率分布,近似“软的one-hot”;argmax选出单一index,相当于硬选出激活位置。
如果你想要,我可以把: one-hot、embedding、QKV、点积、softmax、argmax、logits 全部串成一份从头到尾连贯学习笔记。
黑公网安备23000002000105号