Word2vec是一个学习单词向量的框架
IDEA:
- 我们有大量的文本 (corpus means ‘body’ in Latin. 复数为corpora)
固定词汇表中的每个单词都由一个向量表示 - 文本中的每个位置 t,其中有一个中心词 c 和上下文(“外部”)单词 o
- 使用 c和 o的词向量的相似性来计算给定 c的 o的概率
- 不断调整词向量来最大化这个概率
目标函数
L
(
θ
)
=
∏
t
=
1
T
∏
−
m
≤
j
≤
m
j
≠
0
P
(
w
t
+
j
∣
w
t
;
θ
)
L(\theta)=\prod_{t=1}^{T} \prod_{-m \leq j \leq m \atop j \neq 0} P\left(w_{t+j} \mid w_{t} ; \theta\right)
L(θ)=t=1∏Tj=0−m≤j≤m∏P(wt+j∣wt;θ)
损失函数
J
(
θ
)
=
−
1
T
log
L
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
m
≤
j
≤
m
j
≠
0
log
P
(
w
t
+
j
∣
w
t
;
θ
)
J
(
θ
)
=
−
1
T
log
L
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
m
≤
j
≤
m
j
≠
0
log
P
(
w
t
+
j
∣
w
t
;
θ
)
J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{m \leq j \leq m \atop j \neq 0} \log P\left(w_{t+j} \mid w_{t} ; \theta\right)J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^{T} \sum_{m \leq j \leq m \atop j \neq 0} \log P\left(w_{t+j} \mid w_{t} ; \theta\right)
J(θ)=−T1logL(θ)=−T1t=1∑Tj=0m≤j≤m∑logP(wt+j∣wt;θ)J(θ)=−T1logL(θ)=−T1t=1∑Tj=0m≤j≤m∑logP(wt+j∣wt;θ)
- L为目标函数,具体含义就是,遍历该语句,语句长度为T,意味着中心词的移动;
- 因为每次中心词时都要求该中心上下m个背景词和中心词的概率,所以背景词是t+j,j在-m到m之间,且不等于0;
- θ是超参数矩阵;
- 我们希望目标函数的值最大化,但是往往最大化不容易求解,而最小值更容易求解,所以将上述L转化为J,J为损失函数,也就是L的等价变化的负值。
Predict Function
P
(
w
t
+
j
∣
w
t
;
θ
)
P\left(w_{t+j} \mid w_{t} ; \theta\right)
P(wt+j∣wt;θ)如何计算?
每个单词都由两个向量表示:
- v w v_{w} vw 当 w 是中心词时
- u w u_{w} uw 当 w 是上下文词时
P ( o ∣ c ) = exp ( u o T v c ) ∑ w ∈ V exp ( u w T v c ) P(o \mid c)=\frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc)
使用梯度下降来更新参数
∂
∂
v
c
log
P
(
o
∣
c
)
=
∂
∂
v
c
log
exp
(
u
o
T
v
c
)
∑
w
∈
V
exp
(
u
w
T
v
c
)
=
∂
∂
v
c
(
log
exp
(
u
o
T
v
c
)
−
log
∑
w
∈
V
exp
(
u
w
T
v
c
)
)
=
∂
∂
v
c
(
u
o
T
v
c
−
log
∑
w
∈
V
exp
(
u
w
T
v
c
)
)
=
u
o
−
∑
w
∈
V
exp
(
u
w
T
v
c
)
u
w
∑
w
∈
V
exp
(
u
w
T
v
c
)
=
u
0
−
∑
x
∈
V
p
(
x
∣
x
)
u
x
\begin{aligned} \frac{\partial}{\partial v_{c}} \log P(o \mid c) &=\frac{\partial}{\partial v_{c}} \log \frac{\exp \left(u_{o}^{T} v_{c}\right)}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)} \\ &=\frac{\partial}{\partial v_{c}}\left(\log \exp \left(u_{o}^{T} v_{c}\right)-\log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)\right) \\ &=\frac{\partial}{\partial v_{c}}\left(u_{o}^{T} v_{c}-\log \sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)\right) \\ &=u_{o}-\frac{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right) u_{w}}{\sum_{w \in V} \exp \left(u_{w}^{T} v_{c}\right)}\\&=u_{0}-{\sum_{x\in V}p(x \mid x)u_{x}} \end{aligned}
∂vc∂logP(o∣c)=∂vc∂log∑w∈Vexp(uwTvc)exp(uoTvc)=∂vc∂(logexp(uoTvc)−logw∈V∑exp(uwTvc))=∂vc∂(uoTvc−logw∈V∑exp(uwTvc))=uo−∑w∈Vexp(uwTvc)∑w∈Vexp(uwTvc)uw=u0−x∈V∑p(x∣x)ux