GloVe与论文学习

GloVe与论文学习

一、介绍

G l o V e GloVe GloVe最早由斯坦福大学的 Jeffrey Pennington 于2014年提出,发表的文章为《GloVe: Global Vectors for Word Representation》,发表在 E M N L P EMNLP EMNLP


二、论文导读

1、背景知识

文章中提到了学习词向量的两种方法:

  • 矩阵分解方法( Matrix Factorization Methods ):所谓的矩阵分解方法,是先构造一个词共现矩阵,例如如果这里有三句话: I enjoy flying.I like NLP.I like deep learning. ,则这词共现矩阵如下图所示(规定 w i n d o w = 1 window=1 window=1,即只有在该词左右的一个词才称之为共同出现);通常来说,词共现矩阵非常大,为 ∣ V ∣ × ∣ V ∣ |V| \times |V| V×V的一个矩阵,因此我们需要使用降维的方法对矩阵降维,得到的降维后的矩阵就是一个一个的词向量

在这里插入图片描述

  • 基于上下文的向量学习方法( Shallow Window-Based Methods ):所谓的基于上下文的向量学习方法就是 W o r d 2 V e c Word2Vec Word2Vec中的 C B O W CBOW CBOW S k i p − G r a m Skip-Gram SkipGram这两种方法:
    在这里插入图片描述

文章中提到,上述的两种学习词向量的方法都有缺点,矩阵分解方法在词对推理任务上表现特别差,同时解释性较差;而基于上下文的向量学习方法的缺点是无法使用全局的统计信息,因此文章中提出了一种对数双线性回归模型

2、研究成果及意义
  • 成果:
    • 在词对推理数据集上取得最好的结果
    • 公布了一系列基于 G l o V e GloVe GloVe的预训练词向量
    • 意义:推动了基于深度学习的自然语言处理的发展,尤其是预训练词向量被广泛引用,在 Google Scholar 上的引用量已破万

三、论文精读

1、GloVe模型

 文章中提到,我们可以使用一些词来描述一个词,比如我们使用冰块蒸汽来描述固体气体时尚四个词。如果与词语与冰块接近,并且和蒸汽不接近,那么这个词很有可能是固体,并且概率比值很大;如果与蒸汽接近,并且和冰块不接近:那么这个词很有可能是气体并且概率比值很小;如果与冰块和蒸汽都不接近: 那么这个词很有可能是时尚并且概率比值不大不小,论文给出的具体的结果如下表所示:

在这里插入图片描述

因此,根据这个思路,我们就可以通过共现矩阵的概率比值可以用来区分词,这也是 G l o V e GloVe GloVe模型的核心思想.


 既然通过概率比值可以用来区分词语,那么应该如何计算概率比值呢?文章中给出了概率比值的计算公式:
F ( w i , w j , w ~ k ) = P i k P j k F\left(w_{i}, w_{j}, \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}} F(wi,wj,w~k)=PjkPik
从上面的公式中可以看出,公式与三个参数: w i , w j , w ~ k w_{i}, w_{j}, \tilde{w}_{k} wi,wj,w~k有关,表示的含义是词 w ~ k \tilde{w}_{k} w~k与词 w i w_{i} wi w j w_{j} wj这两个词之间的差异,因此,既然是表示 w i w_{i} wi w j w_{j} wj这两个词之间的差异,我们可以将公式改写为:
F ( w i − w j , w ~ k ) = P i k P j k F\left(w_{i}-w_{j}, \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}} F(wiwj,w~k)=PjkPik
同时注意到,最后得到的比值一定是一个数,即标量;而等式坐标的括号中, w i , w j , w ~ k w_{i}, w_{j}, \tilde{w}_{k} wi,wj,w~k均是词向量,如果将向量转化为标量呢?文章中给出的方法是内积的方法,即公式可转换为:
F ( ( w i − w j ) ⊤ w ~ k ) = P i k P j k F\left(\left(w_{i}-w_{j}\right)^{\top} \tilde{w}_{k}\right)=\frac{P_{i k}}{P_{j k}} F((wiwj)w~k)=PjkPik
这里我们就可以认为公式中的 F F F表示的是一个标量映射到了另一个标量,而括号中的参数可以通过学习得到


        前文提到 F F F表示的是一个标量映射到了另一个标量,那么 F F F具体应该是一个怎样的函数呢?文章中将 F F F函数认为是指数函数 e x p exp exp,那么可以得到:

