1. Introduction
今天学的论文是斯坦福大学 2014 年的工作《GloVe: Global Vectors for Word Representation》,在当时有两种主流的 Word Embedding 方式,一种是 LSA,创建词频矩阵,利用 SVD 分解得到词向量;另一种是 13 年提出的 Word2Vec,基于滑动窗口的浅层神经网络。前者的优点是利用了全局的统计信息(共现矩阵),后者的优点是计算简单且效果好 = =,但缺点是没利用全局的统计信息。所以这篇论文的主要工作是想综合两者的优点。
在看论文前我们不妨来思考一下,如果你是研究员,现在有这样的想法(综合全局信息和局部信息),你该如何去实现?
2. GloVe Model
2.1 Weighted Least Squares
我们先来给些定义,另 X 为词与词的共现矩阵, X i j X_{ij} Xij 表示单词 j 出现在单词 i 上下文中的次数。于是我们有单词 j 出现在单词 i 上下文的共现概率:
P i j = P ( j ∣ i ) = X i j X i P_{ij} = P(j|i) = \frac{X_{ij}}{X_i} \\ Pij=P(j∣i)=XiXij
我们观察下表的共现概率,只看第一行第二行我们能看出 ice 和 stream 与 solid gas water fashion 等词的相关性吗?答案是否定的,但如果我们使用比值 P ( k ∣ i c e ) P ( k ∣ s t e a m ) \frac{P(k|ice)}{P(k|steam)} P(k∣steam)P(k∣ice) 就可以很直观的看到其相关性:
- 当 k = solid 时,其值为 8.9,则表明,ice 与 solid 更相关;
- 当 k = gas 时,其值为 8.5 × 1 0 − 2 8.5 \times 10^{-2} 8.5×10−2 ,所以 steam 与 gas 更相关;
- 当值为 1 左右时,表明 ice 和 steam 与目标单词 k 都相关或者都不相关。
从上面的表述中我们看出,比值更能反映相关性,而不是共现单词概率。所以我们有:
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
其中, w i w_i wi 表示单词 i 的词向量, w ~ k \widetilde w_k w
k 是独立的上下文向量将在后面进行介绍,F 可以视为一种映射或是一种运算。
我们再来看下上面的等式,一个很直观的感觉就是 F 可能取值很广。不过不要紧,我们现在给它加些约束。由于向量空间是线形的,所以可以使用向量差:
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
为了保证混合向量的维度不变,我们再做个点乘:
F ( ( w i − w j ) T w ~ k ) = P i k P j k F\big((w_i-w_j)^T\widetilde w_k \big) = \frac{P_{ik}}{P_{jk}} \\ F((wi−wj)Tw
k)=PjkPik
实际中,单词和共现单词是可以可交换的,现在的等式不满足交换律。
为了保证交换律,我们先让 F 保证为群 ( R , + ) (R,+) (R,+) 到群 ( R > 0 , × ) (R_{>0}, \times) (R>0,×) 的群同态:
F ( ( w i − w j ) T w ~ k ) = F ( w i T w ~ k − w j T w ~ k ) = F ( w i T w ~ k ) F ( w k T w ~ k ) F\big((w_i-w_j)^T \widetilde w_k\big) = F\big(w_i^T \widetilde w_k-w_j^T \widetilde w_k\big) = \frac{F(w_i^T \widetilde w_k)}{F(w_k^T \widetilde w_k)} \\ F((wi−wj)T