激活函数可以被分为2类,“饱和激活函数”和“非饱和激活函数”。sigmoid和tanh是“饱和激活函数”,而ReLU及其变体则是“非饱和激活函数”。使用“非饱和激活函数”的优势在于两点:
(1)首先,“非饱和激活函数”能解决所谓的“梯度消失”问题。
(2)其次,它能加快收敛速度。
Sigmoid函数需要一个实值输入压缩至[0,1]的范围,σ(x) = 1 / (1 + exp(−x))。
tanh函数需要讲一个实值输入压缩至 [-1, 1]的范围,tanh(x) = 2σ(2x) − 1。
ReLU:
CNN中常用。对正数原样输出,负数直接置零。在正数不饱和,在负数硬饱和。relu计算上比sigmoid或者tanh更省计算量,因为不用exp,因而收敛较快。但是还是非zero-centered。
relu在负数区域被kill的现象叫做dead relu,这样的情况下,有人通过初始化的时候用一个稍微大于零的数比如0.01来初始化神经元,从而使得relu更偏向于激活而不是死掉,但是这个方法是否有效有争议。
Noisy ReLU:
ReLU可以被扩展以包括高斯噪声(Gaussian noise): 𝑓(𝑥)=max(0,&