4.3.5 ELU & SELU

迭代公式:

ELU: δ(x)={xx0α(ex1)x<0SELU: δ(x)=λELU(x, α){\displaystyle \begin{aligned} ELU: \ \delta(x) &= \begin{cases} x & x \geq 0 \\ \alpha (e^x-1) & x<0 \end{cases} \\ SELU: \ \delta(x) &= \lambda \cdot ELU(x,\ \alpha) \\ \end{aligned} }

图像:

图 4-14 ELU & SELU 函数图

特性:

  1. 0 为中心(zero-centered)

  2. 输出范围在 (c, +)(-c,\ +\infty) 之间,称 cc 为常量乘数

  3. 输出值域对称,降低在正向堆积风险

  4. 当输入在 (0, +)(0,\ +\infty) 时,梯度为常量 11 ,完美解决梯度消失问题 及 梯度爆炸问题

  5. 当输入在 (, 0 ](-\infty,\ 0\ ] 时,梯度以 f(x)+cf(x)+c 形式变化,仍然存在梯度消失风险

  6. 公式中的 α\alpha 可取经验值,也可参与迭代

  7. 指数计算,较为消耗资源

ELU(2016)被称为 指数线性单元。也是一种为了处理 ReLU 梯度消失问题而提出的激活函数。 ELU 比之 ReLU 其他几种变体,最大的特点就是曲线平滑。而 SELU 则是在原有 ELU 激活函数的基础上,再乘以一个系数(通常取固定常量),即 SELU(x)=λELU(x)SELU( x ) = \lambda \cdot ELU( x ) 。根据原作者 京特·克兰鲍尔(Günter Klambauer) 在论文《Self-Normalizing Neural Networks》中的描述 [8] ,推荐取 λ=1.0507009873554804934193349650124\lambda = 1.0507009873554804934193349650124 的经验值。

SELU 可使输入经过一定层数处理后,变为固定分布。

ELU & SELU 算子化

利用 C 语言实现对算子的封装,有:

运行验证可得到结果:

Last updated

Was this helpful?