常用的非线性激励函数

在神经网络中为什么要引入非线性激励函数


为了回答上述这个问题,我们先抛出一个与之相关的问题:什么叫线性?

线性就是利用形如: f ( x ) = w x + b f(x) = wx + b f(x)=wx+b 的表达式来表示输入与输出的关系。假如输入 x x x 与输出 f ( x ) f(x) f(x) 存在线性的关系,我们用表达式 f ( x ) = w x + b f(x) = wx + b f(x)=wx+b 可以很好的表征出这种关系。但是,一旦这种客观的、我们要求解的关系中本就含有非线性关系的话,还用线性表达式去拟合(你可以理解为去表征输入与输出的关系)的话,就会出现非常严重欠拟合现象(无法表示或者表示存在严重误差)。
因为神经网络,存在大量的非线性关系的数据,所以需要引入非线程激励函数


Sigmoid


  • 优点:映射数据在[0, 1]之间;梯度下降明显;
  • 缺点:容易引起梯度消失;输出不是以0为中心; e x p ( ) exp() exp() 计算成本高

公 式 : σ ( x ) = 1 1 + e − x 公式:\sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1
导 数 : σ ( x ) ′ = σ ( x ) ( 1 − σ ( x ) ) 导数:\sigma(x)'=\sigma(x)(1-\sigma(x)) σ(x)=σ(x)(1σ(x))

激活函数
在这里插入图片描述
导数
在这里插入图片描述

注意: Sigmoid 函数趋近 0 和 1 的时候变化率会变得平坦,也就是说,Sigmoid 的梯度趋近于 0。神经网络使用 Sigmoid 激活函数进行反向传播时,输出接近 0 或 1 的神经元其梯度趋近于 0。这些神经元叫作饱和神经元。因此,这些神经元的权重不会更新。此外,与此类神经元相连的神经元的权重也更新得很慢。该问题叫作梯度消失。因此,想象一下,如果一个大型神经网络包含 Sigmoid 神经元,而其中很多个都处于饱和状态,那么该网络无法执行反向传播。


tahn


  • 优点:映射到[-1, 1]之间,收敛快速;
  • 缺点:容易引起梯度消失;

公 式 : f ( x ) = t a n h ( x ) = 2 1 + e − 2 x − 1 公式:f(x) = tanh(x) = \frac{2}{1+e^{-2x}} - 1 f(x)=tanh(x)=1+e2x21
导 数 : f ( x ) ′ = 1 − f ( x ) 2 导数:f(x)'=1-f(x)^2 f(x)=1f(x)2

激活函数
在这里插入图片描述
导数
在这里插入图片描述

Tanh 激活函数又叫作双曲正切激活函数(hyperbolic tangent activation function)。与 Sigmoid 函数类似,Tanh 函数也使用真值,但 Tanh 函数将其压缩至-1 到 1 的区间内。与 Sigmoid 不同,Tanh 函数的输出以零为中心,因为区间在-1 到 1 之间。你可以将 Tanh 函数想象成两个 Sigmoid 函数放在一起。在实践中,Tanh 函数的使用优先性高于 Sigmoid 函数。负数输入被当作负值,零输入值的映射接近零,正数输入被当作正值


ReLU


  • 优点:能快速收敛;能缓解梯度消失问题;提供神经网络稀疏表达能力;计算效率高;
  • 缺点:随着训练的进行,可能回出现神经元死亡,权重无法更新;不以0为中心;如果 x < 0 x < 0 x<0,形成死区;

公 式 : f ( x ) = m a x ( 0 , x ) 公式:f(x) = max(0, x) f(x)=max(0,x)
导 数 : f ( x ) ′ = { 0 f o r x < 0 1 f o r x ≥ 0 导数:f(x)' = \left\{\begin{matrix} 0& for& x < 0\\ 1& for& x \geq 0 \end{matrix}\right. f(x)={01forforx<0x0

激活函数
在这里插入图片描述
导数

在这里插入图片描述

当输入 x<0 时,输出为 0,当 x> 0 时,输出为 x。该激活函数使网络更快速地收敛。它不会饱和,即它可以对抗梯度消失问题,至少在正区域(x> 0 时)可以这样,因此神经元至少在一半区域中不会把所有零进行反向传播。由于使用了简单的阈值化(thresholding),ReLU 计算效率很高


Leaky ReLU


  • 优点:高效、快速收敛、正区域不饱和;对 ReLU的扩展;

公 式 : f ( x ) = m a x ( 0.1 x , x ) 公式:f(x) = max(0.1x, x) f(x)=max(0.1x,x)

激活函数
在这里插入图片描述

Leaky ReLU 的概念是:当 x < 0 时,它得到 0.1 的正梯度。该函数一定程度上缓解了 dead ReLU 问题,但是使用该函数的结果并不连贯。尽管它具备 ReLU 激活函数的所有特征,如计算高效、快速收敛、在正区域内不会饱和。
Leaky ReLU 可以得到更多扩展。不让 x 乘常数项,而是让 x 乘超参数,这看起来比 Leaky ReLU 效果要好。该扩展就是 Parametric ReLU.


Parametric ReLU


公 式 : f ( x ) = m a x ( α x , x ) 公式:f(x) = max(\alpha x, x) f(x)=max(αx,x)

导数
在这里插入图片描述

其中是超参数。这里引入了一个随机的超参数,它可以被学习,因为你可以对它进行反向传播。这使神经元能够选择负区域最好的梯度,有了这种能力,它们可以变成 ReLU 或 Leaky ReLU。

总之,最好使用 ReLU,但是你可以使用 Leaky ReLU 或 Parametric ReLU 实验一下,看看它们是否更适合你的问题


Swish


公 式 : σ ( x ) = x 1 + e − x 公式:\sigma(x) = \frac{x}{1+e^{-x}} σ(x)=1+exx

激活函数
在这里插入图片描述

根据论文(https://arxiv.org/abs/1710.05941v1),Swish 激活函数的性能优于 ReLU 函数

根据上图,我们可以观察到在 x 轴的负区域曲线的形状与 ReLU 激活函数不同,因此,Swish 激活函数的输出可能下降,即使在输入值增大的情况下。大多数激活函数是单调的,即输入值增大的情况下,输出值不可能下降。而 Swish 函数为 0 时具备单侧有界(one-sided boundedness)的特性,它是平滑、非单调的。


参考

  1. 参考多处网络资源,由于笔记记录较久,现已经不可察,感谢童鞋们的无私分享;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值