详解深度学习中的激活函数

您所在的位置:网站首页 激活函数的作用 详解深度学习中的激活函数

详解深度学习中的激活函数

2022-05-27 21:36| 来源: 网络整理| 查看: 265

什么是激活函数

    激活函数在神经网络中的使用是非常普遍的,基本上所有的神经网络结构都使用了激活函数;激活函数连接在神经元的后面,用于控制输入是否激活。

    激活函数的另一个方面是它们必须具有计算上的高效性,因为它们是针对每个数据样本跨数千甚至数百万个神经元计算的。现代神经网络使用一种称为反向传播的技术来训练模型,这会增加激活函数及其导数函数的计算压力。

    在神经网络中,称为输入的数据被输入到输入层的神经元中,每个神经元都有一个权重,将输入数乘以权重得到神经元的输出,该输出被转移到下一层。

    激活函数是一个数学意义上的“门”,介于当前神经元的输入和下一层的输出之间。它可以像一个步进函数一样简单,它根据规则或阈值打开和关闭神经元输出。或者它可以是一种将输入信号映射到神经网络运行所需的输出信号的转换。

    神经网络越来越多地使用非线性激活函数,它可以帮助网络学习复杂的数据,计算和学习几乎所有表示问题的函数,并提供准确的预测。

    神经网络中一个神经元进行的基本过程是:

激活函数可以分为两种类型:

线性激活函数

非线性激活函数

线性激活函数

    线性激活函数采用以下形式: 

A = cx

    它采用输入,乘以每个神经元的权重,并创建与输入成比例的输出信号。从某种意义上说,线性函数比阶跃函数更好,因为它允许多个输出,而不仅仅是是和否。

    然而,线性激活函数有两个主要问题: 

1. 不可能使用反向传播(梯度下降)来训练模型——函数的导数是一个常数,与输入 X 无关。所以不可能返回并了解输入神经元中的哪些权重可以提供更好的预测。 

2.神经网络的所有层都折叠成一个——带有线性激活函数,无论神经网络有多少层,最后一层都会是第一层的线性函数(因为线性函数的线性组合仍然是一个线性函数)。所以线性激活函数将神经网络变成了一层。

    具有线性激活函数的神经网络只是一个线性回归模型。它处理输入数据的复杂性变化参数的能力和能力有限。

    这就是深度学习中几乎不使用线性激活函数的原因。

非线性激活函数

    现代神经网络模型使用非线性激活函数。它们允许模型在网络的输入和输出之间创建复杂的映射,这对于学习和建模复杂数据至关重要,例如图像、视频、音频和非线性或高维数据集。    只要激活函数是非线性的,几乎任何可以想象的过程都可以表示为神经网络中的函数计算。非线性函数解决了线性激活函数的问题:它们允许反向传播,因为它们具有与输入相关的导数函数。它们允许“堆叠”多层神经元以创建深度神经网络。需要多个隐藏的神经元层才能以高准确度学习复杂的数据集。

Sigmoid函数

用公式表示为:

    sigmoid 函数是最常用的激活函数,但还有许多其他更有效的替代方法。 

    sigmoid 函数的主要优点是: 

函数是可微的。这意味着,我们可以在任意两点处找到 sigmoid 曲线的斜率。

函数是单调的。平滑渐变,防止输出值“跳跃”。

输出值介于 0 和 1 之间,标准化每个神经元的输出。因此,它特别适用于我们必须将概率预测为输出的模型。由于任何事物的概率只存在于 0 和 1 之间,所以 sigmoid 是正确的选择。清晰的预测——对于高于 2 或低于 -2 的 X,倾向于将 Y 值(预测)带到曲线的边缘,非常接近 1 或 0。这可以实现清晰的预测。

    同时,也有几个缺点:

梯度消失——如果我们仔细观察函数末端的图,y 值对 x 的变化反应很小。让我们想想这是一个什么样的问题!这些区域的导数值非常小,收敛到 0。这称为梯度消失。如果为0,则没有学习不到任何有效信息!当发生梯度消失时,最小化误差的优化算法只能找到局部最小值,而不能从人工神经网络模型的角度得到最优值。

