神经网络的反向传播公式推导

写在前面

机器学习算法工程师的面试中常会问到一个很基础的问题,那就是反向传播公式的推导,今天看了下吴恩达老师的公开课《神经网络和深度学习》,将一些推导过程记录下来。

逻辑回归反向传播的推导

逻辑回归是最简单的神经网络,先从逻辑回归入手,有助于后面的理解。
这里写图片描述
上图是一个逻辑回归正向传播的示意图。具体细节不再描述。

损失函数 L ( a , y ) = y l o g a ( 1 y ) l o g ( 1 a ) ,反向传播的目的是为了求 d w d b ,从而采用梯度下降法进行迭代优化。反向传播就是从后向前一步步求微分,从而得到 d w d b 。具体过程如下:

(1) d a = d L ( a , y ) d a = y a + 1 y 1 a
(2) d z = d a g ( z )
(3) d w = d z x
(4) d b = d z

这样就完成了逻辑回归的反向传播。

单隐层神经网络的反向传播推导

神经网络计算中,与逻辑回归十分相似,但中间会有多层计算。下图是一个双层神经网络,有一个输入层,一个隐藏层和一个输出层。
这里写图片描述
前向传播过程如图所示。其中 L ( a [ 2 ] , y ) 为交叉熵损失函数。假设有两个输出则 L ( a [ 2 ] , y ) = y l o g a [ 2 ] ( 1 y ) l o g ( 1 a [ 2 ] )

反向传播公式如下:
首先 d a [ 2 ] = d L ( a [ 2 ] , y ) d a [ 2 ] = y a [ 2 ] + 1 y 1 a [ 2 ]

(1) d z [ 2 ] = d a [ 2 ] g ( z [ 2 ] ) 其中sigmoid函数导数计算公式: g ( z ) = g ( z ) ( 1 g ( z ) ) ,所以 d z [ 2 ] = d a [ 2 ] ( a [ 2 ] ( 1 a [ 2 ] ) ) = a [ 2 ] y
即: d z [ 2 ] = a [ 2 ] y
(2) d w [ 2 ] = d z [ 2 ] a [ 1 ] T
(3) d b [ 2 ] = d z [ 2 ]
(4) d z [ 1 ] = w [ 2 ] T d z [ 2 ] g [ 1 ] ( z [ 1 ] )
(5) d w [ 1 ] = d z [ 1 ] x T
(6) d b [ 1 ] = d z [ 1 ]

以上6个关键方程,即完成了单隐层神经网络的反向传播。

深层神经网络的前向传播与反向传播

下图是一个四层神经网络。
这里写图片描述
前向传播过程如下:

(1) z [ l ] = w [ l ] a [ l 1 ] + b [ l ]
(2) a [ l ] = g [ l ] ( z [ l ] )

与单隐层神经网络反向传播类似,我们可以直接写出深层神经网络的反向传播递推公式:

(1) d z [ l ] = d a [ l ] g [ l ] ( z [ l ] )
(2) d w [ l ] = d z [ l ] a [ l 1 ]
(3) d b [ l ] = d z [ l ]
(4) d a [ l 1 ] = w [ l ] T d z [ l ]

以上四个式子既可以实现深层网络的反向传播。


以上就是我记录的神经网络的反向传播公式推导,想看更详细的过程,请参看吴恩达老师在网易云课堂上的公开课《神经网络和深度学习》。

猜你喜欢

转载自blog.csdn.net/hywel_xue/article/details/81941198