avatar

目录
激活函数

激活函数的作用

给神经元引入非线性因素,使得网络可以逼近任意的非线性函数,具有更强的泛化能力

不同的激活函数

Sigmoid

S(x)=11+exS(x)=\frac{1}{1+e^{-x}}

函数图像

缺点

  • 计算量大(指数运算)
  • 反向传播时容易出现梯度消失问题(导数从0开始很快又趋近于0)
  • 输出在0-1之间,训练缓慢

Tanh

f(z)=tanh(z)=ezezez+ezf(z)=tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}

tanh(z)=2sigmoid(2z)1tanh(z)=2sigmoid(2z)-1

函数图像

优点

  • 原点对称(0均值)
  • 训练效率比sigmoid快

缺点

  • 还是存在梯度消失问题
  • 依然是指数运算,计算量大

ReLU

f(x)={xifx00ifx<0 f(x)=\left\{ \begin{array}{rcl} x & & {if x \geq 0}\\ 0 & & {if x < 0} \end{array} \right.

函数图像

优点

  • 解决了部分梯度消失问题(输入为正时)
  • 计算更快(函数简单)
  • 收敛更快

缺点

  • 会造成神经元死亡且不会复活(输入为负时)

PReLU、Leaky ReLU、RRelu

PReLU: Parametric Rectified Linear Unit

RReLU: Randomized Leaky Rectified Linear Unit

f(xi)={xiifxi0aixiifxi<0 f(x_i)=\left\{ \begin{array}{rcl} x_i & & {if x_i \geq 0}\\ a_ix_i & & {if x_i < 0} \end{array} \right.

优点

  • 包含ReLU的所有优点
  • 解决了神经元死亡问题

三种ReLU的比较

  • ai=0a_i=0,则PReLU退化为ReLU
  • Leaky ReLU中的aia_i是一个很小的固定值
  • PReLU中的aia_i是根据数据变化的
  • RReLU中的aia_i在训练阶段是一个在给定范围内随机抽取的值,在测试阶段会固定下来

ELU

ELU: Exponential Linear Units

f(x)={xifx0α(ex1)ifx<0 f(x)=\left\{ \begin{array}{rcl} x & & {if x \geq 0}\\ \alpha(e^x-1) & & {if x < 0} \end{array} \right.

函数图像

优点

  • 包含ReLU的所有优点
  • 神经元不会死亡
  • 输出均值接近于0

缺点

  • 计算量大(指数运算)

Maxout

f(x)=maxj[1,k]zij=max(w1Tx+b1,w2Tx+b2,...,wkTx+bk)\begin{aligned} f(x)&=max_{j\in[1,k]}z_{ij}\\ &=max(w_1^Tx+b_1,w_2^Tx+b_2, ..., w_k^Tx+b_k) \end{aligned}

即对于某一层神经网络,将激活值最大的作为输出。
下面举例说明,如下图所示:

假设第i层有3个神经元(下),第i+1层有4个神经元(上),Maxout相当于在第i层和第i+1层之间新加了一层,现令k=3(中间三块),计算出三块各自的激活值(wiTx+biw_i^Tx+b_i),然后取三块中的最大值(max(w1Tx+b1,w2Tx+b2,...,wkTx+bk)max(w_1^Tx+b_1,w_2^Tx+b_2, ..., w_k^Tx+b_k))作为第i层的输出。

优点

  • 具有ReLU的所有优点:线性、不饱和性
  • 神经元不会死亡

缺点

  • 整体参数数量增加(与k有关)
文章作者: Reborn
文章链接: https://reborn8888.github.io/2019/12/26/%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Reborn
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论