为什么需要增加神经网络的非线性?

机器算法验证 神经网络 卷积神经网络 非线性
2022-01-26 14:57:28

在卷积神经网络的维基百科页面上,指出应用校正线性单元来增加决策函数和整个网络的非线性:https ://en.wikipedia.org/wiki/Convolutional_neural_network#ReLU_layer

为什么需要增加非线性?它对模型的整体性能有什么影响?

4个回答

维基百科文章的那部分还有一些不足之处。让我们分开两个方面:

需要非线性激活函数

很明显,具有线性激活函数和层的前馈神经网络,每层都有个隐藏单元(为简洁起见,线性神经网络)等价于没有隐藏层的线性神经网络。证明:nm

y=h(x)=bn+Wn(bn1+Wn1((b1+W1x)))=bn+Wnbn1+WnWn1bn2++WnWn1W1x=b+Wx

因此很明显,与非线性神经网络不同,添加层(“深入”)根本不会增加线性神经网络的逼近能力

此外,神经网络的通用逼近定理需要非线性激活函数才能有效。该定理指出,在某些条件下,对于任何连续函数和任何,都存在一个具有一个隐藏层和足够多的神经网络隐藏单元上均匀地逼近内。普遍逼近定理有效的条件之一是神经网络是非线性的组合f:[0,1]dRϵ>0mf[0,1]dϵ激活函数:如果只使用线性函数,则该定理不再有效。因此我们知道在超立方体上存在一些我们无法用线性神经网络准确近似的连续函数。

多亏了Tensorflow 操场,您可以在实践中看到线性神经网络的局限性。我构建了一个 4 个隐藏层的线性神经网络进行分类。正如你所看到的,无论你使用多少层,线性神经网络只能找到线性分离边界,因为它相当于一个没有隐藏层的线性神经网络,即线性分类器。

对 ReLU 的需求

不使用激活函数是因为“它增加了决策函数的非线性”:无论这意味着什么,ReLU 并不比、 sigmoid 等更非线性。实际使用它的原因是,当在 CNN 中堆叠越来越多的层时,根据经验观察到,带有 ReLU 的 CNN 比带有的 CNN 更容易和更快地训练(带有 sigmoid 的情况更糟) . 为什么会这样?目前有两种理论:h(s)=max(0,cs)tanhtanh

  • tanh(s)存在梯度消失问题。当自变量变为的导数变为 0:s±tanh(s)

在此处输入图像描述

这意味着随着更多层的堆叠,梯度会越来越小。由于反向传播算法在权重空间中的步长与梯度的大小成正比,梯度消失意味着神经网络无法再被训练。这体现在训练时间随着层数的增加而呈指数增长。相反,,无论我们堆叠多少层也等于 0 ,这会导致死神经元问题,但这是另一个问题)。cs>0s<0

  • 有一些定理可以保证在某些条件下局部最小值是全局最小值(见这里)。或 sigmoid,则这些定理的一些假设不成立,但如果激活函数是 ReLU,则它们成立。tanh

我会给你一个非常松散的 类比(重点在这里很重要),可以帮助你理解直觉。有这个技术绘图工具,称为法国曲线,这里有一个例子:

在此处输入图像描述

我们在高中的技术绘图课上接受过使用它的培训。这些天,同样的课程是用 CAD 软件教授的,所以你可能没有遇到过。看,如何在这个视频中使用它们。

这是一个直尺:

在此处输入图像描述

你能用直尺画曲线吗?当然可以!然而,这是更多的工作。观看此视频以了解其中的区别。

使用法式曲线绘制曲线比使用直尺更有效。你必须画很多小线来用后者绘制任何平滑的曲线。 在此处输入图像描述

在此处输入图像描述

这与机器学习并不完全相同,但这个类比让您直观地了解为什么非线性激活在许多情况下可能会更好地工作:您的问题是非线性的,当将非线性部分组合成非线性问题的解决方案时,它们会更有效。

为什么需要增加非线性?

简而言之:我们的决策功能越“非线性”,它可以做出的决策就越复杂。在许多情况下,这是需要的,因为我们使用神经网络建模的决策函数不太可能与输入具有线性关系。在具有非线性激活函数 ReLU 的层中拥有更多的神经元意味着网络的输出应该与输入具有非线性关系。在这种情况下,“输入”将是卷积图像片段。

它对模型的整体性能有什么影响?

这取决于问题。考虑 CNN:如果您要预测的类别与在这种情况下的卷积图像片段之间的关系是“非线性”的,那么如果全连接层(决策函数)具有非线性,则网络的性能将会提高激活函数(如 ReLU)。堆叠更多层也会增加你的非线性。

因为线性模型执行任务的“容量”有限。考虑此处显示的数据集为什么特征工程有效?,我们不能画一条线来分隔两个类。

另一方面,使用非线性变换(特征工程),分类任务变得容易。

对于神经网络来说,它通常是一个非常庞大和复杂的系统,它对原始数据进行非线性变换以达到更好的性能。