2020-11-4 吴恩达DL学习-C5 序列模型-W2 自然语言处理与词嵌入(2.5 学习词嵌入-语言模型问题,输入一些上下文,例如目标词的前4个词然后预测出目标词)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

2.5 学习词嵌入 Learning word embeddings

在本节课中,你将要学习一些具体的算法来学习词嵌入。在深度学习应用于学习词嵌入的历史上,人们一开始使用的算法比较复杂,但随着时间推移,研究者们不断发现他们能用更加简单的算法来达到一样好的效果,特别是在数据集很大的情况下。

但有一件事情就是,现在很多最流行的算法都十分简单,如果我一开始就介绍这些简单的算法,你可能会觉得这有点神奇,这么简单的算法究竟是怎么起作用的?稍微复杂一些的算法开始,因为我觉得这样更容易对算法的运作方式有一个更直观的了解,之后我们会对这些算法进行简化,使你能够明白即使一些简单的算法也能得到非常好的结果,我们开始吧。

假如你在构建一个语言模型,并且用NN来实现这个模型。于是在训练过程中,你可能想要你的NN能够做到比如输入:“I want a glass of orange ___.”,然后预测这句话的下一个词。在每个单词下面,我都写上了这些单词对应词汇表中的索引。
在这里插入图片描述

实践证明,建立一个语言模型是学习词嵌入的好方法,我提出的这些想法是源于Yoshua Bengio,Rejean Ducharme,Pascal Vincent,Rejean Ducharme,Pascal Vincent还有Christian Jauvin。

下面我将介绍如何建立NN来预测序列中的下一个单词。
在这里插入图片描述

如上图他,让我为这些词列一个表格,“I want a glass of orange”,我们从第一个词 I 开始,建立一个one-hot向量表示这个单词I。

  • 这是一个one-hot向量,在第4343个位置是1,它是一个10,000维的向量 O 4343 O_{4343} O4343
  • 然后要做的就是生成一个参数矩阵 E E E
  • 然后用 E E E乘以 O 4343 O_{4343} O4343,得到嵌入向量 e 4343 e_{4343} e4343,这一步意味着 e 4343 e_{4343} e4343是由矩阵乘以one-hot向量得到的。

然后我们对其他的词也做相同的操作,单词want在第9665个,我们将与这个one-hot向量( O 9665 O_{9665} O9665)相乘得到嵌入向量 e 9665 e_{9665} e9665

对其他单词也是一样,a是字典中的第一个词,因为a是第一个字母,由 O 1 O_{1} O1得到 e 1 e_{1} e1

同样地,其他单词也这样操作。
在这里插入图片描述

于是现在你有许多300维的嵌入向量。我们能做的就是把它们全部放进NN中,经过NN以后再通过softmax层,这个softmax也有自己的参数,然后这个softmax分类器会在10,000个可能的输出中预测结尾这个单词。

假如说在训练集中有juice这个词,训练过程中softmax的目标就是预测出单词juice,就是结尾的这个单词。上图中的这个隐藏层有自己的参数,我这里用 W [ 1 ] W^{[1]} W[1] b [ 1 ] b^{[1]} b[1]来表示,而softmax层也有自己的参数 W [ 2 ] W^{[2]} W[2] b [ 2 ] b^{[2]} b[2]

如果它们用的是300维大小的嵌入向量,而这里有6个词,6×300,所以这个输入会是一个1800维的向量,这是通过将这6个嵌入向量堆在一起得到的。

实际上更常见的是有一个固定的历史窗口。
在这里插入图片描述

举个例子,如上图,你总是想预测给定四个单词后的下一个单词,注意这里的 4 是算法的超参数。这就是如何适应很长或者很短的句子,方法就是总是只看前4个单词,所以说我只用这4个单词(a、glass、of、orange)而不去看这几个词(I、want)。
在这里插入图片描述

如果你一直使用一个4个词的历史窗口,这就意味着你的NN会输入一个1200维的特征变量到这个层中,然后再通过softmax来预测输出。

