CS231n CNN for Visual Recognition Module (3) backpropagation

来源:互联网 发布:淘宝账户怎么登录 编辑:程序博客网 时间:2024/06/01 08:15

这里写图片描述
这篇主要是就是围绕这个figure讲的,从forward pass讲起,每一步都可以知道自己的output和local gradient,比如x+y=q的output是3,在x上的梯度是1,y上的梯度是1;再比如,q*z=f,output是-12,q的梯度是-4(z),z的梯度是3(q)。

得到最后的score后,就可以往前推梯度了,就是back propagation。这里用到是链式原理,chain rule。

推到最终,是要得到最后的输出f对应的最原始的每个一输入的梯度,即每一个原始输入对最终输出的影响程度。
这里写图片描述

对于如何推偏导,有一个需要注意的,max operation
这里写图片描述
这个函数只对x,y中比较大的值有偏导为1,较小的偏导为0。当较小的那个增大到一定程度变成较大的后,f的值会变,但梯度看不出来变化,所以说梯度只对输入tiny change有信息,就像定义的那样。

Backpropagation can thus be thought of as gates communicating to each other (through the gradient signal)weather they want their outputs to increase or decrease (and how strongly), so as to make the final value higher.

在实际应用中的trick:

  1. stage backpropagation: 可以根据实际需要把forward pass break down into stages,这样back的时候比较容易操作,主要根据是不是能按一定公式快速算出梯度来为准则。
  2. cache forward pass variables: 把前面的值比如x,y的存储起来,back的时候可以直接拿来用。
  3. Gradients add up to forks: back算偏导的时候要注意算对,有些变量的偏导会在chain rule的几个函数中出现,记得最后加起来。

这里写图片描述
f在w上的梯度(偏导)是x,所以x的数值范围对w有直接影响。This is why preprocessing matters a lot, sometimes in subtle way!

0 0
原创粉丝点击