词汇表征 (Word Representation)

上周我们学习了RNNGRU单元和LSTM单元。本周你会看到我们如何把这些知识用到NLP上,用于自然语言处理,深度学习已经给这一领域带来了革命性的变革。其中一个很关键的概念就是词嵌入(word embeddings),这是语言表示的一种方式,可以让算法自动的理解一些类似的词,比如男人对女人,比如国王对王后,还有其他很多的例子。通过词嵌入的概念你就可以构建NLP应用了,即使你的模型标记的训练集相对较小。这周的最后我们会消除词嵌入的偏差,就是去除不想要的特性,或者学习算法有时会学到的其他类型的偏差。


现在我们先开始讨论词汇表示,目前为止我们一直都是用词汇表来表示词,上周提到的词汇表,可能是10000个单词,我们一直用one-hot向量来表示词。比如如果man(上图编号1所示)在词典里是第5391个,那么就可以表示成一个向量,只在第5391处为1(上图编号2所示),我们 O5391O_{5391}O5391 用代表这个量,这里的 OOO 代表one-hot。接下来,如果woman是编号9853(上图编号3所示),那么就可以用 O9853O_{9853}O9853 来表示,这个向量只在9853处为1(上图编号4所示),其他为0,其他的词king、queen、apple、orange都可以这样表示出来这种表示方法的一大缺点就是它把每个词孤立起来,这样使得算法对相关词的泛化能力不强。

举个例子,假如你已经学习到了一个语言模型,当你看到“I want a glass of orange ___”,那么下一个词会是什么?很可能是juice。即使你的学习算法已经学到了“I want a glass of orange juice”这样一个很可能的句子,但如果看到“I want a glass of apple ___”,因为算法不知道appleorange的关系很接近,就像manwomankingqueen一样。所以算法很难从已经知道的orange juice是一个常见的东西,而明白apple juice也是很常见的东西或者说常见的句子。这是因为任何两个one-hot向量的内积都是0,如果你取两个向量,比如kingqueen,然后计算它们的内积,结果就是0。如果用appleorange来计算它们的内积,结果也是0。很难区分它们之间的差别,因为这些向量内积都是一样的,所以无法知道appleorange要比kingorange,或者queenorange相似地多。

换一种表示方式会更好,如果我们不用one-hot表示,而是用特征化的表示来表示每个词,man,woman,king,queen,apple,orange或者词典里的任何一个单词,我们学习这些词的特征或者数值。

举个例子,对于这些词,比如我们想知道这些词与Gender(性别)的关系。假定男性的性别为-1,女性的性别为+1,那么man的性别值可能就是-1,而woman就是+1。最终根据经验king就是-0.95,queen是+0.97,appleorange没有性别可言。

另一个特征可以是这些词有多Royal(高贵),所以这些词,manwoman和高贵没太关系,所以它们的特征值接近0。而kingqueen很高贵,appleorange跟高贵也没太大关系。

那么Age(年龄)呢?manwoman一般没有年龄的意思,也许manwoman隐含着成年人的意思,但也可能是介于youngold之间,所以它们(manwoman)的值也接近0。而通常kingqueen都是成年人,appleorange跟年龄更没什么关系了。

还有一个特征,这个词是否是Food(食物),man不是食物,woman不是食物,kingqueen也不是,但appleorange是食物。

当然还可以有很多的其他特征,从Size(尺寸大小),Cost(花费多少),这个东西是不是alive(活的),是不是一个Action(动作),或者是不是Noun(名词)或者是不是Verb(动词),还是其他的等等。

所以你可以想很多的特征,为了说明,我们假设有300个不同的特征,这样的话你就有了这一列数字(上图编号1所示),这里我只写了4个,实际上是300个数字,这样就组成了一个300维的向量来表示man这个词。接下来,我想用 e5391e_{5391}e5391 这个符号来表示,就像这样(上图编号2所示)。同样这个300维的向量,我用 e9853e_{9853}e9853 代表这个300维的向量用来表示woman这个词(上图编号3所示),这些其他的例子也一样。现在,如果用这种表示方法来表示appleorange这些词,那么appleorange的这种表示肯定会非常相似,可能有些特征不太一样,因为orange的颜色口味,apple的颜色口味,或者其他的一些特征会不太一样,但总的来说appleorange的大部分特征实际上都一样,或者说都有相似的值。这样对于已经知道orange juice的算法很大几率上也会明白apple juice这个东西,这样对于不同的单词算法会泛化的更好。

