说明
来自2014年 word2vec explained: deriving Mikolov et al.’s negative-sampling wordembedding method, 纯属翻译。另外为了方便表示概率时候都用/代替\。
Skip-gram 模型
1954年,Harris的the distributional hypothesis,文章名:Distributional structure,通俗的讲就是说对于一个词来讲,如果相同的context就应该有相近的意思。更加浅显的个人理解就是,如果对一个词库进行统计,两个词语 w1,w2 w 1 , w 2 ,同时出现频率最高的词都是 w3,w4,w5 w 3 , w 4 , w 5 ,那他们意义就应该是相近的。
我们假设在已知
w
w
的情况下,出现c的概率是,假定此时的参数集合是
θ
θ
,因此我们有:
C(w) C ( w ) 是词 w w 的context,即周边的词语,至于周边词语的多少,是由选定的窗口大小决定的,窗口大周边词语多。更加紧致的写法:
D D 是词典中所有的词,环境词也是从中根据窗口选取出来的。
参数
根据神经网络语言模型,最后一层采用soft-max,其表示为:
最大化每个 w,c w , c 出现的概率,再取一个log,即可得到:
此时我们的参数包括 vc,vw v c , v w ,参数大小为 c∗w∗d c ∗ w ∗ d ,我们可以从上面一个式子第二项可以看到,要计算soft-max就要计算出现一个词 w w 后出现可能的概率,计算量是不容小觑的,特别是它的contexts非常大的时候。因此衍生出了负采样及基于分阶的softmax。
负采样
设定
p(D=1/w,c)
p
(
D
=
1
/
w
,
c
)
表示词对
(w,c)
(
w
,
c
)
在corpus中出现,而
p(D=0/w,c)=1−p(D=1/w,c)
p
(
D
=
0
/
w
,
c
)
=
1
−
p
(
D
=
1
/
w
,
c
)
是
(w,c)
(
w
,
c
)
未在corpus中出现。其实思想就是,最大化出现过的词对概率,最小化未出现的词对概率。个人理解为,最大化词对出现过的概率以后,其解空间还是特别大,加一个约束即最小化未出现词对概率有缩小解空间的作用。当然在这篇文章中,作者从另外一个角度解释说是为了防止得到一个错误解,即:
即取 vc=vw v c = v w 以及 vc⋅vw=K v c ⋅ v w = K ,而K取比较大的时候,此时这个式子即可取得最大,不能求得解了。因此我们最大化出现的词对的同时也最小化未出现的词对概率,此时有:
取log后化简成求和,中间注意第二项 1−11+e−vc⋅vw 1 − 1 1 + e − v c ⋅ v w ,需要把1分子分母展开,然后上下乘以一个同样的分子,最后可得到:
化简成sigmoid形式: