赶上最新的AI论文

最新的激活函数综合评述!

调查

三个要点
✔️ 有五种激活函数(sigmoidal, ReLU, ELU, learning and other),每一种都有自己的挑战。
✔️ 没有所谓的 "最佳激活函数";每个数据和模型都有一个最佳激活函数。
✔️ ReLU是一个好的开始,但Swish、Mish和PAU也值得尝试。

A Comprehensive Survey and Performance Analysis of Activation Functions in Deep Learning
written by Shiv Ram DubeySatish Kumar SinghBidyut Baran Chaudhuri
(Submitted on 29 Sep 2021 (v1), last revised 15 Feb 2022 (this version, v2))
Comments: Submitted to Springer.

Subjects: Machine Learning (cs.LG); Neural and Evolutionary Computing (cs.NE)

code:   

本文所使用的图片要么来自论文、介绍性幻灯片,要么是参考这些图片制作的。

介绍

神经网络(NN)的目的是通过学习将非线性可分离的输入数据转化为更多的线性可分离的特征,激活函数对此起着重要作用。激活函数应具有以下特点

  1. 引入非线性有助于优化网络。
  2. 不要过度增加计算成本。
  3. 不妨碍梯度流动(梯度流动)。
  4. 保持数据分布。

激活函数的演变。

线性函数$ y = cx $是一个简单的激活函数(当$c$为常数且$c=1$时称为身份函数)。

上面的红色图是线性函数,还有对数sigmoid函数(蓝色)和双曲切线(绿色)。重要的一点是,线性函数不能在网络中引入非线性。

对数西格玛双曲切线系列

$$\text { Logistic Sigmoid }(x)=\frac{1}{1+e^{-x}}$$

$$ \operatorname{Tanh}(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} $$

以上两个函数是早期流行的非线性激活函数,其灵感来自于生物意义上的神经元(注意:生物神经元遵守全有或全无的定律,所以它们的输出只有0或1,中间没有任何东西)。Logistic Sigmoid将输出限制在$ [0,1]$,但输出相对于输入的大小变化不大(饱和的输出),造成梯度损失。它也不适合于优化,因为输出不是以零为中心的。

相比之下,$ \operatorname{Tanh}(x)$是0中心的,其输出为$[-1,1]$;然而,梯度消失的问题仍未解决$[-1,1]$.

ReLU系列

整流线性单元(ReLU)由于其简单性和改进的性能,已经成为激活函数的最先进(最高质量、最高性能、SOTA)。

$$ \operatorname{ReLU}(x)=\max (0, x)= \begin{cases}x, & \text { if } x \geq 0 \\ 0, & \text { otherwise }\end{cases} $$

然而,ReLU有一个负值投入利用不足(under-utilisation)的问题。

指数单位系列

Logistic Sigmoid和Tanh的问题是饱和输出,即对于从无限小到无限大的输入范围来说,输出的狭窄性($[0,1]$),加上ReLU不能很好地利用负输入。这就是指数线性单元(ELU)被发现的地方。

$$ \operatorname{ELU}(x)= \begin{cases}x, & x>0 \\ \alpha \times\left(e^{x}-1\right), & x \leq 0\end{cases} $$

学习和适应系统

到目前为止,提到的Sigmoid、Tanh、ReLU和ELU系统的激活函数都是人工设计的,可以说,可能没有充分提取数据的复杂性。

$$ \operatorname{APL}(x)=\max (0, x)+\sum_{s=1}^{S} a_{i}^{s} \max \left(0,-x+b_{i}^{s}\right) $$

在APL中,$ a_i $和$ b_i $是学习参数,激活函数本身也会发生变化(注意:S=3和S=4的图看起来是一样的,但仔细观察它们是不同的)。

其他。

现在已经提出了许多其他激活函数,包括Softplus函数、随机函数、多项式函数、核函数等等。.

上表总结了这些优点和缺点,从左到右的项目是:梯度损失、非线性、优化困难、缺乏适应性和计算成本。下表总结了该系统的优点和缺点。

基于Logistic Sigmoid/Tanh的激活函数。

针对$ operatorname{Tanh}(x)$ 的狭窄输出范围和梯度消失问题,提出了一个缩放的双曲切线(sTanh)。

$$ operatorname{sTanh}(x)=A\times operatorname{Tanh}(B\times x) $$

提出了参数化的sigmoid函数是一个可微调的、连续的有界函数。

$$ operatorname{PSF}(x) = (\frac{1}{1+exp(-x)}) ^m $$

同样,有人提出了移位的对数西格玛和整流的双曲正割,但输出饱和和梯度消失的问题仍然存在。提出了按比例的sigmoid和惩罚的Tanh,但梯度消失是不可避免的。

后来,有人提出了一种叫做噪声激活函数的方法,即给激活函数一个随机数以改善梯度流动,成功地处理了饱和输出问题。Hexpo函数也解决了大部分的梯度消失问题。

$$ \operatorname{Hexpo}(x)= \begin{cases}-a \times\left(e^{-x / b}-1\right), & x \geq 0 \\ c \times\left(e^{x / d}-1\right), & x<0\end{cases} $$

同时提出了sigmoid加权线性单元(SiLU)和改进的logistic sigmoid(ISigmoid),并解决了饱和输出和梯度消失问题。这同样适用于线性缩放双曲切线(LiSHT)、艾略特和软根信号(SRS)。

Sigmoid/Tanh系统中的许多激活函数都试图克服梯度消失问题,但在许多情况下,这个问题并没有得到完全解决。

整流的激活功能

整流线性单元(ReLU)是一个简单的函数,对于正的输入,它输出一个恒定的函数,对于负的输入,输出为零(输入为零时,输出也为零)。

$$ \operatorname{ReLU}(x)= \begin{cases}x, & \text { if } x \geq 0 \\ 0, & \text { otherwise }\end{cases} $$

因此,导数值只能是1(正输入)或0(负输入),所以Leaky ReLU(LReLU)被修改为对负输入返回一个小值而不是0。Leaky ReLU (LReLU)已被修改为对负输入返回一个小值而不是0。

$$\operatorname{LReLU}(x)= \begin{cases}x, & x \geq 0 \\ 0.01 \times x, & x<0\end{cases}$$

然而,LReLU的问题是它不知道0.01是否是正确的系数,而参数ReLU(PReLU)通过学习系数避免了这个问题。

$$ \operatorname{PReLU}(x)= \begin{cases}x, & x \geq 0 \\ p \times x, & x<0\end{cases} $$

然而,PReLU的缺点是容易出现过度学习。

$$ \operatorname{RReLU}(x)= \begin{cases}x, & x \geq 0 \\ R \times x, & x<0\end{cases} $$

随机化ReLU(RReLU)是一种随机选择系数的方法。

(注:系数非常小,几乎是重叠的)

已经提出了ReLU的各种其他变种。

指数激活函数

指数系统的激活函数解决了ReLU中的梯度消失问题。

$$\operatorname{ELU(}x)= \begin{cases}x, & \text { if } x>0 \\ \alpha \times\left(e^{x}-1\right), & \text { otherwise }\end{cases}$$

ELU对于大的、可微分的、负的输入是饱和的,这使得它们比Leaky ReLU和Parametric ReLU对噪声更稳健。

$$ \operatorname{SELU}(x)=\lambda \times \begin{cases}x, & x>0 \\ \alpha \times\left(e^{x}-1\right), & x \leq 0\end{cases} $$

(注意:在x>0的区域,蓝色和红色的颜色是重叠的。)

缩放ELU(SELU)使用超参数进行缩放,这样它们就不会对巨大的正向输入产生饱和。

上文总结了ELU的变体;在所有ELU中,都考虑了大数值的饱和和应对计算成本的问题。

学习/适应性激活函数

上述的许多激活是不适应的。

$$operatorname{APL}(x)=\max (0, x)+\sum_{s=1}^{S} a_{s}\times \max \left(0, b_{s}-x\right) $$

自适应分片线性(ALP)是一个铰链形(铰链,线图)激活函数,其中a和b是可学习的参数和S是代表铰链数量的超参数,即每个神经元有不同的a和b值,意味着每个神经元有自己的激活函数S是一个超参数,代表铰链的数量。

Swish是由Ramachandran等人提出的,并通过自动搜索找到。

$$ operatorname{Swish}(x)=x \times σ(beta \times x) $$

$sigma$是一个sigmoidal函数;Swish被做成类似ReLU的形式。

后来Swish被扩展到ESwish。

$$ operatorname{ESwish}(x)=beta\times x \times σ(x) $$

(注意:$/beta=1.0$与Swish和ESwish相匹配,所以$/beta$的值分别是不相连的。它们看起来仍然非常相似)

学习和适应性激活函数的定义是有一个基础激活函数,并向其添加可学习变量。例如,上述使用参数ReLU和参数ELU的自适应激活函数有$\sigma(w\times x) \times\operatorname{PReLU(x)} + (1-\sigma(w\times x)) \times$有些定义为$\operatorname{PELU}(x)$($\sigma$是一个S型函数,其中$w$是一个可学习的变量)。

另外,每个神经元可以利用不同的激活函数。这并不意味着每个神经元由于可学习变量的不同值而使用不同的激活函数,而是字面上的不同激活函数。在一些研究中,每个神经元在ReLU和Tanh之间进行选择,并自己学习选择。

不使用可学习的超参数的非参数学习自动调节系统(non-parametrically learning AFs)也有报道,其中激活函数本身是一个非常浅的神经网络,而不是如上所述的可以写成单一公式的激活函数。这被称为超激活功能(hyperactivations),网络被称为超网络。

学习和自适应激活函数是最近的一个趋势。人们正在研究它们以应对更复杂和非线性的数据,但计算成本自然也在增加。下表总结了学习和适应性激活函数。

其他激活函数

A. Softplus激活函数

Softplus函数是在2001年提出的,在统计学中经常使用。

$$ operatorname{softplus}(x)=\log{(e^x+1)}$$

随后,深度学习的大行其道导致了Softmax函数的频繁使用,因为它们可以在分类任务中为每个类别输出概率值,所以具有很大的吸引力。

由于Softplus是平滑和可微分的,它类似于ReLU,也就是Softplus线性单元(SLU)。

$$ \operatorname{SLU}(x)=\begin{cases} \alpha \times x, & x>0 \\ \beta \times \log{(e^x+1)} - \gamma, & x \leq 0\end{cases} $$

$alpha, \beta, \gamma$是可训练的参数。

被称为Mish的激活函数是一个非单调的激活函数,同样使用Softplus。

$$ \operatorname{Tanh}(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} $$

$$\operatorname{Mish}(x)=x \times \operatorname{Tanh(\operatorname{Softplus(x)})}$$

Mish是平滑的和非单调的。它最近被用于YOLOv4中。然而,它在计算上很复杂,而且有计算成本高的缺点。

B. 随机激活函数

随机激活函数由于其麻烦而没有得到很好的研究;RReLU、EReLU、RTReLU和GELU是这一类中为数不多的激活函数;GELU(高斯误差线性单元)通过随机正则化考虑到了非线性问题。GELU(高斯误差线性单元)通过随机正则化考虑到了非线性问题。

$$operatorname{GELU}(x)=x P(X /leq x)=x Phi(x)$$

Φ被定义为$Phi(x)\times I x+(1-\Phi(x))\times 0 x=x \Phi(x)$,这被称为随机正则化。在原来的工作中,它被近似为0.5美元x\left(1+\tanh \left[\sqrt{2 / \pi}\left(x+0.044715 x^{3}\right)\right]\right)美元。

C. 多项式激活函数

平滑自适应激活函数(SAAF)被开发为一个片状多项式激活函数,结合了与ReLU的线性部分对称的两个功率函数。

$$\operatorname{SAFF}(x)=\sum_{j=0}^{c-1} v_{j} `mathrm{p}^{j}(x)+\sum_{k=1}^{n} w_{k}`mathrm{~b}_{k}^{c}(x) $$

其中

