[GloVe]论文实现:GloVe: Global Vectors for Word Representation*

简介: [GloVe]论文实现:GloVe: Global Vectors for Word Representation*

一、完整代码

稍后补充

二、论文解读

2.1 当前存在的两种word2vec模型

word2vec的两个主要处理方法:

1) Matrix Factorization Methods,如潜在语义分析(LSA)

2) Shallow Window-Based Methods,如CBOW和Skip-gram

    目前,这两个模型方法都存在明显的缺陷。虽然像LSA这样的方法很有效地利用了统计信息,但它们在单词类比任务上做得相对较差,这表明了一个次优的向量空间结构。像skip-gram这样的方法可能在类比任务上做得更好,但它们很少利用语料库的统计数据,因为它们训练的是单独的局部上下文窗口,而不是全局共现计数。

    而GloVe能结合两种优点,通过只训练词共现矩阵中的非零元素,而不是训练整个稀疏矩阵或大型语料库中的单个上下文窗口,有效地利用了统计信息。产生了一个具有有意义的子结构的向量空间;

2.2 GloVe的原理

2.2.1 构建词共现矩阵

    与LSA利用word和top构建词共现矩阵不同的是,GloVe利用的是word和word构建的词共现矩阵,实现原理很简单,利用Shallow Window-Based Methods 即n-gram构建词共现矩阵,接下来我们开始下一步的推导;

2.2.2 定义和推导

    首先我们定义词共现矩阵为 X,其 Screenshot_20240510_111220.jpg 表示为 Screenshot_20240510_111334.jpg 中出现的次数;定义 Screenshot_20240510_111442.jpg 即所有词包含 Screenshot_20240510_111524.jpg 出现的次数之和;最后定义 Screenshot_20240510_111615.jpg ,表示 Screenshot_20240510_111524.jpg 出现在包含 Screenshot_20240510_111524.jpg 的上下文出现次数的可能性;


从图中我们可以看出,虽然k在ice和steam出现的概率不高,但是两者的概率的比值根据k值都有一定的变化,再根据k为solid或者gas的结果中我们可以看出,solid大于1对应分子,gas小于1对应分母;再从water和fashion两个与solid和gas几乎无相关的词的值在1附近可以看出,该比率能更好地区分相关单词和不相关单词;


    在这里我们定义 Screenshot_20240510_111524.jpg 和   Screenshot_20240510_111955.jpg 这两个词的词向量为 Screenshot_20240510_112240.jpg ,随便定义一个映射函数,包含 Screenshot_20240510_112024.jpg ,不需要在意是怎么映射的;


Screenshot_20240510_102956.jpg

然后由于向量空间本质上是线性结构,所以最自然的方法是利用向量差。即可以把 Screenshot_20240510_112422.jpg 转化为 Screenshot_20240510_112602.jpg ,即

Screenshot_20240510_103109.jpg

再可以看到减数和被减数分别代表着分子和分母,然而分子和分母之间又有一个k与他们联系起来,这里我们可以再进行转化一下,把   Screenshot_20240510_112738.jpg ,即   Screenshot_20240510_103211.jpg 在这里就结束了吗?不!我们还给这个函数添加一个新的功能

Screenshot_20240510_103520.jpg

得到

Screenshot_20240510_103604.jpg

由于需要满足这个新功能的函数只有指数函数则定义 Screenshot_20240510_103707.jpg ,则有

Screenshot_20240510_103821.jpg 从自由度的角度来解释由于公式 Screenshot_20240510_103919.jpg 其中   Screenshot_20240510_104021.jpg 的值是否固定不影响   Screenshot_20240510_104152.jpg 的关系,我们可以把其看作一个常数,通过对称性,我们可以把其值表示为

  Screenshot_20240510_104251.jpg

同时要注意到词共现矩阵肯定会出现0元素,所以我们需要进行一下优化,有

  Screenshot_20240510_104407.jpg

到这一步其实还有一个缺陷:会出现一些无意义的词共现程度非常大,所以我们需要加强一下出现词少的权重,减弱一下出现词多的权重;定义函数如下

  Screenshot_20240510_104601.jpg

在这里我们需要定义两个参数 Screenshot_20240510_104643.jpg Screenshot_20240510_104806.jpg

最后我们定义损失函数如下:

Screenshot_20240510_104852.jpg

一般来说我们把 Screenshot_20240510_104943.jpg 分别固定为100和0.75;

2.2.3 与其他模型的关系

