• 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • ​个人主页:有梦想的程序星空
  • ​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • ​如果文章对你有帮助,欢迎关注点赞收藏订阅。

梯度消失和梯度爆炸产生的原因:

        传统的神经网络通常是基于BP算法优化权重参数的,即通过损失函数计算的误差通过梯度反向传播的方式对神经网络中的权重进行更新,其中用到的是连乘形式的链式法则。

        梯度消失:产生的原因基本上是网络太深或是采用了不恰当的损失函数,如sigmoid函数、tanh函数等。由于sigmoid函数的导数最大值是0.25,因而通过链式法则,导致靠近输入层的权重更新缓慢甚至停滞。

        梯度爆炸:产生的原因一般是深层网络或是权重初始化过大的情况,伴随着传统神经网络的链式法则,梯度会越来越大,训练过程中,很容易使得权重的值也越来越大导致溢出等情况。

解决方法:

        由于梯度消失和梯度爆炸都是由于网络太深或是权重更新过大或是过小,并且伴随着链式乘法法则导致的,主要有以下几种解决方法:

  • 预训练+微调
  • 换成Relu、LeakyRelu等非饱和的激活函数
  • 梯度剪切、梯度正则
  • 使用Batch Normalization
  • 使用LSTM或是GRU等
  • 使用残差结构
  • 神经网络权重初始化(Xavier, He初始化等)

 关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