激活函数

常用激活函数及其导数

  • Sigmoid函数
    • 形式
      \[f(z)=\frac{1}{1+\exp(-z)}\]
    • 导数
      \[f^{'}(z)=f(z)(1-f(z))\]
  • Tanh激活函数
    • 形式
      \[f(z)=tanh(z)=\frac{e^z - e^{-z}}{e^z + e^{-z}}\]
    • 导数
      \[f^{'}(z)=1-(f(z))^2\]
  • ReLU激活函数
    • 形式
      \[f(z) = \max(0, z)\]
    • 导数:略
  • GTU激活函数
    • 形式
      \[f(X) = tanh(X \cdot W+b)\cdot \sigma(X \cdot V+c)\]
    • 结构:tanh激活单元+sigmoid激活单元
    • 存在梯度消失问题
  • GLU激活函数
    • 形式
      \[f(X) = (X\cdot W+b) \cdot \sigma(X \cdot V+c)\]
    • 结构:ReLU激活单元+sigmoid激活单元
    • 不会存在梯度消失问题
  • SELU (scaled exponential linear units)激活函数
    • 形式
      \[\begin{aligned} \text{selu}(z) = \lambda \begin{cases} z \quad &\text{if} \ z > 0 \\ \alpha e^z - \alpha \quad &\text{if} \ z \le 0 \end{cases} \end{aligned}\]
    • 具有自归一化功能。其中\(\alpha, \lambda\)是两个常数
  • Swish激活函数
    • 形式
      \[f(z)=z\cdot \sigma(z)\]
    • 导数
      \[f^{'}(z)=f(z) + \sigma(z)(1-f(z))\]

激活函数

Sigmoid和Tanh梯度消失问题

  • Sigmoid函数在\(z\)很大或者很小时,导数趋近于0,造成梯度消失
  • Tanh函数相当于Sigmoid的平移,梯度消失问题类似
    \[\tanh(x)=2sigmoid(2x)-1\]

ReLU优缺点

  • 优点
    • 不需要计算指数,方便
    • 非饱和性有效解决梯度消失问题,提供相对宽的激活边界
    • 单侧抑制提供了网络的稀疏表达能力
  • 局限性
    • 神经元死亡问题
      • 负梯度在经过该ReLU单元时被置为0,且在之后不被激活,梯度永远为0
      • 如果学习率设置较大,会导致一定比例的神经元不可逆死亡,进而参数梯度无法更新
    • 改进
      • Leaky ReLU
        \[f(z)=\begin{cases} z, z > 0 \\ az, z < 0 \end{cases}\]
        一般\(a\)为小常数,既实现单侧抑制,又保留了部分负梯度,但\(a\)的选择增加了问题难度
      • PReLU
        • 将负轴部分斜率\(a\)作为网络中的可学习参数
      • Random ReLU
        • 训练过程中,\(a\)作为一个满足某种分布的随机采样
        • 测试时固定
上一篇:常见的激活函数


下一篇:CNN-VGG16