PyTorch教程-15.5。带全局向量的词嵌入 (GloVe)

电子说

1.2w人已加入

描述

上下文窗口中的单词共现可能携带丰富的语义信息。例如,在大型语料库中,“固体”一词与“冰”比“蒸汽”更可能同时出现,但“气体”一词与“蒸汽”一起出现的频率可能高于“冰”。此外,可以预先计算此类共现的全球语料库统计数据:这可以提高培训效率。为了利用整个语料库中的统计信息进行词嵌入,让我们首先重新审视第 15.1.3 节中的 skip-gram 模型,但使用全局语料库统计信息(例如共现计数)来解释它。

15.5.1。Skip-Gram 与全球语料库统计

表示为qij条件概率 P(wj∣wi)词的wj给定的词wi在 skip-gram 模型中,我们有

(15.5.1)qij=exp⁡(uj⊤vi)∑k∈Vexp(uk⊤vi),

任何索引在哪里i载体vi和 ui代表词wi分别作为中心词和上下文词,并且 V={0,1,…,|V|−1}是词汇表的索引集。

考虑词wi可能在语料库中多次出现。在整个语料库中,所有上下文词无论在哪里wi被作为他们的中心词形成一个多重集 Ci允许同一元素的多个实例的单词索引。对于任何元素,其实例数称为其多重性。为了举例说明,假设这个词wi在语料库和上下文词的索引中出现两次 wi作为他们在两个上下文窗口中的中心词是 k,j,m,k和k,l,k,j. 因此,多重集 Ci={j,j,k,k,k,k,l,m},其中元素的多样性j,k,l,m分别为 2、4、1、1。

现在让我们表示元素的多重性j在多重集中 Ci作为xij. 这是单词的全局共现计数wj(作为上下文词)和词 wi(作为中心词)在整个语料库中的同一上下文窗口中。使用这样的全局语料库统计,skip-gram 模型的损失函数相当于

(15.5.2)−∑i∈V∑j∈Vxijlogqij.

我们进一步表示xi上下文窗口中所有上下文词的数量wi作为他们的中心词出现,相当于|Ci|. 出租pij是条件概率xij/xi用于生成上下文词 wj给定的中心词wi, (15.5.2) 可以改写为

(15.5.3)−∑i∈Vxi∑j∈Vpijlogqij.

在(15.5.3)中, −∑j∈Vpijlogqij计算条件分布的交叉熵pij全球语料库统计和条件分布qij模型预测。这种损失也由xi如上所述。最小化(15.5.3)中的损失函数 将使预测的条件分布接近全局语料库统计的条件分布。

虽然通常用于测量概率分布之间的距离,但交叉熵损失函数在这里可能不是一个好的选择。一方面,正如我们在 第 15.2 节中提到的,适当归一化的成本 qij导致整个词汇表的总和,这在计算上可能很昂贵。另一方面,来自大型语料库的大量稀有事件通常由交叉熵损失建模,以分配过多的权重。

15.5.2。手套模型

鉴于此,GloVe模型对基于平方损失的 skip-gram 模型做了三处改动(Pennington et al. , 2014):

使用变量pij′=xij和 qij′=exp⁡(uj⊤vi)不是概率分布,取两者的对数,所以平方损失项是 (logpij′−logqij′)2=(uj⊤vi−logxij)2.

为每个单词添加两个标量模型参数wi:中心词偏差bi和上下文词偏差ci.

用权重函数替换每个损失项的权重 h(xij), 在哪里h(x)在增加的间隔[0,1].

综上所述,训练 GloVe 就是最小化下面的损失函数:

(15.5.4)∑i∈V∑j∈Vh(xij)(uj⊤vi+bi+cj−logxij)2.

对于权重函数,建议的选择是: h(x)=(x/c)α(例如α=0.75) 如果 x

