1. Word2vec~single CBOW算法推导BP
word2vec主要实现方式有:skip-gram和CBOW。
- CBOW的目的是根据上下文contextual words来预测当前中心词的概率,且上下文所有单词对当前中心词出现的概率影响权重是一样的,如在袋子中取词,取出足够数量的词就可以了,与取出词的先后顺序无关。
- skip-gram是根据中心词来预测上下文语境词概率的。
其实single CBOW模型与单个skip-gram模型本质上是一样的,可以依据single CBOW理解skip-gram算法。
1.1 Lookup table
因为one-hot向量只有一个元素i为1,其余为0。所以,one-hot vector与权重矩阵w相乘只是得到了W矩阵的第i行,这也叫查表操作lookup table。
1.2 loss function
对于单个样本(即输出向量的单个分量)而言,我们的目的是最大化输出向量的似然概率,即对于真实上下文词one-hot vector为1的第j个分量。
最大化上下文单词的输出似然概率p(x) = 最小化 -p(x)
根据多元交叉熵损失函数 ,yi为真实标签,pi为真实标签的概率。
拟合损失函数:
1.3 梯度下降和BP
1.3.1 BP Essence
前馈:forward propagation,本质上是加权求和。
BP: backward propagation,本质上是loss 对当前w求误差e+更新权重w。
- 误差e是通过损失函数loss function对神经元输出(输出层输出,或隐层输出)求偏导(这也叫梯度下降,梯度就是导数,最终的梯度=最终的导数=误差e),再对权重元素求导得到的。
- 损失函数是根据前馈条件概率(或称为似然概率)和真实向量分量tj得到的,比如,多元交叉熵损失函数-。
- 训练模型的目的是最大化似然概率函数,而最大化似然函数p 等价于 最大化logp 等价于 最小化 -logp 推出 多元交叉熵损失函数。
1.3.2 损失函数
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。