神经网络反向传播理解

一 、反向传播的作用

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

二、 求导数的方式

求导数通常可以分为两类,一类是直接用定义,第二类是公式法(包括链式法)。
定义法:
神经网络反向传播理解_第1张图片
定义法求导数存在问题: 当参数较多时(如:100万),计算一个样本所有的参数就需要计算 100万次 C(w+&) , 和一次 C(w) ,计算量太大。所以导数定义法行不通。
若直接将 公式展开求导又太复杂,所以选择用 链式求导法则 求所有参数的偏导。

三 、反向传播的原理

反向传播主要依赖于链式法则, y是复合函数:
神经网络反向传播理解_第2张图片
反向传播正是用到了 链式法则
反向传播的优点在于: 尽力用一次前向传播和一次反向传播,就同时计算出所有参数的偏导数。 反向传播计算量和前向传播差不多,并且有效利用前向传播过程中的计算结果,前向传播的主要计算量 在 权重矩阵和input vector的乘法计算, 反向传播则主要是 矩阵和input vector 的转置的乘法计算。例子如下:

神经网络反向传播理解_第3张图片
前向传播 计算出 q =W.*x , 和 f(q) = q12 + q22+…+qn**2, 反向传播先计算 f 对q 的偏导, 再计算 q 对W的偏导,得到f 对W的梯度。 利用了 前向传播计算的q。

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

神经网络反向传播理解_第4张图片
神经网络反向传播理解_第5张图片
总结一下:路径上所有边相乘,所有路径相加。
一般情形如下:
神经网络反向传播理解_第6张图片
在这里插入图片描述
两种求导模式:前向模式求导( forward-mode differentiation) 反向模式求导(reverse-mode differentiation)

前向模式:先求X对Y的影响,再求Y对Z的影响
神经网络反向传播理解_第7张图片
后向模式: 先求Y对Z的影响,再求X对Y的影响。
神经网络反向传播理解_第8张图片
这样看起来 前向模式求导和反向模式求导,除了求导顺序不同,好像没什么不同,那为什么要用反向模式求导,而不用前向模式求导呢?
求导顺序不同, 求导复杂度也不同
举例说明:
如果用前向求导模式:关于b向前求导一次
神经网络反向传播理解_第9张图片
反向模式:
神经网络反向传播理解_第10张图片
前向模式,一次只能求出 e对b的偏导, 而反向模式 可以同时 求出 e 对a 和b的偏导。使用前向模式求偏导,需要多次才能求出所有参数的偏导,而反向传播一次就够了

你可能感兴趣的:(深度学习)