GloVe: Global Vectors for Word Representation阅读总结

2023-10-07 14:30

本文主要是介绍GloVe: Global Vectors for Word Representation阅读总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文:GloVe: Global Vectors for Word Representation

cs224视频:https://www.bilibili.com/video/BV1pt411h7aT?t=4017&p=3

目录

一、背景介绍

二、实验方法

三、模型理解

1、和其他模型的关系

2、模型复杂度

四、实验结果

0、实验设置

1、单词类比任务(word analogy task)

2、单词相似性(Word similarity)

3、命名实体识别(Named entity recognition)

五、实验分析

1、向量长度和上下文窗口大小

2、语料库大小

3、和word2vec模型进行比较


一、背景介绍

目前有两种主要的词向量表示模型:

  • Shallow Window-Based Methods
  • Matrix Factorization Methods

Shallow Window-Based Methods:基于局部上下文窗口的模型(Skip-gram,CBOW,NNLM,HLBL和RNN等)。之前介绍了词向量空间表示模型word2vec,该模型中的skip-gram模型在单词类比任务(analogy task)上表现较好,但是由于它是在单独的局部上下文窗口进行训练,而不是在全局共现计数上进行训练,所以对于语料库的统计信息利用不够

Matrix Factorization Methods:基于全局共现矩阵奇异值分解的模型(如LSA,HAL,COALS和Hellinger-PCA等)。用于生成低维词向量表示,通过对语料库中的大型词-词(或词-文档)共现矩阵进行奇异值分解以获取语料库信息。模型有效利用了统计信息,但在单词类比任务上表现较差,这表明这个向量空间结构不是最优的。其中比较典型的方法是LSA(Latent Semantic Analysis):

LSA的基本流程:

  1. 分析文档集合,建立单词-文本(term-document)矩阵A,矩阵元素Aij表示单词i在文本j中出现的次数
  2. 对矩阵A进行奇异值分解SVD
  3. 对SVD分解后的矩阵进行降维:A=U\cdot S\cdot V^{T}\approx U'\cdot S'\cdot V'^{T}(S是n\times n维,S'是r\times r维,r \ll n
  4. 使用降维后的矩阵构建潜在语义空间

其中,降维过程中,是对矩阵A作SVD后,选取S中较大的r个奇异值并排序得到r',US'V'^{T}可以近似A。

在U'中,每一列代表一个潜在语义,S'中每个奇异值表示该语义的重要程度,V'^{T}中每一列仍是一篇文档,但此文档被映射了语义空间,可用V'^{T}代替A进行之后的工作

二、实验方法

所以,这篇文章结合这两种模型,提出了GloVe:直接获取全局语料库统计信息的词向量模型。该模型使用全局对数双线性回归模型(global log-bilinear regression model),并非基于语料库中整个的稀疏矩阵或局部上下文窗口进行训练,而是通过训练词-词共现矩阵中的非零元素,从而有效利用统计信息。

 首先介绍一下文章中的符号表示:

X:词-词共现计数矩阵

X_{ij}:单词j在单词i的上下文中出现的次数

X_{i}=\sum_{k} X_{ik}:单词i的上下文中出现的单词总数

P_{ij}=P(j|i)=\frac{X_{ij}}{X_{i}}:在单词i的上下文中出现单词j的概率

接下来文章通过分析逐步确定目标函数形式

1、先举了一个简单的例子:

统计了目标词“ice”和“steam”在含60亿词的语料库上构建的共现概率,因为只有在这种规模的语料库下才能抵消“water”和“fashion”这样的噪声。从实验结果可以看到,比值更大的词(solid)与“ice”的特性跟相关,比值更小的词(gas)与“steam”的特性更相关。这种方式与原有概率比较可以发现,这个比值既能区分相关词和不相关词(solid、gas与water、fashion),也能很好地区分两个相关词(solid和gas),所以得出结论:

词向量学习应该基于比值而非概率本身:(式2-1)

