22.神经网络中激活函数的真正意义

  1. 非线性:即倒数不是常数。这个条件是多层神经网络的基础,保证多层网络不退化成单层线性网络,这也是激活函数的意义所在。
  2. 几乎处处可微:可微保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU只满足几乎处处可微。对于SGD算法来说,由于几乎不可能收敛到梯度接近零的位置,有限的不可微点对于优化结果不会有很大影响。
  3. 计算简单:非线性函数有很多,但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数更适合用作激活函数。
  4. 非饱和性:饱和是指在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新。
  5. 单调性:即倒数符号不变,这个性质大部分激活函数都有,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
  6. 输出范围有限:有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主。
  7. 接近恒等变换:即约等于x。
  8. 参数少:大部分激活函数都是没有参数的。
  9. 归一化:这是最近提出的概念,对应的激活函数时SELU,主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练。在这之前这种归一化的思想也被用于网络结构的设计,比如batch normalization。

你可能感兴趣的:(#,深度学习基础)