其他模型一般是使用softmax进行分类,即要求

  Screenshot_20240510_105127.jpg (

达到最大;这样我们就可以定义其损失函数为

Screenshot_20240510_105226.jpg

不懂可以考虑一下: Screenshot_20240510_105330.jpg  ,在这里又可以通过 Screenshot_20240510_105448.jpg Screenshot_20240510_105525.jpg 转化为

Screenshot_20240510_105647.jpg

其中 Screenshot_20240510_105739.jpg 表示 Screenshot_20240510_105826.jpg 出现在包含 Screenshot_20240510_105922.jpg 的上下文出现次数的可能性; Screenshot_20240510_110045.jpg 可以写为 Screenshot_20240510_110206.jpg ,不同的模型主要差别显示在了这里, Screenshot_20240510_110304.jpg 都有 Screenshot_20240510_110404.jpg 出现在包含   Screenshot_20240510_110508.jpg 的上下文出现次数的可能性的意思,则应该输出一个平方项,于此同时   Screenshot_20240510_110603.jpg j ) 是负数,可以把负号给去掉,则应该使其平方和尽可能的小,则可以表示为

Screenshot_20240510_110704.jpg 为了简化计算有 Screenshot_20240510_110808.jpg 再根据优化,减弱出现次数多的权重,加强出现次数少的权重,最后我们可以得到

Screenshot_20240510_110910.jpg

三、过程实现

稍后补充

四、整体总结

GloVe是一种新的全局对数双线性回归模型的无监督学习,在单词类比、单词相似度和命名实体识别任务上优于其他模型(2014年之前)。


目录
相关文章
|
17天前
【Bert4keras】解决Key bert/embeddings/word_embeddings not found in checkpoint
在使用bert4keras进行预训练并加载模型时遇到的"bert/embeddings/word_embeddings not found in checkpoint"错误,并提供了通过重新生成权重模型来解决这个问题的方法。
16 3
|
3月前
|
机器学习/深度学习 自然语言处理 C++
[Dict2vec]论文实现:Dict2vec : Learning Word Embeddings using Lexical Dictionaries
[Dict2vec]论文实现:Dict2vec : Learning Word Embeddings using Lexical Dictionaries
28 2
[Dict2vec]论文实现:Dict2vec : Learning Word Embeddings using Lexical Dictionaries
|
3月前
|
算法 TensorFlow 算法框架/工具
[FastText in Word Representations]论文实现:Enriching Word Vectors with Subword Information*
[FastText in Word Representations]论文实现:Enriching Word Vectors with Subword Information*
30 2
|
3月前
|
机器学习/深度学习 自然语言处理 PyTorch
[ELMo]论文实现:Deep contextualized word representations
[ELMo]论文实现:Deep contextualized word representations
28 1
|
机器学习/深度学习 人工智能 自然语言处理
【论文精读】AAAI 2022 - Unified Named Entity Recognition as Word-Word Relation Classification
到目前为止,命名实体识别(NER)已经涉及三种主要类型,包括扁平、重叠(又名嵌套)和不连续NER,它们大多是单独研究的。
184 0
【论文精读】AAAI 2022 - Unified Named Entity Recognition as Word-Word Relation Classification
|
机器学习/深度学习 自然语言处理 数据可视化
SimCSE: Simple Contrastive Learning of Sentence Embeddings论文解读
本文介绍了SimCSE,一个简单的对比学习框架,极大地推进了最先进的句子嵌入。我们首先描述了一种无监督方法,该方法采用一个输入句子,并在一个对比目标中预测自己
218 0
|
机器学习/深度学习 自然语言处理 数据可视化
深入理解 Word Embedding
深入理解 Word Embedding
503 0
|
机器学习/深度学习 编解码 自然语言处理
DeIT:Training data-efficient image transformers & distillation through attention论文解读
最近,基于注意力的神经网络被证明可以解决图像理解任务,如图像分类。这些高性能的vision transformer使用大量的计算资源来预训练了数亿张图像,从而限制了它们的应用。
455 0
|
自然语言处理
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
Re13:读论文 Gender and Racial Stereotype Detection in Legal Opinion Word Embeddings
|
机器学习/深度学习 自然语言处理 算法
Word2Vec教程-Skip-Gram模型
这篇教程主要讲述了Word2Vec中的skip gram模型,主要目的是避免普遍的浅层介绍和抽象观点,而是更加详细地探索Word2Vec。现在我们开始研究skip gram模型吧
458 0
Word2Vec教程-Skip-Gram模型