神经网络反向传播理解

一 、反向传播的作用
训练神经网络的目标是 优化代价函数,使得代价函数找到一个 全局最小值或者局部最小值。不管使用何种梯度下降算法(BGD, SGD ,Adam),都需要先算出各个参数的梯度。 反向传播的作用: 就是快速算出所有参数的偏导数。

二、 求导数的方式
求导数通常可以分为两类,一类是直接用定义,第二类是公式法(包括链式法)。
定义法:

定义法求导数存在问题: 当参数较多时(如:100万),计算一个样本所有的参数就需要计算 100万次 C(w+&) , 和一次 C(w) ,计算量太大。所以导数定义法行不通。
若直接将 公式展开求导又太复杂,所以选择用 链式求导法则 求所有参数的偏导。

三 、反向传播的原理
反向传播主要依赖于链式法则, y是复合函数:

反向传播正是用到了 链式法则。
反向传播的优点在于: 尽力用一次前向传播和一次反向传播,就同时计算出所有参数的偏导数。 反向传播计算量和前向传播差不多,并且有效利用前向传播过程中的计算结果,前向传播的主要计算量 在 权重矩阵和input vector的乘法计算, 反向传播则主要是 矩阵和input vector 的转置的乘法计算。例子如下:

前向传播 计算出 q =W.*x , 和 f(q) = q12 + q22+…+qn**2, 反向传播先计算 f 对q 的偏导, 再计算 q 对W的偏导,得到f 对W的梯度。 利用了 前向传播计算的q。

四 用计算图解释几种求导方式

总结一下:路径上所有边相乘,所有路径相加。
一般情形如下:

两种求导模式:前向模式求导( forward-mode differentiation) 反向模式求导(reverse-mode differentiation)

前向模式:先求X对Y的影响,再求Y对Z的影响

后向模式: 先求Y对Z的影响,再求X对Y的影响。

这样看起来 前向模式求导和反向模式求导,除了求导顺序不同,好像没什么不同,那为什么要用反向模式求导,而不用前向模式求导呢?
求导顺序不同, 求导复杂度也不同
举例说明:
如果用前向求导模式:关于b向前求导一次

反向模式:

前向模式,一次只能求出 e对b的偏导, 而反向模式 可以同时 求出 e 对a 和b的偏导。使用前向模式求偏导,需要多次才能求出所有参数的偏导,而反向传播一次就够了
————————————————
版权声明:本文为CSDN博主「xingkongyidian」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xingkongyidian/article/details/97259478

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注