word2vec Parameter Learning Explained笔记

目录

1.CBOW模型
2.Skip Gram模型
3.Hierarchical softmax
4.Negative Sampling
前言,下面公式多次用到的求导法则:
sigmoid函数的导数具有以下形式:
在这里插入图片描述

1.CBOW模型

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

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

更新权重

跟新权重用到神经网络的反向传播算法。
首先模型的目标函数为:
在这里插入图片描述
公式最后一行表示,给预测为J打的分减去预测为除去J的分。其中在这里插入图片描述

对目标函数基于权重求导,此求导是输出层和隐藏层中间进行。
在这里插入图片描述
在这里插入图片描述
更新公式为
在这里插入图片描述
用相似方法在隐藏层和输入层更新权重
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体推导过程可参考博客:https://blog.csdn.net/lanyu_01/article/details/80097350

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

在这里插入图片描述
首先将上下文单词向量做累加求和并取平均值作为输入。隐藏层h为:
在这里插入图片描述
c为上下文词数量
损失函数为:
在这里插入图片描述
同理,我们可以求出更新公式:
在这里插入图片描述
在这里插入图片描述

Skip-gram模型

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

Hierarchical softmax(分层 softmax)

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

小结

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

Negative Sampling(负采样)

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

小结:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章