10.5. 全局向量的词嵌入(GloVe)

让我们先回顾一下word2vec中的跳字模型。将跳字模型中使用softmax运算表达的条件概率

10.5. 全局向量的词嵌入(GloVe) - 图1 记作 10.5. 全局向量的词嵌入(GloVe) - 图2 ,即

10.5. 全局向量的词嵌入(GloVe) - 图3

其中

10.5. 全局向量的词嵌入(GloVe) - 图410.5. 全局向量的词嵌入(GloVe) - 图5 分别是索引为 10.5. 全局向量的词嵌入(GloVe) - 图6 的词 10.5. 全局向量的词嵌入(GloVe) - 图7 作为中心词和背景词时的向量表示, 10.5. 全局向量的词嵌入(GloVe) - 图8 为词典索引集。

对于词

10.5. 全局向量的词嵌入(GloVe) - 图9 ,它在数据集中可能多次出现。我们将每一次以它作为中心词的所有背景词全部汇总并保留重复元素,记作多重集(multiset) 10.5. 全局向量的词嵌入(GloVe) - 图10 。一个元素在多重集中的个数称为该元素的重数(multiplicity)。举例来说,假设词 10.5. 全局向量的词嵌入(GloVe) - 图11 在数据集中出现2次:文本序列中以这2个 10.5. 全局向量的词嵌入(GloVe) - 图12 作为中心词的背景窗口分别包含背景词索引 10.5. 全局向量的词嵌入(GloVe) - 图1310.5. 全局向量的词嵌入(GloVe) - 图14 。那么多重集 10.5. 全局向量的词嵌入(GloVe) - 图15 ,其中元素1的重数为2,元素2的重数为4,元素3和5的重数均为1。将多重集 10.5. 全局向量的词嵌入(GloVe) - 图16 中元素 10.5. 全局向量的词嵌入(GloVe) - 图17 的重数记作 10.5. 全局向量的词嵌入(GloVe) - 图18 :它表示了整个数据集中所有以 10.5. 全局向量的词嵌入(GloVe) - 图19 为中心词的背景窗口中词 10.5. 全局向量的词嵌入(GloVe) - 图20 的个数。那么,跳字模型的损失函数还可以用另一种方式表达:

10.5. 全局向量的词嵌入(GloVe) - 图21

我们将数据集中所有以词

10.5. 全局向量的词嵌入(GloVe) - 图22 为中心词的背景词的数量之和 10.5. 全局向量的词嵌入(GloVe) - 图23 记为 10.5. 全局向量的词嵌入(GloVe) - 图24 ,并将以 10.5. 全局向量的词嵌入(GloVe) - 图25 为中心词生成背景词 10.5. 全局向量的词嵌入(GloVe) - 图26 的条件概率 10.5. 全局向量的词嵌入(GloVe) - 图27 记作 10.5. 全局向量的词嵌入(GloVe) - 图28 。我们可以进一步改写跳字模型的损失函数为

10.5. 全局向量的词嵌入(GloVe) - 图29

上式中,

10.5. 全局向量的词嵌入(GloVe) - 图30 计算的是以 10.5. 全局向量的词嵌入(GloVe) - 图31 为中心词的背景词条件概率分布 10.5. 全局向量的词嵌入(GloVe) - 图32 和模型预测的条件概率分布 10.5. 全局向量的词嵌入(GloVe) - 图33 的交叉熵,且损失函数使用所有以词 10.5. 全局向量的词嵌入(GloVe) - 图34 为中心词的背景词的数量之和来加权。最小化上式中的损失函数会令预测的条件概率分布尽可能接近真实的条件概率分布。

然而,作为常用损失函数的一种,交叉熵损失函数有时并不是好的选择。一方面,正如我们在“近似训练”一节中所提到的,令模型预测

10.5. 全局向量的词嵌入(GloVe) - 图35 成为合法概率分布的代价是它在分母中基于整个词典的累加项。这很容易带来过大的计算开销。另一方面,词典中往往有大量生僻词,它们在数据集中出现的次数极少。而有关大量生僻词的条件概率分布在交叉熵损失函数中的最终预测往往并不准确。

10.5.1. GloVe模型

