词向量作为自然语言处理中最基本同样也是很重要的部分,熟悉并掌握词向量的实现原理是学习NLP必不可少的过程,以下主要通过XiRong的《word2vec Parameter Learning Explained》论文来介绍词向量的具体计算过程。
首先介绍两类词向量模型,第一个是Skip-Gram模型,其目的是通过给定中心词来预测中心词上下文词汇;而另外一类是CBOW模型,通过上下文词汇来预测中心词汇。
1、Skip-Gram模型
设定每一个输入向量的大小为v*1,其中输入向量是以one-hot进行编码(称之为独热编码,也就是该向量中只有一位数字为1,其他为都是0,目的是体现不同输入向量的特征),输入向量到隐层的权重矩阵为 ,隐层向量大小为N*1,隐层向量到输出层的权重为,输出向量的维度为v*1。
计算隐层的输出为:, 输出层的结果为:
接下来就是在中心词确定的情况下,取概率最大的上下文单词,也就是计算输出上下文词汇是Wc,j的条件概率:
随后设定损失函数为:
对损失函数求导并利用随机梯度下降方法,不断更新梯度以达到损失最小的条件,最终获得词向量。
2、CBOW模型
CBOW模型与Skip-Gram模型类似,只需要把输入输出调换一下即可。需要注意的地方是在隐层的处理上, 的值是各个输入的值与不同权重矩阵相乘后相加再求平均,后面的处理过程与Skip-Gram模型相同。