Raki的读paper小记:GloVe: Global Vectors for Word Representation

82 篇文章 10 订阅
本文详细解析了斯坦福Chris Manning团队的GloVe词向量模型,强调其改进了shallow-window方法,通过共现概率比率学习词向量,避免了线性结构混淆。模型利用最小二乘加权回归处理高频噪声,最终在效率和性能上超越word2vec。
摘要由CSDN通过智能技术生成

大名鼎鼎来自Stanford Chris Manning组的GloVe词向量

摘要

本方法提出的初衷是,基于shallow-window的方法的缺点是它们不能直接对语料库的共现统计数据进行操作,而只是用一个滑动窗口滑过整个语料库,无法利用数据中的大量重复。


碎碎念:首先得吐槽一下,GloVe是目前读过的paper里面最难懂的…明明他的model并不是很复杂,可能因为生词有点多(泪目


模型

我们利用我们的见解构建了一个新的词表示模型,我们称之为GloVe,用于全局向量,因为全局语料库统计数据是由该模型直接捕获的

首先给了一个例子:
在这里插入图片描述
这个例子说明,一个词向量学习的合适出发点应该是共现概率的比率,而不是概率本身有关
在这里插入图片描述
用公式表示为:

F ( w i , w j , w k ~ ) = P i k P j k \Large F(w_i,w_j,\tilde{w_k})=\frac{P_{ik}}{P_{jk}} F(wi,wj,wk~)=PjkPik

由于向量空间本质上是线性结构,因此最自然的方法是使用向量差。为了达到这个目的,我们可以将我们的考虑限制在那些只依赖于两个目标词的差异的函数F上,

把公式改为:
F ( w i − w j , w k ~ ) = P i k P j k \Large F(w_i-w_j,\tilde{w_k})=\frac{P_{ik}}{P_{jk}} F(wiwj,wk~)=PjkPik

然后又出现了新的问题,等式的左边是一个向量,而右边是一个标量
虽然 F F F 可以被看作是一个复杂的函数,例如通过神经网络进行参数化,但这样做会混淆我们试图捕捉的线性结构。为了避免这个问题,我们可以先取参数的点积

F ( ( w i − w j ) T w k ~ ) = P i k P j k \Large F((w_i-w_j)^T\tilde{w_k})=\frac{P_{ik}}{P_{jk}} F((wiwj)Twk~)=PjkPik

这可以防止 F F F以不希望的方式混合向量维度

在词-词共现矩阵中,我们应该是可以任意交换两个词的位置的,而前面的公式并没有对称性
然而,对称性可以分两步恢复:
在这里插入图片描述

  1. F ( ( w i − w j ) T w k ~ ) = F ( w i T w k ~ ) F ( w j T w k ~ ) \large F((w_i-w_j)^T\tilde{w_k})=\frac{F(w_i^T\tilde{w_k})}{F(w_j^T\tilde{w_k})} F((wiwj)Twk~)=F(wjTwk~)F(wiTwk~)

  2. F ( w i T w k ~ ) = P i k = X i k X i \large F(w_i^T\tilde{w_k}) = P_{ik} = \frac{X_{ik}}{X_i} F(wiTwk~)=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 ) \large w_i^T\tilde{w_k} = log{P_{ik}} = log(X_{ik}) - log(X_i) wiTwk~=logPik=log(Xik)log(Xi)
在这里插入图片描述
由于 l o g ( X i ) log(X_i) log(Xi)是不依赖于 k k k的项,所以可以被吸收到 w i w_i wi的偏置里面,加上 w i ~ \tilde{w_i} wi~的偏置就
得到公式: w i T w k ~ + b i + b k ~ = l o g ( X i k ) \large w_i^T\tilde{w_k} + b_i + \tilde{b_k} = log(X_{ik}) wiTwk~+bi+bk~=log(Xik)

满足了对称性,但是此公式还是有一个问题,就是在x取0的时候,对数将会发散,所以需要进行一点小小的偏移: l o g ( X i k ) − > l o g ( 1 + X i k ) \large log(X_{ik}) ->log(1+X_{ik}) log(Xik)>log(1+Xik)
保持了稀疏性并且防止发散

把共现矩阵log进行因式分解的思想有点类似于LSA,该模型的一个主要缺点是,它对所有的共现进行了同等的加权,即使是那些很少发生或从未发生的事件,而频率很低的共现噪声非常多,并且带有更少的信息,作者提出了一种最小二乘加权回归来解决这些问题:
在这里插入图片描述
J = ∑ i , j = 1 V f ( X i , j ) ( w i T w k ~ + b i + b k ~ − l o g ( X i k ) ) 2 \large J = \sum_{i,j=1}^V f(X_{i,j})(w_i^T\tilde{w_k} + b_i + \tilde{b_k} - log(X_{ik}))^2 J=i,j=1Vf(Xi,j)(wiTwk~+bi+bk~log(Xik))2

where V is the size of the vocabulary
The weighting function should obey the following properties:

在这里插入图片描述
进行一个玄学的选函数
在这里插入图片描述
再进行一个玄学的超参数选取,反正很work就完事了
在这里插入图片描述

Relationship to Other Models

在这里插入图片描述
因为softmax的开销非常大,skip-gram选用需要优化的全局函数将会高效很多:
在这里插入图片描述
其中,我们使用了一个事实,即相似项的数量由共现矩阵X给出,然后化一下公式,就搞出了交叉熵公式
在这里插入图片描述
但是交叉熵损失有一个很不好的属性就是它有长尾分布,通常建模很差,对不太可能发生的事件过于重视
此外,为了使测度有界,需要对模式分布Q进行适当的归一化。由于softmax中整个词汇表的总和,这就出现了计算瓶颈。

对此,我们可以选用最小二乘公式来解决
在这里插入图片描述
在这里插入图片描述
新的问题又出现了, X i j X_{ij} Xij的数值经常会很大,我们把P和Q替换成对数
在这里插入图片描述
最后得到如下公式,跟之前推导出来的 J = ∑ i , j = 1 V f ( X i , j ) ( w i T w k ~ + b i + b k ~ − l o g ( X i k ) ) 2 \large J = \sum_{i,j=1}^V f(X_{i,j})(w_i^T\tilde{w_k} + b_i + \tilde{b_k} - log(X_{ik}))^2 J=i,j=1Vf(Xi,j)(wiTwk~+bi+bk~log(Xik))2 ,是等价的
在这里插入图片描述

Complexity of the model

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验

实验部分就是一些sota,直接看图就能一目了然了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评价

总⽽⾔之,GloVe 模型仅对单词共现矩阵中的⾮零元素训练,从⽽有效地利⽤全局统计信息,并⽣成具
有有意义的⼦结构向量空间。给出相同的语料库,词汇,窗⼝⼤⼩和训练时间,它的表现都优于
word2vec,它可以更快地实现更好的效果,并且⽆论速度如何,都能获得最佳效果

然后现在一般常用的也是GloVe840b语料上训练出来的300d词向量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值