word2vec的弊端
word2vec:与一般的共现计数不同,word2vec主要来预测单词周边的单词,在嵌入空间里相似度的维度可以用向量的减法来进行类别测试。
1、对每个local context window单独训练,没有利用包含在global co-corrence矩阵中的统计信息
2、多义词处理乏力,因为使用了唯一词向量。
当前,学习词向量表示的方法主要有两种类型:一种是基于全局矩阵分解的方法,如LSA,另一种是局部上下文窗口的方法,如Mikolov在2013年提出来的CBOW和skip-gram方法。但是这两种方法都有各自的缺陷,其中,LSA虽然有效利用了统计信息,但是在词汇类比方面却很差,而CBOW和skip-gram虽然可以很好地进行词汇类比,但是因为这两种方法是基于一个个局部的上下文窗口方法,因此,没有有效地利用全局的词汇共现统计信息。
为了克服全局矩阵分解和局部上下文窗口的缺陷,在2014年,Jeffrey Pennington等人提出了一种新的GloVe方法,该方法基于全局词汇共现的统计信息来学习词向量,从而将统计信息与局部上下文窗口方法的优点都结合起来,并发现其效果确实得到了提升。《GloVe: Global Vectors for Word Representation Jeffrey》
GloVe
GloVe和word2vec的思路相似,但是充分考虑了词的共现情况,比率远比原始概率更能区分词的含义。
GloVe综合了LSA、CBOW的优点,训练更快、对于大规模语料算法的扩展性也很好、在小语料或者小向量上性能表现也很好。
总结
以上就是有关GloVe原理的介绍,作者其实也是基于最开始的猜想一步一步简化模型的计算目标,最后看GloVe的目标函数时发现其实不难计算,但是要从最开始就想到这样一个目标函数其实还是很难的。最后做一下总结:
Glove综合了全局词汇共现的统计信息和局部窗口上下文方法的优点,可以说是两个主流方法的一种综合,但是相比于全局矩阵分解方法,由于GloVe不需要计算那些共现次数为0的词汇,因此,可以极大的减少计算量和数据的存储空间。
但是GloVe把语料中的词频共现次数作为词向量学习逼近的目标,当语料比较少时,有些词汇共现的次数可能比较少,笔者觉得可能会出现一种误导词向量训练方向的现象。