Neural Network-神经网络算法本质

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个分量。

Neural Network-神经网络算法本质_第1张图片

 最大化上下文单词的输出似然概率p(x) = 最小化 -p(x)

 根据多元交叉熵损失函数E = -\sum_{i=1}^{N} y_{i} logp_{i} ​​​​​​,yi为真实标签,pi为真实标签的概率。

拟合损失函数:

Neural Network-神经网络算法本质_第2张图片

1.3 梯度下降和BP

1.3.1 BP Essence 

前馈:forward propagation,本质上是加权求和\sum_{}^{}wx

BP: backward propagation,本质上是loss 对当前w求误差e+更新权重w

  • 误差e是通过损失函数loss function对神经元输出(输出层输出,或隐层输出)求偏导(这也叫梯度下降,梯度就是导数,最终的梯度=最终的导数=误差e),再对权重元素w_{ij}求导得到的。
  • 损失函数是根据前馈条件概率p(w_{output}|w_{input})(或称为似然概率)真实向量分量tj得到的,比如,多元交叉熵损失函数-log\sum t_{j} * p_{j}
  • 训练模型的目的是最大化似然概率函数,而最大化似然函数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个词的概率),交叉熵损失函数为:

 Neural Network-神经网络算法本质_第3张图片

 1.3.3 输出层 -> 隐藏层:更新输出权重矩阵W'

1) 先求E对输出层输出分量uj的偏导数 -> 以便求得误差error。

 

 

你可能感兴趣的:(深度学习~Deep,Learning,models,神经网络)