其中,w \epsilon R^{d}是单词向量,\widetilde{w}\epsilon R^{d}是上下文单词向量,方程左边F函数的具体形式暂时未定,方程右边概率来自于语料库中的计数统计

2、由于是在向量空间中进行表示,所以是一种线性结构形式,所以

只考虑由两个目标单词向量的差异决定函数F:(式2-2)

3、在式2-2中,右边是标量形式,所以左边的结果也应该是标量。如果使用神经网络,那么结果可能会比较复杂,不利于得到线性结构,所以

使用参数的内积形式以避免混入向量维度这一复杂信息:(式2-3)

4、在词-词共现矩阵中,当前词和上下文词的角色可以互换(一个词既可能是当前词,也可能是上下文词),所以为了保持一致性,在交换w\leftrightarrow \widetilde{w}同时考虑X\leftrightarrow {X^{T}},所以

考虑对称性:(式2-4)

5、同时考虑式2-3和式2-4,可以得到:(式2-5)

6、考虑式2-5,指数函数可以满足这种形式的F,然后两边取对数,可以得到对数形式的方程

使用对数函数(式2-6)

7、在式2-6中,如果没有log(X_{i}),则可以保证对称性的要求。因为log(X_{i})与k无关,所以可以将这项融合进w_{i}的偏置b_{i}中,同时,为了保持对称性,对\widetilde{w}_{k}也增加偏置项\widetilde{b}_{k}

加入偏置项:(式2-7)

8、式2-7能够较好满足目标要求,但是存在一个问题,当参数为0时,对数运算则会出现问题,所以考虑加入偏移量:log(X_{ik})\rightarrow log(1+X_{ik})

但是这个模型仍存在一个问题:即使一些共现很少甚至不出现时,这个模型仍会对其进行考虑,这部分内容也是模型的噪声。尽管这些噪声含有的信息很少,但实际上占据了语料库的75%-95%。

所以考虑使用加权最小二乘回归模型构造损失函数:(式2-8)

其中,f(X_{ij})是权值函数,它应该具有以下特点:

  1. f(0) = 0,并且lim_{x\rightarrow{0}}f(x)log^{2}x有限
  2. f(x)不减,以保证很少出现的共现词组的权值不会过高
  3. 当x较大时,f(x)相对较小,以保证频繁出现的共现词组不会权值过高

9、能够满足上述要求的函数很多,文章中使用:(式2-9)

该模型的表现和x_{max}的值有关,文章设定x_{max}=100,\alpha=3/4

该函数的图像为:(图2-1)

三、模型理解

1、和其他模型的关系

和Matrix Factorization Methods相比,都是重点考虑共现矩阵,两者之间有不少共同点。所以文章重点讨论模型和Shallow Window-Based Methods的联系:

以skip-gram和ivLBL模型为例,他们的出发点都是考虑单词j出现在单词i上下文的概率Q_{ij},这个概率通过softmax计算得到:(式3-1)

所以,全局目标函数为:(式3-2)

为了提高计算效率,通常将含相同值的项放在一起:(式3-3)

其中,相同项的数目是由共现矩阵X给出的。

由于关系式X_{i}=\sum_{k}X_{ik}P_{ij}=X_{ij}/X_i,所以可以将式3-3改写成:(3-4)

其中,H(P_i,Q_i)=\sum_{j=1}^{V}P_{ij}logQ_{ij}是分布Pi和Qi的交叉熵

由于都是使用加权交叉熵误差作为目标函数,所以式3-4和式2-8具有一定的相似性。

相比于式3-4,式2-8可以解释为“全局skip-gram模型”,式2-8考虑的范围更广;而且式3-4存在一些缺点:

  • 在长尾分布中,对于一些不太可能发生的事件,不应该赋予很高的权重
  • 为了保证测量的有界性,需要对分布Q进行适当的规范化,会出现计算瓶颈

