什么是饱和梯度问题

数据挖掘 机器学习 神经网络 深度学习 梯度下降 反向传播
2021-09-24 12:02:19

谁能解释什么是Saturating Gradient问题?如果有人也能提供数学细节,那就太好了。先感谢您!

3个回答

如果您使用类似 sigmoid 的激活函数,如 sigmoid 和 tanh,在经过一些 epoch 的训练后,每个神经元的线性部分将具有非常大或非常小的值。这意味着无论其符号如何,线性部分都将具有很大的输出值。因此,每个神经元中增加非线性的类 sigmoid 函数的输入将远离这些函数的中心。

在此处输入图像描述

在这些位置,梯度/导数值非常小。因此,经过多次迭代,权重的更新速度非常缓慢,因为梯度的值非常小。这就是为什么我们使用ReLU activation function它的梯度没有这个问题的原因。饱和意味着在一些学习发生相对较快的 epochs 之后,线性部分的值将远离 sigmoid 的中心并以某种方式饱和,并且由于梯度值较小,更新权重需要太多时间。您可以在此处查看此问题的解决方案。

如果我想解释数学部分,假设您使用 sigmoid 作为激活函数。如果σ代表sigmoid,它的梯度是σ(1σ)。现在假设你的线性部分,sigmoid的输入是一个太大的正数,那么sigmoid就是:

11+ex

将具有接近一但小于该值的值。另一方面σ 将如此接近于零,相乘 σ1σ会导致一个很小的值,这意味着梯度的值非常小。如果线性部分的值很小,那么σ 将接近于零并且 1σ将接近 1 但小于该值。同样,将这些相乘将导致一个小的值作为梯度。

在神经网络中,诸如逻辑(sigmoid)和双曲正切函数之类的激活函数将任何实数值映射到一个紧凑的数值范围。例如,sigmoid 函数 S(x)= 1/(1+ e^(-x) ) 将一组实数值 x 映射到 0 和 1 之间。要获得 0 或 1 的这些边界,大幅度负或 x 的正值是必需的。因此,当极大的权重导致神经元产生非常接近范围边界的值(梯度)时,就称该神经元是饱和的。如果梯度始终为 0,则神经网络中不会发生学习。同样,如果梯度始终为 1,则很可能意味着神经元对训练数据过度拟合,并且可能在测试数据上表现不佳。

根据剑桥词典饱和意味着

将事物或地方完全填满以致不能再添加的行为或结果

在这种情况下,它指的是一个更大的投入不会导致产出相关增加的功能。因此,如果梯度是饱和的(意味着它非常接近于零),则在应用链式法则时,更大的上游梯度不会导致更大的当前梯度。