输出不以零为中心。

计算成本高

双曲正切函数

用公式表示为:

    它的结构与 Sigmoid 函数非常相似。 但是,tanh函数定义为(-1, + 1),它是以零为中心的。 相对于 sigmoid 函数的优势在于它的导数更陡峭,这意味着它可以获得更多的价值。 这意味着它会更高效,因为它有更广的范围可以更快地学习和优化。 但是,它与 sigmoid 函数有类似的缺点。

ReLU(整流线性单元)函数

用公式表示为:

优点:

计算效率高——ReLU 的值是 [0, +infinity],但是回报和好处是什么?让我们想象一个有太多神经元的大型神经网络。 Sigmoid 和双曲正切导致几乎所有神经元都以相同的方式被激活。这意味着激活非常密集。网络中的一些神经元是活跃的,并且很少被激活,所以我们需要一个高效的计算负载,ReLU却能完成该目标。负轴上的值为 0 意味着网络将运行得更快。计算负载小于 sigmoid 和双曲正切函数的优点是的对多层网络的训练更为友好。

非线性——乍一看,它似乎与正轴上的线性函数具有相同的特性。但最重要的是,ReLU 本质上不是线性的。事实上,一个很好的估算器。也可以通过 ReLU 的组合与任何其他函数收敛。

缺点

    坏死问题——当输入接近零或为负时,函数的梯度变为零,网络无法执行反向传播,也无法学习。

Leaky-ReLU 函数

用公式表示为:

优点

防止坏死问题——ReLU 的这种变种在负区域有一个小的正斜率,因此它确实支持反向传播,即使对于负输入值也是如此。 如果给定一个接近零的值0.01,函数名称相应改为Leaky ReLU。 Leaky-ReLU 的定义范围继续为负无穷大。 这使得当接近于 0时,RELU中不存在梯度的位置,leaky ReLU依然能够在负值区域进行学习。

其他同ReLU 

缺点

结果不一致——leaky ReLU 不能为负输入值提供一致的预测。

参数化ReLU

优点:

允许学习负斜率——与leaky ReLU不同,此函数提供函数负部分的斜率作为参数。 因此,可以执行反向传播并学习最合适的 α 值。

其他同 ReLU

缺点:

  对于不同的问题可能会有不同的表现。 

Softmax函数

优点:

能处理多个类别——将每个类别的输出归一化在 0 和 1 之间,并除以它们的总和,给出输入值在特定类别中的概率。

有益于神经元输出——通常 Softmax 仅用于输出层,用于需要将输入分类为多个类别的神经网络。

Swish

Swish 是谷歌研究人员发现的一种新的自门控激活函数。根据他们的论文,在计算效率相似的情况下,它的性能优于 ReLU。在运行 ReLU 和 Swish 的相同模型的 ImageNet 实验中,新函数实现了 top -1 分类精度高 0.6-0.9%。 Swish 函数和导数它采用以下形式:

与 ReLU 最重要的区别在于负区域。 Leaky 在 ReLU 中的值相同,有什么不同?所有其他激活函数都是单调的。请注意,即使输入增加,swish 函数的输出也可能会下降。这是一个有趣且特定于 swish 的功能。

激活函数总结

结论

    在构建模型和训练神经网络时,激活函数的选择至关重要。针对不同的问题尝试不同的激活函数将使您获得更好的结果。

    在真实世界的神经网络项目中,您将使用您选择的深度学习框架在激活函数之间切换。

    因此,激活函数是一个关键的优化问题,您需要根据所有这些信息和深度学习模型的要求来决定。

网络的简单和快速收敛可以是第一标准。

ReLU 将在速度方面具有优势。但不得不让梯度消失。它通常用于中间层而不是输出。

Leaky ReLU 可能是梯度消失问题的第一个解决方案。

对于深度学习模型,建议从 ReLU 开始实验。

Softmax 通常用于输出层。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3