人工神经网络中的激活函数详解

发布:2022-11-30 15:01:13
阅读:5421
作者:网络整理
分享:复制链接

激活函数通过生成加权和然后向其添加偏差来确定是否刺激神经元。为了向神经元的输出添加非线性,创建了激活函数,它用于确定神经网络的输出,例如是或否。获得的值取决于函数,一般会映射在0和1或-1和1之间。

为什么神经网络需要激活函数?

我们知道激活函数的目的是为神经网络添加非线性。激活函数在神经网络前向传播过程中在每一层引入了一个额外的计算,这个计算是值得的。

如果没有激活函数,那么每个神经元将仅使用权重和偏差对输入执行线性变换,因此在神经网络中附加了多少隐藏层就不重要了,所有层的行为都相同,神经网络变得非常简单。在这种情况下,让模型学习稍微复杂的任务就非常困难了。

激活函数的两个主要类别

  • 线性激活函数
  • 非线性激活函数

线性激活函数

线性函数

如图所见,该函数是一条线或线性的,其范围是负无穷大到无穷大。因此,不会使用范围来限制函数的输出。输入到神经网络的典型数据的复杂性或其他参数不受影响。

线性函数

二进制阶跃函数

最基本的激活函数类型之一是阶跃函数。在此考虑了一个阈值,如果净输入的值超过阈值,就会触发神经元。如下图表示:

二进制阶跃函数

非线性激活函数

最常用的激活函数是非线性激活函数。激活函数以非线性方式转换输入,使其能够学习和执行更困难的任务。它有助于模型对各种数据的泛化或适应,并有助于输出差异化。非线性函数的激活通常根据其范围或曲率进行分类。

常用的非线性激活函数有这么几个:

Sigmoid激活函数

S形函数曲线具有S形外观,我们使用sigmoid函数主要是因为它的范围在0到1之间。因此,它特别适用于输出为概率预测的模型。该函数可能采用多种形式并且是可微分的。因此,我们可以确定任意两点之间的sigmoid曲线的斜率。

Sigmoid激活函数

Tanh激活函数

Tanh就像是Sigmoid激活函数的优化版本。tanh函数的范围是从-1到1。Tanh也是S形曲线,函数是0均值,即会把零输入将映射到零附近,而负输入将被强映射为负。tanh函数主要用于将数据分为两组。

Tanh激活函数

ReLU激活函数

ReLU是使用最多的激活函数。因为几乎所有的卷积神经网络和深度学习系统都使用它。如下图所示,ReLU函数仅底部固定,其范围是0到无穷大。当x小于零时,f(x)等于零,当x大于或等于零时,f(x)等于x。

然而,问题在于所有负值立即变为零,这降低了模型有效拟合或从数据训练的能力。这意味着ReLU激活函数的任何负输入在图中立即变为零,如果没有合理的映射负值反过来又会影响结果图。

ReLU激活函数

Leaky ReLU激活函数

此函数是ReLU激活函数的变体,在Leaky ReLU激活函数中,我们将Relu函数定义为x的一个小线性分量,而不是x小于0时取0。它在数学上表示为:

Leaky ReLU激活函数


如何选择合适的激活函数?

需要根据正在解决的预测问题的类型来匹配输出层的激活函数。根据经验,可以先使用ReLU激活函数,然后如果ReLU不能提供最佳结果,则转向其他激活函数。

激活函数使用指南

  • ReLU激活函数常用于隐藏层。
  • Sigmoid、Logistic、和Tanh函数不应在隐藏层中使用,容易导致梯度消失。
  • 回归问题使用线性激活函数。
  • 二元分类问题使用Sigmoid或Logistic激活函数。
  • 多标签分类问题使用Sigmoid激活函数。
  • 卷积神经网络(CNN)使用ReLU激活函数。
  • 循环神经网络使用Tanh或Sigmoid激活函数。

关于激活函数,我们还需要知道在人工神经网络使用激活函数时我们需要考虑到梯度爆炸、梯度消失的情况。

梯度爆炸:当梯度爆炸时,会导致网络不稳定,学习无法完成。 权重的值也可能变得太大以至于溢出。

梯度消失:部分激活函数输入的较大或较小变化会引起会导致梯度太小而无法有效地进行训练。

扫码进群
微信群
免费体验AI服务