**函数篇(Sigmoid、tanh、ReLU、PReLU)

写在前面:此文只记录了下本人感觉需要注意的地方,不全且不一定准确。详细内容可以参考文中帖的链接,比较好!!!
常用**函数(激励函数)理解与总结
**函数的区别与优点
梯度消失与爆炸

1. **函数是什么?

在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为**函数(又称激励函数)。**函数篇(Sigmoid、tanh、ReLU、PReLU)

2. **函数的用途

如果不用**函数,每一层的输入都是上一层输出的线性函数,而多层线性函数与一层线性函数的功能是等价的,网络的逼近能力就相当有限,因此引入非线性函数作为激励函数,使得深层神经网络的可以更好的逼近任意函数。

3. 常见的**函数:

Sigmoid 函数:

  1. 表达形式:
    f(z)=11+ezf(z) = \frac{1}{1+e^{-z}}
  2. 函数图像:**函数篇(Sigmoid、tanh、ReLU、PReLU)
  3. 导数图像:**函数篇(Sigmoid、tanh、ReLU、PReLU)
  4. 优缺点:
优点
  • 能够把输入的连续值压缩到【0~1】之间,可解释性强,0为不活跃,1为活跃
缺点
  • 梯度反向传递时,容易导致梯度的爆炸和消失(大概率梯度消失,有时梯度爆炸)。
    **函数篇(Sigmoid、tanh、ReLU、PReLU)
    而由于σz\sigma (z)最大值为0.25,且通常初始| w | < 1 ,则有:
    **函数篇(Sigmoid、tanh、ReLU、PReLU)
    极易出现梯度消失;当初始化 |w| > 4 时,w * σz\sigma (z) > 1 ,才会产生梯度爆炸。
  • sigmoid函数的输出不是0均值。若该层神经元得到上一层的非0输出作为输入,产生的回传梯度的符号就会相同,或者都为正或者都为负,导致捆绑效果,使结果收敛变慢(例如,当x>0时,y = w*x + b,对w求导,得到的梯度全为正)
  • 解析式中有幂运算,计算量相对较大

tanh 函数:

  1. 表达式:
    tanh(x)=exexex+extanh(x) = \frac{e^{x} - e ^ {-x}}{e^{x}+e^{-x}}
  2. 函数图像及导数图像:
    **函数篇(Sigmoid、tanh、ReLU、PReLU)
  3. 特点:解决了sigmoid函数中的输出非0均值,但梯度消失或爆炸、及计算量较大的问题仍存在

Relu 函数:

  1. 表达式:
    Relu=max(0,x) Relu = max (0, x)
  2. 函数图像及导数图像:**函数篇(Sigmoid、tanh、ReLU、PReLU)
  3. 优缺点:
优点
  • 在正区间上解决了梯度消失或爆炸问题
  • 计算梯度时只需判断是否大于0,而不用幂函数,计算速度快,收敛速度快
缺点
  • ReLU的输出非0均值,导致某些神经元永远不会被**,相应参数永远不会被更新(非正部分)

Leaky Relu 函数(PReLU):

  1. 表达式
    f(x)=max(αx,x),α=0.01f(x) = max(\alpha x, x), \alpha = 0.01
  2. 解决了ReLU非正梯度为0,导致有些参数永远不会被更新的问题