机器学习系列 七 - 延展 Back Propagation

回顾微分链式求导法则

那么,我们把L可以看做是多个 l 的偏微分的求和

我们某一个neural 单独拿出来看看。
向前计算,可以容易计算z对w的偏微分,
后向计算,可以容易计算l对z的偏微分。



开始计算:
1,计算z分别对于weight的偏微分,当然根据 z= x1w1 + x2w2 + b,容易分别的大x1和x2
Forward Pass


那结论其实就是, z 对于weight求微分的结果就是他对应的输入的值。
即,对w1偏微分就是x1,对w2的偏微分就是w2.....可以立刻答出。

2,计算 l 对于 z 的偏微分
Backward Pass
 2.1 先计算 a 对于 z 的偏微分,那么我们其实可以根据sigmod function 的特性进行偏微分。

 2.2 计算 l 对于 a 的偏微分,根据chain rule 来计算,由于 a 会影响两个参数,Chain Rule 就需要考虑后面两个参数的偏微分的和。

    2.3 计算第一项,  是什么呢? 由于z 一撇的式子如下,所以对于a进行偏微分就得到w3.

    2.4 计算下一项, 是什么呢? 跟上面z两撇跟z一撇类似,所以得到的偏微分就是w4.

目前得到如下:
那我们现在还有两项是未知的:l 对于z一撇的偏微分,和 l 对于z 两撇的偏微分。

我们先假设,这两个值是已知的。然后带入这两个值进去求, 式子就写成下面这个样子。






    2.5 接下来,我们就来计算上面假设已经知道的两个式子和


    2.5.1 如果我们现在z prime 和z double prime 目前位于最后一层:
那么我们会计算,而且比较容易。

    2.5.2 如果我们的z prime 和 z double prime 不是最后一层,那也就是没办法直到下一层的值,我们就必须一路往后算,一层一层的算,直到算到输出层为止!

刚刚上面都是从input 向后面output 计算,比较麻烦,运算量很大。如果从output 开始往前算,算到input
从右往左算 -- 反向传播


使用前向传播计算所有的 z 对 w 的偏微分,
再使用后向传播计算所有 l 对于 z 的偏微分,
最后,再将两个值相乘,就得到了 l 对于 w 的偏微分。
这样就轻易的把所有neural network里面的值都算出来了, 然后就可以使用Gradient Descent 来去对参数做update了。


 

阅读更多
个人分类: 机器学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