word2vec Parameter Learning Explained笔记

目录

1.CBOW模型
2.Skip Gram模型
3.Hierarchical softmax
4.Negative Sampling
前言,下面公式多次用到的求导法则:
sigmoid函数的导数具有以下形式:
word2vec Parameter Learning Explained笔记

1.CBOW模型

首先从输入输出都是一个词的模型讲起。

word2vec Parameter Learning Explained笔记
模型中词典大小为V,隐藏层规模为N,连接层为全连接,输入层为one-hot编码方式。对于一个特定词,词向量为x={x1,x2,…,xv},则模型输入为x,权重矩阵为W。隐藏层的求解公式如下所示:
word2vec Parameter Learning Explained笔记
因为x中只有一位为1,其它为都为0,所以h向量其实就是input->hidden权重矩阵WW的某一行结合输入单词ωI的向量拷贝,即如下所示:
word2vec Parameter Learning Explained笔记
隐藏层到输出层的权重记为W’,vwj为w’的一行,uj为标量,可用来对输出的每一个值打分,分高的对应预测的可能性更高。
word2vec Parameter Learning Explained笔记
对于输入词i,输出词为j的概率为:
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记

更新权重

跟新权重用到神经网络的反向传播算法。
首先模型的目标函数为:
word2vec Parameter Learning Explained笔记
公式最后一行表示,给预测为J打的分减去预测为除去J的分。其中word2vec Parameter Learning Explained笔记

对目标函数基于权重求导,此求导是输出层和隐藏层中间进行。
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记
更新公式为
word2vec Parameter Learning Explained笔记
用相似方法在隐藏层和输入层更新权重
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记
具体推导过程可参考博客:https://blog.****.net/lanyu_01/article/details/80097350

输入为某个词的多个上下文信息词,预测这个词

word2vec Parameter Learning Explained笔记
首先将上下文单词向量做累加求和并取平均值作为输入。隐藏层h为:
word2vec Parameter Learning Explained笔记
c为上下文词数量
损失函数为:
word2vec Parameter Learning Explained笔记
同理,我们可以求出更新公式:
word2vec Parameter Learning Explained笔记
word2vec Parameter Learning Explained笔记

Skip-gram模型

输入为某个词,输出为预测这个词的上下文信息
word2vec Parameter Learning Explained笔记
对于隐藏层的输出为h,与之前求单个词的输入过程一样,如下所示:
word2vec Parameter Learning Explained笔记
在输出层,与CBOW模型的输出为单个多项式分布不同的是,SG模型在输出层输出了C个多项式分布。每个输出都使用相同的hidden->output矩阵计算
word2vec Parameter Learning Explained笔记
更新公式类似。

Hierarchical softmax(分层 softmax)

Hierarchical softmax 是一种有效的计算 softmax 的方式。该模型使用一棵二叉树来表示词汇表中的所有单词。所有的VV个单词都在二叉树的叶节点上。非叶子节点一共有V−1V−1个。对于每个叶子节点,从根节点root到该叶子节点只有一条路径;这条路径用来评估用该叶子节点代表该叶子节点上单词的概率值。
word2vec Parameter Learning Explained笔记
其中白色的树节点代表的是词汇表中的单词,灰色节点为内部节点。图中高亮显示的是一条从根节点到ω2的路径。该条路径的长度为L(ω2)=4。n(ω,j)表示从根节点到单词ω的路径上的第j个节点。
rarchical softmax模型中,所有的词汇单词没有输出向量表示形式。不同的是,二叉树的每一个内部节点都有一个输出向量v′n(ω,j)。因此一个单词作为输出单词的概率计算公式定义如下:
word2vec Parameter Learning Explained笔记
其中,ch(n)为节点nn的左孩子节点;v′n(ω,j)是内部节点n(ω,j)的向量表示(输出向量);h是隐藏层的输出值;[[x]]是一种特殊的函数,如果x等于true,[[x]]等于1,否则,等于0。[[x]]表示的是,如果在从根节点到单词W的路径上,第j个节点的下一个节点是其左孩子节点,[[x]]就等于1,否则为0。
误差函数为:
word2vec Parameter Learning Explained笔记
其中:
word2vec Parameter Learning Explained笔记word2vec Parameter Learning Explained笔记
对E关于v’jTh求导,可得:
word2vec Parameter Learning Explained笔记
其中[[.]]=1时,tj=-1,否则tj=0
接着求出
word2vec Parameter Learning Explained笔记
可得更新权重为:
word2vec Parameter Learning Explained笔记
接下来更新输入到隐层的权重:
word2vec Parameter Learning Explained笔记
根据其使用的是CBOW还是SG模型选择接下来的EH值。

小结

采用Hierarchical softmax的好处是降低了时间复杂度,从O(V)时间降到O(log(V))。

Negative Sampling(负采样)

主要思想是每一轮的迭代更新,只更新其中一部分输出向量。这里涉及了正样本和负样本,正样本是指最终要输出的上下文单词,在采样的过程中需要保存下来,负样本指的是采样过程中涉及的非最终输出的单词。采样过程中需要选择一种概率分布,用Pn(w)表示。
模型误差函数为:
word2vec Parameter Learning Explained笔记
其中ωO是输出单词(正样本),v′ωO是输出向量;h是隐藏层的输出值Wneg={ωj|j=1,…,K}}是基于分布Pn(ω)采样的一系列单词。
求偏导:
word2vec Parameter Learning Explained笔记
类似上述所提步骤,最终得到的更新公式为:
word2vec Parameter Learning Explained笔记
输入到隐藏层的更新公式,类似,在此省略。

小结:

为了解决有太多的输出向量问题,负采样采用更直接的方式,每次只更新一部分采样的向量。