10.2. 近似训练

回忆上一节的内容。跳字模型的核心在于使用softmax运算得到给定中心词

10.2. 近似训练 - 图1 来生成背景词 10.2. 近似训练 - 图2 的条件概率

10.2. 近似训练 - 图3

该条件概率相应的对数损失

10.2. 近似训练 - 图4

由于softmax运算考虑了背景词可能是词典

10.2. 近似训练 - 图5 中的任一词,以上损失包含了词典大小数目的项的累加。在上一节中我们看到,不论是跳字模型还是连续词袋模型,由于条件概率使用了softmax运算,每一步的梯度计算都包含词典大小数目的项的累加。对于含几十万或上百万词的较大词典,每次的梯度计算开销可能过大。为了降低该计算复杂度,本节将介绍两种近似训练方法,即负采样(negativesampling)或层序softmax(hierarchicalsoftmax)。由于跳字模型和连续词袋模型类似,本节仅以跳字模型为例介绍这两种方法。

10.2.1. 负采样

负采样修改了原来的目标函数。给定中心词

10.2. 近似训练 - 图6 的一个背景窗口,我们把背景词 10.2. 近似训练 - 图7 出现在该背景窗口看作一个事件,并将该事件的概率计算为

10.2. 近似训练 - 图8

其中的

10.2. 近似训练 - 图9 函数与sigmoid激活函数的定义相同:

10.2. 近似训练 - 图10

我们先考虑最大化文本序列中所有该事件的联合概率来训练词向量。具体来说,给定一个长度为

10.2. 近似训练 - 图11 的文本序列,设时间步 10.2. 近似训练 - 图12 的词为 10.2. 近似训练 - 图13 且背景窗口大小为 10.2. 近似训练 - 图14 ,考虑最大化联合概率

10.2. 近似训练 - 图15

然而,以上模型中包含的事件仅考虑了正类样本。这导致当所有词向量相等且值为无穷大时,以上的联合概率才被最大化为1。很明显,这样的词向量毫无意义。负采样通过采样并添加负类样本使目标函数更有意义。设背景词

10.2. 近似训练 - 图16 出现在中心词 10.2. 近似训练 - 图17 的一个背景窗口为事件 10.2. 近似训练 - 图18 ,我们根据分布 10.2. 近似训练 - 图19 采样 10.2. 近似训练 - 图20 个未出现在该背景窗口中的词,即噪声词。设噪声词 10.2. 近似训练 - 图2110.2. 近似训练 - 图22 )不出现在中心词 10.2. 近似训练 - 图23 的该背景窗口为事件 10.2. 近似训练 - 图24 。假设同时含有正类样本和负类样本的事件 10.2. 近似训练 - 图25 相互独立,负采样将以上需要最大化的仅考虑正类样本的联合概率改写为

10.2. 近似训练 - 图26

其中条件概率被近似表示为

10.2. 近似训练 - 图27

设文本序列中时间步

10.2. 近似训练 - 图28 的词 10.2. 近似训练 - 图29 在词典中的索引为 10.2. 近似训练 - 图30 ,噪声词 10.2. 近似训练 - 图31 在词典中的索引为 10.2. 近似训练 - 图32 。有关以上条件概率的对数损失为

10.2. 近似训练 - 图33

现在,训练中每一步的梯度计算开销不再与词典大小相关,而与

10.2. 近似训练 - 图34 线性相关。当 10.2. 近似训练 - 图35 取较小的常数时,负采样在每一步的梯度计算开销较小。

10.2.2. 层序softmax

层序softmax是另一种近似训练法。它使用了二叉树这一数据结构,树的每个叶结点代表词典

10.2. 近似训练 - 图36 中的每个词。

层序softmax。二叉树的每个叶结点代表着词典的每个词 图 10.3 层序softmax。二叉树的每个叶结点代表着词典的每个词

假设

10.2. 近似训练 - 图38 为从二叉树的根结点到词 10.2. 近似训练 - 图39 的叶结点的路径(包括根结点和叶结点)上的结点数。设 10.2. 近似训练 - 图40 为该路径上第 10.2. 近似训练 - 图41 个结点,并设该结点的背景词向量为 10.2. 近似训练 - 图42 。以图10.3为例, 10.2. 近似训练 - 图43 。层序softmax将跳字模型中的条件概率近似表示为

10.2. 近似训练 - 图44

其中

10.2. 近似训练 - 图45 函数与“多层感知机”一节中sigmoid激活函数的定义相同, 10.2. 近似训练 - 图46 是结点 10.2. 近似训练 - 图47 的左子结点:如果判断 10.2. 近似训练 - 图48 为真, 10.2. 近似训练 - 图49 ;反之 10.2. 近似训练 - 图50 。让我们计算图10.3中给定词 10.2. 近似训练 - 图51 生成词 10.2. 近似训练 - 图52 的条件概率。我们需要将 10.2. 近似训练 - 图53 的词向量 10.2. 近似训练 - 图54 和根结点到 10.2. 近似训练 - 图55 路径上的非叶结点向量一一求内积。由于在二叉树中由根结点到叶结点 10.2. 近似训练 - 图56 的路径上需要向左、向右再向左地遍历(图10.3中加粗的路径),我们得到

10.2. 近似训练 - 图57

由于

10.2. 近似训练 - 图58 ,给定中心词 10.2. 近似训练 - 图59 生成词典 10.2. 近似训练 - 图60 中任一词的条件概率之和为1这一条件也将满足:

10.2. 近似训练 - 图61

此外,由于

10.2. 近似训练 - 图62 的数量级为 10.2. 近似训练 - 图63 ,当词典 10.2. 近似训练 - 图64 很大时,层序softmax在训练中每一步的梯度计算开销相较未使用近似训练时大幅降低。

10.2.3. 小结

  • 负采样通过考虑同时含有正类样本和负类样本的相互独立事件来构造损失函数。其训练中每一步的梯度计算开销与采样的噪声词的个数线性相关。
  • 层序softmax使用了二叉树,并根据根结点到叶结点的路径来构造损失函数。其训练中每一步的梯度计算开销与词典大小的对数相关。

10.2.4. 练习

  • 在阅读下一节之前,你觉得在负采样中应如何采样噪声词?
  • 本节中最后一个公式为什么成立?
  • 如何将负采样或层序softmax用于训练连续词袋模型?