当激活函数的导数为 0 时,神经网络如何学习?

人工智能 神经网络 深度学习 梯度下降
2021-11-15 06:02:22

想象一下,我有一个带有单个隐藏层的人工神经网络,并且我使用 ReLU 作为我的激活函数。如果通过更改我以如下形式初始化我的偏差和权重:

XW+B<0
对于X中 的每个输入x则损失函数关于 W 的偏导数将始终为 0!

在上述导数为 0 的设置中,NN 真的不会学到任何东西吗?

如果为真(NN 不会学到任何东西),我是否还可以假设一旦梯度达到给定权重的值 0,该权重将永远不会更新?

3个回答

在像上面这样的设置中,derivat[iv]e 为 0,NN 真的不会学到任何东西吗?

如果您在标准框架中执行此操作,可能会对渐变进行一些调整:

  • 如果最近的权重不为零,动量可能会导致权重继续变化。这通常作为最近梯度的滚动平均值来实现。

  • 权重衰减(又名 L2 权重正则化)通常作为附加梯度项来实现,即使在没有来自预测误差的信号的情况下也可以向下调整权重。

如果基本梯度下降的这些扩展中的任何一个处于活动状态,或者任何类似的东西,那么神经网络有可能在几步之后移出您创建的静止区域,然后继续学习。

否则,是的,神经网络权重不会通过梯度下降完全改变是正确的,并且对于您的任何输入值,NN 都将保持不变。您对偏差和权重的仔细初始化将创建一个无法从给定数据中学习的系统。这是 ReLU 激活的一个已知问题,并且在正常启动条件下的训练期间可能会发生在一定百分比的人工神经元上。其他激活函数(例如 sigmoid)也有类似的问题 - 尽管其中许多函数的梯度从不为零,但它可以任意低,因此参数可能会进入学习速度如此缓慢以至于 NN 的状态,而在技术上学习某物在每次迭代中,都被有效地卡住了。要区分 NN 的这些不需要的状态与找到有用的最小误差的目标之间的区别并不总是那么容易。

人们经常在 ReLU 之前放置一个 batchnorm 层。这有效地防止了您描述的问题。

学习和零导数

人工网络的设计使得即使单个激活函数的偏导数为零,它们也可以学习。它们也可以设计为在损失1函数的导数也为零时继续学习。通过设计,这种对消失的反馈信号幅度的弹性决定了在学习算法、硬件加速电路或两者中如何使用微积分结果。学习行为是指学习发生时网络参数变化的行为。

对于今天使用的许多激活函数,激活函数的导数永远不是真正的表达式 0,但也有这样的情况。这些是激活函数导数的评估实际上为零时的示例。

  • 一直以来都是二进制步骤激活函数,这就是为什么它们通常只用于网络的最后一层以离散化输出。
  • 当 ReLU 激活函数的输入为负时,即问题中给出的情况
  • 当数字的IEEE表示的粒度不再支持评估时数字的绝对值的小
  • 当损失为零时

接近零

如果损失函数输出的结果非常接近于零,以至于该数字的数字乘积在传播过程中在浮点硬件中四舍五入到零,那么最后一种情况很容易发生。即使不是零,这个数字也可能很小,以至于学习速度会减慢到无法维持的速度。由于舍入现象,学习过程要么振荡,在许多情况下是混乱的,要么找到一个静态并保持在那里。同样,这不一定需要雅可比行列式中的零偏。

一个熟悉的比喻

有助于直觉理解这一点但根本不是一个伟大的和全面准确的类比的认知等价物是怀疑的心理概念。各种变化方向或产生变化的行动的优势已不再清晰。这是一个粗略的类比,有些人在考虑梯度消失时的含义时可以与之联系。当在历史背景下查看梯度时,梯度是重力定义哪个方向向下的位置的表面坡度,消失的梯度是一个似乎没有方向是下山的地方。

一维平面设计

在这个问题中,当内层2是 ReLU 激活函数时,如果其输入为负,则损失函数相对于正在调整的参数的偏导数的评估将始终为零。然而,这是设计使然,也是 ReLU 训练速度快的原因之一。当信号在该特定单元的层中为负时,忽略它是很节俭的。然后上游的其他单元通过零部分的去激活单元周围的其他路径被改变。神经科学家可能会对过于简单化而微笑,但这就像大脑中两个相邻细胞之间缺失的突触。

在上述导数为 0 的设置中,[网络] 真的不会学到任何东西吗?

这是错误的。如果一层中的所有导数都为零并且没有使用其他设备,例如曲率、动量、正则化和其他由超参数控制的设备,则学习将停止。即便如此,跨层的零点只会影响上游层的调整,即更靠近输入的层。在这种情况下,下游的融合活动可能会继续。

零值和接近零值(以及接近溢出)是一种饱和条件,这些在人工网络研究中都经过仔细研究,但是具有零部分的单个单元不会停止学习,并且在特定情况下可以确保其完成及其结果的充分性。

一些微积分

用数学术语来说,如果雅可比矩阵在一个位置上为零,则其他位置可能仍然是各个参数的适当调整幅度和方向的有效指标。如果使用 Hessian 或使用各​​种类型的动量、正则化或其他技术,则 Jacobian 上的零点可能不会阻止上游学习,这是使用它们的部分原因。

动量的类比

这个类比可以再次被用来阐明动量作为一个原则,但需要注意的是它再次过于简单化了。信念是有动力的,所以当一个信念存在并且下一步的所有其他方向指示都不确定时,大多数人会根据他们的信念采取下一步行动。

这就是所有有大脑的有机体都倾向于工作的方式,也是捕鼠器和蜘蛛网可以捕捉到的原因。如果没有可行的反馈来进行学习,有机体将根据其 DNA 或大脑网络中的动量采取行动。这通常是有益的,但在特定情况下可能会导致损失。

渐变也不是万无一失的。局部最小值问题也会导致纯梯度下降功能失调。

曲率的类比

曲率(如使用 Hessian 时)需要不同的类比。

如果一个聪明的盲人在干燥、平坦的表面上、口渴并需要水,则梯度可能是平坦的,他们可能会用脚或手杖感觉到弯曲的迹象。如果发现表面的某些向下弯曲特征,则可能会在更多情况下引导人们浇水,而不是随机步骤。

随着硬件加速的改进,在大多数情况下对 CPU 执行来说计算量很大的 Hessian 可能会成为标准做法。

从数学上讲,这只是从多元空间中泰勒级数展开的两项变为三项。从力学的角度来看,它包括加速度到速度。


脚注

[1] 损失或任何驱动人工智能系统行为的函数:错误、差异、价值、收益、最优性和其他类似评估性质的函数。

[2] 人工网络中的内层通常称为隐藏层,但这在技术上并不正确。尽管神经网络的封装可能会向程序员隐藏内层的信号,但这样做是一种低级的软件设计功能,而且是一个糟糕的功能。人们通常可以并且绝对应该能够监控这些信号并对其进行统计。它们并不像某种数学奥秘那样隐藏在数学中,它们与输出层的唯一区别是输出层旨在驱动或影响网络之外的某些东西。