1. Introduction
今天学的论文是斯坦福大学 2014 年的工作《GloVe: Global Vectors for Word Representation》,在当时有两种主流的 Word Embedding 方式,一种是矩阵分解,类似 LSA;另一种是 13 年提出的 Word2Vec,基于滑动窗口的浅层神经网络。前者的优点是利用了全局的统计信息(共现矩阵),后者的优点是计算简单且效果好 = =,但缺点是没利用全局的统计信息。所以这篇论文的主要工作是想综合两者的优点。
在看论文前我们不妨来思考一下,如果你是研究员,现在有这样的想法(综合全局信息和局部信息),你该如何去实现?
我们先来给些定义,另 X 为词与词的共现矩阵, 表示单词 j 出现在单词 i 上下文中的次数。于是我们有单词 j 出现在单词 i 上下文的共现概率:
Weight Function f
3. Experiments
然后我们来看下与其他模型的对比实验部分:
Experiments_1
Experiment
Experiments
还有参数敏感性的实验:
Experiments
细心的同学可以看到这里有一个 Window Size 的参数,这个是用来统计共现矩阵的。
至此,我们的论文就结束了。但我看完这篇论文还有一个非常大的疑惑:GloVe 是怎么训练的呢?
那么问题来了:为什么不用一个矩阵和一个偏置项呢?这样计算量还可以减少一半,何乐不为?
欢迎大家在留言区讨论留言。
我们再简单分析一下 GloVe 的时间复杂度,从上面的实验结果来看 GloVe 的速度是非常快的,其原因主要有以下几点:
至此,我们便结束了 GloVe 的介绍,用一句话总结便是:GloVe 使用具有全局信息的共现矩阵,并采用类似矩阵分解的方式求解词向量,通过修改代价函数将 Word2Vec 关注局部特征的优点加入进来,并取得了良好的效果。
我们尝试着将 GloVe 与 Word2Vec 进行对比:
再试着将 GLoVe 与 SVD 进行对比:
当然 GloVe 看着那么好,其实并不一定,在很多任务中都没 Word2Vec 的效果好。
毕竟没有最好的模型,只有最适合的模型。
关注公众号跟踪最新内容:阿泽的学习笔记。