word2vec模型的参数更新过程(一)

发布于 24 天前  42 次阅读


 Continuous Bag-of-Word(CBOW)模型

简单来说CBOW做的事情就是根据周围词确定中心词,这个“确定”是指给出可能出现的中心词的后验概率。

1. One-word context

首先考虑最简单的一种情况,也就是上下文只有一个词。我们假设词汇数量是V,隐藏层(只有一层隐藏层)有N个节点,输入向量用独热码编码,只有出现在上下文中的那个词所对应的输入向量X的节点为1,其他均为0,网络模型是这样的:

输出层Y表示的是根据输入的context词,每个在语料库中的词出现的后验概率。比如说V=6,输入的X只有X5=1,Y = [0,0.2,0.3,0,0,0]表示如果上下文中出现了X5,那么中心词是X2的后验概率是0.2,X3是0.3。

需要得到的是权重矩阵WW',先给出一些中间量的定义。

由于X是独热码,所以实际上就是复制W的第k(xk =1)行到h

VwjVwj'是输入向量的另一种表示,分别为W的第j行,与W'的第j列

接下来可以用soft-max(不知道为啥)来得到后验分布:

更新隐藏层→输出层权重矩阵

反向传播(backpropagation)

我们的训练目标是要,wO是实际的语料中的输出词,用j*表示其在V中的位置。

,E = -logp(wO|wI),是我们的损失函数,训练目标就是使E最小。

Note that this derivative is simply the prediction error ej of the output layer.

最后得到(η > 0是学习率):

 

更新输入层→隐藏层权重矩阵

有了W'之后就可以训练W了。

梯度下降方向:

然后更新W矩阵,类似W'

 

2.Multi-word context

上下文中有多个词,这个时候h有了不同:

C是上下文中词的数量。说白了这种情况与单词上下文不同的是输入向量为存在与上下文的所有词的独热码相加后取平均值。

更新隐藏层→输出层权重矩阵

和1.一样,毕竟隐藏层→输出层结构是一样的,

注意h是不同的

更新隐藏层→输出层权重矩阵

可以把各个输入向量产生的h隔离,经行C次1.的“更新输入层→隐藏层权重矩阵"的过程,最后再求平均。

hVwI,c的偏导也可得到同样的结果,这里不再赘述。

 

原paper:

word2vec Parameter Learning Explained

https://arxiv.org/abs/1411.2738

 

 

 

 


阿克西斯上没有什么重要的东西