关于BP算法和梯度下降

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bazingaea/article/details/84181973

最开始学习神经网络,感触最深的就是BP算法,当时只用到却没有好好体会它背后的深意,在RNN中也会用到一个类似的算法(BPTT下面会具体讲)。对神经网络有些了解,就会熟悉BP算法由两个部分组成,向前传播和反向传播。

向前传播从输入层经过隐藏层到输出层,给出预测结果,在第一次传输过程中,使用到的权重(或者说参数)都是最开始随机初始化的,可想而知这样随机初始化的权重,最后得到的结果,与真实值的误差一定是很大的。

那么神经网络要做的一件事其实就是得到与真实值相近甚至一样的预测值,那么就把问题指向了如何修正这些权重值,才能使得预测值接近真实值。这就有了代价函数,计算真实值和预测值之间的误差,以这个误差为基准,进行BP的第二个部分,反向传播。这个过程的核心就是梯度下降法,求每个权重对应误差的偏导数值,以此作为修正权重的依据。不知道大家有没有思考过,为什么反向传播要求L对W的导数呢?(L值代价,W是权重)

反向传播的意义是,修正权重并且缩小cost值,权重更新公式是 W = W - Learning_rate * dw

求导就保证了,参数的更新是朝着正确的方向,也就是使cost缩小的方向进行的,

这个图是过于简单了,但只是为了说明问题,就不用计较这些细节了。图一如果cost函数随w的变化趋势是向上的,在某个值对w求导得到的导数是正值,为了使L减少,W也需要减少,那么W = W-learning_rate*dw 就是减少W的值,可以达到效果

如果cost函数随着w的变化趋势是向下的,那么他的导数是负值,为了让L减少,W反而要增大,W = W-learning_rate*dw ,减去一个负值就等于增加一个正值,w增大了,也可以达到效果。

注意learning_rate一定是正的。

 

猜你喜欢

转载自blog.csdn.net/Bazingaea/article/details/84181973