激活函数小结:ReLU、ELU、Swish、GELU等 |
您所在的位置:网站首页 › leakyrelu函数作画 › 激活函数小结:ReLU、ELU、Swish、GELU等 |
文章目录
SigmoidTanhReLULeaky ReLUPReLUELUSoftPlus
MaxoutMishSwishGELUSwiGLUGEGLU资源
激活函数是神经网络中的非线性函数,为了增强网络的表示能力和学习能力,激活函数有以下几点性质:
连续且可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。激活函数的导函数的值域要在一个合适的区间内(不能太大也不能太小),否则会影响训练的效率和稳定性。
Sigmoid
Sigmoid函数(也被称为Logistic函数)的表达式如下: σ ( x ) = exp ( x ) exp ( x ) + exp ( 0 ) = 1 1 + e x p ( − x ) \sigma(x)=\frac{\exp (x)}{\exp (x)+\exp (0)} = \frac {1}{1+exp(-x)} σ(x)=exp(x)+exp(0)exp(x)=1+exp(−x)1 其导数为 d d x σ ( x ) = σ ( x ) ( 1 − σ ( x ) ) \frac{d}{d x} \sigma(x)=\sigma(x)(1-\sigma(x)) dxdσ(x)=σ(x)(1−σ(x)) 其图像如下图,是一个S型曲线,所以Sigmoid函数可以看做一个“挤压”函数,把一个实数域的输入“挤压”到(0,1)。当输入值在0附近时,Sigmoid函数近似为线性函数;当输入值靠近两端时,对输入进行抑制;输入越小,越接近于0;输入越大,越接近于1。 Sigmoid激活函数的缺点: 倾向于梯度消失函数输出不是以0为中心,会使其后一层的神经元的输入发生偏置偏移(Bias Shift),进而使得梯度下降的收敛速度变慢,也就是会降低权重更新的效率公式中包括指数运算,计算机运行较慢 TanhTanh 函数也是一种S型函数,其定义为 t a n h ( x ) = exp ( x ) − exp ( − x ) exp ( x ) + exp ( − x ) tanh(x)=\frac{\exp (x) - \exp (-x)}{\exp (x)+\exp (-x)} tanh(x)=exp(x)+exp(−x)exp(x)−exp(−x) Tanh函数可以看做放大并平移的Sigmoid函数,其值域为(-1,1),并且Tanh与Sigmoid函数关系如下式:
t
a
n
h
(
x
)
=
2
σ
(
2
x
)
−
1
tanh(x) = 2 \sigma(2x) -1
tanh(x)=2σ(2x)−1 Tanh函数如下图所示,它的输入是零中心化的了。 ReLU(Rectified Linear unit)是最常见的激活函数,其公式为: R e L U ( x ) = { x x ≥ 0 0 x < 0 = m a x ( 0 , x ) \begin {aligned} ReLU(x) &= \begin{cases} x \ \ \qquad x \ge 0 \\ 0 \ \ \qquad xx x>0γx x≤0=max(0,x)+γmin(0,x) γ \gamma γ是一个很小的常数,如0.01。 当 γ < 1 \gamma 0 \\ \gamma_i x \ \ \qquad x \le 0 \end{cases} \\ &= max(0, x) + \gamma_i min(0,x) \end {aligned} PReLUi(x)={x x>0γix x≤0=max(0,x)+γimin(0,x) 其中 γ i \gamma_i γi为 x ≤ 0 x \le 0 x≤0时函数的斜率,所以PReLU也是非饱和函数。 如果 γ i = 0 \gamma_i=0 γi=0,PReLU就退化为ReLU。 如果 γ i \gamma_i γi是一个很小的常数,则PReLU就可以看作LeakyReLU。 PReLU可以允许不同神经元具有不同的参数,也可以一组神经元共享一个参数。 ELUELU(Exponential Linear Unit)的定义如下: E R e L U ( x ) = { x x > 0 γ ( e x p ( x ) − 1 ) x ≤ 0 = m a x ( 0 , x ) + m i n ( 0 , γ ( e x p ( x ) − 1 ) ) \begin {aligned} EReLU(x) &= \begin{cases} x \ \ \qquad x > 0 \\ \gamma (exp(x) - 1) \ \ \qquad x \le 0 \end{cases} \\ &= max(0, x) + min(0,\gamma (exp(x) - 1)) \end {aligned} EReLU(x)={x x>0γ(exp(x)−1) x≤0=max(0,x)+min(0,γ(exp(x)−1)) 定义中的 γ ≥ 0 \gamma \ge 0 γ≥0是一个超参数,决定 x ≤ 0 x \le 0 x≤0时的饱和曲线,并调整输出均值在0附近,所以ELU是一个近似的零中心化的非线性函数。 SoftPlusSoftPlus可以看作ReLU函数的平滑版本,其定义为: S o f t p l u s ( x ) = l o g ( 1 + e x p ( x ) ) Softplus(x) = log(1 + exp(x)) Softplus(x)=log(1+exp(x)) SoftPlus的导数是Sigmoid函数 SoftPlus函数也有与ReLU函数一样的单侧抑制、宽兴奋边界的特性,但没有稀疏激活性。 MaxoutMaxout的输入是上一层神经元的全部原始输出,是一个向量 x = [ x 1 ; x 2 ; ⋯ , ; x D ] \mathbf{x} = [x_1;x_2;\cdots,;x_D] x=[x1;x2;⋯,;xD] 每个Maxout单元有K个权重向量 w k ∈ R D \mathbf{w}_k \in \mathbb{R}^D wk∈RD ( w k = [ w k , 1 , ⋯ , w k , D ] T \mathbf{w}_k = [w_{k, 1}, \cdots, w_{k,D}]^T wk=[wk,1,⋯,wk,D]T 为第k个权重向量) 和偏置 b k ( 1 ≤ k ≤ K ) b_k(1 \le k \le K) bk(1≤k≤K), 对于输入 x \mathbf{x} x,可以得到K个净输入 z k z_k zk, 1 ≤ k ≤ K 1 \le k \le K 1≤k≤K: z k = w k T x + b k z_k = \mathbf{w}_k^T x + b_k zk=wkTx+bk Maxout单元的非线性函数定义为 m a x o u t ( x ) = max k ∈ [ 1 , K ] ( z k ) maxout(\mathbf{x}) = \max_{k\in[1,K]} (z_k) maxout(x)=k∈[1,K]max(zk) Maxout激活函数可以看做任意凸函数的分段线性近似,并且在有限的点上是不可微的。 MishMish的表达如下式 M i s h ( x ) = x ∗ t a n h ( S o f t p l u s ( x ) ) = x ∗ t a n h ( l n ( 1 + e x ) ) \begin{aligned} Mish(x) &=x∗tanh(Softplus(x)) \\ &= x*tanh(ln(1+e^x)) \end {aligned} Mish(x)=x∗tanh(Softplus(x))=x∗tanh(ln(1+ex)) Mish的函数图像如下图 Swish的定义如下: s w i s h ( x ) = x σ ( β x ) = x 1 1 + e x p ( − β x ) \begin {aligned} swish(x) &= x \sigma(\beta x) \\ &= x \frac{1}{1+exp(-\beta x)} \end {aligned} swish(x)=xσ(βx)=x1+exp(−βx)1 σ \sigma σ是sigmoid函数, β \beta β是可学习的参数或者一个固定超参数。 σ ( . ) ∈ ( 0 , 1 ) \sigma(.) \in (0,1) σ(.)∈(0,1) 可以看作一种软性的门控机制,当 σ ( β x ) \sigma(\beta x) σ(βx) 接近于1时,门的状态为“开”状态,激活函数的输出近似于x本身;当 σ ( β x ) \sigma(\beta x) σ(βx) 接近于0时,门的状态为“关”,激活函数的输出近似于0. Swish函数的示意图如下图 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |