神经网络——激活函数

激活函数

在这里插入图片描述
激活函数的主要作用是提供网络的非线性建模能力,分层的非线性映射学习能力。几乎所有的连续可导函数都可以用作激活函数,但目前常见的多是分段线性和具有指数形状的非线性函数

sigmoid

s i g m o i d ( x ) = 1 1 + e − x , s i g m o i d ′ ( x ) = s i g m o i d ( x ) ( 1 − s i g m o i d ( x ) ) sigmoid(x)=\frac{1}{1+e^{-x}},sigmoid^{'}(x)=sigmoid(x)(1-sigmoid(x)) sigmoid(x)=1+ex1,sigmoid(x)=sigmoid(x)(1sigmoid(x))
sigmoid 在定义域内处处可导,且两侧导数逐渐趋近于0——软饱和激活函数。
sigmoid 的软饱和性,使深度神经网络难以有效训练,在后向传递过程中,sigmoid向下传导的梯度包含了一个f’(x) 因子(sigmoid关于输入的导数),一旦输入落入饱和区,f’(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小,网络参数很难得到有效训练,即梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。梯度消失问题至今仍然存在,但可以使用有效缓解了,例如DBN中的分层预训练,Batch Normalization的逐层归一化,Xavier和MSRA权重初始化等代表性技术。sigmoid 的饱和性虽然会导致梯度消失,但也有其有利的一面。例如它在物理意义上最为接近生物神经元。 (0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如sigmoid交叉熵损失函数。

tanh

t a n h ( x ) = 1 − e − 2 x 1 + e − 2 x = 2 s i g m o i d ( 2 x ) − 1 tanh(x)=\frac{1-e^{-2x}}{1+e^{-2x}}=2sigmoid(2x)-1 tanh(x)=1+e2x1e2x=2sigmoid(2x)1
tanh也具有软饱和性。tanh 网络的收敛速度要比sigmoid快,因为 tanh 的输出均值比 sigmoid 更接近 0,SGD会更接近 natural gradient(一种二次优化技术),从而降低所需的迭代次数

ReLU

R e L U ( x ) = { x , x > = 0 0 , x < 0 ReLU(x)=\begin{cases} x,x>=0 \cr 0,x<0\end{cases} ReLU(x)={xx>=00x<0
硬饱和函数: f ′ ( x ) = 0 , 当 ∣ x ∣ > c , c 为 常 数 f'(x)=0,当 |x| > c, c 为常数 f(x)=0x>cc
尽管在ReLU之前,通过分层无监督预训练解决深层网络训练困难的问题;但是深度网络的直接监督式训练的最终突破,最主要的原因是采用了新型激活函数ReLU。ReLU能够有效缓解梯度消失问题,从而直接以监督的方式训练深度神经网络,无需依赖无监督的逐层预训练。
ReLU 在x<0 时硬饱和。由于 x>0时导数为 1,所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。但随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新——神经元死亡。ReLU的输出均值恒大于零——偏移现象。偏移现象和 神经元死亡会共同影响网络的收敛性。如果不采用Batch Normalization,即使用 MSRA 初始化30层以上的ReLU网络,最终也难以收敛。相对的,PReLU和ELU网络都能顺利收敛。
ReLU另外一个性质是提供神经网络的稀疏表达能力,但后来的研究发现稀疏性并非性能提升的必要条件。ReLU的稀疏性与网络性能(分类精度)间并不存在绝对正负比关系。

PReLU

P R e L U ( x ) = { x , x > 0 α x , x < = 0 PReLU(x)=\begin{cases} x,x>0 \cr \alpha x,x<=0\end{cases} PReLU(x)={xx>0αxx<=0
PReLU与LReLU相比,PReLU中的负半轴斜率a可学习而非固定。 α \alpha α的取值,原文献建议初始化a为0.25,不采用正则(是否采用正则应视具体的数据和网络,通常使用正则能带来性能提升)。
虽然PReLU 引入了额外的参数,但基本不需要担心过拟合。实验中若发现网络性能不好,建议从其他角度寻找原因。
与ReLU相比,PReLU收敛速度更快,因为PReLU的输出更接近0均值,使得SGD更接近natural gradient。

Maxout

M a x o u t ( x ) = m a x ( w 1 x + b 1 , w 2 x + b 2 , . . . , w n x + b n ) Maxout(x)=max(w_1x+b_1, w_2x+b_2, ..., w_nx+b_n) Maxout(x)=max(w1x+b1,w2x+b2,...,wnx+bn)
Maxout是ReLU的推广,其发生饱和是一个零测集事件。Maxout网络能够近似任意连续函数,且当 w 2 , b 2 , … , w n , b n w_2,b_2,…,w_n,b_n w2,b2,,wn,bn为0时,退化为ReLU。
Maxout的思想在视觉领域存在已久。Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量。

ELU

E L U ( x ) = { x , x > 0 α ( e x − 1 ) , x < = 0 ELU(x)=\begin{cases} x,x>0 \cr \alpha (e^x-1),x<=0\end{cases} ELU(x)={xx>0α(ex1)x<=0
ELU融合sigmoid和ReLU,具有左侧软饱性。右侧线性能缓解梯度消失,左侧软饱能让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快

总结:

如何选择激活函数目前尚无统一定论,需依靠实验指导。一般在分类问题上,建议先尝试 ReLU,其次ELU,这是两类不引入额外参数的激活函数。然后可考虑用具备学习能力的PReLU,并使用正则化技术,例如应该考虑在网络中增加Batch Normalization层。

参考文献:
https://zhuanlan.zhihu.com/p/22142013

二次代价函数与输出层线性激活函数对应使用
交叉熵代价函数与输出层用sigmoid激活函数对应使用
对数似然代价函数与输出层用softmax激活函数对应使用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值