
视频元信息
- 课程:吴恩达深度学习专项课程(Deep Learning Specialization)
- 章节:序列模型 · 词嵌入(Word Embeddings)· 2.4 矩阵嵌入
- 时长:约 6 分钟
- 语言:英文讲解(中英字幕)
内容摘要(TL;DR)
本节介绍词嵌入的矩阵表示方法。核心是构造一个 300 × 10000 的嵌入矩阵 E,每一列对应词表中的一个词的 300 维嵌入向量。通过 E 乘以 one-hot 向量,可以"选出"目标词对应的嵌入列。实际实现中不用矩阵乘法,而是用查表(lookup)操作,因为 one-hot 向量绝大多数元素为 0,矩阵乘法极其低效。
一、嵌入矩阵 E 的定义 [00:30]
本节的核心目标:学习一个嵌入矩阵 E。
要点:
- 嵌入矩阵 E 的维度是 300 × 10000。
- 300 是每个词的嵌入向量维度(embedding dimension)。
- 10000 是词表(vocabulary)的大小,即一共有 10000 个不同的词。
- 矩阵的每一列对应词表中的一个词,即每个词都有一个 300 维的嵌入向量。
- 视频举例:单词 orange 在词表中的编号是 6257。
理解:可以把嵌入矩阵想象成一张"词典表",每一列就是某个词的"语义指纹"。列数 = 词表大小,行数 = 人为设定的嵌入维度(本例为 300)。
易错点: 注意区分"行"和"列"——每一列代表一个词,不要把行误认为词。
二、One-hot 向量表示法 [01:05]
要点:
- 用一个记号 $O_{6257}$ 表示单词 orange 的 one-hot 向量。
- 这是一个 10000 维向量,除了第 6257 个位置为 1,其余全部为 0。
- 视频强调:图示中 one-hot 向量"画得不成比例",它实际上应该和左边的嵌入矩阵一样高(都是 10000 维)。
理解:one-hot 是一种"稀疏"编码——用一个很长的向量,只有一个位置是 1,用来唯一标识词表中的某个词。缺点是维度高、且无法表达词与词之间的语义关系。
三、E × one-hot = 嵌入向量(核心推导)[01:39]
要点:
- 计算 $E \cdot O_{6257}$:
- E 是 300 × 10000
- O 是 10000 × 1
- 乘积结果是 300 × 1 的向量
- 推导过程(逐元素分析):
- 计算结果的第一个元素:用 E 的第一行与 $O_{6257}$ 相乘。由于 $O_{6257}$ 中只有第 6257 位是 1,其余全是 0,所以结果就等于"orange 那一列在 E 第一行的那个元素"。
- 计算结果的第二个元素:同理,等于 orange 列在 E 第二行的元素。
- 依次类推……
- 结论:$E \cdot O_{6257}$ 的结果,正好选出了 E 中对应 orange 的那一列(300 维)。
推导:矩阵乘 one-hot 向量的本质,就是"按 one-hot 中 1 的位置,从矩阵里挑出对应的那一列"。这是理解词嵌入查表操作的关键。
公式记号:
$$E \cdot O_{6257} = E_{6257}$$
- $E_{6257}$:表示单词 orange 的 300 维嵌入向量。
- 更一般地:$E \cdot O_j = E_j$,即 $E_j$ 是词表中第 j 个词的嵌入向量。
考点: 牢记这个等价关系——E 乘 one-hot 向量 = 取出对应词的嵌入列。
四、学习目标与初始化 [04:20]
要点:
- 本节要记住的核心:我们的目标是学习嵌入矩阵 E。
- 下一节视频会讲:随机初始化 E,然后通过训练学习这个 300 × 10000 矩阵的所有参数。
- 学好后,$E$ 乘以 one-hot 向量就得到词嵌入向量。
理解:E 的参数不是人工设计的,而是通过梯度下降从数据中"学"出来的。这正是词嵌入能捕捉语义相似性的根本原因——语义相近的词,其列向量在训练中会逐渐靠近。
五、实现细节:为什么不用矩阵乘法 [04:35]
这是本节最容易被忽略、但工程上极其重要的点:理论公式用矩阵乘法,实际实现用查表(lookup)。
要点:
- 数学上写作 $E \cdot O$(矩阵乘 one-hot 向量)。
- 但实现时不要真的做矩阵向量乘法,原因:
- one-hot 向量是高维的(10000 维);
- 其中绝大多数元素都是 0;
- 矩阵乘法会把大量元素乘以 0,极其低效、浪费计算。
- 实际做法:使用一个专门函数,直接"查表"取出 E 中想要的那一列,而不是做矩阵乘法。
框架示例:
- 在 Keras 中有一个 Embedding 层(embedding layer)。
- 使用该层时,它会更高效地直接从嵌入矩阵中取出所需的列,而不是做慢得多的矩阵向量乘法。
思考:这本质上是"稀疏操作"的优化——既然 one-hot 只有一位是 1,那么"乘"就等于"取"。工程实现中把 O(300×10000) 的乘法降为 O(300) 的索引访问,性能提升巨大。
容易踩坑的点:
- 理论 ≠ 实现:论文/公式里写矩阵乘法是为了表达清晰,代码里必须用查表。
- 不要手动构造 one-hot 再乘:在大词表(如百万级)下,构造 one-hot 本身就浪费内存。
- Keras Embedding 层的输入是整数索引,不是 one-hot 向量——这正是查表思想的体现。
六、本节小结 [05:38]
要点回顾:
- 本节介绍了描述词嵌入算法的记号(notation)。
- 关键术语:矩阵 E,它包含词表中所有词的嵌入向量。
- 核心关系:$E \cdot O_j = E_j$(矩阵乘 one-hot = 取出第 j 个词的嵌入)。
- 实现要点:用查表代替矩阵乘法。
- 下一节:开始讲解学习矩阵 E 的具体算法。
关键标签 / 关键词
词嵌入 Word Embeddings 嵌入矩阵 Embedding Matrix one-hot向量 查表操作 lookup Keras Embedding层 自然语言处理 NLP 吴恩达 深度学习 序列模型 稀疏向量 300维嵌入 词表vocabulary
生成时间:2026-10-11 00:27:38 生成平台:VideoNote www.xygy.top