前言
论文:https://arxiv.org/pdf/1301.3781.pdf
符号约定如下:
- :表示词的上下文,即w前window个词和后window个词,但不包括词w
- C:表示整个有效的词样本空间(即语料库中所有词的集合去掉低频词后的词语集合)
- :w的负样本空间,不包括w。
sigmoid函数
定义为:
导数为:
函数的导数为:
函数的导数为:
Hierarchical Softmax
huffman树结构及其表示
如上图所示,黄色为叶子节点用于表示字典中的单词,白色为非叶子结点为辅助节点。除了根节点外,其余节点会标识0或者1,左边为1,右边为0。
关于数学符号的相关约定如下:
令表示从根节点到达w对应叶子结点的路径。以上图为例的路径 为
令表示路径包含结点的个数
- 令表示词w的路径上第j个节点
- 令表示对于词w,在路径的第j个节点的编码;比如,词在节点上的编码为1
- 令表示词w在路径上第j个节点的参数(向量)
从根节点开始,在每个非叶子结点上,都有两个选择,要么编码为1,要么编码为0,这正好对应到二值分类器。在w2v的实现中,将huffman编码为0对应到正类,编码为1对应到负类。所使用的二分类器为逻辑回归分类器。
在上图的huffman树中,逻辑回归二分类器的正类概率表示为:
负类概率表示为:
那么对于节点的编码可表示成:
使用huffman树求词的概率
以w2为例,处理过程如下:
- 在处向左转移,概率为:
- 在处向右转移,概率为:
- 在处向左转移,概率为:
以w2的概率为例,其概率可以写成如下形式:
推广到一半情况,即为:
CBOW连续词袋模型
如上图所示,cbow有三层结构,分别为:
- 输入层:,其中,
- 投影层:
- 输出层:输出层对应一棵huffman树
目标函数
由于cbow有投影层,则令
基于Hierarchical Softmax
根据公式(1-5)可把式(1-6)写成:
令
对求导,(参考前面《sigmoid函数》小节):
令学习速率为,则梯度更新公式可写成:
由于与对称,则对于的求导:
对于参数的梯度更新公式可写成:
参数学习过程伪代码
- e=0
- for j=1 ->-1:
- q =
- g =
- e = e+g
- for :
基于Negative Sampling
相当于小型的softmax,把维数从字典词语个数V降低到到|Neg(w)|+1。
正样本:词z=w
负样本:词z!=w
令
基于Negative Sampling的P(context(w))表示为:
此处的 仍然表示各词的词向量之和。
那么目标函数式(1-6)可写成:
令
对求导:
对的梯度更新为:
对求导:
对的梯度更新公式可写为:
参数学习过程伪代码
- e=0
- For z in {w}Neg(w):
- q =
- g =
- e = e+g
- For u in context(w):
skip-gram 模型
对于skip-gram模型而言,已知当前w,求上下文context(w)的概率。
目标函数
基于层次softmax
根据式(1-5),目标函数可写成:
令
对求导,
则 的梯度更新公式表示为:
对求导,
则的更新公式表示为:
参数学习过程伪代码
版本1
- e=0
For :
- for j=1 ->-1:
- q =
- g =
- e = e+g
- for j=1 ->-1:
版本2(word2vec 源码中的更新规则)
For :
- e=0
for j=1 ->-1:
- q =
- g =
- e = e+g
基于Negative Sampling
对于Negative Sampling,式(1-22)可写成:
根据式(1-13)以及逻辑斯蒂回归二分类器,可表示为:
根据式(1-21),式(1-22),式(1-30),式(1-31),最终目标函数表示为:
式(1-32)表示,对于每一个w的上下文词语u,都进行一次负采样。而在w2v源码中只针对w进行了|context(w)|次负采样。令
则对于w2v源码中的g(w)与式(1-32)有所不同,其表示为(版本2):
式(1-33)本质上还是cbow,只是把context(w)拆分,与目标词w组成pair(u,w)。即把式(1-14)写成式(1-33)的形式。
根据式(1-15),P(z|u)可表示为:
结合式(1-33)、式(1-34),目标函数可写成:
令
关于的梯度计算:
于是的更新公式可写成:
关于的梯度计算:
于是的更新公式为:
参数学习伪代码
版本1
略
版本2
For u in context(w) :
- e = 0
For z in {w}Neg(w):
- q =
- g =
- e = e+g