常见激活函数介绍

本文详细介绍了多种激活函数,包括阶跃型函数中的sgn函数,Sigmoid型函数如Logistic和Tanh函数,以及Hard-Logistic和Hard-Tanh函数。重点讨论了ReLU家族,包括ReLU、Leaky ReLU和PReLU,还有ELU、Softplus、Swish和GELU等函数。这些函数在神经网络中起到关键作用,影响网络的优化和性能。

阶跃型函数

s g n sgn sgn函数

s g n sgn sgn函数定义为:
s g n ( x ) = { 1 , x ≥ 0 ; 0 , x < 0. sgn(x) = \begin{cases} 1, & x \geq 0; \\ 0, & x< 0. \end{cases} sgn(x)={1,0,x0;x<0.
s g n ( x ) sgn(x) sgn(x)通过将输入转换为输出值 0 0 0 1 1 1,来表示神经元的抑制( 0 0 0)和兴奋( 1 1 1)。
在这里插入图片描述

然而,由于 s g n ( x ) sgn(x) sgn(x)具有不连续、不光滑等不太好的性质,因此实际常用 S i g m o i d Sigmoid Sigmoid型函数做为激活函数。

S i g m o i d Sigmoid Sigmoid型函数

S i g m o i d Sigmoid Sigmoid型函数是指一类 S S S型曲线函数,为两端饱和函数。常用的 S i g m o i d Sigmoid Sigmoid型函数有 L o g i s t i c Logistic Logistic函数和 T a n h Tanh Tanh函数。

饱和
对于函数 f ( x ) f(x) f(x),若 x → − ∞ x \rightarrow -\infty x时,其导数 f ′ ( x ) → 0 f^\prime(x) \rightarrow 0 f(x)0,则称其为左饱和
x → + ∞ x \rightarrow +\infty x+时,其导数 f ′ ( x ) → 0 f^\prime(x) \rightarrow 0 f(x)0,则称其为右饱和
当同时满足左、右饱和时,就称为两端饱和。

L o g i s t i c Logistic Logistic函数

L o g i s t i c Logistic Logistic函数定义为:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1
L o g i s t i c Logistic Logistic函数将输入映射为区间 ( 0 , 1 ) (0,1) (0,1)之间的输出值,当输入值在 0 0 0附近时, S i g m o i d Sigmoid Sigmoid型函数近似为线性函数;当输入值靠近两端时,对输入进行抑制。输入越小,越接近于0;输入越大,越接近于1。这样的特点也和生物神经元类似,对一些输入会产生兴奋(输出为1),对另一些输入产生抑制(输出为0)。和感知器使用的阶跃激活函数相比, L o g i s t i c Logistic Logistic函数是连续可导的,其数学性质更好。
函数图如下:
在这里插入图片描述

T a n h Tanh Tanh函数

T a n h Tanh Tanh函数定义为:
t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex
T a n h ( x ) Tanh(x) Tanh(x)函数将输入映射为区间 ( − 1 , 1 ) (-1,1) (1,1)上的输出值,可以看作是放大并平移的 L o g i s t i c Logistic Logistic函数:
t a n h ( x ) = 2 σ ( 2 x ) − 1 tanh(x)=2\sigma(2x)-1 tanh(x)=2σ(2x)1
函数图如下:
在这里插入图片描述

在这里插入图片描述
T a n h Tanh Tanh函数的输出是零中心化的(Zero-Centered),而 L o g i s t i c Logistic Logistic函数的输出恒大于0. 非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降的收敛速度变慢。

H a r d − L o g i s t i c Hard-Logistic HardLogistic函数和 H a r d − T a n h Hard-Tanh HardTanh函数

L o g i s t i c Logistic Logistic函数和 T a n h Tanh Tanh函数都是 S i g m o i d Sigmoid Sigmoid型函数,具有饱和性,但是计算开销较大。因为这两个函数都是在中间(0 附近)近似线性,两端饱和。因此,这两个函数可以通过分段函数来近似。

H a r d − L o g i s t i c Hard-Logistic HardLogistic函数

L o g i s t i c Logistic Logistic函数为例,其导数为 σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \sigma^\prime(x)=\sigma(x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x)) L o g i s t i c Logistic Logistic函数在 0 0 0附近的一阶泰勒展开(Taylor expansion) 为:
g l ( x ) ≈ σ ( 0 ) + x × σ ′ ( 0 ) = 0.5 + 0.25 x \begin{aligned} g_l(x) & \approx \sigma(0)+x \times \sigma^\prime(0) \\ & =0.5+0.25x \end{aligned} gl(x)σ(0)+x×σ(0)=0.5+0.25x
这样 L o g i s t i c Logistic Logistic函数可以用分段函数 h a r d − l o g i s t i c ( 𝑥 ) hard-logistic(𝑥) hardlogistic(x)来近似:
h a r d − l o g i s t i c ( 𝑥 ) = { 1 g l ( x ) ≥ 1 g l 0 < g l ( x ) < 1 0 g l ( x ) ≤ 0 = max ⁡ ( min ⁡ ( g l ( x ) , 1 ) , 0 ) = max ⁡ ( min ⁡ ( 0.25 x + 0.5 , 1 ) , 0 ) \begin{aligned} hard-logistic(𝑥) &= \begin{cases} 1 & g_l(x) \geq 1 \\ g_l & 0< g_l(x)<1 \\ 0 & g_l(x) \leq 0 \end{cases} \\ &= \max(\min(g_l(x),1),0) \\ &=\max(\min(0.25x+0.5,1),0) \end{aligned} hardlogistic(x)=1gl0gl(x)10<gl(x)<1gl(x)0=max(min(gl(x),1),0)=max(min(0.25x+0.5,1),0)
在这里插入图片描述

H a r d − T a n h Hard-Tanh HardTanh函数

T a n h Tanh Tanh函数在0 附近的一阶泰勒展开为:
g t ( x ) ≈ t a n h ( x ) + x × t a n h ′ ( x ) = x \begin{aligned} g_t(x) & \approx tanh(x)+x \times tanh^\prime(x) \\ & =x \end{aligned} gt(x)tanh(x)+x×tanh(x)=x
T a n h Tanh Tanh函数也可以用分段函数 h a r d − t a n h ( 𝑥 ) hard-tanh(𝑥) hardtanh(x)来近似:
h a r d − t a n h ( 𝑥 ) = { 1 g t ( x ) ≥ 1 g t ( x ) − 1 < g t ( x ) < 1 − 1 g t ( x ) ≤ − 1 = max ⁡ ( min ⁡ ( g t ( x ) , 1 ) , − 1 ) = max ⁡ ( min ⁡ ( x , 1 ) , − 1 ) \begin{aligned} hard-tanh(𝑥) &= \begin{cases} 1 & g_t(x) \geq 1 \\ g_t(x) & -1<g_t(x)<1 \\ -1 & g_t(x) \leq -1 \end{cases} \\ &= \max(\min(g_t(x),1),-1) \\ &=\max(\min(x,1),-1) \end{aligned} hardtanh(x)=1gt(x)1gt(x)11<gt(x)<1gt(x)1=max(min(gt(x),1),1)=max(min(x,1),1)
在这里插入图片描述

R e L U ReLU ReLU函数

R e L U ReLU ReLU(Rectified Linear Unit,修正线性单元),也叫Rectifier函数,是目前深度神经网络中经常使用的激活函数。 R e L U ReLU ReLU实际上是一个斜坡(ramp)函数,定义为:
r e l u ( x ) = { x x ≥ 0 0 x < 0 = m a x ( 0 , x ) \begin{aligned} relu(x) &= \begin{cases} x & x \geq 0 \\ 0 & x<0 \end{cases} \\ & = max(0,x) \end{aligned} relu(x)={x0x0x<0=max(0,x)
在这里插入图片描述
优点:
采用 R e L U ReLU ReLU的神经元只需要进行加、乘和比较的操作,计算上更加高效。
在优化方面,相比于 S i g m o i d Sigmoid Sigmoid型函数的两端饱和, R e L U ReLU ReLU函数为左饱和函数,且在 x > 0 x > 0 x>0时导数为 1 1 1,在一定程度上缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。
缺点:
R e L U ReLU ReLU函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 R e L U ReLU ReLU神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是0,在以后的训练过程中永远不能被激活。这种现象称为 死亡 R e L U ReLU ReLU问题 (Dying R e L U ReLU ReLU Problem) ,并且也有可能会发生在其他隐藏层。

带泄露的 R e L U ReLU ReLU

带泄露的 R e L U ReLU ReLU(Leaky ReLU) 在输入𝑥 < 0 时,保持一个很小的梯度 λ \lambda λ。这样当神经元非激活时也能有一个非零的梯度可以更新参数,避免永远不能被激活。带泄露的 R e L U ReLU ReLU 的定义如下:
L e a k y R e L U ( x ) = { x x > 0 γ x x ≤ 0 = max ⁡ ( 0 , x ) + γ min ⁡ ( 0 , x ) \begin{aligned} LeakyReLU(x) &= \begin{cases} x & x>0 \\ \gamma x & x \leq 0 \end{cases} \\ & = \max(0,x)+\gamma \min(0,x) \end{aligned} LeakyReLU(x)={xγxx>0x0=max(0,x)+γmin(0,x)
其中 γ \gamma γ是一个很小的常数,比如 0.01 0.01 0.01。当 γ < 1 \gamma <1 γ<1 时,带泄露的 R e L U ReLU ReLU 也可以写为:
L e a k y R e L U ( x ) = max ⁡ ( x , γ x ) LeakyReLU(x) =\max(x,\gamma x) LeakyReLU(x)=max(x,γx)

带参数的 R e L U ReLU ReLU

带参数的 R e L U ReLU ReLU(Parametric ReLU,PReLU) 引入一个可学习的参数,不同神经元可以有不同的参数。对于第 i i i个神经元,其 P R e L U PReLU PReLU的定义为:
P R e L U i ( x ) = { x x > 0 γ i x x ≤ 0 = max ⁡ ( 0 , x ) + γ i min ⁡ ( 0 , x ) \begin{aligned} PReLU_i(x) &= \begin{cases} x & x>0 \\ \gamma_i x & x \leq 0 \end{cases} \\ & = \max(0,x)+\gamma_i \min(0,x) \end{aligned} PReLUi(x)={xγixx>0x0=max(0,x)+γimin(0,x)
其中 γ i \gamma_i γi x ≤ 0 x \leq 0 x0时函数的斜率。因此, P R e L U PReLU PReLU是非饱和函数. 如果 γ i = 0 \gamma_i = 0 γi=0,那么 P R e L U PReLU PReLU就退化为 R e L U ReLU ReLU。如果 γ i \gamma_i γi为一个很小的常数,则 P R e L U PReLU PReLU可以看作带泄露的 R e L U ReLU ReLU P R e L U PReLU PReLU可以允许不同神经元具有不同的参数,也可以一组神经元共享一个参数

E L U ELU ELU函数

E L U ELU ELU(Exponential Linear Unit,指数线性单元) 是一个近似的零中心化的非线性函数,其定义为:
E L U ( x ) = { x x > 0 γ ( e x − 1 ) x ≤ 0 = max ⁡ ( 0 , x ) + min ⁡ ( 0 , γ ( e x − 1 ) ) \begin{aligned} ELU(x) &= \begin{cases} x & x>0 \\ \gamma (e^x-1) & x \leq 0 \end{cases} \\ & = \max(0,x)+ \min(0,\gamma (e^x-1)) \end{aligned} ELU(x)={xγ(ex1)x>0x0=max(0,x)+min(0,γ(ex1))
其中 γ ≥ 0 \gamma \geq 0 γ0是一个超参数,决定 x ≤ 0 x \leq 0 x0时的饱和曲线,并调整输出均值在0 附近。

S o f t p l u s Softplus Softplus函数

S o f t p l u s Softplus Softplus函数可以看作是 R e c t i f i e r Rectifier Rectifier函数的平滑版本,其定义为:
S o f t p l u s ( 𝑥 ) = log ⁡ ( 1 + e x ) Softplus(𝑥) = \log(1 + e^x) Softplus(x)=log(1+ex)
S o f t p l u s Softplus Softplus函数其导数刚好是 L o g i s t i c Logistic Logistic函数。 S o f t p l u s Softplus Softplus函数虽然也具有单侧抑制宽兴奋边界的特性,却没有稀疏激活性
在这里插入图片描述

S w i s h Swish Swish函数

S w i s h Swish Swish函数是一种 自门控(Self-Gated) 激活函数,定义为:
s w i s h ( x ) = x σ ( β x ) swish(x) = x \sigma (\beta x) swish(x)=xσ(βx)
其中 σ ( ⋅ ) \sigma(\cdot) σ() L o g i s t i c Logistic Logistic函数, β \beta β为可学习的参数或一个固定超参数。 σ ( ⋅ ) ∈ ( 0 , 1 ) \sigma(\cdot) \in (0,1) σ()(0,1)可以看作是一种软性的门控机制 σ ( β x ) \sigma (\beta x) σ(βx)接近于1 时,门处于“开”状态,激活函数的输出近似于 x x x本身;当 σ ( β x ) \sigma (\beta x) σ(βx) 接近于0 时,门的状态为“关”,激活函数的输出近似于0。
在这里插入图片描述
β = 0 \beta = 0 β=0时, S w i s h Swish Swish函数变成线性函数 x / 2 x/2 x/2
β = 1 \beta = 1 β=1时, S w i s h Swish Swish函数在 x > 0 x>0 x>0时近似线性,在 x < 0 x<0 x<0时近似饱和,同时具有一定的非单调性。
β → + ∞ \beta \rightarrow +\infty β+时, σ ( β x ) \sigma (\beta x) σ(βx)趋向于离散的 0 − 1 0-1 01函数, S w i s h Swish Swish函数近似为 R e L U ReLU ReLU函数。
因此, S w i s h Swish Swish函数可以看作是线性函数和 R e L U ReLU ReLU函数之间的非线性插值函数,其程度由参数 β \beta β控制。

高斯误差线性单元

高斯误差线性单元(Gaussian Error Linear Unit,GELU) S w i s h Swish Swish函数比较类似,也是一种通过门控机制来调整其输出值的激活函数,定义为:
G E L U ( x ) = x P ( X ≤ x ) GELU(x) = xP(X \leq x) GELU(x)=xP(Xx)
其中 P ( X ≤ x ) P(X \leq x) P(Xx)是高斯分布 N ( μ , σ 2 ) \mathscr{N}(\mu,\sigma^2) N(μ,σ2)
累积分布函数
,其中 μ , σ \mu,\sigma μ,σ为超参数,一般设 μ = 0 , σ = 1 \mu=0,\sigma=1 μ=0,σ=1即可。由于高斯分布的累积分布函数为 S S S 型函数,因此 G E L U GELU GELU可以用 T a n h Tanh Tanh函数或 L o g i s t i c Logistic Logistic函数来近似:
G E L U ( x ) ≈ 0.5 x ( 1 + t a n h ( 2 π ( x + 0.044715 x 3 ) ) ) GELU(x) \approx 0.5x(1+tanh(\sqrt{\frac{2}{\pi}}(x + 0.044715x^3))) GELU(x)0.5x(1+tanh(π2 (x+0.044715x3)))

G E L U ( x ) ≈ x σ ( 1.702 x ) GELU(x) \approx x \sigma(1.702x) GELU(x)xσ(1.702x)
当使用 L o g i s t i c Logistic Logistic函数来近似时, G E L U GELU GELU相当于一种特殊的 S w i s h Swish Swish函数。

M a x o u t Maxout Maxout单元

M a x o u t Maxout Maxout单元也是一种分段线性函数 S i g m o i d Sigmoid Sigmoid型函数 R e L U ReLU ReLU等激活函数的输入是神经元的净输入 𝑧 𝑧 z,是一个标量。而 M a x o u t Maxout Maxout单元的输入是上一层神经元的全部原始输出,是一个向量 x = [ x 1 , x 2 , ⋯   , x D ] x=[x_1,x_2,\cdots,x_D] x=[x1,x2,,xD]
每个 M a x o u t Maxout Maxout单元有 K K K个权重向量 w k ∈ R D w_k \in R^D wkRD和偏置 b k ( 1 ≤ k ≤ K ) b_k(1 \leq k \leq K) bk(1kK)。对于输
x x x,可以得到 𝐾 𝐾 K个净输入 z k , 1 ≤ k ≤ K z_k,1 \leq k \leq K zk,1kK
z k = w k T + b k z_k=w_k^T+b_k zk=wkT+bk
其中 w k = [ w k , 1 , w k , 2 , ⋯   , w k , D ] T w_k=[w_{k,1},w_{k,2},\cdots,w_{k,D}]^T wk=[wk,1,wk,2,,wk,D]T 为第 𝑘 𝑘 k个权重向量。
M a x o u t Maxout Maxout单元的非线性函数定义为:
m a x o u t ( x ) = max ⁡ k ∈ [ 1 , K ] ( z k ) maxout(x) = \max_{k \in [1,K]}(z_k) maxout(x)=k[1,K]max(zk)
M a x o u t Maxout Maxout单元不单是净输入到输出之间的非线性映射,而是整体学习输入到输出之间的非线性映射关系 M a x o u t Maxout Maxout激活函数 可以看作任意凸函数的分段线性近似,并且在有限的点上是不可微的。

参考:
[1] 邱锡鹏.神经网络与深度学习[D].

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值