后面的几个视频,我们会找到一个学习词嵌入的方式,这里只是希望你能理解这种高维特征的表示能够比one-hot更好的表示不同的单词。而我们最终学习的特征不会像这里一样这么好理解,没有像第一个特征是性别,第二个特征是高贵,第三个特征是年龄等等这些,新的特征表示的东西肯定会更难搞清楚。尽管如此,接下来要学的特征表示方法却能使算法高效地发现appleorange会比kingorangequeenorange更加相似。


如果我们能够学习到一个300维的特征向量,或者说300维的词嵌入,通常我们可以做一件事,把这300维的数据嵌入到一个二维空间里,这样就可以可视化了。常用的可视化算法是t-SNE算法,来自于Laurens van der MaatenGeoff Hinton的论文。如果观察这种词嵌入的表示方法,你会发现manwoman这些词聚集在一块(上图编号1所示),kingqueen聚集在一块(上图编号2所示),这些都是人,也都聚集在一起(上图编号3所示)。动物都聚集在一起(上图编号4所示),水果也都聚集在一起(上图编号5所示),像1、2、3、4这些数字也聚集在一起(上图编号6所示)。如果把这些生物看成一个整体,他们也聚集在一起(上图编号7所示)。

在网上你可能会看到像这样的图用来可视化,300维或者更高维度的嵌入。希望你能有个整体的概念,这种词嵌入算法对于相近的概念,学到的特征也比较类似,在对这些概念可视化的时候,这些概念就比较相似,最终把它们映射为相似的特征向量。这种表示方式用的是在300维空间里的特征表示,这叫做嵌入(embeddings)。之所以叫嵌入的原因是,你可以想象一个300维的空间,我画不出来300维的空间,这里用个3维的代替(上图编号8所示)。现在取每一个单词比如orange,它对应一个3维的特征向量,所以这个词就被嵌在这个300维空间里的一个点上了(上图编号9所示),apple这个词就被嵌在这个300维空间的另一个点上了(上图编号10所示)。为了可视化,t-SNE算法把这个空间映射到低维空间,你可以画出一个2维图像然后观察,这就是这个术语嵌入的来源。

词嵌入已经是NLP领域最重要的概念之一了,在自然语言处理领域。本节视频中你已经知道为什么要学习或者使用词嵌入了,下节视频我们会深入讲解如何用这些算法构建NLP算法。

课程板书


2.1 词汇表征-深度学习第五课《序列模型》-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. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

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

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

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

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

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

  8. 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授

    文章目录 目录 第五课 第四课 第三课 第二课 第一课 目录 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1. ...

  9. 3.10 触发字检测-深度学习第五课《序列模型》-Stanford吴恩达教授

    触发字检测 (Trigger Word Detection) 现在你已经学习了很多关于深度学习和序列模型的内容,于是我们可以真正去简便地描绘出一个触发字系统(a trigger word system ...

最新文章

  1. C++ cin.ignore()用法
  2. python 列表推导式 - 列表字典取value
  3. MLlib 编程指导-spark-1.2.0
  4. 【微信网页版】给所有微信群发消息
  5. 监听程序配制及数据备份
  6. 今年最有档次的9个词!(不看后悔)
  7. Jquery.Validation表单验证
  8. tf.image.crop_and_resize()使用
  9. Adapter使用notifyDataSetChanged()刷新数据不更新的原因
  10. 190125每日一句
  11. 编写测试用例方法之等价类划分法
  12. 实例讲解微信小程序倒计时功能
  13. NAS 层架构_01
  14. 矩阵 维度 axis
  15. 魅族设置语音录音服务器,魅族手机微信怎么开启录音权限呀有步骤图吗
  16. 从今往后要认真记录自己的成长啦
  17. win7计算机自动关机设置在哪里设置方法,Win7小技巧:自动关机怎么设置?
  18. mysql是什么?mysql的特点
  19. Show 与 ShowModal 区别
  20. 贝叶斯统计 韦来生 课后题答案 第一章

热门文章

  1. 【oracle】补充 cursor 基本例子
  2. BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】
  3. 新建一个Windows Service的方法
  4. ●BZOJ 1934 [Shoi2007]Vote 善意的投票
  5. AngularJS学习篇(十九)
  6. 一个就简单的数学题 NYOJ 330
  7. junit jumpstart
  8. UA MATH564 概率分布1 二项分布下
  9. GDI对象存储和查看lib文件导出函数
  10. C# mschart 控件的基本使用和图表控件Series的概念