Paper-summary-5: Glove-Global Vectors for Word Representations

2 篇文章 0 订阅
1 篇文章 0 订阅

Paper-summary-5: Glove-Global Vectors for Word Representations

相信几乎每个用深度学习的人都被所谓的Pre-trained Glove统治过自己的模型,在懒得训练词向量的时候,一个pre-trained Glove成了最优备选方案。曾经某段时间,我还纠结过是该自己训练Word2vec还是偷懒用Glove,这次读了paper后发现,Glove在被发明出来的时候就已经把word2vec所表征的信息给包含进去了。这篇paper不仅从数学(?)角度详细推导了一次GloVe的式子,同时还单独开了一个section来论证了Skip-gram与GloVe的关系,这点个人感觉是非常地照顾读者了。

Introduction:

现在较为流行的两类词向量训练方法集为:

  • Global Matrix Factorization: LSA
  • Local Context Window Method: Skip-Gram

目前来讲,两类方法都存在各自的缺陷,LSA充分利用了基于词库的统计学方面的信息,但是在涉及到词相似度方面的任务时候表现的很差。而Skip-gram虽然在相似度任务上表现良好,但是却是于各个独立的局部上下文而不是基于整个语料库的co-occurrence counts。为了充分利用好二者的优势,作者提出了一个基于全局词与词共存对数的加权最小二乘法训练的模型,因此可以充分利用语料库的统计量。事实证明该方法在大部分同义词集中取得了SOTA的成果,并在词相似度任务和NER任务中都取得了领先的结果。

Pre-defined Notations

  • X X X : 词与词的共存矩阵。
  • X i j X_{ij} Xij: 单词 j j j出现在单词 i i i上下文的次数。
  • X i = ∑ k X i k X_i = \sum_kX_{ik} Xi=kXik
  • P i j = P ( j ∣ i ) = X i j / X i P_{ij}=P(j|i) = X_{ij}/{X_i} Pij=P(ji)=Xij/Xi: 单词 j j j出现在单词 i i i上下文的概率。
  • w ∈ R d w \in \mathbb{R}^d wRd: word vectors
  • w ~ ∈ R d \widetilde{w} \in \mathbb{R}^d w Rd: context word vectors

Methodology

首先,作为词向量方面的永恒难题,如何从语料库中的词频等统计量提取词表征,词义是如何从这些统计量中产生的。未解决这个问题,作者首先基于语料库创建了个共存矩阵 X X X,进而获得概率矩阵 P P P。symbol的定义依照上一节。然后设定了一个新的metric。假设有单词 i i i, j j j, k k k。其 k k k i i i上下文关联性强于 k k k j j j,则我们最后的词向量应当使 P i k / P j k P_{ik} / P_{jk} Pik/Pjk尽可能大,反之则尽可能小。现在尝试创建以该三个单词为变量的函数。

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 F F将会特别多,现在开始对 F F F加限制条件。首先需要让 F F F函数将等式右边的ratio在数学意义上表示出来,又因为(在之前的工作中)词向量空间本质上是一个线性空间,该ratio也是反映的 i i i j j j的差异性,所以尝试把 w i w_i wi w j w_j wj替换为 ( w i − w j ) (w_i-w_j) (wiwj)。函数变为

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(wiwj,w k)=PjkPik

显然,现在等式右侧为一个标量,左侧是一个关于向量的函数。为简化,先把左侧的函数arguments替换为向量内积让两边dimension相同。

F ( ( w i − w j ) T w ~ k ) = P i k P j k F((w_i-w_j)^T\widetilde{w}_k) = \frac{P_{ik}}{P_{jk}} F((wiwj)Tw k)=PjkPik

接下来的这一步有些tricky,首先在构建 X X X的时候,如果 j j j i i i的context中,那么我们同时可以推测 i i i也在 j j j的context中,考虑到每个word最终只有一个向量与之对应,因此推测出 F F F应为一个关于 w i w_i wi w ~ j \widetilde{w}_j w j的对称函数。为达成这一目标,首先要求 F F F为一个从 ( R , + ) (\mathbb{R}, +) (R,+)映射到 ( R , × ) (\mathbb{R}, \times) (R,×)的一个group homomorphism,通式为
F ( a + b ) = F ( a ) × F ( b ) F(a + b) = F(a) \times F(b) F(a+b)=F(a)×F(b)。因此我们的 F F F变为

