网络优化之激活函数介绍
激活函数:神经网络的信号经过非线性的激活函数传递。正是由于非线性函数的反复叠加,才使得神经网络有足够的非线性拟合能力。选择不同的激活函数会影响整个深度神经网络。
1.Sigmoid函数
公式
函数图像
Sigmoid是传统神经网络使用频率最高的函数它平滑,便于求导。旦易出现梯度消失的问题。
函数输出不是0中心【输出值恒大于0】,这会使得模型训练的收敛速度变慢,且使用的是幂运算,也比较耗时。
2.Tanh函数
公式:
图像
Tanh函数解决了非0中心问题,但是梯度消失和幂运算的问题仍然存在
解释一下为什么非0中心函数会使得网络收敛变慢,简单来说的话非0中心的激活函数会使得返回的权值梯度都是同一符号的,即所有的权值都只能往一个方向移动,所以会需要更多的迭代次数。详细的话可以看这篇博客
3.ReLU函数
公式: f(x)=max{0,x}
图像:
- ReLU非全区间可导,但计算过程中可以取子梯度
- ReLU在正区间内解决了梯度消失的问题。而且只需要判断是否大于零即可,计算速度快,收敛快。但是ReLU仍不是0中心函数,且存在Dead ReLU Problem
- Dead ReLU Problem:即某些神经元可能永远不会参与计算,从而无法更新权值。产生的原因:可能由于参数初始化及学习率太高导致训练时参数更新过大,网络会进入这种状态
- 解决方法是采用Xavier初始化方法;学习率避免设置太大或使用adagrad等自动调节学习率的方法。
4.Leaky ReLU
公式:
图像:
- 为了解决Dead ReLU问题而提出的函数。
- 理论上将Leaky ReLU具有ReLU函数的所有优点,且不会出现Dead ReLU问题,应该比ReLU更好,但是实际效果上却不总是如此。
5.指数线性单元ELU函数
公式:
图像:
- 这个函数被证实了有较高的噪声鲁棒性,同时能够使神经元的平均激活均值趋向于0。但是需要进行指数计算,计算量大。
6.SELU函数
公式:
- 相当于对ELU函数乘以了一个系数
图像:
归一化网络提出后发现,把激活函数换成SELU,就能使得输入在经过一定层数后,变成固定分布。
7.softmax
公式:
图像:
- softmax 可视为Sigmoid的泛化形式
- 其本质是将一个K维的任意实数向量压缩成另一个K维实数向量。其中向量的每个元素取值都介于0~1之间。
- 一般用于多分类神经网络输出。