需要强调的是,如果单词wi出现在单词的上下文窗口中wj,则反之。所以, xij=xji. 不像word2vec那样拟合非对称条件概率pij, GloVe 适合对称 logxij. 因此,任何词的中心词向量和上下文词向量在 GloVe 模型中在数学上是等价的。然而在实践中,由于不同的初始化值,同一个词在训练后仍然可能在这两个向量中得到不同的值:GloVe 将它们相加作为输出向量。

15.5.3。从共现概率比解释 GloVe

我们还可以从另一个角度解读 GloVe 模型。使用第 15.5.1 节中的相同符号,令 pij=defP(wj∣wi)是生成上下文词的条件概率wj给予 wi作为语料库中的中心词。表 15.5.1 列出了给定单词“ice”和“steam”的几个共现概率及其基于大型语料库统计数据的比率。

表 15.5.1大型语料库中的词-词共现概率及其比率(改编自 Pennington et al. ( 2014 )中的表 1 )
wk= 坚硬的 气体 时尚
p1=P(wk∣ice) 0.00019 0.000066 0.003 0.000017
p2=P(wk∣steam) 0.000022 0.00078 0.0022 0.000018
p1/p2 8.9 0.085 1.36 0.96

我们可以从表 15.5.1中观察到以下内容:

一句话wk与“冰”相关但与“蒸汽”无关的,例如wk=solid,我们期望更大的共现概率比,例如 8.9。

一句话wk与“蒸汽”有关但与“冰”无关的,例如wk=gas,我们期望更小的共现概率比,例如 0.085。

一句话wk与“冰”和“蒸汽”都相关的,例如wk=water,我们期望共现概率的比率接近 1,例如 1.36。

一句话wk与“冰”和“蒸汽”均无关,例如wk=fashion,我们期望共现概率的比率接近 1,例如 0.96。

可以看出,共现概率的比值可以直观地表达词与词之间的关系。因此,我们可以设计一个三个词向量的函数来拟合这个比例。对于共现概率的比率pij/pik和wi 作为中心词和wj和wk作为上下文词,我们想使用一些函数来拟合这个比率f:

(15.5.5)f(uj,uk,vi)≈pijpik.

在许多可能的设计中f,我们只在下面选择一个合理的选择。由于共现概率的比率是一个标量,我们要求f是标量函数,例如 f(uj,uk,vi)=f((uj−uk)⊤vi). 切换单词索引j和k在(15.5.5)中,它必须认为f(x)f(−x)=1, 所以一种可能性是 f(x)=exp⁡(x), IE,

(15.5.6)f(uj,uk,vi)=exp⁡(uj⊤vi)exp⁡(uk⊤vi)≈pijpik.

现在让我们选择 exp⁡(uj⊤vi)≈αpij, 在哪里α是一个常数。自从pij=xij/xi, 两边取对数后得到 uj⊤vi≈logα+logxij−logxi. 我们可能会使用额外的偏差项来适应 −logα+logxi, 比如中心词偏差 bi和上下文词偏差cj:

(15.5.7)uj⊤vi+bi+cj≈logxij.

用权重测量式(15.5.7)的平方误差,得到式(15.5.4)中的GloVe损失函数。

15.5.4。概括

skip-gram 模型可以使用全局语料库统计信息(例如词-词共现计数)来解释。

交叉熵损失可能不是衡量两个概率分布差异的好选择,尤其是对于大型语料库。GloVe 使用平方损失来拟合预先计算的全局语料库统计数据。

对于 GloVe 中的任何单词,中心词向量和上下文词向量在数学上是等价的。

GloVe 可以从词-词共现概率的比率来解释。

15.5.5。练习

如果的话wi和wj在同一个上下文窗口中同时出现,我们如何利用它们在文本序列中的距离重新设计计算条件概率的方法 pij?提示:请参阅 GloVe 论文 (Pennington等人,2014 年)的第 4.2 节。

对于任何一个词,它的中心词偏向和上下文词偏向在 GloVe 中在数学上是否等价?为什么?

Discussions

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

全部0条评论

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

×
20
完善资料,
赚取积分