Backpropagation——反向传播

是有效计算gradient的向量的方法,因为随着网络的层数的增加,参数越来越多,向量越来越长,计算越来越复杂,使用反向传播比较高效。

预备知识

chain rule 链式法则

用于多变量求导

01

σ(z)函数

05

backpopagation过程

02

梯度下降的方式是用于求得Loss函数的最小值,loss函数是一个求和函数,取决于每一个l的值,所以重点在于计算w参数对C的微分。

03

(其中C就是上图的小l)

求w对C的微分,可以通过链式法则分解,引入中间变量z。
求w对z的微分是forward pass,有图可得,w1对z的偏微分就是x1,可以以此类推,wn对z的偏微分,就是wn前面的input值。
求z对C的微分是backward pass

Forward pass

正如前面所述,wn对z的偏微分,就是wn前面的input值。一定是当层的、最接近的input的值,可以是来自外部输出,也可以是来自前一层网络。
04

Backward pass

考虑的是下一步发生了什么事情。

引入中间变量a,使得a = σ(z)

可以通过链式法则展开,得到z对C的偏微分。
06
其中可以看到关系可以普遍简化定义为:a会影响z’,z’’(可能还有别的z),z’,z’’会影响c,从而有a影响了c,通过链式法则可以表示出c对a的偏微分。

05

第一项a对z’等的偏微分都很好算,a是作为input的层,通过forward pass可以知道,对应的是w1,w2……wn,后面那一项我们无从下手。

假定我们已经知道后面那一项的值,则整个式子可以进行一定的整理

08

如何计算未知的两项? – 分类讨论

  • case 1:已经到达了output layer

    09

  • case 2 Not output layer

    通过递归的方式计算,直到打倒了output 层,然后可以回溯到前面层

    10

实际计算方式

computer z对c的偏微分 from the output layer,从输出层向后计算,计算有效率。

11

实际是,建立一个反向的神经网络,来计算整个的偏微分。

Summary

  • 先计算ForWard pass
  • 再通过逆向网络计算 Backward pass
  • 两者相乘,最终得到了w对C的偏微分

12

评论