课程2:词向量和词义
1、Word2vec
word2vec中使用的负采样,在word2vec中我们可以得到关于中心词c预测背景词o的概率为
P
(
o
∣
c
)
=
e
x
p
(
u
o
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w\in V}exp(u^T_wv_c)}
P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc)
从公式中可以看到,归一化分母中的计算量太大,因为提出了负采样方法进行模型训练。
主要思路:训练一个真实对(中心词和上下文窗口中的词)与几个噪声对(中心词与一个随机词配对)的二进制逻辑回归。
总体目标函数(论文中是最大化总体目标函数): J ( θ ) = 1 T ∑ t = 1 T J t ( θ ) J(\theta)=\frac{1}{T}\sum_{t=1}^{T}J_t(\theta) J(θ)=T1t=1∑TJt(θ) J t ( θ ) = l o g σ ( u o T v c ) + ∑ i = 1 k E j ∼ P ( w ) [ l o g σ ( − u j T v c ) ] J_t(\theta)=log\space\sigma(u_o^Tv_c)+\sum_{i=1}^kE_{j\sim P(w)}[log\space\sigma (-u^T_jv_c)] Jt(θ)=log σ(uoTvc)+i=1∑kEj∼P(w)[log σ(−ujTvc)]
在本次课程中,我们使用的总体目标函数为: J n e g − s a m p l e ( o , v c , U ) = − l o g ( σ ( u o T v c ) ) − ∑ k = 1 K l o g ( σ ( − u k T v c ) ) J_{neg-sample}(o,v_c,U)=-log(\sigma(u_o^Tv_c))-\sum_{k=1}^Klog(\sigma(-u_k^Tv_c)) Jneg−sample(o,vc,U)=−log(σ(uoTvc))−k=1∑Klog(σ(−ukTvc))这个公式由两部分组成,第一部分是是观察到的上下文单词的sigmoid函数,我们希望它变大。另一部分是随机选择的K个单词,我们要研究它们与中心词之间的点积,而且我们希望这尽可能小。
对于公式中的K,它是一个适中的数字,可以取值为10,或者15个负样本,效果很好。
论文作者特别提出了一个可以帮助他们的抽样分布, P ( w ) = U ( w ) 3 / 4 / Z P(w)=U(w)^{3/4}/Z P(w)=U(w)3/4/Z,该功率使较不频繁的单词被更频繁地采样。
2、词义和词义歧义
很多次有很多词义;特别是普通的词,特别是已经存在很久的词;