word2vec主要实现方式有:skip-gram和CBOW。
其实single CBOW模型与单个skip-gram模型本质上是一样的,可以依据single CBOW理解skip-gram算法。
因为one-hot向量只有一个元素i为1,其余为0。所以,one-hot vector与权重矩阵w相乘只是得到了W矩阵的第i行,这也叫查表操作lookup table。
对于单个样本(即输出向量的单个分量)而言,我们的目的是最大化输出向量的似然概率,即对于真实上下文词one-hot vector为1的第j个分量。
最大化上下文单词的输出似然概率p(x) = 最小化 -p(x)
根据多元交叉熵损失函数 ,yi为真实标签,pi为真实标签的概率。
拟合损失函数:
前馈:forward propagation,本质上是加权求和。
BP: backward propagation,本质上是loss 对当前w求误差e+更新权重w。
xj为输入one-hot向量第j个单元的值,yj为最终输入向量第j个单元的softmax概率值,tj是真实向量第j个元素的值。对于某个真实样本实例,在输出神经元上,只有一个分量tj=1,其余为0,不妨令这个分量为j*。
假设输出词是第j*个词(这里可以说成是第j个单词,因为j这个分量对应的不仅是softmax输出向量的概率,还是词汇表索引值为j的单词,这个单词的one-hot向量在j位置为1,那么softmax输出向量第j单元的概率=one-hot向量j分量为1的概率=第j个词的概率),交叉熵损失函数为:
1.3.3 输出层 -> 隐藏层:更新输出权重矩阵W'
1) 先求E对输出层输出分量uj的偏导数 -> 以便求得误差error。