激活函数的作用---提高模型的非线性表达能力。如果没有激活函数,模型只能处理简单的线性问题,所以激活函数是很重要的。
激活函数要满足三个基本条件:
- 可微性: 当优化方法是基于梯度的时候,这个性质是必须的。
- 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。
- 有限性: 当激活函数输出值是 有限 的时候,基于梯度的优化方法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是 无限 的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate
一般激活函数有sigmoid、tanh、ELU、 ReLu和它的改进版
sigmoid
优点:
最接近生物神经元的特性,一般输出是二分类问题时可以使用。
缺点:
容易饱和,当X增大时,梯度几乎为零,一但落入饱和区,就会产生
梯度消失,sigmoid网络在5层之内就会产生梯度消失现象。
sigmoid函数的输出都是正值,均值非零,会有偏移。 所以一般不用sigmoid激活函数。
tanh
与sigmoid相比,优点:它的输出均值是0,使得其收敛速度要比sigmoid快,减少迭代次数。缺点:然而,tanh一样具有软饱和性,会造成梯度消失。
ReLu
ReLU:可以看到,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。
改进:
LReLU:a比较小而且固定的时候,为LReLU a值确定也很困难
RLReLU:a在一定范围内随机取值。
RReLUa
ELU
融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。在ImageNet上,不加 Batch Normalization 30 层以上的 ReLU 网络会无法收敛,PReLU网络在MSRA的Fan-in (caffe )初始化下会发散,而 ELU 网络在Fan-in/Fan-out下都能收敛。
Maxout
maxout网络能够近似任意连续函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量。