自然言语了解中经典的词向量模型之Skip-gram
作者头像
  • 先进制造业
  • 2020-08-13 09:09:37 6

本文重点

在之前的课程中,我们介绍了CBOW(连续词袋模型),这是一种Word2Vec模型的形式。一旦掌握了CBOW,另一种Word2Vec模型——Skip-gram就会变得相对简单。本文将介绍Skip-gram。

Skip-gram 的介绍

Skip-gram与CBOW相对,它是通过中心词来预测上下文。其模型结构如下所示(两个模型图含义相同):

模型结构

模型接受一个中心词的one-hot编码,维度为V。这个one-hot编码经过一个VN的权重矩阵W,得到一个N维的向量。然后,这个N维向量再经过一个NV的权重矩阵W',最终转换成一个V维的向量。经过softmax处理后,这个向量变为得分。如果我们要预测周围的四个词,可以选取前四个得分最高的作为最终预测结果。这是前向传播的过程。前向传播得到预测值y^,然后与实际的上下文词y通过交叉熵损失函数计算损失,最后完成反向传播,从而获得词向量矩阵W。

数学角度分析

从神经网络的角度来看,Skip-gram模型可以进一步从数学角度解释。假设窗口大小为2,那么就是用w(t)来预测w(t-2), w(t-1), w(t+1), w(t+2)。例如,文本“We are working on NLP”中,w(t)是“working”,w(t-2)是“we”,w(t-1)是“are”,w(t+1)是“on”,w(t+2)是“NLP”。那么针对“working”作为中心词,目标函数可以表示为:

最大化 p(we|working)p(are|working)p(on|working)p(NLP|working)

如果文本为“We are working on NLP project, it is interesting”,且窗口大小为1,那么目标函数变为:

最大化 p(are|we)p(we|are)p(working|are)p(are|working)p(on|working)

这个目标函数可以表示为:

[此处插入公式]

如何定义p(w(t+j)|w(t))呢?我们之前已经介绍过CBOW,这是一个多分类问题。最直接的方法是使用softmax函数。设v(t)表示单词t的词向量,v(t+j)表示单词t+j的词向量,v(t)^T v'(t+j)表示单词t和单词t+j之间的相关性。那么这个条件概率可以通过以下公式表示:

[此处插入公式]

在神经网络中,v(t)是经过权重矩阵W转换后的N维词向量,然后经过另一个权重矩阵W',进行N*V的矩阵运算。W'的每一行代表一个词向量,N维向量与每一行相乘,得到v(t)^T v'(t+j)的结果,即分子。所有计算完成后,得到一个V维向量,经过softmax归一化后,每个维度对应的就是概率p(w(t+j)|w(t)),从而将公式和模型统一。

Skip-gram 与 CBOW 的比较

Skip-gram通过中心词预测上下文词,相比CBOW通过上下文词预测中心词更为复杂,因此Skip-gram学习出的词向量质量更高,通常我们也会使用Skip-gram训练的词向量。

Skip-gram 的缺陷

尽管Skip-gram模型效果较好,但它只考虑了位置信息,如哪个词在哪个词的附近,而没有考虑到更细致的信息,例如“we”和“are”之间的顺序关系。这也是Skip-gram的一个不足之处。

    本文来源:图灵汇
责任编辑: : 先进制造业
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
向量模型言语了解自然经典gramSkip
    下一篇