backpropagation

一、BP算法由来
其实,训练模型可以直接上梯度下降法,但是参数太多了,很难计算。为了效率,发明了BP算法!
二、推导
在学习模型参数的时候,可以分为两个阶段:forward pass 和back pass!
根据输出函数的不同,Neural network可以做分类、回归、soft classification 。为此,我们也有不同的损失函数。这里,简单起见,若我们做软分类任务,使用cross_entropy,记为L。有n个样本,但我们只分析一个样本的损失值。
backpropagation_第1张图片根据链式法则,我们可以将希望求得的梯度利用链式法则展开,也因此有了上文的forward pass和backward pass。

backpropagation_第2张图片
forward pass:
前向传播,每个neuron的输出便是我们希望求得的梯度中的第一个微分值。
backpropagation_第3张图片
backward pass:
计算梯度值,比较麻烦的是第二个微分,先从输出层开始计算,这个轻易求得:
backpropagation_第4张图片如果不在输出层:
backpropagation_第5张图片
具体说来,上图计算公式是如何得到的呢?依旧利用链式法则,可以看到这里用到了上次学习到的权重,以及从后向前学到的偏导数值,这就组成了上图。
backpropagation_第6张图片
backpropagation_第7张图片因此在计算梯度时,利用forward pass和backward pass可以很快地计算出整个网络参数梯度。相较于直接的梯度下降法,有规律可循!
backpropagation_第8张图片

你可能感兴趣的:(BP,深度学习)