GloVe: Global Vectors for Word Representation

Abstract

  • 本文分析了要想让向量的算术运算对词向量有意义,模型所具备的性质
  • 本文提出的模型结合了包含全局信息的因子分解和局部上下文窗口方法
  • 本文提出的方法通过只在word-word共现矩阵的的非零元素上训练,从而能够更加高效的利用统计信息

Introduction

两种主要的学习词向量方法类分别是:

  1. 基于全局矩阵分解的方法(如:LSA),这些方法在word analogy任务表现较差
  2. 基于局部上下文窗口的方法(如:skip-gram),这些方法不能很好的利用语料库的全局统计信息

在本文提出一个global log-bilinear regression模型,这个模型可以在词向量上产生有意义的线性方向。我们提出了一个weighted least squares model用于在一个全局的word-word co-occurrence计数上,从而有效的利用这些统计信息。

Matrix Factorization Methods

HAL(Hyperspace Analogue to Language)利用是一个term-term矩阵进行分解。它存在的一个问题是高频的term在相似度度量的时候起到的作用比它的真实作用要高太多了。(可以通过PPMI、词频开根号、基于熵、基于correlation等方法将词的数值分布变得均匀一些)

Shallow Window-Based Methods

这些方法都有一个缺点没有直接处理语料共现统计信息。

The GloVe Model

语料库中的词语共现信息是无监督方法学习词向量的主要信息来源。
本文将回答有意义的向量是如何从这些统计信息中得到的以及得到的词向量是如何表示这些意义的。
接下来介绍一些要用到的记号:
X X :表示word-word co-occurrence 计数矩阵
Xij:表示词汇j在词汇i的上下文中出现的计数
Xi X i :表示所有词汇在词汇i的上下文中出现的总数
Pij P i j =P(j|i)= XijXi X i j X i

对于GloVe,主要是通过频率 Pik P i k Pjk P j k 的比率来确定k是与i相关还是和j相关,或者与两者都相关或都不相关
PikPjk1 P i k P j k ≈ 1 :k与i,j要么都相关,要么都不相关
PikPjk>1 P i k P j k > 1 : k与i更相关
PikPjk<1 P i k P j k < 1 : k与j更相关

所以可以假设模型通过这个比率来区分正例和反例,即

F(wi,wj,w^k)=PikPjk F ( w i , w j , w ^ k ) = P i k P j k

其w是词向量, w^ w ^ 是上下文词向量
接下来通过指定F所需要的一些性质,从而减少F的范围。
由于想在向量空间中表示这种比率,而向量空间是一个线性结构,所以一个很自然的想法是把 wi w i wj w j 的差作为函数输入,即 F(wiwj,w^k) F ( w i − w j , w ^ k )
同时因为函数输入是向量,结果是标量,所以一个自然想法是函数输入转换成内积形式 F((wiwj)Tw^k) F ( ( w i − w j ) T w ^ k ) 。使用点积作为输入还可以防止F使得函数的各个维度发生不必要的混淆。
接着可以引入+与 × × 的同态来将F转换一下(同时还可以满足 F(wTiw^k) F ( w i T w ^ k ) F(w^Tkwi)) F ( w ^ k T w i ) ) 结果一致即:
F((wiwj)Tw^k)=F(wTiw^k)F(wTjw^k) F ( ( w i − w j ) T w ^ k ) = F ( w i T w ^ k ) F ( w j T w ^ k )

由前文可知 F(wTiw^k)=Pik F ( w i T w ^ k ) = P i k ,上一个方程的解是exp。即:
wTiw^k=log(Pik)=log(Xik)log(Xi) w i T w ^ k = l o g ( P i k ) = l o g ( X i k ) − l o g ( X i )

由于 log(xi) l o g ( x i ) 只与 xi x i 有关所以用 bi b i 来代替最后得到:
wTiw^k+bi=log(Xik) w i T w ^ k + b i = l o g ( X i k )

为了具有对称性,添加一个新的偏置 b^k b ^ k 得到最后的表达式:
wTiw^k+bi+b^k=log(Xik) w i T w ^ k + b i + b ^ k = l o g ( X i k )

