word2vec学习笔记#1
文章来自于**码农场**大佬的博文,做自己的摘抄笔记。
word2vec
word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通
过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是
“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical
Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。
Hierarchical Softmax
模型共同点
两种模型的网络结构如下
上图中w(t)表示句子中t位置处的词语
CBOW
原理:一种根据上下文词语预测当前空缺位置的概率的模型,如上左图。
学习目标是最大化下面的似然函数:
其中W为语料库中的认一个词。
输入层是上下文的词语的词向量(现在是在训练CBOW模型,词向量只是个副产品,确切来说,是CBOW模型的一个参数。训练开始的时候,词向量是个随机值,随着训练的进行不断被更新)。
输出层输出最可能的w。由于语料库中词汇量是固定的|C|个,所以上述过程其实可以看做一个多分类问题。给定特征,从|C|个分类中挑一个。
由上输出层的分析可知,最后是对输出层的数据进行分类,下方用的Hierarchical Softmax
非叶子节点就是一个分类器(感知机),用1或者0来代替分类的结果,每一个叶子节点即为语料库中的一个词语,可以通过上述的概率表述出条件概率
P
(
w
∣
c
o
n
t
e
x
t
(
w
)
)
P(w|context(w))
P(w∣context(w))
引入下列符号:
1、
p
w
p^w
pw:从根节点到w对应的叶子节点的路径
2、
l
w
l^w
lw:路径包含的节点个数
3、
P
1
w
P_{1}^{w}
P1w、
P
2
w
P_{2}^{w}
P2w、
P
3
w
P_{3}^{w}
P3w……
P
l
w
w
P_{l^w}^{w}
Plww:为路径中的各个节点
4、
d
2
w
d_{2}^{w}
d2w、
d
3
w
d_{3}^{w}
d3w、
d
4
w
d_{4}^{w}
d4w……
d
l
w
d_{l}^{w}
dlw在零到一范围内,其中
d
l
w
d_{l}^{w}
dlw表示第j个对应的编码(根节点无编码)
5、
Θ
1
w
\Theta _{1}^{w}
Θ1w、
Θ
2
w
\Theta _{2}^{w}
Θ2w、
Θ
3
w
\Theta _{3}^{w}
Θ3w……
Θ
l
w
w
\Theta _{l^w}^{w}
Θlww为路径
p
w
p^w
pw中非叶节点对应的参数向量
得w的条件概率:
从根节点到叶节点经过了
l
w
l^w
lw-1个节点,编码从下标2开始(根节点无编码),对应的参数向量下标从1开始(根节点为1)。
每一项是一个逻辑斯谛回归:(即为每一个0或者1的选择都有着两个不同的概率,且二者的和为一)
将上式两种情况综合到一个公式中去:(下式中
d
l
w
d_{l}^{w}
dlw有两种取值:0或者1)
目标函数取对数似然:(一种结果转化方式?)
将上面几个公式结合得到如下:
简化为:
上式就是结果似然函数,将其最大化则得到我们最初需要通过CBOW预测的结果,将上式各项都取到最大化
每一项有两个参数,一个是每个节点的参数向量
Θ
j
−
1
w
\Theta _{j-1}^{w}
Θj−1w,另一个是输出层的输入
X
w
X_{w}
Xw(即是中间层的输出结果转变为Hierarchical Softmax的输入)对这两个值求偏导:
因为有如下的性质
所以带入上式即可得到
最终结果为
Θ
j
−
1
w
\Theta _{j-1}^{w}
Θj−1w的迭代公式即为
X
w
X_{w}
Xw偏导式为
所有直接将
Θ
j
−
1
w
\Theta _{j-1}^{w}
Θj−1w的偏导数中的
Θ
j
−
1
w
\Theta _{j-1}^{w}
Θj−1w替换为
X
w
X_{w}
Xw,得到关于
X
w
X_{w}
Xw的偏导数
得到的是
X
w
X_{w}
Xw的更新迭代,因为
X
w
X_{w}
Xw并不是输入的向量,而是一个中间产物,所以必须把该结果向上传递至每个单词的词向量中:
重点:两个参数的更新伪代码: