神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

本文主要为大家解释一下神经网络的反向传播,为神经网络的梯度消失和梯度爆炸问题做一个铺垫。

目录

 

一、Sigmoid函数

二、反向传播

2.1前向传播

2.2误差计算

2.3反向传播

2.4权重更新

2.5误差再次计算

2.6权重更新的标量计算方法

三、总结


一、Sigmoid函数

本文后面所用的神经网络**函数全部将会是sigmoid函数,它可以将变量映射到0,1之间。它的表达式为:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

以及sigmoid的导函数为:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

曲线为

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

二、反向传播

首先声明一下,为了简化公式的推导,所有的神经元会省略掉截距b。

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

已知:输入神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明    输出 神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明  第一层的权重 神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明 

           第二层的权重为神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明,损失函数为神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

注:损失函数的中后面减的一部分是神经网络的输出(省略了常数项b),S(.)表示**函数sigmoid

2.1前向传播

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

上面的结果就是前向传播输出的结果,可能有人会问向量是怎么**的,其实很简单,比如最后一步:S(0.33015)=0.581796

S(0.25397)=0.563155,就是这样个算个的就可以了。

2.2误差计算

本例中损失函数采用均方误差。

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

2.3反向传播

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明更新权重:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

上面的公式推导看上去十分的庞大,但是千万别被它给吓倒,其实就是很简单的链式求导,另外在最后一步直接使用了前面sigmoid的导函数,可以参见第一部分,神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明是一个元素全为‘1’的向量。

同理可以得到:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

我们将我们的所有数值代进去可得

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

注:所有的运算中间过程省略,由于本人在运算时存在位数保留问题,所以结果可能会存在偏差。

2.4权重更新

本例中学习率采用神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明=0.5,梯度下降法。更新公式为:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

那么有:

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

 

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

2.5误差再次计算

神经网络的梯度消失和梯度爆炸问题(一):反向传播——公式推导+示例说明

通过一次反向传播之后,误差顺利减小。

2.6权重更新的标量计算方法

在这里就不再一步一步推导公式,推公式确实比较麻烦,给大家一个用标量计算的链接:https://www.cnblogs.com/charlotte77/p/5629865.html

三、总结

反向传播其实就是一个以减小误差为目的,以各种梯度优化方法为手段的不断迭代的一个过程。本文只是一个非常简单的例子,希望可以帮助大家理解它,有了这个基础,接下来,我会为大家介绍梯度消失和梯度爆炸,下篇见。