两种训练方法都基于skip-gram模型讲解。
一、Negative sampling(负采样)
构建词向量模型时,之所以会出现时间复杂度为词典大小v的情况,就在于softmax这个函数,它会把词典中的每一个词考虑进概率的表达式当中。
假设我们把中心词生成背景词这一事件分解为两个独立的事件:(i)中心词wc和背景词wo同时出现在训练窗口;(ii)中心词wc和第K个噪声词wK没有同时出现在训练窗口。我们可以使用sigmoid函数来表示中心词wc和背景词wo同时出现在训练窗口的概率: P ( D = 1 ∣ w o , w c ) = σ ( u o T v c ) P(D=1|w_{o},w_{c})=\sigma (u_{o}^{T}v_{c}) P(D=1∣wo,wc)=σ(uoTvc) σ ( x ) = 1 1 + e − x \sigma (x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1
D=1表示同时出现在训练窗口。
由上,可以推出联合概率,取对数可以得到: l o g P ( w o ∣ w c ) = l o g [ P ( D = 1 ∣ w o , w c ) ∏ k = 1 , w k ∼ P ( w ) K P ( D = 0 ∣ w k , w c ) ] logP(w_{o}|w_{c})=log\left [ P(D=1|w_{o},w_{c})\prod_{k=1,w_{k}\sim P(w)}^{K}P(D=0|w_{k},w_{c}) \right ] logP(wo∣wc)=log⎣⎡P(D=1∣w