词向量:GloVe 模型详解

  本内容主要介绍构建词向量的 GloVe 模型

1 前言

  在 GloVe 模型被提出之前,学习词向量的模型主要有两大类:

  • 全局矩阵分解方法,例如潜在语义分析(Latent semantic analysis,LSA)。
  • 局部上下文窗口方法,例如 Mikolov 等人提出的 skip-gram 模型。

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

2 GloVe 模型

  GloVe 的全称叫 Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具。

  GloVe 的实现主要分为三步:(1)构建共现矩阵;(2)词向量和共现矩阵的近似关系;(3)构造损失函数。

2.1 构建共现矩阵

  假设我们有一个语料库,包含以下三个句子:

i like deep learning

i like NLP

i enjoy flying

  这个语料库涉及 7 个词:i,like,enjoy,deep,learning,NLP,flying。

  假设我们采用一个大小为 3(左右长度为 1)的统计窗口,以第一个语句 “i like deep learning” 为例,则会生成以下窗口内容:

窗口标号中心词窗口内容
0ii love
1lovei love deep
2deeplove deep learning
3learningdeep learning

  以窗口 1 为例,中心词为 love,上下文词为 ideep,则更新共现矩阵中的元素:

词向量:GloVe 模型详解

  使用以上方法,将整个语料库遍历一遍,即可得到共现矩阵 词向量:GloVe 模型详解

ilikeenjoydeeplearningNLPflying
i0210000
like2001010
enjoy1000001
deep0100100
learning0001000
NLP0100000
flying0010000

其中,第一列表示中心词词,第一行表示上下文词。

2.2 词向量和共现矩阵的近似关系

  在开始前,我们先定义一些变量:

  • 词向量:GloVe 模型详解 表示词 词向量:GloVe 模型详解 在词 词向量:GloVe 模型详解 上下文中出现的次数。
  • 词向量:GloVe 模型详解 表示任何词出现在词 词向量:GloVe 模型详解 上下文中的次数。
  • 词向量:GloVe 模型详解 表示词 词向量:GloVe 模型详解 出现在词 词向量:GloVe 模型详解 上下文中的概率。

  我们来看一下论文作者提供的一个表格:

表 1 目标词 ice 和 steam 与从 60 亿语料库中选定的上下文词的共现概率。只有在这个比率中,来自非区别词的噪音才会被抵消,因此大值(远大于 1)与 ice 的特性相关,小值(远小于 1)与 steam 的特性相关。

  表 1 显示了一个大型语料库的概率及其比率结果,其中取 词向量:GloVe 模型详解词向量:GloVe 模型详解。对于与 ice 有关但与 steam 无关的词 词向量:GloVe 模型详解,比如 词向量:GloVe 模型详解词向量:GloVe 模型详解 远大于 1。类似地,对于与 steam 有关但与 ice 无关的词 词向量:GloVe 模型详解,比如 词向量:GloVe 模型详解,比率远小于 1。对于像 waterfashion 这样的词 词向量:GloVe 模型详解,要么与 icesteam 都有关,要么与两者都无关,其比率接近 1。与原始概率相比,该比率能够更好地区分相关词(solidgas)和不相关词(waterfashion),并且能够更好地区分两个相关词。

  上述论证表明,通过概率的比率而不是概率本身去学习词向量是一个更合适的方法。比率 词向量:GloVe 模型详解 取决于三个词 词向量:GloVe 模型详解词向量:GloVe 模型详解词向量:GloVe 模型详解,最通用的模型采用以下形式:

词向量:GloVe 模型详解

其中,词向量:GloVe 模型详解 是词向量,词向量:GloVe 模型详解 是单独的上下文词向量。在这个等式中,右边是从语料库中提取的,词向量:GloVe 模型详解 可能取决于一些尚未确定的参数。因为向量空间是线性结构的,所以要表达出两个概率的比例差,最自然的方法是使用向量差,即可得到:

词向量:GloVe 模型详解

  接下来,我们注意到等式(2)中 词向量:GloVe 模型详解 的参数是向量,而右边是标量,于是我们把 词向量:GloVe 模型详解 的参数作点积操作,得到:

词向量:GloVe 模型详解

  我们知道 词向量:GloVe 模型详解 是对称矩阵,词和上下文词其实是相对的,也就是如果我们做如下交换:词向量:GloVe 模型详解词向量:GloVe 模型详解,式(3)应该保持不变。很显然,现在的公式是不满足的。然而,对称性可以通过两步实现。首先,我们要求 词向量:GloVe 模型详解 满足同态特性,即:

词向量:GloVe 模型详解

结合等式(3)得到:

词向量:GloVe 模型详解

令等式(4)中 词向量:GloVe 模型详解,得到:

词向量:GloVe 模型详解

  接下来,我们注意到,如果不是右边的 词向量:GloVe 模型详解,等式(6)将表现出交换对称性。然而,该项与 词向量:GloVe 模型详解 无关,因此它可以被吸收为 词向量:GloVe 模型详解 的偏置项 词向量:GloVe 模型详解。最后,为 词向量:GloVe 模型详解 添加一个偏置 词向量:GloVe 模型详解 实现对称性:

词向量:GloVe 模型详解

  这样,我们就得到了词向量和共现矩阵之间的近似关系。

2.3 构造损失函数

  作者在论文中提出了一个新的加权最小二乘回归模型来构造损失函数。将等式(7)看作一个最小二乘问题,并在损失函数中引入权重函数 词向量:GloVe 模型详解

词向量:GloVe 模型详解

其中 词向量:GloVe 模型详解 是词库的大小。

  因为少见的共现携带有噪声,并且比频繁的共现携带更少的信息。添加权重函数可以避免对所有共现事件赋予相同的权重。从而权重函数应符合以下特性:

  • 词向量:GloVe 模型详解。如果 词向量:GloVe 模型详解 被看作一个连续函数,它应该随着 词向量:GloVe 模型详解 足够快地消失,使得 词向量:GloVe 模型详解 是有限的。

  • 词向量:GloVe 模型详解 应该是非递减的,这样少见的共现权重不会过大。

  • 对于较大的 词向量:GloVe 模型详解 值,词向量:GloVe 模型详解 应该相对较小,这样频繁的共现权重不会过大。

  很多函数满足这些性质,作者发现如下形式的函数表现良好:

词向量:GloVe 模型详解

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月22日
下一篇 2022年5月22日

相关推荐