Backpropagation

Backpropagation:即反向传播算法,简称BP算法。

它是使Gradient Descent更有效率的算法,因为在NN中有太多的参数需要我们进行处理,我们不得不寻找一种算法在有效的时间内求解。

file

首先回忆一下链式求导法

file

Backpropagation

在深度学习中,我们用所有原数据经过NN处理过后得到的结果和它的真实结果的差距的和来定义这个损失函数。

然后再用它对各个参数进行微分求解最佳参数。

file

我们可以用链式规则对这个微分式进行分解,前半部分是z对参数的微分,后半部分是这个损失函数对z的微分。

file

前半部分

我们可以清楚地看到,前半部分这个微分是很好算的,对哪个参数求偏导,结果就是它的系数,即它前面输入的一个值。

file

即使不是在NN的第一层,结果也是等于它前面的输入数据。

file

后半部分

后半部分还是比较难算的,首先z经过了一个函数σ,变成a,然后继续往下走...最终才能得到损失函数,所以这里面用链式拆解,后面的再不断复合。

file

第二层的情况如下,可以得到下面这个式子。但是我们想要得到结果还要继续算下去一直算到整个NN的输出层

file

现在假设第二层neural输出的就是最后的y,所以我们直接得到损失函数对z的一个微分。

file

我们观察到,这里的整个式子好像是从后往前算出来的

file

如果第二层neural连接着一个输出层,它是这样的。

file

如果连接的不是输出层,还是这样,只不过会继续算下去。

file

所以在面临一个大型的NN时,要使用反向计算,即反向传播算法。

file

file

最后把前半部分和后半部分一乘,就得到了完整的损失函数对某个参数的微分

在对所有参数均进行这样一个计算,就能完成Gradient Descent。

file