glove全称是Global Vectors for Word Representation,它是基于全局词频统计的词表征工具,他可以将一个单词表示为一个向量,这些向量捕捉到了单词之间的语义特征。
- glove提出原因
在glove提出之前,主流模型的特点分别是全局矩阵分解(例如LSA)和局部上下文窗口(例如cbow),但是这两种模型都有显著的缺点。对于全局矩阵分解来说,没能捕捉到语义信息,所以在词语相似度等任务中表现较差;对于局部上下文窗口方式没能很好的利用数据中的统计信息。所以提出了一种新的词向量生成方式。 - glove model
原理
golve综合利用词的全局统计信息和局部统计信息来生成词向量。模型利用了词全局统计信息-共现矩阵。共现矩阵中每一个元素表示单词和单词在特定大小的上下文窗口中出现到的次数。与传统的共现矩阵不同,glove根据两个单词在上下文窗口的距离,提出了一个衰减函数:即用于计算权重,也就是说单词之间的距离越远那么两个单词所占的总计数权重也越小。
损失函数
两个词之间的相关程度,可以通过第三个词来衡量,如果这两个词都与第三个词相关或不相关,那么这两个词与第三个词的共现概率比接近于1;如果第一个词与第三个词相关而第二个与第三个词不相关,那么第一个词和第三个词的共线概率与第二个词和第三个词的共线概率比值要大于1.反之小于1;
设和是要衡量的词,是第三个词,用公式表示上述思路:
,
其中
经过变形,可将公式(1)变为如下所示
公式(3)可以很好的近似地表达和之间的关系。
使用最小二乘法作为损失函数:
显然,为不同共现程度的词的损失赋予相同的权重是不合理的,所以提出根据共现频率来为损失赋予权重
此时要具有以下性质:
- 保证函数是非递减的,因为频数越大,说明相关性越强
- ,因为当出现频率为0时,此时损失说明这两个单词没有相关性
- 当频率很大时,要给一个尽可能合理的值。如果值过大,会导致共现次数很大的值被赋予过大权重
综上所述,的函数如下所示
实验
作者将GloVe模型得到的词向量分别用于Word analogies, Word similarity, Named entity recognition,在相同的数据集上和CBOW,SVD等方法进行比较。最终词向量表示i
公式(5)中的参数和就是训练好的词向量,经过验证,的效果要好于或。