1.为什么要使用激活函数
因为线性函数能拟合的模型太少,多层线性神经网络的叠加仍为线性,加上非线性可以改善拟合效果。
2.激活函数的要求
非线性,可微(反向传播)。
3.常用的激活函数
Sigmoid
能够把输入的连续实值变换为0和1之间的输出。
缺点:当输入值特别大或特别小时函数的梯度会很小(函数的斜率接近0),这样会降低梯度下降算法的效率,当神经网络层数过多时容易导致梯度消失。
tanh
能够把输入的连续实值变换为-1和1之间的输出。
tanh几乎在所有情况下的表现都比sigmoid好,因为它的输出值介于-1到1,激活函数的平均值更接近于0,这样可以达到类似zero-centered(数据中心化)的效果。但是它同样存在梯度消失的问题。
tanh和Sigmoid还有一个共同的缺点就是指数运算在计算中过于复杂。
ReLU
ReLU函数在输入值为正数时导数为1,负数时导数为0。它的优点是计算简单,收敛速度快。但它也有缺点,即不是zero-centered。
Leaky ReLU,当输入值为负时,函数的值不为0,而是有一个很平缓的斜率,表现通常比ReLU更好,但使用的并不多,因为在实际情况中,有足够多的隐藏单元使输出值不为0。
4.激活函数的选择
1.当隐藏层数量较少时,选择可以比较随意。当隐藏层数量较多时,为了避免梯度消失或梯度爆炸,要谨慎选择。
2.一般默认选ReLU。在实际情况下,使用ReLU或Leaky ReLU,学习速率会快很多。
3.在处理二元分类时,可以使用sigmoid函数作为输出层的激活函数。