视频封面

视频元信息

项目 内容
视频标题 (官方中英!) 2026公认最好的【吴恩达深度学习】教程!附课件、代码及实战项目 Professionalization of Deep Learning p173 2.6词转换成向量形式
所属课程 吴恩达深度学习专项课程 · 序列模型 · 词嵌入(Word Embeddings)
本讲主题 Word2Vec 之 Skip-Gram 模型、Softmax 计算瓶颈与 Hierarchical Softmax
原始论文 Mikolov, Chen, Corrado, Dean — Efficient Estimation of Word Representations in Vector Space

内容摘要(TL;DR)

本讲介绍了 Word2Vec 中的 Skip-Gram 模型:随机选取一个词作为上下文 C,再在其前后 ±5 或 ±10 词窗口内随机选一个词作为目标 T,用监督学习训练一个"查表 + Softmax"的极简神经网络来学习词向量。核心痛点是 Softmax 分母需对全词表(1万~百万)求和,计算极慢,解决思路之一是 Hierarchical Softmax(层次 Softmax),把复杂度从线性降为对数级。此外还讨论了上下文采样策略,避免高频词主导训练。


一、Skip-Gram 模型的动机与背景 [00:00]

  • 上一讲学习了用神经语言模型来获得好的词嵌入(word embeddings)。
  • 本讲介绍 Word2Vec 算法,它是一种更简单、计算效率更高的学习词嵌入的方法。
  • 本讲大部分思想来自 Thomas Mikolov、Kai Chen、Greg Corrado、Jeffrey Dean 的论文。

理解:神经语言模型(如 Bengio 的 NNLM)虽然能学出词向量,但训练代价高。Word2Vec 的核心价值在于"简化训练目标",牺牲一部分建模严谨性,换取可扩展性。

易混淆点:Word2Vec 不是单一模型,而是一套方法,包含 Skip-Gram 和 CBOW 两种架构。本讲重点是 Skip-Gram。


二、Skip-Gram 的核心思想:构造"上下文-目标"对 [00:22]

给定训练集中的一句话,Skip-Gram 的做法是构造若干 上下文-目标(context-target)对,把它变成一个监督学习问题。

与传统语言模型的区别

  • 传统做法:上下文固定为紧邻目标词之前的最后 n 个词(如最后 4 个词)。
  • Skip-Gram 做法:
    • 随机挑选一个词作为上下文词(context word),例如 "orange"。
    • 再在该上下文词前后 ±5 或 ±10 词的窗口内,随机挑选另一个词作为目标词(target word)。
    • 例如可能选中 "juice"(后一个词)、"glass"(前两个词)、"my"(随机选中)。

监督学习问题的设定

  • 输入:上下文词(如 orange)
  • 输出:在该词窗口内随机选中的一个词(如 juice / glass / my)

关键理解(易被误解):这个监督学习任务本身并不是要学好——在 orange 前后 ±10 词内可以出现很多不同的词,预测难度极高。真正的目的是借助这个任务去学习好的词向量。换句话说,预测任务只是"手段",词嵌入才是"目标"。

思考:这体现了自监督学习(self-supervised learning)的雏形——用数据自身构造监督信号,无需人工标注。


三、模型结构详解 [02:11]

3.1 词表与输入表示

  • 假设词表大小为 10,000 词(实践中也有超过 100 万词的训练)。
  • 目标:学习从上下文 C 到目标 T 的映射。
  • 例:orange 在词表中编号 6257,juice 编号 4834。

输入表示步骤:

  1. 用 one-hot 向量 $o_c$ 表示上下文词(如 orange)。
  2. 用嵌入矩阵 E 乘以 one-hot 向量,得到该词的嵌入向量:

$$e_c = E \cdot o_c$$

理解:one-hot 向量乘以矩阵 E,本质上等价于"从矩阵 E 中取出对应行"——即查表操作(lookup)。这也是为什么 Word2Vec 训练速度相对可控。

3.2 Softmax 输出层

将嵌入向量 $e_c$ 送入一个 Softmax 单元,输出 $\hat{y}$:

$$p(t \mid c) = \frac{e^{\theta_t^T e_c}}{\sum_{j=1}^{10000} e^{\theta_j^T e_c}}$$

  • $\theta_t$:与输出目标词 t 相关联的参数。
  • 分母对全部 10,000 个词求和。
  • 视频中省略了偏置项(也可选择保留)。

3.3 损失函数

采用 Softmax 的标准损失——负对数似然(negative log likelihood):

$$L = -\sum_{i=1}^{10000} y_i \log \hat{y}_i$$

  • $y$ 是目标的 one-hot 向量(仅对应目标词位置为 1,其余为 0)。
  • $\hat{y}$ 是 Softmax 输出的 10,000 维概率向量。

3.4 整体模型总结

整个网络极其简单,仅包含两部分:

  1. 查表操作(用矩阵 E 得到嵌入向量)
  2. 一个 Softmax 单元

可训练参数包括:

  • 矩阵 E 的全部参数(对应所有词的嵌入向量 $e_c$)
  • Softmax 单元的参数 $\theta_t$

只要针对这些参数优化损失函数,就能得到相当不错的词嵌入向量。

3.5 为什么叫 "Skip-Gram"

因为它以一个词为输入(如 orange),去预测它左、右"跳过几个词"位置上可能出现的词——即预测上下文词前后不远处会出现什么词。


四、Skip-Gram 的主要问题:计算速度 [06:53]

4.1 核心瓶颈

主要问题是计算速度。对于 Softmax 模型:

  • 每次要评估概率 $p(t\mid c)$,都必须对词表中全部 10,000 个词求和。
  • 10,000 已经不算小,若词表达到 100,000 或 1,000,000,每次分母求和会极其缓慢。
  • 这使得模型难以扩展到更大的词表。

考点:Softmax 的计算复杂度与词表大小成线性关系 $O(V)$,这是 Word2Vec 原始版本的最大瓶颈,也是后续所有优化方法(Hierarchical Softmax、Negative Sampling)要解决的核心问题。

4.2 解决方案之一:Hierarchical Softmax(层次 Softmax) [07:32]

核心思想:不再一次性在 10,000 个类别上做分类,而是构建一棵二叉树分类器。

工作方式(以 10,000 词为例):

  • 第一个二分类器:判断目标词在前 5,000 词还是后 5,000 词。
  • 第二个分类器:判断在前 2,500 词还是后 2,500 词。
  • 依次递归,直到到达叶子节点——即确定具体是哪个词。

特点:

  • 树中每个内部节点都只是一个二分类器(如 logistic 分类器)。
  • 无需对全部词表求和即可完成一次分类。
  • 计算复杂度从线性 $O(V)$ 降为对数级 $O(\log V)$。

推导:一棵有 V 个叶子的平衡二叉树深度约为 $\log_2 V$,所以从根到叶只需约 $\log_2 V$ 次二分类决策。

4.3 实践中层次 Softmax 树的构建技巧 [08:44]

易错点:实际使用的层次 Softmax 并非"完美平衡树"(不是左右分支词数完全相等的对称树)。

实际构建策略:

  • 高频词放在树的上层(靠近根),如 "the"、"of"。
  • 低频词埋在树的深处,如 "durian"(榴莲)。

原因:

  • 高频词被访问频率高,只需少量遍历即可到达,节省计算。
  • 低频词被访问频率低,即使埋得深,也不会频繁付出深层遍历的代价。

思考:这是一种"按访问频率优化数据结构"的经典工程思路,类似哈夫曼编码中高频符号用短码。


五、如何采样上下文 C [10:29]

选定上下文 C 后,目标 T 可在 C 的 ±10 词窗口内采样。但如何选择 C 本身是关键问题。

5.1 直接均匀随机采样的缺陷

若直接从训练语料中均匀随机采样:

  • 高频词(如 "the"、"of"、"a"、"to")会被极其频繁地选为上下文。
  • 低频词(如 "orange"、"apple"、"durian")则很少被选中。

后果:

  • 训练集被高频词主导。
  • 几乎所有更新精力都花在更新高频词的嵌入 $e_c$ 上。
  • 低频词的嵌入(如 $e_{durian}$)得不到充分更新。

5.2 实践中的采样策略

实际做法:上下文词分布 $p(c)$ 不是完全均匀随机,而是采用一些启发式方法,在高频词与低频词之间取得平衡。

理解:这类方法通常是对词频做某种"平滑"或"次采样"(subsampling),降低高频词被采样的概率,同时保证低频词仍有足够曝光机会。


六、Word2Vec 的两种模型:Skip-Gram 与 CBOW [11:54]

阅读 Mikolov 等人的原始论文会发现,Word2Vec 包含两个版本:

模型 输入 输出
Skip-Gram 一个上下文词 预测窗口内随机一个目标词
CBOW(Continuous Bag-of-Words,连续词袋模型) 中间词周围的上下文词 预测中间词
  • CBOW 用周围的上下文词来预测中间词。
  • 两种模型各有优缺点,都有效。

理解:Skip-Gram 适合处理低频词(因为每个词都会作为"输入"被多次训练);CBOW 训练更快、对高频词效果更好。选择取决于具体任务和数据分布。


七、本讲总结与下一讲预告 [12:21]

核心结论

  • Skip-Gram 模型的核心问题:Softmax 步骤计算代价极高,因为分母需要对整个词表求和。
  • 本讲介绍了 Hierarchical Softmax 作为加速方案之一。

下一讲预告

  • 将介绍另一种方法——Negative Sampling(负采样)。
  • 它更简单,且能有效解决"Softmax 分母需对全词表求和"的问题。
  • 通过修改训练目标,使训练运行更高效,从而支持更大的训练集,学到更好的词嵌入。

关键概念速查表

概念 简要解释
Word2Vec 学习词向量的方法集合,含 Skip-Gram 与 CBOW
Skip-Gram 用单个上下文词预测窗口内随机目标词
CBOW 用周围上下文词预测中间词
One-hot 向量 仅一位为 1 的稀疏表示,与嵌入矩阵相乘等价于查表
嵌入矩阵 E 存储所有词向量的可学习矩阵
Softmax 将得分转为概率分布,分母需对全词表求和
Hierarchical Softmax 用二叉树分类器替代平坦 Softmax,复杂度 $O(\log V)$
负对数似然 Softmax 的标准损失函数
负采样 下一讲内容,另一种加速 Softmax 的方法

标签 / 关键词

Word2Vec Skip-Gram CBOW 词嵌入 Word Embeddings Softmax Hierarchical Softmax 层次Softmax 负采样 Negative Sampling Mikolov 自然语言处理 NLP 吴恩达深度学习 序列模型 上下文采样 计算复杂度 one-hot 嵌入矩阵 自监督学习


生成时间:2026-10-11 00:27:17 生成平台:VideoNote www.xygy.top