所以对模型进行改进,将最小二乘作为目标,同时舍弃了Q和P的正则化因子:(式3-5)

由于舍弃了规范化,所以当X_{ij}值过大时,优化会变得很复杂。所以考虑使用对数,并带入\widehat{P}_{ij}=X_{ij}\widehat{Q}_{ij}=exp(w_i^{T}\widetilde{w}_{j}),得到:(式3-6)

然后考虑加权因子:(式3-7)

加权因子是由模型skip-gram和ivLBL固有的在线训练方法预先设定的,但不能保证它是最优的。可以通过过滤数据来提高性能,从而降低频繁词加权因子的有效值。

可以看到,通过这种方法得到的式3-7和之前推导的2-8是等价的

2、模型复杂度

从式2-8可以看到,模型的复杂度主要取决于共现矩阵X中非零元的个数

因为非零元数目总小于矩阵元素个数,所以模型复杂度不会高于O(|V|^{2})

感觉这是对于Shallow Window-Based Methods(复杂度和语料库单词数目C成比例O(|C|))的改进,但是典型的词汇成千上万个,所以|V|^{2}的数量级可能会比|C|大得多。因此,为了降低模型复杂度,需要对非零元进行更加严格的限制。

考虑单词i和单词j的共现频率排名r_{ij},排名(1,2,...,|x|)名次越大,意味着出现次数越少,所以r_{ij}X_{ij}成反比,两者关系为:(式3-8)

语料库中单词总数与共现矩阵X所有元素的总和成比例:(式3-9)

其中,H_{n,m}是广义调和函数,|x|是最大频率排名,它与矩阵X中非零元素的数量一样。

考虑出现频率最高的共现词组,其排名|X|=k^{1/\alpha},此时有:(式3-10)

当|C|和|X|都很大时,考虑调和函数:(式3-11)

其中,\zeta(s)是黎曼函数

于是,有关系式:(式3-12)

当X很大时,式3-12右端只与一项有关,根据\alpha>1是否成立决定具体和哪一项有关:(式3-13)

在文章使用的语料库中,根据式3-8,\alpha=1.25能够对X_{ij}进行建模的效果不错。在这种情况下,|X|=O(|C|^{0.8}),模型复杂度比最糟糕的情况O(|V|^{2})好很多,而且比基于上下文窗口的方法O(|C|)也要好

四、实验结果

0、实验设置

在实验中,使用了权值递减函数,间隔d个单词的单词对占总数的1/d,间隔较远的单词对包含较少的相关信息

实验中设置x_{max}=100,\alpha=3/4,使用AdaGrad来训练模型,从X中随机采样非零元素,设置学习率为0.05。对于维度小于300的向量进行50次迭代,其他情况进行100次迭代。

模型会生成两组词向量W和\widetilde{W},当X对称时,W和\widetilde{W}是等价的,仅仅由于随机初始化而有所不同。(参考某些神经网络,训练多个网络实例,然后对结果进行综合,可以有助于减少噪声和过拟合,从而在整体上改善结果)所以,使用向量和W+\widetilde{W}作为词向量

1、单词类比任务(word analogy task)

单词类比任务是指“a is to b as c is to __ ?”,主要包含语义问题(semantic question)和语法问题(syntactic question)两种问题。

语义问题通常是关于人和地点,例如“Athens is to Greece as Berlin is to __ ?”

语法问题通常是关于动词和形容词形式,例如“dance is to dancing as fly is to __ ?”

为了回答问题“a is to b as c is to __ ?”,会根据余弦相似性寻找最接近表示为w_b-w_a+w_c的单词d。

实验结果:(图4-1)

文章给出的是百分比形式的准确率,下划线分数表示相同规模的模型中最高得分,加粗分数表示所有模型中最高得分

实验结果显示:在单词类比任务上,GloVe模型在较小的向量维度和较小的语料库上表现明显优于其他模型

