重磅!!|“NLP系列教程04”之word2vec 02

2019-08-08 15:44:28 浏览数 (1)

引言

本次文章主要介绍Word2vec的跳字模型(Skip-Gram)的训练、连续词袋模型(CWOB)及其优化、近似训练优化(负采样)。

跳字模型(Skip-Gram)、连续词袋模型(CWOB)论文百度网盘:

链接: https://pan.baidu.com/s/12MJnzWPuKIXttryVb4HMAg 提取码: 7nkc

本文概要

1

跳字模型(Skip-Gram)的训练?

2

连续词袋模型及其训练

3

近似训练(负采样)。

4

下期预告

5

参考文献

正文开始

1

跳字模型(Skip-Gram)的训练?

跳字模型的参数是每个词所对应的中心词向量和背景词向量。训练中我们通过最大化似然函数来学习模型参数,即最大似然估计。 其中跳字模型的损失函数为:

如果使用随机梯度下降,那么在每一次迭代里我们随机采样一个较短的子序列来计算有关该子序列的损失,然后计算梯度来更新模型参数。梯度计算的关键是条件概率的对数有关中心词向量c和背景词向量o的梯度。首先得到:

然后通过微分,可以得到vc的梯度为:

‍‍‍‍‍‍它的计算需要词典中所有词以wc为中心词的条件概率。有关其他词向量的梯度同理可得。训练结束后,对于词典中的任一索引为i的词,我们均得到该词作为中心词和背景词的两组词向量vi和ui。在自然语言处理应用中,一般使用跳字模型的中心词向量作为词的表征向量。

2

连续词袋模型(CWOB)及其训练

1

连续词袋模型(CWOB)

连续词袋模型(CWOB)与跳字模型(Skip-Gram)类似。跳字模型(Skip-Gram)是基于中心词来生成背景词,连续词袋模型(CWOB)是基于中心词周围的背景词来生成中心词。例如在同样的文本序列“the”“man”“loves”“his”“son”里,以“loves”作为中心词,且背景窗口大小为2时,连续词袋模型关心的是,给定背景词“the”“man”“his”“son”生成中心词“loves”的条件概率(如下图所示)。

也就是说。

因为连续词袋模型的背景词有多个,我们将这些背景词向量取平均,然后使用和跳字模型一样的方法来计算条件概率。‍‍设中心词wc在词典中索引为c,背景词wo1,...,wo2m在词典中索引为o1,...,o2m,那么给定背景词生成中心词的条件概率为:

其中为了简化公式:

那么上式可以简单的写成:

‍‍那么连续词袋模型的似然函数由背景词生成任意中心词的概率为:

2

连续词袋模型的训练

连续词袋模型与跳字模型的训练方法基本一致。联系词袋模型的最大似然估计等于最小化损失函数。

由于

通过微分,我们可以计算出上式中条件概率的对数有关任一背景词向量voi(i=1,...,2m)的梯度

对于其他词向量的梯度原理是同样的。与跳字模型不一样的一点在于,使用连续词袋模型的背景词向量作为词的表征向量。

3

近似训练(负采样)

上面我们虽然得到了跳字模型(Skip-Gram)和连续词袋模型(CWOB)。但是两个模型都会存在一个问题:当词表V的量级非常大的时候,那么下式中的分母的计算量将急剧的增大。

该条件概率相应的对数损失为:

由于上面的计算式子中考虑到了背景词可能是词典V中的任意一词。对于包含几百万词的较大词库,每次的梯度计算开销会相当的大。为了降低计算复杂度,本次将介绍近两种似训练方法,即负采样和层序softmax。本篇文章这里会介绍负采样方法(基于Skip-Gram模型),层序采样将在下次文章做介绍。

负采样修改了原来的目标函数。给定中心wc的一个背景窗口,把背景词wo出现在该背景词窗口看做一个事件,并将该事件的概率计算为:

其中的σ函数与sigmoid激活函数的定义相同:

先考虑最大化文本序列中所有该事件的联合概率来训练词向量。具体来说,给定一个长度为T的文本序列,设事件t的词为wt且背景窗口大小为m,考虑最大联合概率

但是,以上模型中包含的事件仅考虑了正类样本。这导致当所有词向量相等且值为无穷大时,以上的联合概率才被最大化为1。很明显,这样的词向量毫无意义。负采样通过采样并添加负类样本使目标函数更有意义。为了使其有意义,这里设背景词wo出现在中心词wc的一个背景窗口为事件P,根据分布P(w)采用K个未出现在该背景窗口中的词,即噪声词。设噪声词wk(k=1,..,K)不出现在中心词wc的该背景窗口为事件Nk。假设同时含有正类样本和负类样本的时间P,N1,N2,...,Nk相互独立,负采样将以上需要最大化的仅考虑正本的联合概率可以改写为:

其中条件概率被近似表示为:

设文本序列中事件步t的词wt在词典中的索引为it,噪声词wk在词典中的索引为hk。关于以上条件概率的对数损失为:

‍‍‍‍可以看到,在训练中每一步的梯度计算开销不再与词典大小相关,而与K线性相关。当K取较小的常数时,负采样在每一步的梯度计算开销较小。

4

下期预告

下期将介绍:

1、近似训练(层序softmax)

2、窗口共现矩阵词向量表示法

3、全局向量的词嵌入(Glove模型)

5

参考文献

[1]http://www.hankcs.com/nlp/word-vector-representations-word2vec.html

[2]http://zh.d2l.ai/chapter_natural-language-processing/index.html

0 人点赞