SMU激活函数 | 超越ReLU、GELU、Leaky ReLU让ShuffleNetv2提升6.22%

简介: SMU激活函数 | 超越ReLU、GELU、Leaky ReLU让ShuffleNetv2提升6.22%

1介绍


神经网络是深度学习的支柱。激活函数是神经网络的大脑,在深度神经网络的有效性和训练中起着核心作用。ReLU由于其简单性而成为深度学习领域的常用选择。尽管它很简单,但ReLU有一个主要的缺点,即ReLU死亡问题,在这种情况下,多达50%的神经元在网络训练期间死亡。

为了克服ReLU的不足,近年来提出了大量的激活方法,其中Leaky ReLU、Parametric ReLU 、ELU、Softplus、随机化Leaky ReLU是其中的几种,它们在一定程度上改善了ReLU的性能。

Swish是谷歌脑组提出的非线性激活函数,对ReLU有一定的改善;GELU是另一种常用的平滑激活函数。可以看出,Swish和GELU都是ReLU的光滑近似。近年来,人们提出了一些提高ReLU、Swish或GELU性能的非线性激活方法,其中一些是ReLU或Leaky ReLU的光滑逼近方法,还有TanhSoft、EIS、Padé激活单元、正交Padé激活单元、Mish、ErfAct等。

maximum function在原点处是非光滑的。在本文中,作者将探讨maximum function的平滑逼近如何影响网络的训练和性能。


2Smooth Maximum Unit


作者提出了Smooth Maximum Unit (SMU)。从|x|函数的光滑逼近中可以找到一个maximum function的一般逼近公式,它可以平滑逼近一般的maxout族、ReLU、Leaky ReLU或其变体、Swish等。作者还证明了GELU函数是SMU的一个特例。

2.1 平滑近似Maximum Function

Maximum Function定义如下:

image.png

式1

函数|x|在原点是不可微的。因此,从上式可以看出最大值函数在原点处也是不可微的。这里可以用Smooth函数来近似|x|函数。对于本文的其余部分,我们将只考虑两个近似| x, 在深度学习问题中使用这两个函数和近似的结果比其他近似|x|可以得到更好的结果。

注意,从上面平滑地近似|x|,而从下面平滑地近似|x|。这里  是一个平滑参数,当取 无穷大 时,近似函数平滑地逼近|x|。这里erf是高斯误差函数,定义如下:

image.png

现将式(1)中的|x|函数替换为,则最大函数的光滑逼近公式如下:

image.png

式2

同理,可以推导出的光滑近似公式:

image.png

式3

注意,当无穷大,;当, 。对于和的特定值,可以近似已知的激活函数。例如,, ,得到:

image.png

式4

这是maxout族中的一个简单情况,而通过考虑和的非线性选择可以发现更复杂的情况。对于和的特定值,可以得到ReLU和Leaky ReLU的平滑近似。例如,考虑和,有ReLU的平滑近似:

image.png

式5

GELU是ReLU的光滑近似。注意,如果方程(5)中取,则可以逼近GELU激活函数,这也表明GELU是ReLU的光滑近似。此外,考虑和α,可以得到Leaky ReLU或Parametric  ReLU的光滑逼近,这取决于α是超参数还是可学习参数。

image.png

式6

请注意,式(5)和式(6)下端近似为ReLU或Leaky ReLU。同样地,可以从式(3)推导出近似函数,它将近似上面的ReLU或Leaky ReLU。

式(6)对输入变量x的相应导数为:

image.png

式7

其中,

image.png

称方程(6)中的函数为Smooth Maximum Unit(SMU)。可以将方程(3)中的和α替换为一个函数,称之为SMU-1。对于所有的实验,将使用SMU和SMU-1作为激活函数。

2.2 通过反向传播学习激活参数

使用backpropagation技术更新可训练激活函数参数。作者在Pytorch和Tensorflow-KerasAPI中实现了向前传递,自动区分将更新参数。另外,可以使用CUDA的实现,α和µ参数的梯度可以计算如下:

image.png

式8+9

α和µ既可以是超参数,也可以是可训练参数。对于SMU和SMU-1,α = 0.25,这是一个超参数。也将µ作为可训练参数,对SMU和SMU-1分别在1000000和4.352665993287951e−09初始化。

这里,具有SMU和SMU-1激活函数的神经网络密集在C(K)中,其中K是的子集,C(K)是K上所有连续函数的空间。

Proposition

ρ是任意连续函数。设ρ表示一类具有激活函数ρ的神经网络,在输入层有n个神经元,在输出层有1个神经元,在隐层有任意数目的神经元。设为compact,那么当且仅当ρ是非多项式时C(K)的是dense。


3实验


3.1 分类

3.2 目标检测

3.3 语义分割


4参考


[1].SMU: SMOOTH ACTIVATION FUNCTION FOR DEEP NETWORKS USING SMOOTHING MAXIMUM TECHNIQUE

相关文章
|
机器学习/深度学习 网络架构
浅谈神经网络中的bias
1、什么是bias? 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。 因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。
1140 0
浅谈神经网络中的bias
|
23天前
|
机器学习/深度学习 Python
ReLU
本文探讨了高等数学中ReLU(修正线性单元)在神经网络的应用。ReLU函数定义为$f(x) = \max(0, x)$,其导数为$1$($x \geq 0$)或$0$($x < 0$)。适用于除二分类问题外的其他问题。Python代码展示了ReLU及其导数的图形绘制。
16 1
|
23天前
|
机器学习/深度学习 Python
leaky ReLU
本文探讨了高等数学中的leaky ReLU激活函数,其在神经网络中的应用。函数定义为:当$x\geq0$时,$f(x)=x$;当$x<0$时,$f(x)=\lambda x$,其中$\lambda\in(0,1)$是泄露率。导数为:$x\geq0$时,$f'(x)=1$;$x<0$时,$f'(x)=\lambda$。文中还提供了leaky ReLU的Python实现和图像展示。
23 2
|
9月前
|
机器学习/深度学习 自然语言处理 PyTorch
卷积(Convolution
机器学习中的卷积(Convolution)是一种特殊的数学运算,主要应用于信号处理和图像处理领域。在卷积神经网络(Convolutional Neural Network,简称 CNN)中,卷积操作用于提取图像或其他数据的特征,从而实现分类、回归等任务。卷积的基本思想是将一个函数(信号或图像)与一个卷积核(一个小的函数)进行组合
85 3
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中nn.ReLU()和F.relu()有什么区别?
pytorch中nn.ReLU()和F.relu()有什么区别?
403 0
|
机器学习/深度学习 资源调度
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】nn.ReLU()与F.relu()的区别
【PyTorch】nn.ReLU()与F.relu()的区别
115 0
|
PyTorch 算法框架/工具
【PyTorch】SiLU激活函数
【PyTorch】SiLU激活函数
252 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨概率等。因此,我们需要将z的值转换为概率值,逻辑回归使用sigmoid函数来实现转换。
514 0
|
机器学习/深度学习
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知道眼睛的精确位置,这时候通过池化某一片区域的像素点来得到总体统计特征会显得很有用。由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。
367 1
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数