g-love-Glove

Glove

CBOW,Skip-Gram新型模型的提出,通过词嵌入的方式一定程度解决了analogy的问题。

不过这些新模型并没利用cooccurrenceco-occurrence对于全局的统计数据。

Glove的目的是既利用好cooccurrenceco-occurrence计数的全局统计数据,又将其与CBOW,Skip-Gram的机制联系起来,归而言之,是更多信息的联合。

Glove论文中列出了一张表:

Probability & Ratio k=solid k=gas k=water k=fashion
$P(k ice)$ 1.9×1041.9\times10^{-4} 6.6×1056.6\times10^{-5} 3.0×1033.0\times 10^{-3}
$P(k stream)$ 2.2×1052.2\times 10^{-5} 7.8×1047.8\times 10^{-4} 2.2×1032.2\times 10^{-3}
$P(k ice)/P(k stream)$ 8.98.9 8.5×1028.5\times10^{-2}

Water, fashion在P(kice)/P(kstream)P(k|ice)/P(k|stream)呈现的数值接近于1,侧面说明,water,fashion在区分ice,streamice,stream方面的效果并不明显。

能够呈现出较大区分度的词汇,其在P(kice)/P(kstream)P(k|ice)/P(k|stream)数值上并不徘徊在1附近。

上述的ratioratio关系,能够比较直观的表达出词汇之间的相关性(solid to ice;gas to stream)及不相关性(water and fashion to ice and stream)。

Glove模型的核心思想就是利用这个比例关系来体现相关性:

F(wi,wj,w^k)=PikPjk(1)F(w_i,w_j,\hat w_k)=\frac{P_{ik}}{P_{jk}} \qquad\qquad (1)

wi,wjw_i,w_j是center words,w^k\hat w_k指代context word,皆为满足wRdw \in R^d的词向量。

(1)式用更自然的方式可以写为:

F(wiwj,w^k)=PikPjk(2)F(w_i-w_j,\hat w_k)=\frac{P_{ik}}{P_{jk}}\qquad\qquad(2)

(2)式左边变量为向量,右边为常量,统一下可将左手边变量类型调换为常量(wiwj)Tw^k(w_i-w_j)^T\hat w_k

F((wiwj)Tw^k)=PikPjk(3)F((w_i-w_j)^T\hat w_k)=\frac{P_{ik}}{P_{jk}}\qquad\qquad(3)

假设(3)式左手边可满足:

F((wiwj)Tw^k)=F(wiTw^k)F(wjTw^k)(4)F((w_i-w_j)^T\hat w_k)=\frac{F(w_i^T\hat w_k)}{F(w_j^T\hat w_k)}\qquad(4)

根据式(3),(4)可知:

F(wiTw^k)=Pik=XikXi(5)F(w_i^T\hat w_k)=P_{ik}=\frac{X_{ik}}{X_i}\qquad\qquad(5)

Xikwordi,workkXiwordiX_{ik}表示word_i,work_k同时出现的次数,X_i表示word_i出现的总次数

(4)式的成立可借助于设立F=expF=exp,结合(5)式可得:

wiTw^k=log(Pik)=log(Xik)log(Xi)(6)w_i^T\hat w_k=log(P_{ik})=log(X_ik)-log(X_i)\qquad (6)

(6)式除去log(Xi)log(X_i)以外满足了交换对称性,注意到log(Xi)log(X_i)kk无关,可以将其归入wiw_i对应的biasbib_i中,再添加个bias对应w^k\hat w_k,如下????

wiTw^k+bi+b^k=log(Xik)(7)w_i^T\hat w_k +b_i+\hat b_k = log(X_{ik})\qquad(7)

这个定义略有问题在于如果Xik=0log(Xik)X_{ik}=0,log(X_{ik})\rightarrow - \infin

此问题可以在算法中将Xik>Xik+1X_{ik}->X_{ik}+1做一个shiftshift解决。

定义损失函数:

J=i,j=1Vf(Xij)(wiTw^j+bi+b^jlogXij)2(8)J=\sum_{i,j=1}^Vf(X_{ij})(w_i^T\hat w_j+b_i+\hat b_j - logX_{ij})^2\qquad (8)

f(Xij)Xijf(X_{ij})为每个X_{ij}对应的权值,较少出现的单词对,应该比经常出现的单词对,对模型参数的影响要小。

经常出现的单词对,也不能说对模型的参数影响随着其频次一直增加。

f(x)={(x/xmax)αif x<xmax1otherwise(9)f(x)=\begin{cases} (x/x_{max})^\alpha& \text{if }x<x_{max}\\ 1& \text{otherwise}\end{cases}\qquad(9)

xmaxx_{max}是自变量xx中的最大值。

g-love-Glove

????:为了满足最初提出的(1)式来度量词汇之间的相关性,设置了F()=expF()=exp,F(wiTwk)=PikF(w_i^Tw_k)=P_{ik}这些关系,最终推向????词向量wi,wkw_i,w_k要满足(7)式。

那就是说为了(1)式度量有效,词向量的训练需要满足(7)式,损失函数也是在此基础上设立的。

这个模型和CBOW,SG模型的关联性

在跳字模型当中,output基于softma,损失函数基于交叉熵。

Qij=exp(wiTw^j)k=1Vexp(wiTw^k)(10)Q_{ij}=\frac{exp(w_i^T\hat w_j)}{\sum_{k=1}^Vexp(w_i^T\hat w_k)}\qquad\qquad\qquad\quad(10)

J=icorpus,icontext(j)logQij(11)J=-\sum_{i\in corpus,i\in context(j)}logQ_{ij}\qquad(11)

这种滑动窗口的方式并没有将相同的i,ji,j打包计算损失来的有效率,(11)可写为

J=i=1Vj=1VXijlogQij(12)J=-\sum_{i=1}^V\sum_{j=1}^VX_{ij}logQ_{ij}\qquad\qquad(12)

XijX_{ij}对应的次数,就是打包计算了Ծ ̮ Ծ。

根据Pij=Xij/XiP_{ij}=X_{ij}/X_i,继续改写

J=i=1VXij=1VPijlogQij=i=1VXiH(Pi,Qi)(13)J=-\sum_{i=1}^VX_i\sum_{j=1}^VP_{ij}logQ_{ij}=\sum_{i=1}^VX_iH(P_i,Q_i)\qquad (13)

H(Pi,Qi)H(P_i,Q_i)Pi,QIP_i,Q_I的交叉熵,这只是一种损失的计量方式,这种方式对QQ进行归一化的计算成本大(需要所有词汇表数量的exp求和),尝试一种另外的计量方式:

J^=i,jXi(P^ijQ^ij)2(14)\hat J = \sum_{i,j}X_i(\hat P_{ij}-\hat Q_{ij})^2\qquad\qquad (14)

P^ij=Xij,Q^ij=exp(wiTw^j)\hat P_{ij}=X_{ij},\hat Q_{ij}=exp(w_i^T\hat w_j)(这里去掉了归一化操作)

XijX_{ij}有时候很大,取对数有利于对其进行缩减:

J^=i,jXi(logP^ijlogQ^ij)2\hat J=\sum_{i,j}X_i(log\hat P_{ij}-log \hat Q_{ij})^2

=i,jXi(wiTw^jlogXij)2(15)\quad=\sum_{i,j}X_i(w_i^T\hat w_j-logX_{ij})^2\qquad(15)

Mikolov论文中思想传递出,将XiX_i这一权值用f(Xij)f(X_{ij})替换更为有效。

J^=i,jf(Xij)(wiTlogXij)2(16)\hat J = \sum_{i,j}f(X_{ij})(w_i^T-logX_{ij})^2\qquad(16)

发现式子(16)与(8)是一致的。

关联性就建立起来啦Ծ ̮ Ծ。

Co-occurrence+word-bags~

Reference:

Pennington J, Socher R, Manning C. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.