对于上述表达是可能在 Xik=0 X i k = 0 时出错,解决方法是通过一个加1shift,即保证了共现矩阵的稀疏性又保证了上述公式不发散。即 log(1+Xik) l o g ( 1 + X i k ) 代替 log(Xik) l o g ( X i k )

上述的方法对于所有 Xij X i j 同等看待,但是特别稀少的 Xij X i j 很可能是噪声并没有包含什么信息,如果使用上述公式同等对待会影响模型的效果。本文提出一个加权最小二乘回归来处理这个问题,其损失如下:

J=i,j=1vf(Xij)(wTiw~j+bi+b~jlogXij)2 J = ∑ i , j = 1 v ⁡ f ( X i j ) ( w i T w ~ j + b i + b ~ j − log ⁡ X i j ) 2

上面的公式中权重函数f(x)要满足如下一些特性:

  1. f(0)=0,且保证在x->0时 limx0f(x)log2X lim x → 0 ⁡ f ( x ) log 2 X 值时有限的
  2. f(x)需要是一个非递减的函数,保证出现次数多的权重高
  3. f(x)需要赋予特别大的x较小的值,保证出现的特别频繁的计数的比重不会过于高

一个可以作为f(x)的函数如下:
当x< xmax x m a x 时:

f(x)=(xxmax)α f ( x ) = ( x x max ) α

其他时候f(x)=1,其中f(x)的定义域是x>=0。

实验中取 xmax=100,α=3/4 x m a x = 100 , α = 3 / 4 效果较好。

Relationship to Other Models

基于skip-gram模型的损失函数可写出如下格式:

Qij=exp(wTiw~j)vk=1exp(wTiw~k) Q i j = exp ⁡ ( w i T w ~ j ) ∑ k = 1 v ⁡ exp ⁡ ( w i T w ~ k )

J=icorpus,jcontext(i)logQij J = − ∑ i ∈ c o r p u s , j ∈ c o n t e x t ( i ) l o g Q i j

然后将所有的 Qij Q i j 合并得到
J=j=1vj=1vXijlogQij J = − ∑ j = 1 v ⁡ ∑ j = 1 v ⁡ X i j log ⁡ Q i j

然后对用 Pij=XijXi P i j = X i j X i 带入得到:
J=i=1vXij=1vPijlogQij=i=1vXiH(Pi,Qi) J = − ∑ i = 1 v ⁡ X i ∑ j = 1 v ⁡ P i j log ⁡ Q i j = ∑ i = 1 v ⁡ X i H ( P i , Q i )

其中 H(Pi,Qi) H ( P i , Q i ) 表示分布 Pi P i 与分布 Qi Q i 的交叉熵。
由于交叉熵在长尾分布的时候的表现并不好,所以使用离散分布的平方差当作损失函数。同时为了加速计算对概率分布不进行归一化即有: P^ij=Xij P ^ i j = X i j , Q^ij=exp(wTiw~j) Q ^ i j = e x p ( w i T w ~ j ) 从而有:
J^=i,jXi(logP^ijlogQ^ij)2=ijXi(wTiw~jlogXij)2 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

由于skip-gram对数据集会进行下采用,这等效于对权重 Xi X i 用一个函数了替代 f(Xi) f ( X i ) ,所以最后的公式如下:
J^=ijf(Xij)(wTiw~jlogXij)2 J ^ = ∑ i j ⁡ f ( X i j ) ( w i T w ~ j − l o g X i j ) 2

Experiments

  1. 对于在context里的词,这个词对的count是它们的距离分之一,即如果两个词的距离是d,则它们的count计数加 1d 1 d
  2. 有两种考虑上下文的方式,一个是只考虑左边的词语是context(asymmetric),另一种是考虑左右两边的(symmetric)。如果是对称的则网络的中 W W W~是等价的,我们用 W+W~ W + W ~ 作为最后的词向量矩阵能提高一点效果。
  3. 当词向量的维度大于300的时候,增加vec的dim的效果就不明显了
  4. 当窗口较小且采用非对称方式,词向量的语法信息较好,因为语法比较以来直接上下文,且依赖词的顺序
  5. 词向量在语法上的表现随数据集的增加而增加
  6. 6.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值