使用词嵌入 (Using Word Embeddings)

上一个视频中,你已经了解不同单词的特征化表示了。这节你会看到我们如何把这种表示方法应用到NLP应用中。

我们从一个例子开始,我们继续用命名实体识别的例子,如果你要找出人名,假如有一个句子:“Sally Johnson is an orange farmer.”(Sally Johnson是一个种橙子的农民),你会发现Sally Johnson就是一个人名,所以这里的输出为1。之所以能确定Sally Johnson是一个人名而不是一个公司名,是因为你知道种橙子的农民一定是一个人,前面我们已经讨论过用one-hot来表示这些单词, x<1>x^{<1>}x<1>x<2>x^{<2>}x<2> 等等。

但是如果你用特征化表示方法,嵌入的向量,也就是我们在上个视频中讨论的。那么用词嵌入作为输入训练好的模型,如果你看到一个新的输入:“Robert Lin is an apple farmer.”(Robert Lin是一个种苹果的农民),因为知道orangeapple很相近,那么你的算法很容易就知道Robert Lin也是一个人,也是一个人的名字。一个有意思的情况是,要是测试集里这句话不是“Robert Lin is an apple farmer.”,而是不太常见的词怎么办?要是你看到:“Robert Lin is a durian cultivator.”(Robert Lin是一个榴莲培育家)怎么办?榴莲(durian)是一种比较稀罕的水果,这种水果在新加坡和其他一些国家流行。如果对于一个命名实体识别任务,你只有一个很小的标记的训练集,你的训练集里甚至可能没有durian(榴莲)或者cultivator(培育家)这两个词。但是如果你有一个已经学好的词嵌入,它会告诉你durian(榴莲)是水果,就像orange(橙子)一样,并且cultivator(培育家),做培育工作的人其实跟farmer(农民)差不多,那么你就有可能从你的训练集里的“an orange farmer”(种橙子的农民)归纳出“a durian cultivator”(榴莲培育家)也是一个人。

词嵌入能够达到这种效果,其中一个原因就是学习词嵌入的算法会考察非常大的文本集,也许是从网上找到的,这样你可以考察很大的数据集可以是1亿个单词,甚至达到100亿也都是合理的,大量的无标签的文本的训练集。通过考察大量的无标签文本,很多都是可以免费下载的,你可以发现orange(橙子)和durian(榴莲)相近,farmer(农民)和cultivator(培育家)相近。因此学习这种嵌入表达,把它们都聚集在一块,通过读取大量的互联网文本发现了orange(橙子)和durian(榴莲)都是水果。接下来你可以把这个词嵌入应用到你的命名实体识别任务当中,尽管你只有一个很小的训练集,也许训练集里有100,000个单词,甚至更小,这就使得你可以使用迁移学习,把你从互联网上免费获得的大量的无标签文本中学习到的知识,能够分辨orange(橙子)、apple(苹果)和durian(榴莲)都是水果的知识,然后把这些知识迁移到一个任务中,比如你只有少量标记的训练数据集的命名实体识别任务中。当然了,这里为了简化我只画了单向的RNN,事实上如果你想用在命名实体识别任务上,你应该用一个双向的RNN,而不是这样一个简单的。

总结一下,这是如何用词嵌入做迁移学习的步骤。

第一步,先从大量的文本集中学习词嵌入。一个非常大的文本集,或者可以下载网上预训练好的词嵌入模型,网上你可以找到不少,词嵌入模型并且都有许可。

第二步,你可以用这些词嵌入模型把它迁移到你的新的只有少量标注训练集的任务中,比如说用这个300维的词嵌入来表示你的单词。这样做的一个好处就是你可以用更低维度的特征向量代替原来的10000维的one-hot向量,现在你可以用一个300维更加紧凑的向量。尽管one-hot向量很快计算,而学到的用于词嵌入的300维的向量会更加紧凑。

第三步,当你在你新的任务上训练模型时,在你的命名实体识别任务上,只有少量的标记数据集上,你可以自己选择要不要继续微调,用新的数据调整词嵌入。实际中,只有这个第二步中有很大的数据集你才会这样做,如果你标记的数据集不是很大,通常我不会在微调词嵌入上费力气。

当你的任务的训练集相对较小时,词嵌入的作用最明显,所以它广泛用于NLP领域。我只提到一些,不要太担心这些术语(下问列举的一些NLP任务),它已经用在命名实体识别,用在文本摘要,用在文本解析、指代消解,这些都是非常标准的NLP任务。

