ReLU2024 年 8 月 28 日 | 阅读 6 分钟 激活函数的选择对于确定神经网络的功能有多好至关重要。在众多可用的激活函数中,Rectified Linear Unit (ReLU) 是最有效且最常用的函数之一。由于其易用性、有效性和计算效率,它是现代神经网络拓扑结构的基本组成部分。 在深度学习模型中,最常使用的激活函数是 Rectified Linear Unit。如果函数接收到任何负输入,它将返回 0;否则,它将返回它接收到的值,如果为正,则为 x。因此,我们可以将其表示为 f(x)=max(0,x)。 换句话说,如果输入为负,ReLU 输出 0;如果输入为正,则输出 x。因此,ReLU 以有效的方式“关闭”负值,在保持计算效率的同时引入非线性。 令人惊讶的是,模型能够如此好地捕捉非线性关系和交互作用,特别是对于一个仅由两个线性组件组成的函数。然而,ReLU 函数非常受欢迎,因为它在大多数情况下表现良好。 ReLU 的工作原理激活函数用于两个主要原因
ReLU 捕捉交互作用假设一个只有一个节点的神经网络模型。为简单起见,假设它有两个输入 A 和 B。在我们的节点中,A 和 B 的权重分别为 2 和 3。因此,节点输出为 f(2A+3B)。对于我们的 f,我们将使用 ReLU 函数。因此,如果 2A+3B 为正,我们的节点的输出值也为 2A+3B。如果 2A+3B 为负,我们的节点的输出值为 0。 为清楚起见,考虑 A=1 且 B=1 的情况。结果是 2A+3B,并且它随着 A 的增加而同步增长。相反,如果 B 等于 -100,结果是 0,并且随着 A 逐渐增长,结果保持为 0。因此,A 可能但未必会增加我们的产量。B 的值是多少才最重要。 在这个简单的例子中,节点记录了一次交互。随着你添加更多的节点和层,交互的复杂性可能会变得更加复杂。但现在你应该能够看到激活函数是如何帮助捕捉交互作用的。 ReLU 捕捉非线性如果一个函数的斜率不是恒定的,那么它就是非线性的。因此,ReLU 函数的斜率始终为 1(对于正值)或 0(对于负值),尽管它在 0 附近是非线性的。这种非线性非常有限。然而,深度学习模型的两个特征使我们能够基于 ReLU 节点的组合来生成各种非线性。 首先,大多数模型中的每个节点都有一个偏置项。偏置项只是一个在模型训练期间确定的常数值。为了简单起见,让我们看一个名为 A 的节点,它有一个偏置和一个输入。如果偏置项取值为 7,则节点输出为 f(7+A)。在这种情况下,如果 A 小于 -7,则输出为 0 且斜率为 0。当 A 超过 -7 时,节点的输出为 7+A,斜率为 1。 因此,我们可以移动斜率改变的位置。此时,我们似乎仍然只能有两种不同的斜率。但实际模型有更多的节点。每个节点(即使在单层中)都可以具有不同的偏置值,从而使每个节点在不同的输入值处改变其斜率。各个函数的总和会产生一个具有多个斜率修改的复合函数。 这些模型足够灵活,可以生成非线性函数并考虑交互作用(如果这样做能够获得更准确的预测)。随着我们增加每层节点的数量(或者,如果我们使用卷积模型,卷积的数量),模型将更有能力表示这些交互作用和非线性。 ReLU 的类型由于其易用性和在解决梯度消失问题方面的效率,它已成为深度学习中的基本激活函数。尽管如此,ReLU 仍然经历了修改,以解决特定问题并在各种环境中最大化性能。以下是 ReLU 的各种变体:
简化梯度下降深度学习模型历来以 S 形曲线(类似于 tanh 函数)开始。 tanh 函数似乎有几个优点。即使非常接近,它也从未完全变平。因此,其输入的任何变化都会在其输出中得到反映,这可能是一件好事。它也是非线性的,这意味着它在所有方向上都是弯曲的。激活函数的主要目标之一是考虑非线性。因此,我们期望非线性函数能够表现良好。 然而,在使用 tanh 函数时,研究人员发现创建多层模型非常困难。除了一个非常小的范围(大约 -2 到 2)之外,它相对平坦。除非输入落入这个有限的区域,否则函数的导数相对较小,因此由于这个平坦的导数,使用梯度下降来改进权重非常困难。模型中的层越多,这个问题就越严重。这就是所谓的梯度消失问题。 ReLU 函数的导数在其范围的一半以上或负值处为 0。正输入的导数为 1。 当在大小合适的批次上进行训练时,每个给定节点通常会接收来自某些数据点的正值。由于平均导数很少接近零,梯度下降可以继续。 下一主题简单指数平滑 |
我们请求您订阅我们的新闻通讯以获取最新更新。