基于全局信息的单词向量表示 Global Vectors for Word Representation
这是2014年Standford的Jeffrey Pennington发表的与word2vec齐名的一种词向量表示方法。可以同时使用全局统计信息和局部上下文信息学得很好的词向量。作者因为理论物理出身,公式相对其他模型复杂,他本人的推导十分详尽。
之前提到过的矩阵分解使用了全局信息,而word2vec用到了局部信息,GloVe同时学习二者。
文章目录
背景知识
这个方法在词对推理上达到了75%的准确率,而skip-gram只有60多。在nlp.standford.edu/projects/glove上大家可以下载到论文和预训练好的词向量。我们在使用词向量的时候可以word2vec和glove都试一下。
(一)矩阵分解方法
主要是LSA。
我们再复习一下词共现矩阵。
(1)词共现矩阵
每2个词在一起出现的次数就是共现次数,例如有三句话:
1、i am a girl
2、i am a boy
3、he is a boy
那么构成的共现矩阵如下:
i | am | a | boy | girl | he | is | |
---|---|---|---|---|---|---|---|
i | 0 | 2 | 0 | 0 | 0 | 0 | 0 |
am | 2 | 0 | 2 | 0 | 0 | 0 | 0 |
a | 0 | 2 | 0 | 2 | 1 | 0 | 1 |
boy | 0 | 0 | 2 | 0 | 0 | 0 | 0 |
girl | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
he | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
is | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
优点:在一定方式上可以求出词语间的相似度。
缺点:依旧稀疏,在词对推理任务上效果差。
大家想到了使用svd分解来解决数据稀疏的问题,但这种方法依旧存在问题:矩阵太大,分解效率低;学得词向量可解释性差。
(2)共现矩阵概率比值
P
i
j
P_{ij}
Pij定义为
X
i
j
/
X
i
X_{ij}/X_i
Xij/Xi,即词j在词i的上下文中出现的次数占词i总上下文次数的比值(共现次数比总上下文次数)。
我们利用两个词的这个概率去做比值区分相关词和不相关词。
我们可以用一些词来描述另一些词,例如用冰和蒸汽去描述固体、气体、水、时尚。这样就可以借助这些第三者的信息来得到冰和蒸汽的关系。
观察可以得到,和冰接近、和蒸汽不接近:固体,概率比值大;和蒸汽接近、和冰不接近:气体,概率比值小;和冰、蒸汽都不接近:水和时尚概率不相上下。
可以看出,概率比值可以比原始概率更明显地区分词,例如固体、气体在这里的概率比值是8.9和
8.5
∗
1
0
−
2
8.5*10^-2
8.5∗10−2,差距很大。
F
(
w
i
,
w
j
,
w
~
k
)
=
P
i
k
P
j
k
F(w_i,w_j,\widetilde{w}_k)=\frac{P_{ik}}{P_{jk}}
F(wi,wj,w
k)=PjkPik
(二)基于上下文的向量学习方法
主要是word2vec。
本文作者认为无法使用全局统计信息。但其实word2vec可以通过增加优化次数的方式等价地学习到全局统计信息,例如共现次数越多、优化次数越多。可以说是隐式地利用全局统计信息。
意义
公开了训练好的词向量,极大地推动了基于深度学习的自然语言的发展。