PyTorch教程-15.2. 近似训练

电子说

1.3w人已加入

描述

回忆一下我们在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来自这个上下文窗口被认为是一个事件,其概率建模为

(15.2.1)P(D=1∣wc,wo)=σ(uo⊤vc),

在哪里σ使用 sigmoid 激活函数的定义:

(15.2.2)σ(x)=11+exp⁡(−x).

让我们首先最大化文本序列中所有此类事件的联合概率来训练词嵌入。具体来说,给定长度的文本序列T, 表示为w(t)时间步长的单词t并让上下文窗口大小为m, 考虑最大化联合概率

(15.2.3)∏t=1T∏−m≤j≤m, j≠0P(D=1∣w(t),w(t+j)).

然而,(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)中的联合概率(仅涉及正例)重写为

(15.2.4)∏t=1T∏−m≤j≤m, j≠0P(w(t+j)∣w(t)),

其中条件概率是通过事件来近似的 S,N1,…,NK:

(15.2.5)P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1, wk∼P(w)KP(D=0∣w(t),wk).

表示为it和hk一个词的索引 w(t)在时间步t文本序列和噪声词wk, 分别。关于 (15.2.5)中条件概率的对数损失是

(15.2.6)−log⁡P(w(t+j)∣w(t))=−log⁡P(D=1∣w(t),w(t+j))−∑k=1, wk∼P(w)Klog⁡P(D=0∣w(t),wk)=−logσ(uit+j⊤vit)−∑k=1, wk∼P(w)Klog⁡(1−σ(uhk⊤vit))=−logσ(uit+j⊤vit)−∑k=1, wk∼P(w)Klog⁡σ(−uhk⊤vit).

我们可以看到现在每个训练步骤的梯度计算成本与字典大小无关,而是线性取决于K. 设置超参数时K对于较小的值,负采样的每个训练步骤的梯度计算成本较小。

15.2.2。分层 Softmax

作为一种替代的近似训练方法,hierarchical softmax 使用二叉树,一种 如图 15.2.1所示的数据结构,其中树的每个叶节点代表字典中的一个词V.

pytorch

图 15.2.1用于近似训练的分层 softmax,其中树的每个叶节点代表字典中的一个词。

表示为L(w)从根节点到表示单词的叶节点的路径上的节点数(包括两端)w在二叉树中。让n(w,j)成为jth该路径上的节点,其上下文词向量为 un(w,j). 例如,L(w3)=4在 图 15.2.1中。分层 softmax 将(15.1.4)中的条件概率近似为

(15.2.7)P(wo∣wc)=∏j=1L(wo)−1σ([[n(wo,j+1)=leftChild(n(wo,j))]]⋅un(wo,j)⊤vc),

哪里的功能σ在(15.2.2)中定义,并且 leftChild(n)是节点的左子节点n: 如果 x是真的,[[x]]=1; 否则 [[x]]=−1.

为了说明,让我们计算生成单词的条件概率w3给定的词wc在图 15.2.1中。这需要词向量之间的点积vc 的wc以及从根到路径(图15.2.1中粗体路径)上的非叶节点向量w3,向左、向右、然后向左遍历:

(15.2.8)P(w3∣wc)=σ(un(w3,1)⊤vc)⋅σ(−un(w3,2)⊤vc)⋅σ(un(w3,3)⊤vc).

自从σ(x)+σ(−x)=1,它认为生成字典中所有单词的条件概率 V基于任何词wc总结为一个:

(15.2.9)∑w∈VP(w∣wc)=1.

幸运的是,因为L(wo)−1顺序是 O(log2|V|)由于二叉树结构,当字典大小时V是巨大的,与不使用近似训练相比,使用分层 softmax 的每个训练步骤的计算成本显着降低。

15.2.3。概括

负采样通过考虑涉及正例和负例的相互独立的事件来构建损失函数。训练的计算成本线性依赖于每一步的噪声词数量。

Hierarchical softmax利用二叉树中从根节点到叶节点的路径构造损失函数。训练的计算成本取决于每一步字典大小的对数。

15.2.4。练习

我们如何在负采样中对噪声词进行采样?

验证(15.2.9)成立。

如何分别使用负采样和分层 softmax 来训练连续词袋模型?

Discussions

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分