
视频元信息
- 课程:吴恩达深度学习专项课程 · 序列模型(Sequence Models)· 自然语言处理与词嵌入
- 本集标题:学习词嵌入(Learning Word Embeddings)
- 时长:约 10 分钟
- 语言:英文讲解(官方中英字幕)
内容摘要(TL;DR)
本集从「神经语言模型」入手,讲解如何通过预测句子中的下一个词来学习词嵌入矩阵 E。核心思路是:用上下文预测目标词这个任务本身,会倒逼模型为语义相近的词学习出相似的向量。随后吴恩达把这一框架泛化,展示上下文可以有多种选择(前 N 个词、左右各 N 个词、前 1 个词、附近 1 个词),为下一集的 Word2Vec 与 Skip-Gram 做铺垫。
一、为什么从「复杂算法」讲起 [00:00]
要点:词嵌入算法的发展史是「由繁到简」的过程。
- 在深度学习用于学习词嵌入的历史中,研究者最早使用的是相对复杂的算法。
- 随着时间推移,人们发现用越来越简单的算法,在大数据集上依然能得到很好的结果。
- 但今天最流行的一些算法简单到如果一上来就讲,会显得像「魔法」——"这么简单的东西怎么可能 work?"
- 因此吴恩达的教学策略是:先讲稍复杂的算法建立直觉,再逐步简化。
学习提示:这不是知识冗余,而是刻意设计的认知路径。理解了「为什么复杂算法能学到好嵌入」,才能真正理解「为什么简单算法也能 work」。跳过前者直接背 Skip-Gram 公式,往往会在面试追问「为什么」时卡壳。
思考:这体现了深度学习领域一个普遍规律——算法有效性往往先于理论解释。研究者先发现「这样做有效」,再回头寻找「为什么有效」。
二、神经语言模型:用预测下一个词来学嵌入 [00:50]
要点:构建一个神经网络语言模型,通过预测序列中的下一个词,反向学习词嵌入矩阵 E。
2.1 任务设定
以句子为例:
I want a glass of orange juice
目标是让神经网络输入前面的词,预测下一个词。每个词下方标注了它在词表中的索引(index in vocabulary)。
2.2 从 one-hot 到嵌入向量
关键机制:用矩阵 E 把 one-hot 向量映射为稠密嵌入向量。
- 假设词表大小 V = 10,000,则每个词的 one-hot 向量是 10,000 维。
- 例如单词 "I" 的 one-hot 向量在第 4343 位为 1,记作 O₄₃₄₃。
- 定义参数矩阵 E,通过
E × O得到嵌入向量。 - 所以:E₄₃₄₃ = E × O₄₃₄₃,即取出矩阵 E 的第 4343 列。
易错点 / 关键理解:
E × one-hot在数学上等价于「查表」——取矩阵 E 的对应列。实际实现中绝不会真的去做 10,000 维的矩阵乘法,而是直接用索引查表(embedding lookup)。但吴恩达用矩阵乘法表述,是为了让「E 是可学习参数」这一点在梯度下降框架下清晰可见。
推导:设 E 为 300 × 10000 的矩阵,O 为 10000 × 1 的 one-hot 向量,则 E·O 是一个 300 × 1 的向量,且恰好等于 E 的第 k 列(k 为 one-hot 中 1 的位置)。
2.3 网络结构
- 对句子中每个词都做同样的映射,得到一串 300 维的嵌入向量。
- 把这些嵌入向量拼接(stack)后送入神经网络层。
- 网络层后接 Softmax,在 10,000 个词表词中分类,预测最终的目标词。
- 若用 6 个词、每个 300 维,则输入层是 6 × 300 = 1800 维的向量。
2.4 参数构成
| 参数 | 含义 |
|---|---|
| E | 词嵌入矩阵,所有词共享同一个 E |
| W1, B1 | 隐藏层参数 |
| W2, B2 | Softmax 层参数 |
考点:参数共享。所有词位置使用同一个矩阵 E,而不是每个位置一个矩阵。这正是「嵌入」概念的本质——同一个词在任何位置都映射到同一个向量。如果每个位置用不同矩阵,就无法学到统一的词表示。
三、固定历史窗口(Fixed History Window)[04:12]
要点:为处理任意长度句子,通常固定只看前 N 个词作为上下文。
- 实际中更常见的做法是设定一个固定历史窗口,比如「总是用前 4 个词预测下一个词」。
- 这里的 4 是一个超参数(hyperparameter)。
- 好处:输入维度固定,因此可以处理任意长的句子。
- 若用前 4 个词、300 维嵌入,则输入是 4 × 300 = 1200 维的向量。
理解:固定窗口把「变长序列」问题转化为「定长输入」问题,这是早期神经语言模型(如 Bengio 2003 的 NNLM)的核心工程技巧。代价是丢失了超过窗口长度的历史信息——这个局限后来由 RNN/LSTM 和 Transformer 的注意力机制逐步解决。
训练方式
- 用梯度下降(gradient descent)最大化训练集似然。
- 即:给定序列中前 4 个词,预测文本语料中的下一个词。
四、为什么这样能学到好的词嵌入 [05:39]
要点:因为「橙汁」和「苹果汁」都常见,模型为了让预测更准,会自然把 orange 和 apple 的向量拉近。
- 算法有内在动机去为 orange 和 apple 学习相似的词嵌入。
- 原因:这样做能更好地拟合训练集——因为语料中既会出现 "orange juice",也会出现 "apple juice"。
- 在只有 300 维的表示空间里,算法会发现:为了拟合训练集,apple、orange、grape、pear 乃至罕见的 durian(榴莲) 都会被赋予相似的向量。
核心直觉(本集最重要的一句话):词嵌入不是被「设计」出来的,而是被预测任务的梯度下降「逼」出来的副产品。词义相似性来自「它们出现在相似上下文中」这一分布假设。
拓展:这就是分布语义学(Distributional Semantics)的经典假设——"You shall know a word by the company it keeps"(Firth, 1957)。吴恩达用 orange/apple 的例子把这个抽象假设具象化了。
这是早期且相当成功的学习词嵌入算法之一,目标是学习矩阵 E。
五、泛化:上下文可以有多种选择 [06:32]
要点:如果目标不是建语言模型,而是纯粹学词嵌入,那么上下文的定义可以非常自由。
用更长的句子作例子:
... a glass of orange juice to go along with my cereal
设目标词(target word)为 juice,那么「上下文(context)」可以有不同的取法:
5.1 前 N 个词(语言模型自然选择)
- 上下文 = 目标词前面的几个词。
- 这是构建语言模型时最自然的选择。
5.2 左右各 N 个词(双侧上下文)
- 上下文 = 目标词左边 4 个词 + 右边 4 个词。
- 例如目标是 juice,则左侧取
a glass of orange,右侧取to go along with。 - 把这 8 个词的嵌入送入神经网络,预测中间的目标词。
- 同样可以用来学习词嵌入。
5.3 只用前 1 个词
- 上下文 = 只给 orange,问「orange 后面是什么」。
- 构造一个只输入前一个词(或其嵌入)的网络来预测下一个词。
5.4 附近 1 个词(Skip-Gram 的雏形)
- 上下文 = 附近随机一个词。
- 例如告诉模型「glass 在附近」,问「另一个附近的词是什么」。
- 这就是 Skip-Gram 模型的思想,将在下一集正式形式化。
- 上下文从 4 个词简化为仅仅 1 个词,但效果出奇地好(works remarkably well)。
关键结论:
- 若真正想建语言模型 → 用「前几个词」作上下文最自然。
- 若主要目标是学词嵌入 → 上述所有上下文形式都可行,都能得到非常有意义的词嵌入。
六、本集总结与下集预告 [09:34]
要点回顾:
- 展示了语言建模问题如何转化为一个机器学习问题:输入上下文(如前 4 个词),预测目标词。
- 这种问题设定允许学习到好的词嵌入。
- 下一集将展示:用更简单的上下文和更简单的学习算法(从上下文映射到目标词),同样能学到好的词嵌入。
- 下一集主题:Word2Vec 模型。
七、知识补充与延伸【拓展】
7.1 本集在课程中的位置
本集是「自然语言处理与词嵌入」章节的第 5 讲,前面已讲词表表示(one-hot 的缺陷)与词嵌入的直观动机,本集开始进入具体算法。
7.2 历史背景:Bengio 等人的神经语言模型
- 转录中提到的作者(发音近似 "Yoshua Bengio, Réjean Ducharme, Pascal Vincent, Christian Jauvin")对应 2003 年论文 A Neural Probabilistic Language Model。
- 该论文首次系统提出:用神经网络 + 分布式表示(distributed representation)解决维数灾难。
- 这正是吴恩达本集所讲算法的源头。
7.3 计算成本问题
- 本集算法中 Softmax 要在 10,000 个词上归一化,每一步都要计算全部词的概率,代价很高。
- 这个瓶颈催生了后续的优化方法:负采样(Negative Sampling)、层次 Softmax(Hierarchical Softmax)。
- 这些会在后续课程中展开。
7.4 常见踩坑点
- 把 E 误解为「每词一个独立向量」:E 是一个共享矩阵,one-hot 乘法只是查表。
- 混淆「上下文」和「目标」:不同算法的区别往往只在于「谁预测谁」,而不是网络结构本身。
- 以为窗口越大越好:窗口是超参数,过大增加计算量且未必提升表示质量。
- 忽略「任务目标」的差异:建语言模型 vs 学词嵌入,对上下文选择的要求完全不同。
7.5 与后续技术的联系
- Word2Vec(下一集):Skip-Gram 与 CBOW,把上下文简化到极致。
- GloVe:基于全局共现矩阵统计。
- BERT / GPT:把「用上下文预测」的思想推到大规模预训练,本质仍是本集思想的超大规模延伸。
关键标签 / 关键词
词嵌入 Word Embeddings 神经语言模型 Neural Language Model One-hot 向量 嵌入矩阵 E Softmax 固定历史窗口 上下文 Context 目标词 Target Word Skip-Gram Word2Vec 分布语义学 梯度下降 参数共享 吴恩达深度学习 序列模型 自然语言处理
生成时间:2026-10-11 00:50:47 生成平台:VideoNote www.xygy.top