查看原文
其他

重磅!!|“自然语言处理(NLP)系列教程06”之 Glove模型详解

ShuYini AINLPer 2023-07-10

引言

本次文章将主要介绍Glove模型,首先会从模型的公式开始,然后解析模型构建分析,最后与跳字模型(Skip-Gram)、连续词袋模型(CWOB)做对比

本文概要

1

Golve模型的概述


2

Golve模型公式


3

Glove模型的由来


4

Glov和Skip-Gram、CWOB模型对比


5

下期预告


6

参考文献


正文开始

1Golve模型的概述模型目标:进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息。输入:语料库输出:词向量方法的主要概述:首先基于语料库构建词的共现矩阵,然后基于共现矩阵(不明白的小伙伴可以看上一篇文章)和GloVe模型学习词向量。** 开始 -> 统计共现矩阵 -> 训练词向量 -> 结束**


2
Golve模型公式

Golve模型代价函数:

vi,vj是单词i和单词j的词向量,bi,bj是两个标量(主要用于偏差项),f是权重函数,N是词汇表的大小(共现矩阵维度为N*N)。可以看出Glove模型并没有使用神经网络的方法。


3
Glove模型的由来

那么很多人就会好奇了,这个Glove模型是怎么构建出来的呢?在介绍之前,首先定义几个符号。

其中Xi,j表示在整个语料库中,单词i和单词j共同出现在一个窗口中的次数。Xi其实就是矩阵单词i那一行的和。

上面表示条件概率,表示单词k出现在单词i语境中的概率。

这个是两个条件概率的比值ratio(由于没有办法编辑公式,所以这里就用ratio代替)。

根据以上关系,作者的主要是思想就是,ratio这个指标是有规律的,规律统计表如下:

    其实这是一个很简单的规律,但是实际却是很实用。

    其主要的思想是:假设我们已经得到了词向量vi,vj,vk,如果我们用词向量通过某种函数计算ratio,能够同样得到这样的规律的话,就意味着我们词向量与共现矩阵具有很好的一致性,也就说明我们的词向量中蕴含了共现矩阵中所蕴含的信息。

    那么假设用向量vi,vj,vk计算ration的函数为g(vi,vj,vk)(这里先不管具体的函数形式),那么应该有:

即:

上面两者应该尽可能的接近。

那么很容易得到用二者的差方作为代价函数:

可以看到,模型中包含3个单词,这就意味在N*N*N的复杂度上进行计算,但是这样太复杂了,能不能再简单点呢?

那么我们仔细思考了g(vi,vj,vk),它可能会帮上忙。这里作者的主要猜想是这样的:

  • 要考虑单词i和单词j之间的关系,那g(vi,vj,vk)中大概会有这么一项:vi-vj。(在线性空间中考察两个向量的近似性,不失线性地考察,那么vi-vj大概是个合理的选择)。

  • ratio是个标量,那么g(vi,vj,vk)最应该也是一个标量,虽然其输入都是向量,那么内积应该是个合理的选择,于是应该有这么一项:

  • 然后作者又在的外面套上了一层指数运算exp(),得到最终的g(vi,vj,vk)=exp()

    那么作者为什么要套上一层exp()呢?其实套上之后,我们的目标是以下公式尽可能的成立:

即:

即:

即:

然后就会发现简化的方法了:只需要让上式分子对应相等,分母对应相等,即:

然而分子分母形式相同,就可以把两者统一考虑了,即:

本来我们需要求:

现在只要求:

两边取个对数:

那么代价函数就可以简化为:

根据上面可以看出,现在只需要在N*N的复杂度上面进行计算,而不是在N*N*N的复杂度上进行计算了,现在关于为什么在外面套一层exp()就清楚了,正是因为套了一层exp(),才使得差形式变成商形式,进而等式两边分子分母对应相等,进而简化模型。

    然而,出现了一些问题。仔细观察两个式子:

也就是说等式左侧不具有对称性,但是右侧具有对称性。这个该怎么办呢?

解决方法是将代价函数中的条件概率展开:

即:

将其变成为:

即添加了一个偏差项bj,并将log(Xi)吸收到偏差项bi中。于是代价函数就变成了:

    然后基于出现频率越高的词对儿权重应该越大的原则,在代价函数中添加权重项,于是代价函数进一步完善:

具体权重函数应该是什么样的呢?首先它应该是非减的,其次当词频过高时,权重不应该过分大,作者通过实验确定权重函数为:

到这里就将整个模型介绍完毕了。你懂了吗??


4
Glov和Skip-Gram、CWOB模型对比

    前面我们主要介绍了基于计数的词向量生成模型(共现矩阵(SVD优化))以及基于直接预测的模型(跳字模型Skip-Gram、连续词袋模型CWOB)。对于这两类模型,会发现:

    基于计数的方法在中小规模语料训练很快,有效地利用了统计信息。但用途受限于捕捉词语相似度,也无法拓展到大规模语料。

    Skip-gram/CBOW这类是一个local context window的方法,其进行模型预测必须遍历所有的窗口训练,负样本采用sample的方式会缺失词的关系信息,也无法有效利用单词的全局统计信息。但它们显著地提高了上级NLP任务,其捕捉的不仅限于词语相似度。

    Glove模型结合了以上两类方法的优势。融合了矩阵分解Latent Semantic Analysis (LSA)的全局统计信息和local context window优势。融入全局的先验统计信息,可以加快模型的训练速度,又可以控制词的相对权重。


5
下期预告

下期将介绍:

1、fastText模型分析介绍


6
参考文献

[1]http://www.hankcs.com/nlp/word-vector-representations-word2vec.html

[2]http://zh.d2l.ai/chapter_natural-language-processing/index.html

[3]https://blog.csdn.net/u014665013/article/details/79642083【本文主要参考此篇文章】



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存