鉴于此,作为在word2vec之后提出的词嵌入模型,GloVe模型采用了平方损失,并基于该损失对跳字模型做了3点改动[1]:

  • 使用非概率分布的变量 10.5. 全局向量的词嵌入(GloVe) - 图3610.5. 全局向量的词嵌入(GloVe) - 图37 ,并对它们取对数。因此,平方损失项是 10.5. 全局向量的词嵌入(GloVe) - 图38
  • 为每个词 10.5. 全局向量的词嵌入(GloVe) - 图39 增加两个为标量的模型参数:中心词偏差项 10.5. 全局向量的词嵌入(GloVe) - 图40 和背景词偏差项 10.5. 全局向量的词嵌入(GloVe) - 图41
  • 将每个损失项的权重替换成函数 10.5. 全局向量的词嵌入(GloVe) - 图42 。权重函数 10.5. 全局向量的词嵌入(GloVe) - 图43 是值域在 10.5. 全局向量的词嵌入(GloVe) - 图44 的单调递增函数。 如此一来,GloVe模型的目标是最小化损失函数

10.5. 全局向量的词嵌入(GloVe) - 图45

其中权重函数

10.5. 全局向量的词嵌入(GloVe) - 图46 的一个建议选择是:当 10.5. 全局向量的词嵌入(GloVe) - 图47 时(如 10.5. 全局向量的词嵌入(GloVe) - 图48 ),令 10.5. 全局向量的词嵌入(GloVe) - 图49 (如 10.5. 全局向量的词嵌入(GloVe) - 图50 ),反之令 10.5. 全局向量的词嵌入(GloVe) - 图51 。因为 10.5. 全局向量的词嵌入(GloVe) - 图52 ,所以对于 10.5. 全局向量的词嵌入(GloVe) - 图53 的平方损失项可以直接忽略。当使用小批量随机梯度下降来训练时,每个时间步我们随机采样小批量非零 10.5. 全局向量的词嵌入(GloVe) - 图54 ,然后计算梯度来迭代模型参数。这些非零 10.5. 全局向量的词嵌入(GloVe) - 图55 是预先基于整个数据集计算得到的,包含了数据集的全局统计信息。因此,GloVe模型的命名取“全局向量”(GlobalVectors)之意。

需要强调的是,如果词

10.5. 全局向量的词嵌入(GloVe) - 图56 出现在词 10.5. 全局向量的词嵌入(GloVe) - 图57 的背景窗口里,那么词 10.5. 全局向量的词嵌入(GloVe) - 图58 也会出现在词 10.5. 全局向量的词嵌入(GloVe) - 图59 的背景窗口里。也就是说, 10.5. 全局向量的词嵌入(GloVe) - 图60 。不同于word2vec中拟合的是非对称的条件概率 10.5. 全局向量的词嵌入(GloVe) - 图61 ,GloVe模型拟合的是对称的 10.5. 全局向量的词嵌入(GloVe) - 图62 。因此,任意词的中心词向量和背景词向量在GloVe模型中是等价的。但由于初始化值的不同,同一个词最终学习到的两组词向量可能不同。当学习得到所有词向量以后,GloVe模型使用中心词向量与背景词向量之和作为该词的最终词向量。

10.5.2. 从条件概率比值理解GloVe模型

我们还可以从另外一个角度来理解GloVe模型。沿用本节前面的符号,

10.5. 全局向量的词嵌入(GloVe) - 图63 表示数据集中以 10.5. 全局向量的词嵌入(GloVe) - 图64 为中心词生成背景词 10.5. 全局向量的词嵌入(GloVe) - 图65 的条件概率,并记作 10.5. 全局向量的词嵌入(GloVe) - 图66 。作为源于某大型语料库的真实例子,以下列举了两组分别以“ice”(冰)和“steam”(蒸汽)为中心词的条件概率以及它们之间的比值[1]:

10.5. 全局向量的词嵌入(GloVe) - 图67 =“solid”“gas”“water”“fashion”
10.5. 全局向量的词嵌入(GloVe) - 图68 “ice” 10.5. 全局向量的词嵌入(GloVe) - 图69 0.000190.0000660.0030.000017
10.5. 全局向量的词嵌入(GloVe) - 图70 “steam” 10.5. 全局向量的词嵌入(GloVe) - 图71 0.0000220.000780.00220.000018
10.5. 全局向量的词嵌入(GloVe) - 图72 8.90.0851.360.96

