课程目的:
主要讲了,神经网络Backpropagation算法的推导过程
1.为什么Backpropagation
首先:当我们要用gradient descent来train一个neural network,要怎么做?开始时参数特别多,计算初始参数的微分,然后不断更新参数
在神经网络中的梯度下降算法和之前求线性回归方程中用的没有太大的区别,都是不断的计算微分,然后更新参数,最终找到一个最优解。但是梯度下降算法里参数特别多
但是在神经网络中,有着大量可能多达上百万个的参数,所以传统的求微分方法行不通,计算量太大无法快速有效的求出微分。
2.链式求导法则(Chain Rule)
这是Backpropagation里很重要的知识点,很简单
3.Backpropagation
每一个神经网络都需要定义一个 Loss Function,定义实际输出与预期输出之间的误差 Cn ,要使上式的值最小。用 Gradient descent 来做的话就是这个式子对权值 w 求偏导,由此我们知道只需要求每个 Cn 对 w 的偏导,然后全部加起来就可以了。
3.1 Forward pass很好算了:看input 看x和z就是∂z/∂w
z=xw+b
∂z/∂w
∂z/∂w1=x1,∂z/∂w2=x2 ,
3.3 Backward pass:就比较复杂了,计算 ∂C/∂z(z经过很复杂变换才到的c)
自己理解推导,回过头发现如此简单:其实来源就酱:
case1:有output
case2 :没有output的值
你看一下各自的对应关系:
4.总结
Backpropagation 算法的流程就是:
1.Forward Pass: 算出每一层的输出 aa,也就是 ∂z/∂w∂z/∂w .
2.Backward Pass: 反转神经网络,从输出层往回计算每一层的 ∂C/∂z∂C/∂z.
将前面算出来的两项相乘,得到 ∂C/∂w * ∂C/∂w.
我觉得就是递归吧:
Forward Pass 就是函数一层层的调用,达到返回条件(在BackPropagation中是遇到输出层)就开始返回,也就是 Backward Pass