什么是Skip-gram模型?
在跳字模型中,我们用一个词来预测它在文本序列周围的词。例如,给定文本序列"the", “man” “hit , his”,和"son",跳字模型所关心的是,给定"hit" ,生成它邻近词"the", " man", “his ,和"son"的概率。在这个例子中,“hit"叫中心词,“the”, " man”, “his”,和"son"叫背景词。由于"hit"只生成与它距离不超过2的背景词,该时间窗口的大小为2。
Skip-gram模型
假设词典大小为|V|,我们将词典中的每个词与从0到|V|-1的整数一一对应︰词典索引集V={0,1…|V|-1}。一个词在该词典中所对应的整数称为词的索引。给定一个长度为T的文本序列中,t时刻的词为w(t)。当时间窗口大小为m时,跳字模型需要最大化给定任一中心词生成背景词的概率:
上式的最大似然估计与最小化以下损失函数等价
我们可以用v和u分别代表中心词和背景词的向量。换言之,对于词典中一个索引为i的词,它在作为中心词和背景词时的向量表示分别是vi和ui。而词典中所有词的这两种向量正是跳字模型所要学习的模型参数。为了将模型参数植入损失函数,我们需要使用模型参数表达损失函数中的中心词生成背景词的概率。假设中心词生成各个背景词的概率是相互独立的。给定中心词wc在词典中索引为c,背景词wo在词典中索引为o,损失函数中的中心词生成背景词的概率可以使用softmax函数定义为
分子:两个向量做点乘运算;分母是把词典中的所有索引都做点乘然后加到一起,
当序列长度T较大时,我们通常随机采样一个较小的子序列来计算损失函数并使用随机梯度下降优化该损失函数。通过微分,我们可以计算出上式生成概率的对数关于中心词向量vc的梯度为:
而上式与下式等价:
通过上面计算得到梯度后,我们可以使用随机梯度下降来不断迭代模型参数vc。其他模型参数uo。的迭代方式同理可得。最终,对于词典中的任一索引为i的词,我们均得到该词作为中心词和背景词的两组词向量vi和ui。