激活函数 Activation Function

  • 定义

    • 在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数

    • 为什么要AF?

      • 如果没有非线性AF,我们的输出结果和输入结果就会保持线性关系
  • Sigmoid 函数

    • σ(x)=11+ex\sigma(x) = \frac{1}{1+e^{-x}}

    • 图形如下

    • 适用情形:

      • 输出值限定在 0 到1
      • 导数范围 (0,0.25](0,0.25], 也就是说在多层神经网络的情况下通过链式法则反向传播向前求导,最前面几层对最终结果会乘上层数个 不大于 0.250.25 的数,也就是说没啥影响了,因此层数不能过大
      • 指数函数算力消耗较大
  • SoftMax 函数

    • S(x)=eziΣcezcS(x) = \frac{e^{z_i}}{\Sigma_c e^{z_c }}
    • 可以将一个多分类的问题转换成各类别的概率分布问题
    • 但是由于是指数,可能会出现数值爆炸的问题太大了效果不明显(最大的接近于1,小的约等于0)
    • 我们可以减掉一个最大值 DD,公式 S(x)=eziDΣcezcDS(x) = \frac{e^{z_i - D}}{\Sigma_c e^{z_c-D}}
  • Tanh 函数

    • tanhx=exexex+ex\tanh x = \frac{e^x - e^{-x}}{e^x+e^{-x}}
    • 范围 (1,1)(-1,1), 导数区间 (0,1](0,1]
    • 效果和 sigmoid 类似,但是效益比上面那个好
  • ReLU 函数

    • f(x)=max(0,x)f(x) = \max(0,x)

    • 在多个函数进行叠加可以拟合任何函数

    • 输入值是负数的时候输出 0,逆向传播这一条路径就无效了

      • 我们称这个现象为 “熄灭”
  • Leaky ReLU 函数

    • f(x)=max(0.1x,x)f(x) = \max(0.1x,x)
    • 满足了标准 ReLU 函数的缺点