一、简介
Word2Vec作为NLP领域深度学习的基础,是不可以不知道的,虽然从18年年底至今已经有Bert、GPT等预训练模型形成了NLP未来的趋势,但其还是基于W2V的向量和思想预训练出来的。
在学习W2V的过程中参看了很多blog,但是要么都是公式引用长篇大论,要么三言两语只谈及一小块,本blog希望从主要原理的出发,用尽可能简介的逻辑剖析清楚W2V的核心框架,如有需要改进的地方还希望多多指出。
二、模型细节
2.1 Skip-Gram模型
Word2Vec分为两种:Skip-gram模型和CBOW模型,CBOW模型通过上下文预测中心词,而Skip-gram模型通过中心词预测上下文。本文着重介绍Skip-gram模型。

2.1.1 模型参数
模型参数
θ
\theta
θ包括矩阵U和V,矩阵维度均为
n
×
d
i
m
n\times dim
n×dim,n表示词典中的词数,dim表示词向量维数。
θ
=
[
U
,
V
]
\theta=[U,V]
θ=[U,V]
每一个词有两种角色“中心词”和“上下文”,当作为上下文时从U中取词向量,当作为中心词时从V中取词向量。
2.1.2 目标函数
(1)式:word2vec的目标是使p(c|w)最大,其中w表示中心词,c表示上下文。
(2)式:将p(c|w)等价为c和w的向量相似度,但是由于p(c|w)是概率,必须进行归一化(形式如softmax),但是softmax操作将每次都需要遍历整个词典,导致计算量过大,因此需要改变目标函数。
a
r
g
m
a
x
θ
∑
w
∈
T
e
x
t
∑
c
∈
C
o
n
t
e
x
t
(
w
)
l
o
g
(
p
(
c
∣
w
)
)
(
1
)
\underset{\theta}{argmax}\underset{w\in Text}{\sum }\underset{c\in Context(w)}{\sum }log(p(c|w)) (1)
θargmaxw∈Text∑c∈Context(w)∑log(p(c∣w))(1)
=
a
r
g
m
a
x
θ
∑
w
∈
T
e
x
t
∑
c
∈
C
o
n
t
e
x
t
(
w
)
l
o
g
e
u
c
⋅
v
w
∑
i
∈
U
e
u
i
⋅
v
w
(
2
)
=\underset{\theta}{argmax}\underset{w\in Text}{\sum }\underset{c\in Context(w)}{\sum }log\frac{e^{u_c\cdot v_w}}{\underset{i\in U} {\sum} e^{u_i\cdot v_w}} (2)
=θargmaxw∈Text∑c∈Context(w)∑logi∈U∑eui⋅vweuc⋅vw(2)
=
a
r
g
m
a
x
θ
∑
w
∈
T
e
x
t
∑
c
∈
C
o
n
t
e
x
t
(
w
)
[
u
c
⋅
v
w
−
l
o
g
(
∑
i
∈
U
e
u
i
⋅
v
w
)
]
(
3
)
=\underset{\theta}{argmax}\underset{w\in Text}{\sum }\underset{c\in Context(w)}{\sum }[{u_c\cdot v_w}-log({\underset{i\in U} {\sum} e^{u_i\cdot v_w}})] (3)
=θargmaxw∈Text∑c∈Context(w)∑[uc⋅vw−log(i∈U∑eui⋅vw)](3)
(4)式:引入negative sampling的方法,目标函数改为使得positive sample是上下文的概率越大,同时negative sample是上下文的概率越小。其中
p
(
F
=
1
∣
w
,
c
,
θ
)
p(F=1|w,c,\theta)
p(F=1∣w,c,θ)表示在
θ
\theta
θ的前提下,w和c是上下文的概率;
p
(
F
=
0
∣
w
,
c
,
θ
)
p(F=0|w,c,\theta)
p(F=0∣w,c,θ)表示在
θ
\theta
θ的前提下,w和c不是上下文的概率。
D
D
D代表positive sample的集合,
D
~
\tilde{D}
D~代表negative sample的集合。
a
r
g
m
a
x
θ
∏
(
w
,
c
)
∈
D
p
(
F
=
1
∣
w
,
c
,
θ
)
+
∏
(
w
,
c
)
∈
D
~
p
(
F
=
0
∣
w
,
c
,
θ
)
(
4
)
\underset{\theta}{argmax}\underset{(w,c)\in D}{\prod }p(F=1|w,c,\theta)+\underset{(w,c)\in \tilde{D}}{\prod }p(F=0|w,c,\theta) (4)
θargmax(w,c)∈D∏p(F=1∣w,c,θ)+(w,c)∈D~∏p(F=0∣w,c,θ)(4)
=
a
r
g
m
a
x
θ
∏
(
w
,
c
)
∈
D
l
o
g
(
σ
(
u
c
⋅
v
w
)
)
+
∏
(
w
,
c
)
∈
D
~
l
o
g
(
σ
(
−
u
c
⋅
v
w
)
)
(
5
)
=\underset{\theta}{argmax}\underset{(w,c)\in D}{\prod }log(\sigma(u_c\cdot v_w))+\underset{(w,c)\in \tilde{D}}{\prod }log(\sigma(-u_c\cdot v_w)) (5)
=θargmax(w,c)∈D∏log(σ(uc⋅vw))+(w,c)∈D~∏log(σ(−uc⋅vw))(5)
=
a
r
g
m
a
x
θ
∏
(
w
,
c
)
∈
D
[
1
1
+
e
x
p
(
−
u
c
⋅
v
w
)
]
+
∏
(
w
,
c
)
∈
D
~
[
1
−
1
1
+
e
x
p
(
−
u
c
⋅
v
w
)
]
(
6
)
=\underset{\theta}{argmax}\underset{(w,c)\in D}{\prod }[\frac{1}{1+exp(-u_c\cdot v_w)}]+\underset{(w,c)\in \tilde{D}}{\prod }[1-\frac{1}{1+exp(-u_c\cdot v_w)}] (6)
=θargmax(w,c)∈D∏[1+exp(−uc⋅vw)1]+(w,c)∈D~∏[1−1+exp(−uc⋅vw)1](6)
2.2 为什么需要负采样
从(4)式可以发现,我们把目标函数定义为了正采样和负采样的组合概率,负采样的意义是对(3)式softmax计算量的简化,既然可以简化,为什么不去除所有的负采样呢。
可以这样理解:如果只有正采样,所有的词将在向量空间里集中在一个区域,因为只考虑了相似度越大越好的情况;只有同时考虑相似度越小越好的情况,才能适当地将不同意义的词在向量空间中拉开距离。
三、评价方法
对训练好的词向量可以有三种方法评价。
3.1 可视化观察
利用TSNE降维方法将词向量降维,在二维空间中观察词向量的分布是否符合事实情况。

3.2 相似度测试
人工预先标注好词之间的距离,再利用训练好的词向量计算这些样本词汇间的距离,比较优劣。类似如下表格。
| word1 | word2 | similar标注 | similar模型结果 |
|---|---|---|---|
| boy | girl | 1.5 | 3.5 |
| boy | man | 2.5 | 4.5 |
3.3 类比
根据word1、word2、word3,推断出result,看是否符合事实逻辑。比如:“woman - man = girl - boy”。
| word1 | word2 | word3 | result |
|---|---|---|---|
| woman | man | girl | boy |
| Beijing | Shanghai | DC | NY |
四、优秀代码
参考:
【1】word2vec原理(三) 基于Negative Sampling的模型
【2】NLP | Word2Vec之基于Negative Sampling的 CBOW 和 skip-gram 模型

本文深入解析Word2Vec的Skip-Gram模型,阐述模型参数、目标函数及负采样的必要性,探讨模型细节,并提供评估词向量质量的方法,包括可视化观察、相似度测试和类比推理。
838

被折叠的 条评论
为什么被折叠?