F ( ( w i − w j ) T w ~ k ) = F ( w i T w ~ k ) F ( w j T w ~ k ) = P i k P j k F((w_i-w_j)^T\widetilde{w}_k) = \frac{F(w_i^T\widetilde{w}_k)}{F(w_j^T\widetilde{w}_k)} = \frac{P_{ik}}{P_{jk}} F((wiwj)Tw k)=F(wjTw k)F(wiTw k)=PjkPik

进一步假设

F ( w i T w ~ k ) = P i k = X i k X i F(w_i^T\widetilde{w}_k) = P_{ik} = \frac{X_{ik}}{X_i} F(wiTw k)=Pik=XiXik

这两步可以看出是一个相减形式变为相除形式的过程,所以可以简单假设 F = e x p F=exp F=exp

w i T w ~ k = l o g ( P i k ) = l o g ( X i k ) − l o g ( X i ) w_i^T\widetilde{w}_k=log(P_{ik}) = log(X_{ik}) - log(X_i) wiTw k=log(Pik)=log(Xik)log(Xi)

这个式子除了 l o g ( X i ) log(X_i) log(Xi)已经可以基本保证对称了。现在引入 b i = l o g ( X i ) b_i = log(X_i) bi=log(Xi) l o g ( X i ) log(X_i) log(Xi)作为一个bias term,再引入一个 b ~ k \widetilde{b}_k b k作为一个与 w ~ k \widetilde{w}_k w k对应的bias term。最后我们获得一个新的,并关于i,k对称的映射关系:

w i T w ~ k + b i + b ~ k = l o g ( X i k ) w_i^T\widetilde{w}_k + b_i + \widetilde{b}_k = log(X_{ik}) wiTw k+bi+b k=log(Xik)

也就是说我们最后的word vectors及模型参数( w i ,   w ~ k ,   b i ,   b ~ k w_i,\ \widetilde{w}_k,\ b_i,\ \widetilde{b}_k wi, w k, bi, b k)应该尽可能去拟合 l o g ( X i k ) log(X_{ik}) log(Xik),进而可以依照该关系式获得loss function。简单的例如least square。

这个之前提到过定义 F F F为一个group homomorphism是比较tricky的,但若以求得一个“对称函数”这个结果为导向的话却是一个让最终式子对称的合理假设。StackOverflow上有一个关于该假设的较合理解释。

以least square为例,上述映射关系还是存在些许缺陷,首先就是log function在近0是会趋近于无穷大,而这在文本任务这类离散数据集是很常见的。所以一个直接的办法是add-one smoothing,也就是统一加1变为 l o g ( X i k + 1 ) log(X_{ik}+1) log(Xik+1)。另外一个缺陷就是该loss function中所有co-occurence term具有相同权重,当两个单词之间的co-occurences比较少的时候,基于该 X i j X_{ij} Xij所产生的loss应该被归类为噪声,但由于 X X X大部分情况下是一个sparse matrix,而且之前的smoothing method使得这类“噪声”变得特别多。有种劣币驱逐良币的既视感。所以在这里的least square loss function被加入了权重因子用来平衡这点。也就是所谓的 weighted least square loss function。

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 J = \sum_{i,j=1}^V f(X_{ij})(w_i^T\widecheck{w}_j + b_i+\widetilde{b}_j - log(X_{ij}))^2 J=i,j=1Vf(Xij)(wiTw j+bi+b jlog(Xij))2

f f f作为一个定义在 X i j X_{ij} Xij上的权重函数,并且满足如下性质。

  1. f ( 0 ) = 0 f(0) = 0 f(0)=0, 相比于smoothing method,在这里直接跳过zero entry。
  2. f ( x ) f(x) f(x) 为递增函数, X i j X_{ij} Xij越大所产生的权重越大。
  3. f ( x ) f(x) f(x) 为凹函数,当 x x x足够大时候,抑制或停止对 f ( x ) f(x) f(x)的增长,目的是避免大 X i j X_{ij} Xij被overweighted。

最终获得
f ( x ) = ( x / x m a x ) α I ( x &lt; x m a x ) + I ( x ≥ x m a x ) f(x) = (x/x_{max})^\alpha\mathbb{I}(x&lt;x_{max}) + \mathbb{I}(x\geq x_{max}) f(x)=(x/xmax)αI(x<xmax)+I(xxmax)
原paper没有这么难看,(markdown不知为啥没法打出大括号)。在paper中 x m a x x_{max} xmax被固定为100, α \alpha α被固定为3/4,这是原作者实验的结果,而这也恰好是Mikolov在word2vec中设定的超参数。

Relations to Other Models

