DL\ML--深度学习之非线性激励函数--概念题(4)

此系列是记录DL、ML相关的一些基础概念,便于理解和回顾!一天两道!哈哈哈~~,水滴石穿!小白水平,若有错误,欢迎指正!

文章目录

    • 深度学习之非线性激励函数
    • 1、使用激活函数的重要性
    • 2、Sigmoid函数
    • 3、tanh函数
    • 4、ReLu函数


深度学习之非线性激励函数

参考链接:https://www.sohu.com/a/214965417_100008678


1、使用激活函数的重要性

不使用激活函数的话,每一层输出都是上层输入的线性函数,无论网络多少层,输出都是输入的线性组合;
使用的话,就引入了非线性元素,使得神经网络训练后可以逼近任意的非线性函数,这样的 model 可以应用到众多的非线性模型中。


2、Sigmoid函数

σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1其中 x x x 表示上一层的输出。其函数图和导数图如下:
DL\ML--深度学习之非线性激励函数--概念题(4)_第1张图片求导得: σ ( x ) ′ = σ ( x ) ⋅ ( 1 − σ ( x ) ) \sigma(x)^{\prime}=\sigma(x) \cdot(1-\sigma(x)) σ(x)=σ(x)(1σ(x))。函数值在[0,1]之间,导数在[0,0.25]之间。取:激活函数为 A ( w i x i + b i ) A(w_{i}x_{i}+b_{i}) A(wixi+bi),输出的值为: y = A ( w i x i + b i ) y=A(w_{i}x_{i}+b_{i}) y=A(wixi+bi),输入的值: v = w i x i + b i v=w_{i}x_{i}+b_{i} v=wixi+bi。那么梯度更新为: w i + 1 = w i − η ∂ L ∂ w w_{i+1}=w_{i}-\eta\frac{\partial L}{\partial w} wi+1=wiηwL = w i − η ( ∂ L ∂ y ∂ y ∂ v ∂ v ∂ w ) =w_{i}-\eta(\frac{\partial L}{\partial y}\frac{\partial y}{\partial v}\frac{\partial v}{\partial w}) =wiη(yLvywv)其中 L 为损失函数,当 x x x − i n f -inf inf 或者 + i n f +inf +inf 的时候, σ ( x ) \sigma(x) σ(x)为 0 或者 -1,此时的梯度为 0。那么 ∂ y ∂ v \frac{\partial y}{\partial v} vy = 0,那么 w i + 1 = w i w_{i+1}=w_{i} wi+1=wi。这样权重 w w w 没有更新到。且 σ ( x ) \sigma(x) σ(x) 函数不是关于原点对称,均值接近0.5,不利于下一层学习,收敛速度慢。并且导数的最大值为0.25,太小了,小的不能再小了。

输出0均值的好处:举例来讲,如果所有均为正数或负数,那么其对的导数总是正数或负数,这会导致如下图红色箭头所示的阶梯式更新,这显然并非一个好的优化路径。深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出
DL\ML--深度学习之非线性激励函数--概念题(4)_第2张图片


3、tanh函数

tanh ⁡ x = e x − e − x e x + e − x \tanh x=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanhx=ex+exexex
DL\ML--深度学习之非线性激励函数--概念题(4)_第3张图片函数是零均值,函数范围为 [-1,1],导数范围为 [0,1]。但是无法缓解 梯度饱和 现象。


4、ReLu函数

ReLu ⁡ ( z ) = { z z > 0 0 z < = 0 \operatorname{ReLu}(z)=\left\{\begin{array}{ll}{z} & {z>0} \\ {0} & {z<=0}\end{array}\right. ReLu(z)={z0z>0z<=0
DL\ML--深度学习之非线性激励函数--概念题(4)_第4张图片

修正线性单元relu实际上是一个分段函数,梯度在 x >= 0 为 1, 反之为 0。x >= 0时,导数为1,完全消除了sigmoid函数的饱和效应;x<0时输出0,神经元不会被激活,意味着同一时间只有部分神经元会被激活,从而使得网络很稀疏,对计算来说非常有效率。计算复杂度上relu也相对sigmoid和tanh更为简单。实验中还发现relu函数有助于随机梯度下降方法收敛,收敛速度快6倍左右。但是仍然有缺陷。

在x<0时,梯度为0,这部分卷积结果响应一旦变为负值将无法影响网络训练,这种现象叫死区。有两个主要原因可能导致这种情况产生:

  • 非常不幸的参数初始化,中大奖,倒霉到家;
  • learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用自动调节learning rate的算法

你可能感兴趣的:(ML/DL概念理解)