文章目录
Gradient Descent
BP只是为了更加高效地进行梯度计算。
Chain Rule链式法则
输入一个,经过神经网络后,得到 ,真实值是,定义一个和之间的距离的function ,越小,代表神经网络的parameter很好。
求和所有训练数据的 得到total loss L,对某一个参数进行计算微分。
前向传播
先考虑一个单独的neural
如何计算:
其值为该权重链接的输入值
在前馈时同时用变量存储了每层的梯度
反向传播
如何计算 :
假设 和 是已知的,进行后续计算。
把第二个式子带入第一个式子得到如下公式:
在前向传播的时候就已经算出来了,是一个常量。
下面只需要求出 和 即可:
情况一:红色的neural是属于网络的output layer的
:只需要知道后面的**函数是什么即可,因为
:知道损失函数、output和target之间是如何evaluate评价的(cross entropy或者mean square error)
在这种情况下(图中蓝色的**函数是最后一个隐藏层的**函数,后面就是输出层了),这样就已经完成了。
情况二:假设红色的neural并不是整个网络的output,后面还有其他的东西
从前往后算没有效率,所以要从输出层开始倒着算
在做反向传播的时候,实际上是建立了另外一个神经网络,正向网络中的**函数都是sigmoid函数;现在需要建立一个反向的神经网络,在前向传播之后,再计算反向传播的**函数,反向传播神经网络的输入是 和 ,其他部分和正向的神经网络运算完全一致。
Summary
如何反向传播?
1、做一个前向传播,知道每一个**函数的output,就得到了他所连接的weight的
2、在反向传播中,要把原来的神经网络的方向反转,他的每一个三角形的output是,将前向传播得到的 与现在反向传播得到的相乘,就得到了某一个weight对w的C的偏微分是什么了~