什么是梯度

  • 首先,可以梯度理解为函数的斜率。

  • 之后,这个斜率,说的是损失函数的斜率,如果我们的损失函数仅仅有一个参数,那么梯度就是斜率。

  • 在这里我假设损失函数有两个参数(就是二维损失函数),那么损失函数的3D图像就如下图,中间是损失率最低的点,也是我们所要去寻找的点:【扫盲】什么是梯度、梯度消失、梯度爆炸?

  • 在此,梯度是一个向量,表示某一函数在该点处的方向导数沿该方向取得最大值,即函数在该点处沿着该方向变化最快,变化率最大。

  • 我们就是根据梯度这个东西,来确定误差函数的最小点(或者说相对最小点),而损失函数的值为我们提供了网络在给定数据集上的表现离完美有多远的尺度。

  • 目前优化神经网络的方法都是基于梯度的反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化。

一般来讲,卷积神经网络的流程如下:

  1. 图像输入经过卷积提取特征
  2. 特征矩阵经过**函数**生成新矩阵
  3. 新矩阵生成误差函数,对新矩阵进行梯度求导,求出loss
  4. 之后根据loss来反向传播更新卷积核的权重。
  5. 一层彻底结束,继续迭代。
    【这里不算严谨,欢迎评论区或私聊指出错误】

梯度消失

  • 梯度消失就是在第4步反向传播时,由于**函数选取不正确等原因,导致前面的隐层的网络权重(就是卷积核的参数)不能得到更新的问题。
  • 因为通常神经网络所用的**函数是sigmoid函数,这个函数有个特点,就是能将负无穷到正无穷的数映射到0和1之间,并且对这个函数求导的结果是f′(x)=f(x)(1−f(x))。因此两个0到1之间的数相乘,得到的结果就会变得很小了。
  • 神经网络的反向传播是逐层对函数偏导相乘,因此当神经网络层数非常深的时候,最后一层产生的偏差就因为乘了很多的小于1的数而越来越小,最终就会变为0,从而导致层数比较浅的权重没有更新,这就是梯度消失。

梯度爆炸

  • 梯度爆炸,由于初始化权值过大,前面的隐层会比后面的隐层层变化的更快,就会导致权值越来越大,梯度爆炸的现象就发生了。
  • 在深层网络或循环神经网络中,误差梯度可在更新中累积,变成非常大的梯度,然后导致网络权重的大幅更新,并因此使网络变得不稳定。在极端情况下,权重的值变得非常大,以至于溢出,导致 NaN 值。
  • 网络层之间的梯度(值大于 1.0)重复相乘导致的指数级增长会产生梯度爆炸。
  • 可能作用于2、3、4步中。

相关文章:

  • 2022-01-02
猜你喜欢
  • 2021-11-14
  • 2021-05-17
  • 2021-12-23
  • 2022-12-23
  • 2021-12-01
  • 2021-10-13
相关资源
相似解决方案