词嵌入在语言模型、机器翻译领域用的少一些,尤其是你做语言模型或者机器翻译任务时,这些任务你有大量的数据。在其他的迁移学习情形中也一样,如果你从某一任务A迁移到某个任务B,只有A中有大量数据,而B中数据少时,迁移的过程才有用。所以对于很多NLP任务这些都是对的,而对于一些语言模型和机器翻译则不然。

最后,词嵌入和人脸编码之间有奇妙的关系,你已经在前面的课程学到了关于人脸编码的知识了,如果你上了卷积神经网络的课程的话。你应该还记得对于人脸识别,我们训练了一个Siamese网络结构,这个网络会学习不同人脸的一个128维表示,然后通过比较编码结果来判断两个图片是否是同一个人脸,这个词嵌入的意思和这个差不多。在人脸识别领域大家喜欢用编码这个词来指代这些向量 f(x(i)),f(x(j))f(x^{(i)}),f(x^{(j)})f(x(i)),f(x(j)) ,(上图编号1所示),人脸识别领域和这里的词嵌入有一个不同就是,在人脸识别中我们训练一个网络,任给一个人脸照片,甚至是没有见过的照片,神经网络都会计算出相应的一个编码结果。上完后面几节课,你会更明白,我们学习词嵌入则是有一个固定的词汇表,比如10000个单词,我们学习向量 e1e_1e1e10000e_{10000}e10000 ,学习一个固定的编码,每一个词汇表的单词的固定嵌入,这就是人脸识别与我们接下来几节视频要讨论的算法之间的一个不同之处。这里的术语编码(encoding)和嵌入(embedding)可以互换,所以刚才讲的差别不是因为术语不一样,这个差别就是,人脸识别中的算法未来可能涉及到海量的人脸照片,而自然语言处理有一个固定的词汇表,而像一些没有出现过的单词我们就记为未知单词。

这节视频里,你看到如何用词嵌入来实现这种类型的迁移学习,并且通过替换原来的one-hot表示,而是用之前的嵌入的向量,你的算法会泛化的更好,你也可以从较少的标记数据中进行学习。接下来我会给你展示一些词嵌入的特性,这之后再讨论学习这些词嵌入的算法。下个视频我们会看到词嵌入在做类比推理中发挥的作用。

课程板书

2.2 使用词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授相关推荐

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

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

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

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

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

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

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

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

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

    词嵌入除偏 (Debiasing Word Embeddings) 现在机器学习和人工智能算法正渐渐地被信任用以辅助或是制定极其重要的决策,因此我们想尽可能地确保它们不受非预期形式偏见影响,比如说性别 ...

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

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

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

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

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

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

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

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

最新文章

  1. Oracle CEO狂妄而真实的演讲
  2. editplus 配置 golang 开发调试环境
  3. python官方网站进不去-解决CentOS7 卡在开机界面进不去登录界面
  4. [swustoj 856] Huge Tree
  5. javaScript第一天(1)
  6. 【JSON】FastJson 打印输格式化输出
  7. android软件百分比怎么实现,Android自实现百分比布局
  8. 2010-05-19 项目升级计划
  9. 有关视图状态(ViewState)的一些问题
  10. Android中GsonFormat的安装及使用
  11. 实现asp程序调用摄像头并控制摄像头进行拍照
  12. 富士施乐Fuji Xerox DocuCentre 2003 驱动
  13. 点割集、边割集、点连通度、边连通度
  14. 3dmax和python做3d动画_maya三维动画师和程序员(python)哪个前景好一些?
  15. 比尔盖茨在1974年时候的简历
  16. Power Apps Android APK(v3.22081.11)下载
  17. 电脑拓展显示器软件显示不清晰问题
  18. 用计算机数字弹侧脸,侧脸钢琴简谱-数字双手-于果
  19. 【水环境病原菌数据库开发心得】
  20. python web开发第三方库_以下属于Python中Web开发框架第三方库的是__________

热门文章

  1. 《HelloGitHub》第 19 期
  2. BZOJ 3781: 小B的询问 [莫队]
  3. NeuSoft(2)添加系统调用
  4. Oracle笔记 八、PL/SQL跳转/判断/循环语句块
  5. BS程序代码与安全与基本攻击/防御模式
  6. 图解Ollydbg简单逆向操作案例
  7. eclipse调试一个struts2例子时遇到的一些问题总结
  8. SNMP协议介绍和操作截图
  9. 区块链中的基本概念整理
  10. Openshift API部分源码学习笔记(一)