我会用讲故事 + 类比 + 面试考点的方式,把 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]

优点

  • 简单,公平,没有强加大小关系。

缺点(致命)

  1. 维度太高:词汇表有 10 万词,向量就有 10 万维,太稀疏,存储和计算浪费。

  2. 没有语义:任意两个 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(画册,每页是精美的性格画像)

训练过程(反复迭代):

  1. 前向传播:输入一个词的 one‑hot → 隐藏层查表(取 W 的第 i 行)→ 得到当前词的 Word Embedding → 输出层预测上下文(或中心词)→ 计算损失(预测错误则损失大)。

  2. 反向传播:根据损失计算梯度 → 更新 W 的行(即修改画册里的画像)。

  3. 重复无数遍,直到损失收敛。

结果: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 是画画像的师傅。大模型也画画,但画得更细(子词),而且画像会随环境(上下文)变化。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