本文使用word2vec工具的实验结果也优于已有实验结果。原因:

  1. 使用负采样(通常优于分层采样)
  2. 负样本数目的选择
  3. 语料库的选择

另外,实验发现,单纯增加语料库的大小并不能保证实验结果得到提升,这可以从SVD-L模型在更大的语料库上的性能下降中看出。基本的SVD模型不能很好地扩展到大型语料库,这也验证了模型中提出的加权方案的必要性。因为实验结果和语料库的质量有很大关系,对于Wikipedia这种语料库,涵盖内容比较广,而且拼写错误比较少。而对于一些语料库,例如美国新闻,就会很少出现Abuja、Ashgabat这些词,所以很难捕捉这些词向量,从而会使得结果比较糟糕。

2、单词相似性(Word similarity)

首先对词汇表中的每个特征进行归一化,然后计算余弦相似度,从而得到词向量的相似性得分。

在五个不同的语料库中进行了对比试验:(如图4-2)

可以看到,即使所用语料库的大小不到CBOW使用的一半,但表现依然好于CBOW

3、命名实体识别(Named entity recognition)

基准数据集中标记了四种类型的实体:person,location,organization和miscellaneous(杂项)

当开发集在25次迭代中没有得到改进时,L-BFGS训练终止。除此之外,所有的配置都与 Effect of non-linear deep architecture in sequence labeling使用的相同

标记为Discrete的模型是基线,使用了斯坦福NER模型的标准分布所附带的一组全面的离散特征,但没有词向量特征

基于CRF模型的命名实体识别任务结果:(图4-3)

可以看到,除了在测试集CoNLL上HPCA方法略微表现好一点,在其他任何评价标准下,GloVe模型都比其他模型表现好。因此,可以得出结论:GloVe向量在下游NLP任务中都很有用

五、实验分析

1、向量长度和上下文窗口大小

考虑对称上下文(symmetric context):扩展到目标词上文窗口和下文窗口;不对称上下文(asymmetric context):只扩展到目标词的上文窗口或下文窗口

图5-1:

当向量维度较小时,实验结果比较差,随着向量维度增大,表现会逐渐变好。当向量维度为300时,实验结果达到最优,之后随着向量维度的增加,实验表现会有些微地下降。

上下文窗口大小为8时,实验表现最好。

但是,在上述两项对比中,如果考虑计算代价,当向量维度由200增加至300,或者窗口大小由4增加至8时,表现提升较小,但是所需代价太大,所以在实际应用中需要对其进行权衡。

另外,对于小而不对称的上下文窗口,语法子任务(syntactic subtask)的性能更好,这与直觉一致,即语法信息主要来自于直接的上下文,并且对词序依赖性较强

而语义信息(semantic information)更多是非局部的,常用较大的窗口来获取

2、语料库大小

图5-2:

在语法子任务(syntactic subtask)中,模型表现随着语料库增长而单调递增。这是因为更大的语料库通常会有更多的统计信息。

而对于语义子任务(semantic subtask),模型在较小的Wikipedia语料库的表现比较大的Gigaword语料库的差,这可能是因为类比关系很多都是基于城市和国家的,而Wikipedia中对于这些内容含有丰富的信息。而且,由于Wikipedia中的一些信息会不断更新新知识,而Gigaword相对比较固定,会包含一些过时的不正确的信息。

3、和word2vec模型进行比较

考虑训练时间:对于GloVe,相关参数是training iterations;对于word2vec,相关参数是training epochs。另一种选择是通过改变负样本数目来改变训练时间:增加负样本数目能有效增加训练单词的数目,从而增加训练时间。

图5-3:

word2vec负样本数目超过10时,模型表现会下降,这可能是因为负采样方法不难很好近似目标概率分布。

对于相同的语料库、词汇量、窗口大小和训练时间,GloVe模型的表现都优于word2vec。

 

这篇关于GloVe: Global Vectors for Word Representation阅读总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158387

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果