激活函数性质
- 非线性:即导数不是常数,保证多层网络不退化成单层线性网络;
- 可微性:保证了在优化中梯度的可计算性;
- 计算简单:激活函数复杂就会降低计算速度;
- 非饱和性(saturation):饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题;
- 单调性(monotonic):即导数符号不变。当激活函数是单调的时候,单层网络能够保证是凸函数;
- 参数少:大部分激活函数都是没有参数的,像 PReLU 带单个参数会略微增加网络的大小。
Sigmoid
优点:
- 梯度平滑
- 输出值在 0-1 之间
缺点:
- 激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法)
- 梯度消失:输入值较大或较小(图像两侧)时,sigmoid 函数值接近于零。sigmoid 导数则接近于零,导致最终的梯度接近于零,无法实现更新参数的目的;
- Sigmoid 的输出不是 0 为中心(zero-centered)
tanh
优点:
- tanh(x) 的梯度消失问题比 sigmoid 要轻,收敛更快
- 输出是以 0 为中心 zero-centered
缺点:
- 同 sigmoid
ReLU
优点:
- 简单高效:不涉及指数等运算
- 一定程度缓解梯度消失问题:因为导数为1,不会像 sigmoid 那样由于导数较小,而导致连乘得到的梯度逐渐消失。
缺点:
- 有些网络的部分分量永远不会更新
ELU
优点:
- 当x 小于 0 时函数值不再是 0,因此可以避免ReLU中网络分量不更新问题
- 能得到负值输出,这能帮助网络向正确的方向推动权重和偏置变化。
缺点:
- 计算耗时:包含指数运算
- α 值是超参数,需要人工设定
SELU
- lambda = 1.0507
- alpha = 1.67326
优点:
- SELU 激活能够对神经网络进行自归一化(self-normalizing);
- 不可能出现梯度消失或爆炸问题,论文附录的定理 2 和 3 提供了证明。
缺点:
- 应用较少,需要更多实验验证
- lecun_normal 和 Alpha Dropout:需要 lecun_normal 进行权重初始化;如果 dropout,则必须用 Alpha Dropout 的特殊版本。
Leaky ReLU
优点:
- 类似于 ELU,能避免ReLU中网络参数分量不更新问题
- 与 ELU 类似,能得到负值输出
- 计算快速:不包含指数运算
缺点:
- 同 ELU,α 值是超参数,需要人工设定;
- 在微分时,两部分都是线性的;而 ELU 的一部分是线性的,一部分是非线性的。
PReLU
与 Leak_ReLU 在形式上类似,不同之处在于:PReLU 的参数 alpha 是可学习的,需要根据梯度更新。
- alpha=0:退化为 ReLU
- alpha 固定不更新,退化为 Leak_ReLU
本文暂时没有评论,来添加一个吧(●'◡'●)