Word2Vec数学原理初探

前言

论文:https://arxiv.org/pdf/1301.3781.pdf

符号约定如下:

  1. :表示词的上下文,即w前window个词和后window个词,但不包括词w
  2. C:表示整个有效的词样本空间(即语料库中所有词的集合去掉低频词后的词语集合)
  3. :w的负样本空间,不包括w。

sigmoid函数

定义为:

导数为:

函数的导数为:

函数的导数为:

Hierarchical Softmax

huffman树结构及其表示

huffman-1

如上图所示,黄色为叶子节点用于表示字典中的单词,白色为非叶子结点为辅助节点。除了根节点外,其余节点会标识0或者1,左边为1,右边为0。

关于数学符号的相关约定如下:

  1. 表示从根节点到达w对应叶子结点的路径。以上图为例的路径

  2. 表示路径包含结点的个数

  3. 表示词w的路径上第j个节点
  4. 表示对于词w,在路径的第j个节点的编码;比如,词节点上的编码为1
  5. 表示词w在路径上第j个节点的参数(向量)

从根节点开始,在每个非叶子结点上,都有两个选择,要么编码为1,要么编码为0,这正好对应到二值分类器。在w2v的实现中,将huffman编码为0对应到正类,编码为1对应到负类。所使用的二分类器为逻辑回归分类器

在上图的huffman树中,逻辑回归二分类器的正类概率表示为:

负类概率表示为:

那么对于节点的编码可表示成:

使用huffman树求词的概率

以w2为例,处理过程如下:

  1. 处向左转移,概率为:
  2. 处向右转移,概率为:
  3. 处向左转移,概率为:

以w2的概率为例,其概率可以写成如下形式:

推广到一半情况,即为:

CBOW连续词袋模型

cbow-1

如上图所示,cbow有三层结构,分别为:

  1. 输入层:,其中
  2. 投影层:
  3. 输出层:输出层对应一棵huffman树

目标函数

由于cbow有投影层,则令

基于Hierarchical Softmax

根据公式(1-5)可把式(1-6)写成:

求导,(参考前面《sigmoid函数》小节):

令学习速率为,则梯度更新公式可写成:

由于对称,则对于的求导:

对于参数的梯度更新公式可写成:

参数学习过程伪代码

  1. e=0
  2. for j=1 ->-1:
    1. q =
    2. g =
    3. e = e+g
  3. for :

基于Negative Sampling

相当于小型的softmax,把维数从字典词语个数V降低到到|Neg(w)|+1。

正样本:词z=w

负样本:词z!=w

基于Negative Sampling的P(context(w))表示为:

此处的 仍然表示各词的词向量之和。

那么目标函数式(1-6)可写成:

求导:

的梯度更新为:

求导:

的梯度更新公式可写为:

参数学习过程伪代码

  1. e=0
  2. For z in {w}Neg(w):
    1. q =
    2. g =
    3. e = e+g
  3. For u in context(w):

skip-gram 模型

skip-gram-1

对于skip-gram模型而言,已知当前w,求上下文context(w)的概率。

目标函数

基于层次softmax

根据式(1-5),目标函数可写成:

求导,

的梯度更新公式表示为:

求导,

的更新公式表示为:

参数学习过程伪代码

  1. 版本1

    1. e=0
    2. For :

      1. for j=1 ->-1:
        1. q =
        2. g =
        3. e = e+g
  1. 版本2(word2vec 源码中的更新规则)

    1. For :

      1. e=0
      2. for j=1 ->-1:

        1. q =
        2. g =
        3. 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

    1. For u in context(w) :

      1. e = 0
      2. For z in {w}Neg(w):

        1. q =
        2. g =
        3. e = e+g

参考资料