从身份证到性格画像:一文搞懂 one‑hot、Word2Vec 和大模型 Embedding
我会用讲故事 + 类比 + 面试考点的方式,把 one‑hot → Word2Vec → Word Embedding → 大模型中的 Embedding 这条线彻底讲透。
一、问题起源:计算机不认识“意思”
计算机只懂数字,不懂“苹果”“香蕉”是什么。
所以第一步:把单词变成数字。
最直接的想法:给每个单词一个编号。
比如:苹果=1,香蕉=2,汽车=3。
但问题来了:2 > 1,难道香蕉比苹果大?模型会误学出大小关系。
于是有了 one‑hot 编码。
二、One‑hot 编码:每个词一个“身份证号”
怎么做的?
假设词汇表有 5 个词:[苹果, 香蕉, 橘子, 汽车, 飞机]
每个词用一个 5 维 向量表示,只有一位是 1,其余是 0:
苹果 →
[1, 0, 0, 0, 0]香蕉 →
[0, 1, 0, 0, 0]汽车 →
[0, 0, 0, 1, 0]
优点
-
简单,公平,没有强加大小关系。
缺点(致命)
-
维度太高:词汇表有 10 万词,向量就有 10 万维,太稀疏,存储和计算浪费。
-
没有语义:任意两个 one‑hot 向量的点积为 0,余弦相似度为 0。
→ 模型认为“苹果”和“香蕉”的距离 = “苹果”和“汽车”的距离,学不到相似性。
类比:one‑hot 就像每个人的身份证号——唯一,但不告诉你任何性格、爱好、长相信息。
三、隐藏层(Embedding 层):存放画像的画册
隐藏层(也叫 Embedding 层)是一个可训练的权重矩阵 W,大小 = (词汇表大小, 嵌入维度)。
它的每一行对应一个词的 Word Embedding。
你可以把它想象成一本画册,每一页是一张“性格画像”。
训练前:画册里是随机乱画的草稿(无意义的向量)。
训练后:画册里是精美的性格画像(有语义的向量)。
四、Word Embedding:把词压缩成“性格画像”
我们希望:
向量维度小(比如 300 维)。
语义相似的词,向量在空间里离得近。
不同维度可以代表词的某种特征(比如性别、时态、类别)。
什么是 Word Embedding?
定义:把一个词映射到一个 d 维 的实数向量(d 远小于词汇表大小),这个向量是通过训练自动学习出来的。
例如:
苹果 →
[0.12, -0.34, 0.78, ...]香蕉 →
[0.11, -0.32, 0.80, ...](相近)汽车 →
[0.91, 0.23, -0.45, ...](较远)
核心原理:分布式假设
语义相似的词会出现在相似的上下文中。
比如“苹果”和“香蕉”都会出现在“我吃了一个____”里。
模型为了能准确预测上下文,就会把相似词的向量拉近。
作用
计算相似度(找近义词)。
做向量运算:
国王 - 男人 + 女人 ≈ 女王。作为下游任务(情感分析、翻译)的输入特征。
Word Embedding 就是从隐藏层矩阵 W 中取出的某一行向量。
类比: Word Embedding 就像给每个人做一份详细的性格画像(身高、爱好、职业、星座……),相似的人画像也相似。
五、Word2Vec:画出“性格画像”的经典方法
Word2Vec 是 Google 2013 年提出的训练词向量的算法。它有两种模式:CBOW 和 Skip‑gram。
5.1 共同结构
输入层:词的 one‑hot(长度 V)。
隐藏层:一个 V × d 的权重矩阵 W。
因为 one‑hot 只有一个1,隐藏层输出 = W 的第 i 行。
这个就是当前词的词向量。输出层:另一个 d × V 的矩阵 W',乘以词向量后 softmax 得到每个词的概率,用来预测上下文(或中心词)。
训练完成后,W 就是词向量表(Embedding 层)。
5.2 CBOW(连续词袋模型)
-
任务:用上下文词预测中心词。
例如用[Bereft, of, life, in, peace]预测rests。 -
过程:把上下文词的词向量求和或平均,再预测中心词。
-
特点:训练快,对高频词效果好,但对低频词效果差。
比喻:给你“吃”、“甜的”、“水果”,你猜中间是“苹果”。
5.3 Skip‑gram(跳字模型)
-
任务:用中心词预测上下文词。
例如用rests预测[Bereft, of, life, in, peace]。 -
过程:中心词的向量分别去预测每个上下文词。
-
特点:训练慢(因为每个样本要预测多个词),但对低频词效果更好,能捕捉更丰富的语义。
比喻:给你“苹果”,你猜它周围会出现“吃”、“甜的”、“水果”。
5.4 训练技巧(面试常考)
负采样:把 softmax(需要计算所有词)改成二分类(正样本 + 几个随机负样本),极大加速。
层次 softmax:用哈夫曼树输出,复杂度从 O(V) 降到 O(log V)。
下采样:随机丢弃高频词(如“的”“是”),减少噪音。
5.5 CBOW vs Skip‑gram 对比表
| 特性 | CBOW | Skip‑gram |
|---|---|---|
| 输入 | 上下文词 | 中心词 |
| 输出 | 中心词 | 上下文词 |
| 训练速度 | 快 | 慢(2‑3倍) |
| 对低频词效果 | 差 | 好 |
| 典型场景 | 大语料、高频词为主 | 小语料、罕见词重要 |
六、one‑hot、Word2Vec、Word Embedding 完整流程图(训练阶段 + 使用阶段)
阶段一:训练过程中(Word2Vec 在更新隐藏层)
随机初始化的隐藏层 W(画册,每页是乱画的草稿)
↓
输入一个 one‑hot(比如“苹果”的身份证号)
↓
隐藏层查表:取出 W 的第 i 行 → 得到当前词的 Word Embedding(当前画像,还很丑)
↓
输出层:用该 embedding 预测上下文(CBOW)或输出上下文概率(Skip‑gram)
↓
计算损失(预测错误 → 损失大)
↓
反向传播 + 梯度下降 → 更新 W 的行(修改画册里的画像)
↓
回到“随机初始化的隐藏层 W” → 重复无数遍
↓
训练好的隐藏层 W(画册,每页是精美的性格画像)
训练过程(反复迭代):
-
前向传播:输入一个词的 one‑hot → 隐藏层查表(取 W 的第 i 行)→ 得到当前词的 Word Embedding → 输出层预测上下文(或中心词)→ 计算损失(预测错误则损失大)。
-
反向传播:根据损失计算梯度 → 更新 W 的行(即修改画册里的画像)。
-
重复无数遍,直到损失收敛。
结果:W 从随机乱画的草稿,逐渐变成有语义的、精美的性格画像。
本质:Word2Vec 就是一个画像师,通过观察词的上下文来“画”出每个词的向量。
核心:Word2Vec 算法就是上面从“输入 one‑hot”到“更新 W”的整个循环。隐藏层 W 在训练中不断被优化。
阶段二:训练完成后(使用词向量时)
训练好的隐藏层 W(画册,每页是精美的性格画像)
↓
输入一个 one‑hot(比如“苹果”的身份证号)
↓
隐藏层查表:取出 W 的第 i 行
↓
得到该词的 Word Embedding(最终的性格画像)
↓
用于下游任务(相似度计算、聚类、分类等)
一句话:one‑hot 是索引,隐藏层是存储所有向量的矩阵,Word Embedding 是被取出的那一行。
训练前后对比
| 阶段 | 隐藏层 W(画册) | Word Embedding(画像) |
|---|---|---|
| 训练前 | 随机初始化(乱画) | 无意义向量 |
| 训练中 | 不断被更新 | 逐渐获得语义 |
| 训练后 | 固定(不再改变) | 有语义的、静态的向量 |
七、大模型中的 Embedding(GPT、BERT)
大模型(如 GPT、BERT)的第一层也是 Embedding 层(查找表),但有以下不同:
| 对比项 | Word2Vec | 大模型(BERT/GPT) |
|---|---|---|
| 输入单位 | 单词 | 子词(如 BPE 切出的 “un”、“happi”) |
| 向量维度 | 100~300 | 768、1024、4096… |
| 动态性 | 静态:一个词一个向量,不随上下文改变 | 动态:初始 Embedding 经过多层 Transformer 后,每个词的向量会融合上下文信息,同一词在不同句子中向量不同 |
| 训练方式 | 独立预训练,然后作为特征输入 | 端到端训练,随整个模型一起优化 |
| 多义词问题 | 无法区分(如“bank”是银行还是河岸) | 可以区分(上下文决定) |
比喻:大模型也画画像,但画得更细(子词),而且画像会随环境(上下文)改变。
八、面试高频问题 & 回答要点
| 问题 | 回答要点 |
|---|---|
| one‑hot 有什么缺点? | 维度高、稀疏、无语义相似性 |
| Word Embedding 的本质? | 从 one‑hot 到低维密集向量的映射,通过训练得到 |
| Word2Vec 的两种模式区别? | CBOW:上下文猜中心,快;Skip‑gram:中心猜上下文,对低频词好 |
| 为什么 Skip‑gram 对低频词更好? | 低频词作为中心词时,每次更新会同时优化多个上下文,信息利用率高 |
| 负采样是什么?为什么有用? | 把多分类转为二分类,只更新少量负样本,极大加速训练 |
| 怎么评估词向量质量? | 相似度任务、类比推理(“国王‑男人+女人≈女王”) |
| 大模型的 Embedding 层和 Word2Vec 有何异同? | 同:都是查找表;异:输入是子词、动态上下文相关、端到端训练 |
| 什么是静态词向量 vs 动态词向量? | 静态(Word2Vec)一个词一个向量;动态(BERT)同一词不同上下文不同向量 |
九、一句话总结
one‑hot 是身份证号,隐藏层(Embedding 层)是画册,Word Embedding 是画册里的性格画像,Word2Vec 是画画像的师傅。大模型也画画,但画得更细(子词),而且画像会随环境(上下文)变化。
更多推荐
所有评论(0)