F ( ( w i − w j ) ⊤ w ~ k ) ) = F ( w i ⊤ w ~ k − w j ⊤ w ~ k ) = exp ⁡ ( w i ⊤ w ~ k − w j ⊤ w ~ k ) = exp ⁡ ( w i ⊤ w ~ k ) exp ⁡ ( w j ⊤ w ~ k ) = P i k P j k \left.F\left(\left(w_{i}-w_{j}\right)^{\top} \tilde{w}_{k}\right)\right)=F\left(w_{i}^{\top} \tilde{w}_{k}-w_{j}^{\top} \tilde{w}_{k}\right)=\exp \left(w_{i}^{\top} \tilde{w}_{k}-w_{j}^{\top} \tilde{w}_{k}\right)=\frac{\exp \left(w_{i}^{\top} \tilde{w}_{k}\right)}{\exp \left(w_{j}^{\top} \tilde{w}_{k}\right)}=\frac{P_{i k}}{P_{j k}} F((wiwj)w~k))=F(wiw~kwjw~k)=exp(wiw~kwjw~k)=exp(wjw~k)exp(wiw~k)=PjkPik
我们可以令分子分母分别等于 P i k P_{ik} Pik P j k P_{jk} Pjk,即:
{ exp ⁡ ( w i ⊤ w ~ k ) = P i k exp ⁡ ( w j ⊤ w ~ k ) = P j k \left\{ \begin{array}{ll} \exp \left(w_{i}^{\top} \tilde{w}_{k}\right) &= P_{ik}\\ \exp \left(w_{j}^{\top} \tilde{w}_{k}\right) &= P_{jk}\\ \end{array} \right. {exp(wiw~k)exp(wjw~k)=Pik=Pjk
因此,对于任意的词向量 w i w_i wi,均成立: exp ⁡ ( w i ⊤ w ~ k ) = P i k , i ∈ ( 0 , ∣ V ∣ ) \exp \left(w_{i}^{\top} \tilde{w}_{k}\right) = P_{ik} , \quad i \in (0, |V|) exp(wiw~k)=Pik,i(0,V).

 由于 P i k = X i k X i P_{ik}=\frac{X_{ik}}{X_{i}} Pik=XiXik,因此 exp ⁡ ( w i ⊤ w ~ k ) = P i k = X i k X i \exp \left(w_{i}^{\top} \tilde{w}_{k}\right) = P_{ik} = \frac{X_{ik}}{X_{i}} exp(wiw~k)=Pik=XiXik,两边同时取对数得: w i ⊤ w ~ k = log ⁡ ( X i k ) − log ⁡ ( X i ) w_{i}^{\top} \tilde{w}_{k} = \log(X_{ik}) - \log(X_{i}) wiw~k=log(Xik)log(Xi);由于 log ⁡ ( X i ) \log(X_{i}) log(Xi)只与 X i X_i Xi有关而与 w k w_k wk无关,因此可以将将等式变换为: w i ⊤ w ~ k + log ⁡ ( X i ) = log ⁡ ( X i k ) w_{i}^{\top}\tilde{w}_{k}+\log(X_{i})=\log(X_{ik}) wiw~k+log(Xi)=log(Xik),由于与 w k w_k wk无关,因此可以将 log ⁡ ( X i k ) \log(X_{ik}) log(Xik)视为一个转置 b i b_i bi,即:
w i ⊤ w ~ k + b i = log ⁡ ( X i k ) w_{i}^{\top} \tilde{w}_{k} + b_i= \log(X_{ik}) wiw~k+bi=log(Xik)
注意到,如果我们将 w i w_i wi w k w_k wk对调,可以发现等式右边 log ⁡ ( X k i ) = log ⁡ ( X i k ) \log(X_{ki})=\log(X_{ik}) log(Xki)=log(Xik),但是 w k ⊤ w ~ i + b k w_{k}^{\top} \tilde{w}_{i} + b_k wkw~i+bk并不等于 w i ⊤ w ~ k + b i w_{i}^{\top} \tilde{w}_{k} + b_i wiw~k+bi,因此$\log(X_{ik}) $的形式为:
w i ⊤ w ~ k + b i + b j = log ⁡ ( X i k ) w_{i}^{\top} \tilde{w}_{k} + b_i + b_j= \log(X_{ik}) wiw~k+bi+bj=log(Xik)


 推导得到 w i ⊤ w ~ k + b i + b j = log ⁡ ( X i k ) w_{i}^{\top} \tilde{w}_{k} + b_i + b_j= \log(X_{ik}) wiw~k+bi+bj=log(Xik)后,我们就可以构造损失函数 J J J,文章中使用交叉熵损失函数:
J = ∑ i , j = 1 V f ( X i j ) ( w i T w ~ j + b i + b ~ j − log ⁡ X i j ) 2 J=\sum_{i, j=1}^{V} f\left(X_{i j}\right)\left(w_{i}^{T} \tilde{w}_{j}+b_{i}+\tilde{b}_{j}-\log X_{i j}\right)^{2} J=i,j=1Vf(Xij)(wiTw~j+bi+b~jlogXij)2
这里的 f ( X i j ) f(X_{ij}) f(Xij)用于刻画词对出现次数对损失函数的影响,即词对出现次数越多,那么这两个词在损失函数中的影响越大,但是 f ( X i j ) f(X_{ij}) f(Xij)需要满足一定的条件:

  • X i j = 0 X_{ij}=0 Xij=0时, f ( X i j ) = 0 f(X_{ij})=0 f(Xij)=0:表示没有共现过的权重为0,不参加训练
  • 非减函数,因为共现次数越多,权重越大
  • f ( X i j ) f(X_{ij}) f(Xij)不能无限制的大,防止 isarethe 这一类词语的影响

论文中构造的 f ( X i j ) f(X_{ij}) f(Xij)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hohanrl6-1598087000349)(./_image/2020-07-22-00-01-28.jpg?r=40)][center]
其中 x max ⁡ x_{\max} xmax α \alpha α均为大于0的数,需要自己决定取值,文章中 x max ⁡ = 100 ,    α = 3 4 x_{\max}=100, \ \ \alpha=\frac{3}{4} xmax=100,  α=43,函数图像如下:
在这里插入图片描述

 推导完 G l o V e GloVe GloVe的核心公式后,我们再回过头看一下如果进行训练:

  • 第一步:构建词共现矩阵term-tern
  • 第二步:去掉矩阵中为零的元素,只对非零元素进行训练
  • 第三步:生成训练集(两组词向量)

2、实验结果及分析
(1)GloVe实现的成绩
  • 在词对推理数据集上取得最好的结果
  • 多个词相似度任务上取得最好的结果
  • 命名实体识别实验结果
(2)分析参数影响

在这里插入图片描述

  • 从上面第一幅图可以看出,向量的长度对准确率有明显的影响,长度越长,准确率越大
  • 从上面第二、三幅图可以看出,窗口大小对准确率也有明显的影响,窗口越大,准确率高;并且在非对称的情况下,语意的表现明显好于对称情况下语意的表现

在这里插入图片描述

  • 从上面这幅图可以看出,训练语料对结果也有非常大的影响:
    • 语料越大,对语法的训练越准确
    • 语料越大,对语意的训练准确率并不是一个单调递增的趋势, WiKi 上的语意训练准确率显著大于其他语料的训练准确率,文章中解释这是因为 Wiki 有实时更新,并且在训练之前就已经有一些知识蕴含其中

在这里插入图片描述

  • 上面这幅图分别与 W o r d 2 V e c Word2Vec Word2Vec中的 C B O W CBOW CBOW C l o v e Clove Clove进行比较,发现,在同样的训练时间下, G l o V e GloVe GloVe的准确率比 C B O W CBOW CBOW S k i p − G r a m Skip-Gram SkipGram要好
3、论文总结
  • 关键点
    • 矩阵分解的词向量学习方法
    • 基于上下文的词向量学习方法
    • 预训练词向量
  • 创新点
    • 提出了一种新的词向量训练模型
    • G l o v e Glove Glove在多个任务上取得最好的结果
    • 公布了一系列预训练的词向量
  • 启发点
    • 相对于原始的概率,概率的比值更能够区分相关的词和不相关的词,并且能够区分两种相关的词
    • 提出了一种新的对数双线性回归模型,这种模型结合全局矩阵分解和局部上下文的优点

四、代码实现

实现 G l o v e Glove Glove,具体代码见我的Github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值