既然所有的非监督方法都利了基于语料库的统计量,例如co-occurrence,作者推断其中某些方面应该存在共性。在这里以skip-gram举例来探究其与本文提出的GloVe之间的联系。首先从模型目的出发,skip-gram或ivLBL的目标是找到一个概率 Q i j Q_{ij} Qij来表示单词 j j j在单词 i i i的上下文的概率。假设 Q i j Q_{ij} Qij 为某softmax形式

Q i j = e x p ( w i T w ~ j ) ∑ k = 1 V e x p ( w i T w ~ k ) Q_{ij} = \frac{exp(w_i^T\widetilde{w}_j)}{\sum_{k=1}^Vexp(w_i^T\widetilde{w}_k)} Qij=k=1Vexp(wiTw k)exp(wiTw j)

全局的loss function可以推断为

J = − ∑ i ∈ c o r p u s   &amp;   j ∈ c o n t e x t ( i ) l o g Q i j J = -\sum_{i\in corpus\ \&amp;\ j \in context(i)}log Q_{ij} J=icorpus & jcontext(i)logQij

现在把所有相同的单词对 (i,j)给整合起来,我们能获得

J = − ∑ i = 1 V ∑ j = 1 V X i j l o g Q i j J = -\sum_{i=1}^V\sum_{j=1}^VX_{ij}logQ_{ij} J=i=1Vj=1VXijlogQij

利用之前的notation,进一步可获得

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 ) J = -\sum_{i=1}^VX_i\sum_{j=1}^VP_{ij}logQ_{ij} = \sum_{i=1}^VX_iH(P_i, Q_i) J=i=1VXij=1VPijlogQij=i=1VXiH(Pi,Qi)

这里的 H H H即为 P i P_i Pi Q i Q_i Qi之间的cross-entropy。而 J J J也因此可以被看作weighted sum of cross-entropy,这和上一节提到的weighted sum of least square 有着异曲同工之妙。这时候通过比较这两类loss function,可以进一步分析出GloVe的优势点了。

首先说说cross entropy error的缺点。

  1. 原paper中有提到,对long-tail distribution,modeling的效果比较差,因为模型赋予了小众事件过多的权重。
  2. 为了使模型有界,需要对词库整个遍历然后对每个 Q i j Q_{ij} Qij进行标准化操作。
  3. 最主要的是cross-entropy本身也不是衡量概率距离的唯一选择。

假设使用least square来度量 P i P_i Pi P j P_j Pj之间的距离,获得一个新的loss function

J ^ = ∑ i , j X i ( P ^ i j − Q ^ i j ) 2 \hat{J} = \sum_{i,j}X_i(\hat{P}_{ij}-\hat{Q}_{ij})^2 J^=i,jXi(P^ijQ^ij)2

P ^ i j = X i j \hat{P}_{ij} = X_{ij} P^ij=Xij Q ^ i j = e x p ( w i T w ~ j ) \hat{Q}_{ij} = exp(w_i^T\widetilde{w}_j) Q^ij=exp(wiTw j),因为 X i j X_{ij} Xij的取值一般都特别大,所以用log-form代替。

J ^ = ∑ i , j X i ( l o g P ^ i j − l o g Q ^ i j ) 2 = ∑ i , j X i ( w i T w ~ j − l o g X i j ) 2 \hat{J} = \sum_{i,j}X_i(log\hat{P}_{ij}-log\hat{Q}_{ij})^2 = \sum_{i,j}X_i(w_i^T\widetilde{w}_j-logX_{ij})^2 J^=i,jXi(logP^ijlogQ^ij)2=i,jXi(wiTw jlogXij)2

现在的式子已经基本上和之前关于GloVe的式子等价了,前面的 X i X_i Xi同样是作为weighting factor来用的,而恰好在Mikolov的Paper中同样提到过,降低高频词的weighting factor有效值可以提高模型效果。所以再引入一个weighting function

J ^ = ∑ i , j f ( X i j ) ( w i T w ~ j − l o g X i j ) 2 \hat{J}=\sum_{i,j}f(X_{ij})(w_i^T\widetilde{w}_j-logX_{ij})^2 J^=i,jf(Xij)(wiTw jlogXij)2

好了,完美,现在几乎已经彻底变成GloVe了。

Complexity Analysis

不考虑训练的话,GloVe模型的计算时候只考虑了非0的 X i j X_{ij} Xij,所以计算loss时候最大应该不超过 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2)。而基于窗口的方法,例如skip-gram,需要遍历整个语料库,最终的时间复杂度最大应为 O ( ∣ C ∣ ) O(|C|) O(C),在这里 ∣ V ∣ |V| V ∣ C ∣ |C| C分别为词库大小和语料库的大小。但仅仅这样算会发现GloVe的复杂度远高于Skip-gram,但事实上0元素在 X X X中所占据的比重一般是相当大的,所以实际上GloVe的复杂度应该远小于 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2)。作者在这里提出了一个相对更精确的复杂度计算方法,主要目的是用来估算非0元素的个数。

