当前位置:   article > 正文

机器学习-深度学习2_为什么不同数量隐藏层及神经元数量下神经网络输出结果会存在差异?

为什么不同数量隐藏层及神经元数量下神经网络输出结果会存在差异?

训练深度神经网络

梯度消失

神经网络通过非线性隐藏层的堆叠可以拟合复杂的函数,但是随着层数的增加,神经网络会出现学习缓慢甚至无法学习的情况,这样的问题被称为梯度消失问题(vanishing gradient problem)。

MNIST

MNIST数据集是来自美国标准与技术研究所的手写体数据集,包括从0到9总共10个数字的手写体图像,常被用做教程或作为benchwork用于对比模型优劣。
在这里插入图片描述
我们用MNIST数据集训练神经网络,共28*28=784个像素点,即输入层有784个神经元,每一个隐藏层都包含30个神经元,输出层神经元为10个,对应于MNIST数据集的10个分类。我们通过增加隐藏层来比较模型表现:
在这里插入图片描述

隐藏层数准确率
196.48
296.90
396.57
496.53

为了更直观的表示深层神经网络中存在的问题,共训练了500轮,同时对数据做平滑处理,将训练过程中的学习率画了出来:
在这里插入图片描述
在这里插入图片描述

  • 随着网络模型的不断训练,我们发现靠前的层比靠后的层梯度要小,并且随着网络隐藏层的增加,这种问题越发明显。深度神经网络中,隐藏层无法学习的情况被称为梯度消失问题。
  • 深度神经网络的学习梯度是不稳定的,这种不稳定性是深度学习网络基于梯度下降学习网络参数的一个基本问题。

探究存在梯度消失的问题,我们以一个三层隐藏层的神经网络为例:
在这里插入图片描述
第一个隐藏层偏差变化率:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在由链式法则求出来的梯度公式中,越靠前层的梯度受到后面层的梯度影响越小,加上sigmoid函数的梯度始终小于1,所以靠前的神经网络层容易出现梯度变得极小的情况,没有学习效果,这样的现象被称为梯度消失。
在这里插入图片描述

梯度爆炸

对应于梯度消失的情况,同样还存在梯度爆炸的情况,虽然相对比较少见。比如在这里插入图片描述通过链式法则权重相乘,是的前面层的变化率变得非常大。这样的现象被称为梯度爆炸。
在这里插入图片描述

ReLU

前面提到的深度神经网络中存在的梯度问题一部分是由于sigmoid函数而导致的,通过选择其他的激活函数可以很好的减少这种问题的发生。于是我们引入矫正线性单元(ReLU,rectified linear units):
A(x) = max(0,x)
在这里插入图片描述
ReLU求导结果:
在这里插入图片描述
在这里插入图片描述
在x大于0的时候,ReLU的导数始终为1.在将ReLU作为神经网络每层的激活函数时,即使经过层层网络的传播也可以保证前面层的变化率可以相对保持稳定,这也就是为什么ReLU可以使得深层神经网络更加容易训练的原因:
在这里插入图片描述
ReLU函数还有其他好处:

  • ReLU寒素通过分段使得函数本身仍然是非线性的,不会减弱神经网络的表现能力
  • 小于0时梯度为0使得部分神经元不会被激活,使得神经网络更加稀疏和高效
  • ReLU运算简单,比sigmoid函数更节约计算开销
    ReLU函数同样不存在缺点,主要是由小于0的分段梯度同样为0造成,这意味着输出结果为负的神经元将停止对误差的响应,可能会导致许多神经元的 “死亡” ,通过使用ReLU函数的变体PReLU (Parametric Rectified Linear Unit) 来解决。
参数初始化

除了深度网络存在的梯度不稳定的情况之外,还有许多其他的问题影响着网络的训练。比如参数初始化使得网络处于不同的起点,往往带来截然不同的训练结果,如下图的蓝色箭头的起点比黄色箭头指向的起点更容易陷入局部最优。选择合适的初始化方法可以减少这种情况。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/314302
推荐阅读
相关标签
  

闽ICP备14008679号