选择有很多种,用一个固定的历史窗口就意味着你可以处理任意长度的句子,因为输入的维度总是固定的。所以这个模型的参数就是矩阵 E E E,对所有的单词用的都是同一个矩阵 E E E,而不是对应不同的位置上的不同单词用不同的矩阵。

然后这些权重 W [ 1 ] W^{[1]} W[1] b [ 1 ] b^{[1]} b[1] W [ 2 ] W^{[2]} W[2] b [ 2 ] b^{[2]} b[2]也都是算法的参数,你可以用反向传播来进行梯度下降来最大化训练集似然,通过序列中给定的4个单词去重复地预测出语料库中下一个单词什么。
在这里插入图片描述

事实上通过这个算法能很好地学习词嵌入,原因是,如果你还记得我们的orange jucie,apple juice的例子,在这个算法的激励下,apple和orange会学到很相似的嵌入,这样做能够让算法更好地拟合训练集,因为它有时看到的是orange juice,有时看到的是apple juice。

如果你只用一个300维的特征向量来表示所有这些词,算法会发现要想最好地拟合训练集,就要使apple(苹果)、orange(橘子)、grape(葡萄)和pear(梨)等等,还有像durian(榴莲)这种很稀有的水果都拥有相似的特征向量。

这就是早期最成功的学习词嵌入,学习这个矩阵 E E E的算法之一。现在我们先概括一下这个算法,看看我们该怎样来推导出更加简单的算法。
在这里插入图片描述

现在我想用一个更复杂的句子作为例子来解释这些算法,假设在你的训练集中有这样一个更长的句子:“I want a glass of orange juice to go along with my cereal.”。我们在上面看到的是算法预测出了某个单词juice,我们把它叫做目标词target,它是通过一些上下文context,在本例中也就是这前4个词(a glass of orange)推导出来的。

如果你的目标是学习一个嵌入向量,研究人员已经尝试过很多不同类型的上下文。

  • 如果你要建立一个语言模型,那么一般选取目标词之前的几个词作为上下文。
  • 但如果你的目标不是学习语言模型本身的话,那么你可以选择其他的上下文。

在这里插入图片描述

比如说,你可以提出这样一个学习问题,它的上下文是左边和右边的四个词,你可以把目标词左右各4个词作为上下文。这就意味着我们提出了一个这样的问题,算法获得左边4个词,也就是a glass of orange,还有右边四个词to go along with,然后要求预测出中间这个词。

提出这样一个问题,这个问题需要将左边的还有右边这4个词的嵌入向量提供给NN,就像我们之前做的那样来预测中间的单词是什么,来预测中间的目标词,这也可以用来学习词嵌入。
在这里插入图片描述

或者你想用一个更简单的上下文,也许只提供目标词的前一个词,比如只给出orange这个词来预测orange后面是什么,这将会是不同的学习问题。只给出一个词orange来预测下一个词是什么,你可以构建一个NN,只把目标词的前一个词或者说前一个词的嵌入向量输入NN来预测该词的下一个词。
在这里插入图片描述

还有一个效果非常好的做法就是上下文是附近一个单词,它可能会告诉你单词glass是一个邻近的单词。或者说我看见了单词glass,然后附近有一个词和glass位置相近,那么这个词会是什么?这就是用附近的一个单词作为上下文。我们将在下节课中把它公式化,这用的是一种Skip-Gram模型的思想。这是一个简单算法的例子,因为上下文相当的简单,比起之前4个词,现在只有1个,但是这种算法依然能工作得很好。
在这里插入图片描述

研究者发现,如果你真想建立一个语言模型,用目标词的前几个单词作为上下文是常见做法。但如果你的目标是学习词嵌入,那么你就可以用上面这些其他类型的上下文,它们也能得到很好的词嵌入。我会在下节课详细介绍这些,我们会谈到Word2Vec模型。

总结一下,在本节课中你学习了语言模型问题,模型提出了一个机器学习问题,即输入一些上下文,例如目标词的前4个词然后预测出目标词,学习了提出这些问题是怎样帮助学习词嵌入的。

在下节课,你将看到如何用更简单的上下文和更简单的算法来建立从上下文到目标词的映射,这将让你能够更好地学习词嵌入,一起进入下节课学习Word2Vec模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值