首先假设i和j的共存个数, X i j X_{ij} Xij,与它们在 X X X中rank满足一个power-law函数,即

X i j = k ( r i j ) α X_{ij} = \frac{k}{(r_{ij})^\alpha} Xij=(rij)αk

首先知道词库大小与所有单词对数成正比的。我们可获得

∣ C ∣ ∼ ∑ i j X i j = ∑ r = 1 ∣ X ∣ k r α = k H ∣ X ∣ , α |C| \sim \sum_{ij}X_{ij}=\sum_{r=1}^{|X|}\frac{k}{r^\alpha} = k H_{|X|,\alpha} CijXij=r=1Xrαk=kHX,α

在这里 H n , m H_{n,m} Hn,m为generalized harmonic number,也就是所谓的调和级数,而 ∣ X ∣ |X| X X X X的最大的frequency rank,而同时他也是非0元素的个数,如果只考虑 X i j ≥ 1 X_{ij}\geq 1 Xij1的情况的话,即当 r i j = ∣ X ∣ ⇒ X i j = 1 r_{ij} = |X| \Rightarrow X_{ij}=1 rij=XXij=1。因此有

1 = k ∣ X ∣ α ⟹ ∣ X ∣ = k 1 / α ⟹ k = ∣ X ∣ α 1 = \frac{k}{|X|^\alpha}\Longrightarrow |X|=k^{1/\alpha}\Longrightarrow k = |X|^\alpha 1=XαkX=k1/αk=Xα

那么上一个式子也因此变为

∣ C ∣ ∼ ∣ X ∣ α H ∣ X ∣ , α |C| \sim |X|^\alpha H_{|X|, \alpha} CXαHX,α

若将 H H H按如下规则展开 H x , s = x 1 − s 1 − s + ζ ( s ) + O ( x − s ) H_{x,s} = \frac{x^{1-s}}{1-s} + \zeta(s) + O(x^{-s}) Hx,s=1sx1s+ζ(s)+O(xs),可获得

∣ C ∣ ∼ ∣ X ∣ 1 − α + ζ ( α ) ∣ X ∣ α + O ( 1 ) |C| \sim \frac{|X|}{1-\alpha} + \zeta(\alpha) |X|^\alpha + O(1) C1αX+ζ(α)Xα+O(1)

而且我们都知道 ∣ C ∣ |C| C ∣ X ∣ |X| X在这里都是超级大的数,其他项完全可以被dominate掉。所以接下来就进入了两种两种情况。

  • α &gt; 1 ⟹ ∣ X ∣ α ≽ ∣ X ∣ 1 − α \alpha &gt; 1 \Longrightarrow |X|^\alpha \succcurlyeq \frac{|X|}{1-\alpha} α>1Xα1αX, 可获得 ∣ X ∣ = O ( ∣ C ∣ 1 / α ) |X| = O(|C|^{1/\alpha}) X=O(C1/α)
  • α &lt; 1 ⟹ ∣ X ∣ α ≼ ∣ X ∣ 1 − α \alpha &lt; 1 \Longrightarrow |X|^\alpha \preccurlyeq \frac{|X|}{1-\alpha} α<1Xα1αX,可获得 ∣ X ∣ = O ( ∣ C ∣ ) |X| = O(|C|) X=O(C)

考虑到实验时候经常将 α \alpha α设为3/4,那么最后的平均复杂度为 ∣ X ∣ = O ( ∣ C ∣ 0.8 ) |X|=O(|C|^{0.8}) X=O(C0.8),最劣情况仍然为 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2)

Conclusion

GloVe本质上还是一个unsupervised count-based method,训练时候也是依赖的co-occurence matrix, X X X。参数分别为 W W W W ~ \tilde{W} W~,虽然二者的初始值不同,但当 X X X为对称矩阵的时候, W W W W ~ \tilde{W} W~最终应该是会等价,最后用的word vectors为 W + W ~ W + \tilde{W} W+W~,相加是为了降低方差防overfitting。

根据paper中的实验部分发现,GloVe在很多任务都取得了SOTA值。不仅如此,作者在文中总结了各个unsupervised word embedding的方法,以及他们各自与GloVe的联系。看完这篇再去复习一下那几篇感觉会很有作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值