回忆一下我们在15.1 节中的讨论。skip-gram模型的主要思想是使用softmax操作来计算生成上下文词的条件概率wo基于给定的中心词wc在(15.1.4)中,其对应的对数损失由(15.1.7)的相反数给出 。
由于 softmax 操作的性质,因为上下文词可能是字典中的任何人V, (15.1.7)的反面 包含与词汇表的整个大小一样多的项目总和。因此, (15.1.8)中 skip-gram 模型的梯度计算和(15.1.15)中连续词袋模型的 梯度计算都包含求和。不幸的是,这种在大型词典(通常有数十万或数百万个单词)上求和的梯度的计算成本是巨大的!
为了降低上述计算复杂度,本节将介绍两种近似训练方法:负采样和分层softmax。由于skip-gram模型与连续词袋模型的相似性,我们将仅以skip-gram模型为例来描述这两种近似训练方法。
15.2.1。负采样
负采样修改了原来的目标函数。给定中心词的上下文窗口wc,任何(上下文)词的事实wo来自这个上下文窗口被认为是一个事件,其概率建模为
在哪里σ使用 sigmoid 激活函数的定义:
让我们首先最大化文本序列中所有此类事件的联合概率来训练词嵌入。具体来说,给定长度的文本序列T, 表示为w(t)时间步长的单词t并让上下文窗口大小为m, 考虑最大化联合概率
然而,(15.2.3)只考虑那些涉及正例的事件。因此, 只有当所有词向量都等于无穷大时,(15.2.3)中的联合概率才最大化为 1。当然,这样的结果是没有意义的。为了使目标函数更有意义,负采样添加了从预定义分布中采样的负样本。
表示为S上下文词的事件wo来自中心词的上下文窗口wc. 对于此次涉及的事件wo,来自预定义的分布P(w) 样本K 不是来自这个上下文窗口的噪声词。表示为Nk干扰词的事件wk (k=1,…,K) 不是来自上下文窗口 wc. 假设这些事件同时涉及正例和反例S,N1,…,NK是相互独立的。负采样将(15.2.3)中的联合概率(仅涉及正例)重写为
其中条件概率是通过事件来近似的 S,N1,…,NK: