为了感谢大神,我是跪在电脑前fork的。
问题描述与动机:
-
大家都知道的,其实我们就是在给定的图像像素向量x和对应的函数 f(x) ,然后我们希望能够计算 f 在 x 上的梯度( ∇f(x) )
-
我们之所以想解决这个问题,是因为在神经网络中, f 对应损失函数 L ,而输入 x 则对应训练样本数据和神经网络的权重 W 。举一个特例,损失函数可以是SVM loss function,而输入则对应样本数据 (xi,yi),i=1…N 和权重 W 以及偏移项 b 。需要注意的一点是,在我们的场景下,通常我们认为训练数据是给定的,而权重是我们可以控制的变量。因此我们为了更新权重的等参数,使得损失函数值最小,我们通常是计算 f 对参数 W,b 的梯度。不过我们计算其在 xi 上的梯度有时候也是有用的,比如如果我们想做可视化以及了解神经网络在『做什么』的时候。
直观地理解,反向传播可以看做图解求导的链式法则。
最后我们用一组图来说明实际优化过程中的正向传播与反向残差传播:
![1](https://i-blog.csdnimg.cn/blog_migrate/5b71d16aa0a042708c3f4d575cbce731.gif)
![2](https://i-blog.csdnimg.cn/blog_migrate/a04d4611a12898808d14b00bb46ab489.gif)
![3](https://i-blog.csdnimg.cn/blog_migrate/72f24fc6b4d46cba2d88069aa0c4df02.gif)
![4](https://i-blog.csdnimg.cn/blog_migrate/c3d1b89cfad1a022e3c066fa4ae486e7.gif)
![5](https://i-blog.csdnimg.cn/blog_migrate/7be814b0ec1b2720fffe5bce00c97b44.gif)
![6](https://i-blog.csdnimg.cn/blog_migrate/7d385880aea76b7dd3803ca8ab653afd.gif)
![7](https://i-blog.csdnimg.cn/blog_migrate/d1caa3b12426e631fc05bba4dbc73ef7.gif)
![8](https://i-blog.csdnimg.cn/blog_migrate/b58a88c9d5b964668e2e32a6b7e66e6c.gif)
![9](https://i-blog.csdnimg.cn/blog_migrate/63cd6795900ed45771a7ce09090389ac.gif)
![10](https://i-blog.csdnimg.cn/blog_migrate/dee68e959f65133567dd55df16c10a43.gif)
![11](https://i-blog.csdnimg.cn/blog_migrate/cdade487796d77b4018d4ff4a3814fe2.gif)
![12](https://i-blog.csdnimg.cn/blog_migrate/5226641ec4ae97cb30d1e0215936030b.gif)
![13](https://i-blog.csdnimg.cn/blog_migrate/e8ec510b818533b1798b7720368130c8.gif)
![14](https://i-blog.csdnimg.cn/blog_migrate/b3a9106a9ac31e891a1341490fe88f8d.gif)
![15](https://i-blog.csdnimg.cn/blog_migrate/bc5b39ffe6cf334f9bfbf3469a7f4e7b.gif)
![16](https://i-blog.csdnimg.cn/blog_migrate/e57093b826ea299b4546157ee3917ca6.gif)
![17](https://i-blog.csdnimg.cn/blog_migrate/e3eb8e4de82eca1b3a3a1473995351f4.gif)
![18](https://i-blog.csdnimg.cn/blog_migrate/bdf63523db964fa9b07737cc0d21f7f2.gif)
如果帮到你了,请赞赏支持: