1. 什么是激活函数,为什么要用激活函数?
在神经元中,各个输入通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 。
如果不用激励函数,每一层输出都是输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
使用激活函数会给神经元引入了非线性因素,增强表达能力,使得神经网络可以任意逼近任何非线性函数。
2. 激活函数有哪些?
-
Sigmoid
优点:
1)处处连续看,便于求导
2)能够压缩数据,保证数据的幅度不会有问题
缺点:
1)容易出现梯度消失的现象:当激活函数接近饱和区时,变化太缓慢,导数接近0,根据后向传播的链式求导法则,当前导数需要之前各层导数的乘积,几个比较小的数相乘,导数结果很接近0,从而无法完成深层网络的训练。
2)导数计算涉及指数和除法(浮点计算)、计算量大
3)不是0均值。对参数的更新造成影响,例如,输出均为正数,那么对w的导数总是正数,输出是负数,导数也全为负数;这样每次返回的梯度都只会沿着一个方向发生变化,使得收敛缓慢 -
Tanh(双曲正切)
解决了sigmoid不是0均值的问题,但仍然存在梯度消失的问题 -
ReLu(线性修正单元)
ReLU=max(0, x)
优点:
1)对于sigmoid/tanh激活函数,极大的改善了梯度消失的问题
2)计算速度快
缺点:
1)对参数初始化和学习率非常敏感,存在神经元死亡;
2)ReLU的输出均值也大于0,偏移现象和 神经元死亡会共同影响网络的收敛性; -
Softmax
-
其他
Leaky Relu:负半轴不再为零,负半轴信息不会全部丢失,缓解神经元死亡的问题
Maxout:同一层的神经元分成几组,对每组内的神经元,求最大值作为神经元的输出。maxout可以看成是relu家族的一个推广。缺点在于增加了参数量
3. 人工神经网络中ReLu为什么比Sigmoid和tanh函数好?
4. 激活函数有什么性质?
- 非线性。当激活函数是非线性的,一个两层的神经网络就可以基本上逼近所有的函数,这也是激活函数的意义所在
- 可微性。保证优化过程中梯度是可计算的。
- 单调性。当激活函数是单调的时候,单层网络能够保证是凸函数。
- 输出范围有限。限的输出范围使得网络对于一些比较大的输入也会比较稳定
4. 正向传播
指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量和输出的过程,最后可以根据得到的输出y和真实值来计算损失函数。
5. 反向传输
指沿着从输出层到输⼊层的顺序,依次计算每层的参数的梯度。根据链式求导法则,第l层的参数的梯度,需要通过l+1层的梯度来求得,因此我们求导的过程是“反向”的。