我们可以观察到以下现象。

  • 对于与“ice”相关而与“steam”不相关的词 10.5. 全局向量的词嵌入(GloVe) - 图73 ,如 10.5. 全局向量的词嵌入(GloVe) - 图74 “solid”(固体),我们期望条件概率比值较大,如上表最后一行中的值8.9;
  • 对于与“ice”不相关而与“steam”相关的词 10.5. 全局向量的词嵌入(GloVe) - 图75 ,如 10.5. 全局向量的词嵌入(GloVe) - 图76 “gas”(气体),我们期望条件概率比值较小,如上表最后一行中的值0.085;
  • 对于与“ice”和“steam”都相关的词 10.5. 全局向量的词嵌入(GloVe) - 图77 ,如 10.5. 全局向量的词嵌入(GloVe) - 图78 “water”(水),我们期望条件概率比值接近1,如上表最后一行中的值1.36;
  • 对于与“ice”和“steam”都不相关的词 10.5. 全局向量的词嵌入(GloVe) - 图79 ,如 10.5. 全局向量的词嵌入(GloVe) - 图80 “fashion”(时尚),我们期望条件概率比值接近1,如上表最后一行中的值0.96。 由此可见,条件概率比值能比较直观地表达词与词之间的关系。我们可以构造一个词向量函数使它能有效拟合条件概率比值。我们知道,任意一个这样的比值需要3个词

10.5. 全局向量的词嵌入(GloVe) - 图8110.5. 全局向量的词嵌入(GloVe) - 图8210.5. 全局向量的词嵌入(GloVe) - 图83 。以 10.5. 全局向量的词嵌入(GloVe) - 图84 作为中心词的条件概率比值为 10.5. 全局向量的词嵌入(GloVe) - 图85 。我们可以找一个函数,它使用词向量来拟合这个条件概率比值

10.5. 全局向量的词嵌入(GloVe) - 图86

这里函数

10.5. 全局向量的词嵌入(GloVe) - 图87 可能的设计并不唯一,我们只需考虑一种较为合理的可能性。注意到条件概率比值是一个标量,我们可以将 10.5. 全局向量的词嵌入(GloVe) - 图88 限制为一个标量函数: 10.5. 全局向量的词嵌入(GloVe) - 图89 。交换索引 10.5. 全局向量的词嵌入(GloVe) - 图9010.5. 全局向量的词嵌入(GloVe) - 图91 后可以看到函数 10.5. 全局向量的词嵌入(GloVe) - 图92 应该满足 10.5. 全局向量的词嵌入(GloVe) - 图93 ,因此一种可能是 10.5. 全局向量的词嵌入(GloVe) - 图94 ,于是

10.5. 全局向量的词嵌入(GloVe) - 图95

满足最右边约等号的一种可能是

10.5. 全局向量的词嵌入(GloVe) - 图96 ,这里 10.5. 全局向量的词嵌入(GloVe) - 图97 是一个常数。考虑到 10.5. 全局向量的词嵌入(GloVe) - 图98 ,取对数后 10.5. 全局向量的词嵌入(GloVe) - 图99 。我们使用额外的偏差项来拟合 10.5. 全局向量的词嵌入(GloVe) - 图100 ,例如,中心词偏差项 10.5. 全局向量的词嵌入(GloVe) - 图101 和背景词偏差项 10.5. 全局向量的词嵌入(GloVe) - 图102

10.5. 全局向量的词嵌入(GloVe) - 图103

对上式左右两边取平方误差并加权,我们可以得到GloVe模型的损失函数。

10.5.3. 小结

  • 在有些情况下,交叉熵损失函数有劣势。GloVe模型采用了平方损失,并通过词向量拟合预先基于整个数据集计算得到的全局统计信息。
  • 任意词的中心词向量和背景词向量在GloVe模型中是等价的。

10.5.4. 练习

  • 如果一个词出现在另一个词的背景窗口中,如何利用它们之间在文本序列的距离重新设计条件概率 10.5. 全局向量的词嵌入(GloVe) - 图104 的计算方式?(提示:可参考GloVe论文4.2节[1]。)
  • 对于任意词,它在GloVe模型的中心词偏差项和背景词偏差项是否等价?为什么?

10.5.5. 参考文献

[1] Pennington, J., Socher, R., & Manning, C. (2014). Glove: Globalvectors for word representation. In Proceedings of the 2014 conferenceon empirical methods in natural language processing (EMNLP)(pp. 1532-1543).