计算机系统应用教程网站

网站首页 > 技术文章 正文

神经网络常用激活函数总结(一)

btikc 2024-09-06 18:06:32 技术文章 10 ℃ 0 评论

激活函数性质

  • 非线性:即导数不是常数,保证多层网络不退化成单层线性网络;
  • 可微性:保证了在优化中梯度的可计算性;
  • 计算简单:激活函数复杂就会降低计算速度;
  • 非饱和性(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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表