嵌入矩阵 (Embedding Matrix)

接下来我们要将学习词嵌入这一问题具体化,当你应用算法来学习词嵌入时,实际上是学习一个嵌入矩阵,我们来看一下这是什么意思。

和之前一样,假设我们的词汇表含有10,000个单词,词汇表里有a,aaron,orange,zulu,可能还有一个未知词标记<UNK>。我们要做的就是学习一个嵌入矩阵 EEE,它将是一个300×10,000的矩阵,如果你的词汇表里有10,000个,或者加上未知词就是10,001维。这个矩阵的各列代表的是词汇表中10,000个不同的单词所代表的不同向量。假设orange的单词编号是6257(下图编号1所示),代表词汇表中第6257个单词,我们用符号 O6527O_{6527}O6527 来表示这个one-hot向量,这个向量除了第6527个位置上是1(下图编号2所示),其余各处都为0,显然它是一个10,000维的列向量,它只在一个位置上有1,它不像图上画的那么短,它的高度应该和左边的嵌入矩阵的宽度相等。

假设这个嵌入矩阵叫做矩阵 EEE ,注意如果用 EEE 去乘以右边的one-hot向量(上图编号3所示),也就是,那么就会得到一个300维的向量, EEE 是300×10,000的,是10,000×1的,所以它们的积是300×1的,即300维的向量。要计算这个向量的第一个元素,你需要做的是把 EEE 的第一行(上图编号4所示)和 O6527O_{6527}O6527 的整列相乘,不过 O6527O_{6527}O6527 的所有元素都是0,只有6257位置上是1,最后你得到的这个向量的第一个元素(上图编号5所示)就是orange这一列下的数字(上图编号6所示)。然后我们要计算这个向量的第二个元素,就是把 EEE 的第二行(上图编号7所示)和这个 O6527O_{6527}O6527 相乘,和之前一样,然后得到第二个元素(上图编号8所示),以此类推,直到你得到这个向量剩下的所有元素(上图编号9所示)。

这就是为什么把矩阵和这个one-hot向量相乘,最后得到的其实就是这个300维的列,就是单词orange下的这一列,它等于 e6527e_{6527}e6527 ,这个符号是我们用来表示这个300×1的嵌入向量的符号,它表示的单词是orange

更广泛来说,假如说有某个单词w,那么 ewe_wew 就代表单词w的嵌入向量。同样, EOj,OjEO_j,O_jEOjOj 就是只有第 jjj 个位置是1的one-hot向量,得到的结果就是 eje_jej ,它表示的是字典中单词 jjj 的嵌入向量。

在这一小节中,要记住的一件事就是我们的目标是学习一个嵌入矩阵 EEE 。在下节视频中你将会随机地初始化矩阵 EEE ,然后使用梯度下降法来学习这个300×10,000的矩阵中的各个参数, EEE 乘以这个one-hot向量(上图编号1所示)会得到嵌入向量。再多说一点,当我们写这个等式(上图编号2所示)的时候,写出这些符号是很方便的,代表用矩阵 EEE 乘以one-hot向量 OjO_jOj 。但当你动手实现时,用大量的矩阵和向量相乘来计算它,效率是很低下的,因为one-hot向量是一个维度非常高的向量,并且几乎所有元素都是0,所以矩阵向量相乘效率太低,因为我们要乘以一大堆的0。所以在实践中你会使用一个专门的函数来单独查找矩阵 EEE 的某列,而不是用通常的矩阵乘法来做,但是在画示意图时(上图所示,即矩阵 EEE 乘以one-hot向量示意图),这样写比较方便。但是例如在Keras中就有一个嵌入层,然后我们用这个嵌入层更有效地从嵌入矩阵中提取出你需要的列,而不是对矩阵进行很慢很复杂的乘法运算。

在本视频中你见到了在学习嵌入向量的过程中用来描述这些算法的符号以及关键术语,矩阵 EEE 它包含了词汇表中所有单词的嵌入向量。在下节视频中,我们将讨论学习矩阵 EEE 的具体算法。

课程板书

2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授相关推荐

  1. 深度学习教程(6) | 神经网络优化算法(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/35 本文地址:https://www.showmeai.tech/article-d ...

  2. 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...

  3. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  4. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  5. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  6. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

  7. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  8. 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.9 神经网络的梯度下降法 回到目录 3.11 随机初始化 直观理解反向传播 (Backpropagation Intuition (Optional)) 这个视频主要是推 ...

  9. 2.5 学习词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授

    学习词嵌入 (Learning Word Embeddings) 在本节视频中,你将要学习一些具体的算法来学习词嵌入.在深度学习应用于学习词嵌入的历史上,人们一开始使用的算法比较复杂,但随着时间推移, ...

最新文章

  1. oracle包写入程序失败_ORA-12571 : TNS : 包写入程序失败
  2. python经典问题在stack overflow上的回答
  3. 细述vim编码格式配置
  4. 探索 YOLO v3 实现细节 - 第6篇 预测 (完结)
  5. 蝉联IDC机器学习平台市场No.1 第四范式市场领先优势持续扩大
  6. JSESSIONID的简单说明
  7. Java文件类字符串getAbsolutePath()方法(带示例)
  8. 1000瓶药水,1瓶有毒药,几只小白鼠能够找出毒药
  9. SpringBoot配置logback-spring.xml日志
  10. 产品经理高质量产物的五步思维法
  11. 浅谈C#ref和out
  12. C#基础知识-编写第一个程序(二)
  13. 技术干货 | Serverless技术架构——极简运维 无限扩容
  14. 算法:回溯五 数组全排列permutations
  15. idea设置背景护眼色
  16. 从学习2021美赛O奖论文到获得2022美赛M奖——论文精读经验分享
  17. ubuntu等linux系统如何阅读caj文档
  18. 读nandflash---根据数据手册K9GAG08U0D
  19. 2021-08-05SpringCloud升级之路2020.0.x版-5.所有项目的parent与spring-framework-common说明
  20. WebSocket接口测试方法

热门文章

  1. 隐藏Nginx或Apache以及PHP的版本号的方法
  2. 分享大麦UWP版本开发历程-03.GridView或ListView 滚动底部自动加载后续数据
  3. hdu 2031 进制转换
  4. Paper Review: Bayesian Shrinkage towards Sharp Minimaxity
  5. WPF 3D 学习 - 3D材质初步
  6. C#中协变和逆变的基本概念、List和List.Select方法的命名空间
  7. Windows C/C++编程窗口子类化学习
  8. 使用CUrl断点续传下载Linux内核5.6.2源码
  9. 软件测试的左移方法(译)
  10. python_ 学习笔记(hello world)