神经网络和深度学习 | ||
---|---|---|
上一篇 | 主目录 | 下一篇 |
【前言】
使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。 在不同的场景下使用不同的激活函数效果会有差别。
1. 什么是激活函数
激活函数(Activation functions 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。如下图:
2. 为什么要使用激活函数
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
我们知道,训练一个神经网络的过程就是通过训练集的数据,不断地进行正向和反向(梯度下降)的传播迭代,直到完成一定的迭代次数或者满足函数损失小于某阈值,然后得到的是一组相应的参数集W,b。通过这个参数集,我们输入要进行预测的自变量X就可以得到预测结果Yhat。很多情况下这样的拟合出来的函数曲线都不是线性的,为了能够拟合出非线性函数,激活函数就发挥了重要的作用。它将神经网络改变乘非线性,这样就有了逼近任何非线性函数的可能。
3. 激活函数的种类
sigmoid函数:
tanh函数:
ReLU和Leaky ReLU函数:
4. 不同激活函数的使用场景
- 通常的情况下,tanh (双曲正切)函数是总体上都优于 sigmoid 函数的激活函数。事实上,tanh 函数是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了(0,0)点,并且值域介于+1 和-1 之间。因为函数值域在-1 和+1 的激活函数,其均值是更接近零均值的。在训练一个算法模型时,如果使用 tanh 函数代替 sigmoid 函数中心化数据,使得数据的平均值更接近 0 而不是 0.5。基本已经不用 sigmoid 激活函数了,tanh 函数在 所有场合都优于 sigmoid 函数。
- 但有一个例外:在二分类的问题中,对于输出层,因为 y的值是 0 或 1,所以想让yhat的 数值介于 0 和 1 之间,而不是在-1 和+1 之间。所以需要使用 sigmoid 激活函数。
- sigmoid 函数和 tanh 函数两者共同的缺点是,在 z特别大或者特别小的情况下,导数的 梯度或者函数的斜率会变得特别小,最后就会接近于 0,导致降低梯度下降的速度。
- 在机器学习另一个很流行的函数是:修正线性单元的函数(ReLu),只要z是正值的情况下,导数恒等于 1,当z是负值的时候,导数恒等于 0。从实际上来说,当使用 z的导数时,z=0 的导数是没有定义 的。但是当编程实现的时候,z的取值刚好等于 0.00000001,这个值相当小,所以,在实践 中,不需要担心这个值,z是等于 0 的时候,假设一个导数是 1 或者 0 效果都可以。
- ReLU或Leaky ReLU 两者的优点是: 第一,在z的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于 0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中, 使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。 第二,sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥 散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。(同时应该注 意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性, 而 Leaky ReLu 不会有这问题) z 在 ReLu 的梯度一半都是 0,但是,有足够的隐藏层使得 z 值大于 0,所以对大多数的 训练数据来说学习过程仍然可以很快。
基于经验法则,总结起来就是:
场景 | 使用的激活函数 |
---|---|
0、1二分类问题 | 输出层用sigmoid,其他用ReLU |
大多数场合 | tanh几乎适用于任何场合 |
大多数场合 | ReLU最常用的默认函数,如果不确定使用哪个就用ReLU或Leaky ReLU |
5. 激活函数的导数
在神经网络中使用反向传播的时候,你真的需要计算激活函数的斜率或者导数。针对以 下四种激活,求其导数如下:
1)sigmoid activation function
2) Tanh activation function
3)Rectified Linear Unit (ReLU)
4)Leaky linear unit (Leaky ReLU)
神经网络和深度学习系列笔记: 传送门