Lecture 1: Introduction and Word Vectors
Representing words as discrete symbols
在传统NLP使用discrete symbols表示词,即one-hot编码,各个单词向量之间是**正交(orthogonal)的,因此没有相似性(similarity)的概念。例如:
m
o
t
e
l
=
[
0
,
0
,
0
,
0
,
1
,
0
,
0
]
T
h
o
t
e
l
=
[
0
,
0
,
0
,
0
,
0
,
1
,
0
]
T
motel = [0,0,0,0,1,0,0]^T\\ hotel = [0,0,0,0,0,1,0]^T
motel=[0,0,0,0,1,0,0]Thotel=[0,0,0,0,0,1,0]T
显然motel和hotel是语义相近的两个词汇,我们希望用余弦相似度(cosine similarity)**来表示两个词汇的语义,但是由于两个向量是正交的,所以没有相似度的概念。
Word vectors
引入词向量,使用稠密的向量(dense vector)表达词,这样词之间引入了相似性的概念。
Word2vec: Overview
Mikilov在2013年提出了Word2vec 的框架Distributed representations of words and phrases and their compositionality ,用来学习词向量。
Idea:
-
我们有大量的语料库(corpus)
-
每个单词对应着向量空间的一个唯一的向量
-
遍历文本,每个单词center c c c周围的单词构成它的context o o o
-
使用词向量的相似度计算给定center c c c,context o o o的概率,即 P ( o ∣ c ) P(o|c) P(o∣c)
-
不断的调整词向量,以最大化这些概率
所以目标就是最大化似然函数,**似然函数(Likelihood)**定义如下:
L
i
k
e
l
i
h
o
o
d
:
L
(
θ
)
=
∏
t
=
1
T
∏
−
m
≤
j
≤
m
P
(
w
t
+
j
∣
w
t
;
θ
)
Likelihood:\quad L(\theta)=\prod_{t=1}^T\prod_{-m\le j \le m}P(w_{t+j}|w_t;\theta)
Likelihood:L(θ)=t=1∏T−m≤j≤m∏P(wt+j∣wt;θ)
其中
θ
\theta
θ代表所有要优化的变量,
m
m
m代表context的大小或者说窗口的大小。
便于机器学习算法优化,将上式稍加转换,变成我们的目标函数(objective function):Average Negative Log Likelihood:
J
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
−
m
≤
j
≤
m
log
P
(
w
t
+
j
∣
w
t
;
θ
)
\quad J(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\le j \le m}\log{P(w_{t+j}|w_t;\theta)}
J(θ)=−T1t=1∑T−m≤j≤m∑logP(wt+j∣wt;θ)
最后只剩下一个问题,如何计算
P
(
w
t
+
j
∣
w
t
;
θ
)
P(w_{t+j}|w_t;\theta)
P(wt+j∣wt;θ)
这里引入两个向量:对于词汇表(vocabulary)中的每个单词w,使用 d d d维向量 v w v_w vw表示当 w w w是center单词的时候,使用 u w u_w uw表示当 w w w是context单词的时候。
所以对于给定center 单词 c,context 单词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_w^Tv_c)}
P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc)
其中
V
V
V代表词汇表(vocabulary),
u
o
T
v
c
u_o^Tv_c
uoTvc即向量的点积(dot product),点积的大小暗示了o与c之间的相似度,这里引入指数的目的是最后生成规范的概率(softmax的概念)。
目标函数有了,接下来就剩**优化(optimization)**目标函数了,即不断的调整参数以最小化目标函数,这里的目标函数也通常被称作损失函数(loss function)或者代价函数(cost function)。
J
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
−
m
≤
j
≤
m
log
P
(
w
t
+
j
∣
w
t
;
θ
)
\quad J(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\le j \le m}\log{P(w_{t+j}|w_t;\theta)}
J(θ)=−T1t=1∑T−m≤j≤m∑logP(wt+j∣wt;θ)
首先,给出
θ
\theta
θ,这里就是上面所讲的两类向量:
θ
=
[
v
a
,
v
a
b
a
n
d
o
n
,
.
.
.
,
v
z
e
b
r
a
,
u
a
,
u
a
b
a
n
d
o
n
,
.
.
.
u
z
e
b
r
a
]
T
θ
∈
R
2
d
∣
V
∣
\theta=[v_a,v_{abandon},...,v_{zebra},u_a,u_{abandon},...u_{zebra}]^T \\ \theta\in \mathbb{R}^{2d|V|}
θ=[va,vabandon,...,vzebra,ua,uabandon,...uzebra]Tθ∈R2d∣V∣
其中
d
d
d是每个向量的维度,
∣
V
∣
|V|
∣V∣是vocabulary的大小(每个单词都有2个向量)
所以我们优化的目标如下:
M
i
n
i
m
i
z
e
:
J
(
θ
)
=
−
1
T
∑
t
=
1
T
∑
−
m
≤
j
≤
m
log
P
(
w
t
+
j
∣
w
t
)
⟮
P
(
o
∣
c
)
=
e
x
p
(
u
o
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
⟯
Minimize:\quad \quad J(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\le j \le m}\log{P(w_{t+j}|w_t)}\\ \lgroup P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}\rgroup
Minimize:J(θ)=−T1t=1∑T−m≤j≤m∑logP(wt+j∣wt)⟮P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc)⟯
方法是经典的梯度下降(Gradiant Descent)算法:
∂
∂
v
c
log
e
x
p
(
u
o
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
∂
∂
v
c
log
e
x
p
(
u
o
T
v
c
)
−
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
∂
∂
v
c
u
o
T
v
c
−
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
\begin{aligned} \frac{\partial}{\partial v_c}\log\frac{exp(u_o^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}&=\frac{\partial}{\partial v_c}\log exp(u_o^Tv_c)-\frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c)\\ &=\frac{\partial}{\partial v_c}u_o^Tv_c-\frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c) \end{aligned}
∂vc∂log∑w∈Vexp(uwTvc)exp(uoTvc)=∂vc∂logexp(uoTvc)−∂vc∂logw∈V∑exp(uwTvc)=∂vc∂uoTvc−∂vc∂logw∈V∑exp(uwTvc)
到这里左边的
∂
∂
v
c
u
o
T
v
c
\frac{\partial}{\partial v_c}u_o^Tv_c
∂vc∂uoTvc结果为
u
o
u_o
uo,右边的
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
\frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c)
∂vc∂log∑w∈Vexp(uwTvc)求解要用到链式法则(chain rule):
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
1
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
∂
∂
v
c
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
=
1
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
∑
x
∈
V
∂
∂
v
c
e
x
p
(
u
x
T
v
c
)
=
1
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
∂
∂
v
c
u
x
T
v
c
=
1
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
u
x
=
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
u
x
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
u
x
\begin{aligned} \frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c)&=\frac{1}{\sum_{w\in V}exp(u_w^Tv_c)}\frac{\partial}{\partial v_c}\sum_{x\in V}exp(u_x^Tv_c)\\ &=\frac{1}{\sum_{w\in V}exp(u_w^Tv_c)}\sum_{x\in V}\frac{\partial}{\partial v_c}exp(u_x^Tv_c)\\ &=\frac{1}{\sum_{w\in V}exp(u_w^Tv_c)}\sum_{x\in V}exp(u_x^Tv_c)\frac{\partial}{\partial v_c}u_x^Tv_c\\ &=\frac{1}{\sum_{w\in V}exp(u_w^Tv_c)}\sum_{x\in V}exp(u_x^Tv_c)u_x\\ &=\frac{\sum_{x\in V}exp(u_x^Tv_c)u_x}{\sum_{w\in V}exp(u_w^Tv_c)}\\ &=\sum_{x\in V}\frac{exp(u_x^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}u_x \end{aligned}
∂vc∂logw∈V∑exp(uwTvc)=∑w∈Vexp(uwTvc)1∂vc∂x∈V∑exp(uxTvc)=∑w∈Vexp(uwTvc)1x∈V∑∂vc∂exp(uxTvc)=∑w∈Vexp(uwTvc)1x∈V∑exp(uxTvc)∂vc∂uxTvc=∑w∈Vexp(uwTvc)1x∈V∑exp(uxTvc)ux=∑w∈Vexp(uwTvc)∑x∈Vexp(uxTvc)ux=x∈V∑∑w∈Vexp(uwTvc)exp(uxTvc)ux
将两个结果带回原式:
∂
∂
v
c
log
e
x
p
(
u
o
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
∂
∂
v
c
log
e
x
p
(
u
o
T
v
c
)
−
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
∂
∂
v
c
u
o
T
v
c
−
∂
∂
v
c
log
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
=
u
o
−
∑
x
∈
V
e
x
p
(
u
x
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
u
x
\begin{aligned} \frac{\partial}{\partial v_c}\log\frac{exp(u_o^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}&=\frac{\partial}{\partial v_c}\log exp(u_o^Tv_c)-\frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c)\\ &=\frac{\partial}{\partial v_c}u_o^Tv_c-\frac{\partial}{\partial v_c}\log \sum_{w\in V}exp(u_w^Tv_c)\\ &=u_o-\sum_{x\in V}\frac{exp(u_x^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}u_x \end{aligned}
∂vc∂log∑w∈Vexp(uwTvc)exp(uoTvc)=∂vc∂logexp(uoTvc)−∂vc∂logw∈V∑exp(uwTvc)=∂vc∂uoTvc−∂vc∂logw∈V∑exp(uwTvc)=uo−x∈V∑∑w∈Vexp(uwTvc)exp(uxTvc)ux
其中
e
x
p
(
u
x
T
v
c
)
∑
w
∈
V
e
x
p
(
u
w
T
v
c
)
\frac{exp(u_x^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)}
∑w∈Vexp(uwTvc)exp(uxTvc)即为
p
(
x
∣
c
)
p(x|c)
p(x∣c),所以上式为:
=
u
o
−
∑
x
∈
V
p
(
x
∣
c
)
u
x
\begin{aligned} &=u_o-\sum_{x\in V}p(x|c)u_x \end{aligned}
=uo−x∈V∑p(x∣c)ux