$$\begin{aligned}\mathrm{p}^{j}(x) &=frac{x^{j}}}{j !, \quad\mathrm{b}_{k}^{0}(x)=\mathbb{1}\left(a_{k}\leq x<a_{k+1}\right) \mathrm{b}_{k}^{c}(x) &=\underbrace{iint \ldots\int_{0}^{x}}_{c /text { times }}\mathrm{b}_{k}^{0}(\alpha) \mathrm{d}^{c} \alpha end{aligned}$$

ReLU也被扩展为整流动力单元(RePU),$y=X^S$在$x>0$部分($S$是一个超参数)。RePU在$x=0$附近比ReLU更平滑。然而,易受梯度消失、无界和不对称的影响也是RePU的缺点。

近年来,利用Padé近似方法开发了Padé激活单元(PAU)。

$$ operatorname{PAU}(x) = P(x) / Q(x) $$

PAU的定义如上,其中$P(x)$和$Q(x)$分别为度数为$m$和$n$的多项式,基本上是手工设计的。

$$F(x)=frac{P(x)}{Q(x)}=frac{sum_{j=0}^{m} a_{j} x^{j}}{1+sum_{k=1}^{n} b_{k} x^{k}=frac{a_{0}+a_{1} x+a_{2} x^{2}+a_cdots+a_{m}x^{m}}{1+b_{1} x+b_{2} x^{2}+cdots+b_{n} x^{n}}$$

原始出版物对它的定义如上。

每个激活函数的性能比较。

上表列出了已经报道过的已经实现SOTA的激活函数。迄今为止,所描述的那些人中有Padé激活单元(MNIST on VGG8)和Swish(CIFAR10和CIFAR100 on MobileNet and ResNet)。数据集有图像、时间序列、文本等,但除了Swish之外,没有相同的激活函数在不同的数据集上实现SOTA。

在CNN上进行的实验。

这些模型是在实践中实施和比较的,而不是在纸上。该数据集是CIFAR10。

虽然数据集是通用的,但可以看出,随着模型的变化,适当的激活函数也在变化。

以上是将数据集改为CIFAR100的结果:对于MobileNet、VGG16和GoogleNet,表现最好的激活函数与CIFAR10相同,但对于ResNet50、SENet18和DenseNet121,结果有所改变(尽管在CIFAR10中表现最好的激活函数仍然表现良好)。

图中显示了每个模型的损失。激活函数是通过颜色来区分的。在图表的图例中,似乎如果激活函数低于ReLU,那么随着时间的推移,损失可以接近于零。因此,让我们比较一下100个历时所需的时间。

PDELU是唯一一个花了非常长的时间的人。

$$\operatorname{PDELU}(x)= \begin{cases}x, & x>0 \\ \alpha \times\left([1+(1-t) \times x]^{\frac{1}{1-t}}-1\right), & x \leq 0\end{cases}$$

(注:对于PDELU来说,原始出版物不是公开的,而且变量$t$的含义也未被证实。歉意)。

结论。

在本文中,对激活函数进行了广泛的调查和实验。不同类型的激活函数已经被报道,本文具体讨论了它们在深度学习中的表现。本文的结论总结如下。

  • 在非零均值和梯度消失的logistic-sigmoidal双曲切数的激活函数方面取得了进展。然而,这一进展增加了计算成本。
  • ReLU系列在反对负投入利用不足、限制性非线性和无限制的产出方面取得了进展。然而,在大多数情况下,ReLU更好,ReLU(或Leaky ReLU、Parametric ReLU)仍然是研究人员的首选。
  • 指数系列的重点是利用负输入。然而,在大多数情况下,问题在于它们并不顺利。
  • 学习和适应系列是最近的一个趋势,但是,毫不奇怪,设置基础函数和参数数量是有问题的。

而以下是作者的建议

  • 如果你想减少学习时间,你可以使用一个激活函数,其中输出的平均值为零,并利用正负输入。
  • 关键是要选择一个与数据的复杂性相称的模型。激活函数只是数据的复杂性和模型的表达能力之间的一座桥梁,如果两者之间的差距太大,就会失败(过度适应或学习不足)。
  • Logistic sigmoidal hyperbolic tangent series不应该用于CNN。这种类型的激活函数对RNN很有用。
  • ReLU是一个不错的选择。但是,也应该试一试斯维希、米希和PAU。
  • ReLU、Mish和PDELU应该用于VGG16和GoogleNet。
  • ReLU、LReLU、ELU、GELU、CELU和PDELU应被用于具有残余连接的模型的图像分类任务。
  • 一般来说,参数化激活函数能更快地与数据拟合。特别推荐PAU、PReLU和PDELU。
  • PDELU,SRS,学习时间更长。
  • 当训练时间较短时,ReLU、SELU、GELU和Softplus的准确性较低。保证。
  • 指数系列更有可能利用负输入。
  • Tanh,SELU对自然语言处理很好;PReLU,LiSHT,SRS,PAU也很好。
  • PReLU、GELU、Swish、Mish和PAU被认为对语音识别有好处。

以上。

这是一个漫长的过程,但它似乎通过提供具体指标来帮助发展。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们