首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

吴恩达深度学习课程笔记(2)

2.3 嵌入矩阵

在我们要对一个词汇表学习词汇嵌入模型时,实质上就是要学习这个词汇表对应的一个嵌入矩阵E。当我们学习好了这样一个嵌入矩阵后,通过嵌入矩阵与对应词的one-hot向量相乘,则可得到该词汇的嵌入,如下图所示:

图4

注意:在实际中,总是利用一些特殊的函数来寻找一种嵌入。

2.4 学习词嵌入

早期的学习算法:

【参考文献:Bengio et.al.,2013, A neural probabilistic language model】

如下面的例子中,我们要通过前面几个单词,预测最后一个单词:

(1)通过将每个单词的one-hot向量与嵌入矩阵相乘,得到相应的词汇嵌入;

(2)利用窗口函数控制影响预测结果的单词数量,并将窗口内词汇嵌入堆叠起来输入到神经网络中;

(3)最后通过softmax层输出整个词汇表各个单词可能的概率。

其中,隐藏层和softmax层都有自己的参数,假设词汇表的大小为(10000),每个单词的Embedding大小是(300),历史窗口大小为44,那么输入的大小即为(300*4=1200),softmax输出大小为词汇表大小(10000)。整个模型的参数就是嵌入矩阵E,以及隐藏层和softmax层的参数w[1],b[1],w[2],b[2]。可以利用反向传播算法进行梯度下降,来最大化训练集似然函数,不断地从语料库中预测最后一个词的输出。

在不断地训练过程中,算法会发现要想最好地拟合训练集,就要使得一些特性相似的词汇具有相似的特征向量,从而就得到了最后的词嵌入矩阵E。

其他的上下文和目标词对:

我们将要预测的单词称为目标词,其是通过一些上下文推导预测出来的。对于不同的问题,上下文的大小和长度以及选择的方法有所不同:

(1)选取目标词之前的几个词;

(2)选取目标词前后的几个词;

(3)选取目标词前的一个词;

(4)选取目标词附近的一个词,(一种Skip-Gram模型的思想)。

3 Word2Vec

【参考文献:Mikolov et. al., 2013. Efficient estimation of word representations in vector space】

Skip-grams:

在这个模型中,我们需要抽取上下文(Content)和目标词汇(Target)来配对构造一个监督学习问题。

注意,上下文不一定是要目标词前后离得最近的几个单词,而是随机选择一个词作为上下文,同时在上下文的一定距离范围内随机选择另外一个词作为目标词。构造这样一个监督学习问题的目的并不是为了解决监督学习问题本身,而是想要这个问题来学习一个更好的词汇嵌入模型。

Model:

图5

存在的问题:计算速度的问题,如在上面的SoftmaxSoftmax单元中,我们需要对所有10000个整个词汇表的词做求和计算,计算量庞大。

简化方案:使用分级softmax分类器(相当于一个树型分类器,每个节点都是可能是一个二分类器),其计算复杂度是前面的log|v|级别。在构造分级softmax分类器时,一般常用的词会放在树的顶部位置,而不常用的词则会放在树的更深处,其并不是一个平衡的二叉树。

如何采样上下文:

在构建上下文目标词对时,如何选择上下文与模型有不同的影响。

对语料库均匀且随机地采样:使得如the、of、a等这样的一些词会出现的相当频繁,导致上下文和目标词对经常出现这类词汇,但我们想要的目标词却很少出现。

采用不同的启发来平衡常见和不常见的词进行采样。这种方法是实际使用的方法。

4 负采样

【参考文献:Mikolov et. al., Distributed representation of words and phrases and their compositionality】

新的学习问题:

定义一个新的学习问题:预测两个词之间是否是上下文-目标词对,如果是词对,则学习的目标为1;否则为0。

使用k次相同的上下文,随机选择不同的目标词,并对相应的词对进行正负样本的标记,生成训练集。

建议:小数据集,k=5~20;大数据集,k=2~5。

最后学习x——y的映射关系。

如图6所示。

图6

在负采样模型中,我们使用logistic回归模型:

每个正样本均有k个对应的负样本。在训练的过程中,对于每个上下文词,我们就有对应的k+1个分类器。如下图所示。

图7

相比与Skip-grams模型,负采样不再使用一个具有词汇表大小时间复杂度高的庞大维度的Softmax,而是将其转换为词汇表大小个二分类问题。每个二分类任务都很容易解决,因为每个的训练样本均是1个正样本,外加k个负样本。

如何选择负样本:

在选定了上下文(Content)后,在确定正样本的情况下,我们还需要选择k个负样本以训练每个上下文的分类器。

通过单词出现的频率进行采样:导致一些类似a、the、of等词的频率较高;

均匀随机地抽取负样本:没有很好的代表性;

还有一种方法是处于上面两种极端采样方法之间,即不用频率分布,也不用均匀分布,而采用的是对词频的3/4除以词频3/4整体的和进行采样的。其中,f(wj)是语料库中观察到的某个词的词频,公示如下所示:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620G0LKEN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券