Glove
CBOW,Skip-Gram新型模型的提出,通过词嵌入的方式一定程度解决了analogy的问题。
不过这些新模型并没利用 c o − o c c u r r e n c e co-occurrence co−occurrence对于全局的统计数据。
Glove的目的是既利用好 c o − o c c u r r e n c e co-occurrence co−occurrence计数的全局统计数据,又将其与CBOW,Skip-Gram的机制联系起来,归而言之,是更多信息的联合。
Glove论文中列出了一张表:
Probability & Ratio | k=solid | k=gas | k=water | k=fashion |
---|---|---|---|---|
$P(k | ice)$ | 1.9 × 1 0 − 4 1.9\times10^{-4} 1.9×10−4 | 6.6 × 1 0 − 5 6.6\times10^{-5} 6.6×10−5 | 3.0 × 1 0 − 3 3.0\times 10^{-3} 3.0×10−3 |
$P(k | stream)$ | 2.2 × 1 0 − 5 2.2\times 10^{-5} 2.2×10−5 | 7.8 × 1 0 − 4 7.8\times 10^{-4} 7.8×10−4 | 2.2 × 1 0 − 3 2.2\times 10^{-3} 2.2×10−3 |
$P(k | ice)/P(k | stream)$ | 8.9 8.9 8.9 | 8.5 × 1 0 − 2 8.5\times10^{-2} 8.5×10−2 |
Water, fashion在 P ( k ∣ i c e ) / P ( k ∣ s t r e a m ) P(k|ice)/P(k|stream) P(k∣ice)/P(k∣stream)呈现的数值接近于1,侧面说明,water,fashion在区分 i c e , s t r e a m ice,stream ice,stream方面的效果并不明显。
能够呈现出较大区分度的词汇,其在 P ( k ∣ i c e ) / P ( k ∣ s t r e a m ) P(k|ice)/P(k|stream) P(k∣ice)/P(k∣stream)数值上并不徘徊在1附近。
上述的 r a t i o ratio ratio关系,能够比较直观的表达出词汇之间的相关性(solid to ice;gas to stream)及不相关性(water and fashion to ice and stream)。
Glove模型的核心思想就是利用这个比例关系来体现相关性:
F ( w i , w j , w ^ k ) = P i k P j k ( 1 ) F(w_i,w_j,\hat w_k)=\frac{P_{ik}}{P_{jk}} \qquad\qquad (1) F(wi,wj,w^k)=PjkPik(1)
w i , w j w_i,w_j wi,wj是center words, w ^ k \hat w_k w^k指代context word,皆为满足 w ∈ R d w \in R^d w∈Rd的词向量。
(1)式用更自然的方式可以写为:
F ( w i − w j , w ^ k ) = P i k P j k ( 2 ) F(w_i-w_j,\hat w_k)=\frac{P_{ik}}{P_{jk}}\qquad\qquad(2) F(wi−wj,w^k)=PjkPik(2)
(2)式左边变量为向量,右边为常量,统一下可将左手边变量类型调换为常量 ( w i − w j ) T w ^ k (w_i-w_j)^T\hat w_k (wi−wj)Tw^k
F ( ( w i − w j ) T w ^ k ) = P i k P j k ( 3 ) F((w_i-w_j)^T\hat w_k)=\frac{P_{ik}}{P_{jk}}\qquad\qquad(3) F((wi−wj)Tw^k)=PjkPik(3)
假设(3)式左手边可满足:
F ( ( w i − w j ) T w ^ k ) = F ( w i T w ^ k ) F ( w j T w ^ 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) F((wi−wj)Tw^k)=F(wjTw^k)F(wiTw^k)(4)
根据式(3),(4)可知:
F ( w i T w ^ k ) = P i k = X i k X i ( 5 ) F(w_i^T\hat w_k)=P_{ik}=\frac{X_{ik}}{X_i}\qquad\qquad(5) F(wiTw^k)=Pik=XiXik(5)
X i k 表 示 w o r d i , w o r k k 同 时 出 现 的 次 数 , X i 表 示 w o r d i 出 现 的 总 次 数 X_{ik}表示word_i,work_k同时出现的次数,X_i表示word_i出现的总次数 Xik表示wordi,workk同时出现的次数,Xi表示wordi出现的总次数
(4)式的成立可借助于设立 F = e x p F=exp F=exp,结合(5)式可得:
w i T w ^ k = l o g ( P i k ) = l o g ( X i k ) − l o g ( X i ) ( 6 ) w_i^T\hat w_k=log(P_{ik})=log(X_ik)-log(X_i)\qquad (6) wiTw^k=log(Pik)=log(Xik)−log(Xi)(6)
(6)式除去 l o g ( X i ) log(X_i) log(Xi)以外满足了交换对称性,注意到 l o g ( X i ) log(X_i) log(Xi)与 k k k无关,可以将其归入 w i w_i wi对应的bias b i b_i bi中,再添加个bias对应 w ^ k \hat w_k w^k,如下?
w i T w ^ k + b i + b ^ k = l o g ( X i k ) ( 7 ) w_i^T\hat w_k +b_i+\hat b_k = log(X_{ik})\qquad(7) wiTw^k+bi+b^k=log(Xik)(7)
这个定义略有问题在于如果 X i k = 0 , l o g ( X i k ) → − ∞ X_{ik}=0,log(X_{ik})\rightarrow - \infin Xik=0,log(Xik)→−∞
此问题可以在算法中将 X i k − > X i k + 1 X_{ik}->X_{ik}+1 Xik−>Xik+1做一个 s h i f t shift shift解决。
定义损失函数:
J = ∑ i , j = 1 V f ( X i j ) ( w i T w ^ j + b i + b ^ j − l o g X i j ) 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) J=∑i,j=1Vf(Xij)(wiTw^j+bi+b^j−logXij)2(8)
f ( X i j ) 为 每 个 X i j 对 应 的 权 值 f(X_{ij})为每个X_{ij}对应的权值 f(Xij)为每个Xij对应的权值,较少出现的单词对,应该比经常出现的单词对,对模型参数的影响要小。
经常出现的单词对,也不能说对模型的参数影响随着其频次一直增加。
f ( x ) = { ( x / x m a x ) α if x < x m a x 1 otherwise ( 9 ) f(x)=\begin{cases} (x/x_{max})^\alpha& \text{if }x<x_{max}\\ 1& \text{otherwise}\end{cases}\qquad(9) f(x)={(x/xmax)α1if x<xmaxotherwise(9)
x m a x x_{max} xmax是自变量 x x x中的最大值。
?:为了满足最初提出的(1)式来度量词汇之间的相关性,设置了 F ( ) = e x p F()=exp F()=exp, F ( w i T w k ) = P i k F(w_i^Tw_k)=P_{ik} F(wiTwk)=Pik这些关系,最终推向?词向量 w i , w k w_i,w_k wi,wk要满足(7)式。
那就是说为了(1)式度量有效,词向量的训练需要满足(7)式,损失函数也是在此基础上设立的。
这个模型和CBOW,SG模型的关联性:
在跳字模型当中,output基于softma,损失函数基于交叉熵。
Q i j = e x p ( w i T w ^ j ) ∑ k = 1 V e x p ( w i T w ^ 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) Qij=∑k=1Vexp(wiTw^k)exp(wiTw^j)(10)
J = − ∑ i ∈ c o r p u s , i ∈ c o n t e x t ( j ) l o g Q i j ( 11 ) J=-\sum_{i\in corpus,i\in context(j)}logQ_{ij}\qquad(11) J=−∑i∈corpus,i∈context(j)logQij(11)
这种滑动窗口的方式并没有将相同的 i , j i,j i,j打包计算损失来的有效率,(11)可写为
J = − ∑ i = 1 V ∑ j = 1 V X i j l o g Q i j ( 12 ) J=-\sum_{i=1}^V\sum_{j=1}^VX_{ij}logQ_{ij}\qquad\qquad(12) J=−∑i=1V∑j=1VXijlogQij(12)
X i j X_{ij} Xij对应的次数,就是打包计算了Ծ ̮ Ծ。
根据 P i j = X i j / X i P_{ij}=X_{ij}/X_i Pij=Xij/Xi,继续改写
J = − ∑ i = 1 V X i ∑ j = 1 V P i j l o g Q i j = ∑ i = 1 V X i H ( P i , Q i ) ( 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) J=−∑i=1VXi∑j=1VPijlogQij=∑i=1VXiH(Pi,Qi)(13)
H ( P i , Q i ) H(P_i,Q_i) H(Pi,Qi)是 P i , Q I P_i,Q_I Pi,QI的交叉熵,这只是一种损失的计量方式,这种方式对 Q Q Q进行归一化的计算成本大(需要所有词汇表数量的exp求和),尝试一种另外的计量方式:
J ^ = ∑ i , j X i ( P ^ i j − Q ^ i j ) 2 ( 14 ) \hat J = \sum_{i,j}X_i(\hat P_{ij}-\hat Q_{ij})^2\qquad\qquad (14) J^=∑i,jXi(P^ij−Q^ij)2(14)
P ^ i j = X i j , Q ^ i j = e x p ( w i T w ^ j ) \hat P_{ij}=X_{ij},\hat Q_{ij}=exp(w_i^T\hat w_j) P^ij=Xij,Q^ij=exp(wiTw^j)(这里去掉了归一化操作)
X i j X_{ij} Xij有时候很大,取对数有利于对其进行缩减:
J ^ = ∑ i , j X i ( l o g P ^ i j − l o g Q ^ i j ) 2 \hat J=\sum_{i,j}X_i(log\hat P_{ij}-log \hat Q_{ij})^2 J^=∑i,jXi(logP^ij−logQ^ij)2
= ∑ i , j X i ( w i T w ^ j − l o g X i j ) 2 ( 15 ) \quad=\sum_{i,j}X_i(w_i^T\hat w_j-logX_{ij})^2\qquad(15) =∑i,jXi(wiTw^j−logXij)2(15)
Mikolov论文中思想传递出,将 X i X_i Xi这一权值用 f ( X i j ) f(X_{ij}) f(Xij)替换更为有效。
J ^ = ∑ i , j f ( X i j ) ( w i T − l o g X i j ) 2 ( 16 ) \hat J = \sum_{i,j}f(X_{ij})(w_i^T-logX_{ij})^2\qquad(16) J^=∑i,jf(Xij)(wiT−logXij)2(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.