神经网络的激活函数和训练技巧

326 阅读3分钟

线性模型是机器学习领域中最基本也是最重要的工具,以逻辑回归和线性回归为例,无论通过闭解形式还是凸优化,他们都能高效且可靠的拟合数据。然而在现实环境中我们大部分会遇到线性不可分的问题,需要非线性变换对数据的分布进行重新映射。在深度神经网络中我们每一层线性变换叠加一个非线性函数,以避免多层网络等效于单层线性函数,从而实现非线性问题的拟合分析。

1.激活函数

1.sigmoid

image.png

image.png

Sigmoid函数的特点是会把输出限定在0~1之间,如果是非常大的负数,输出就是0,如果是非常大的正数,输出就是1,这样使得数据在传递过程中不容易发散。

2.tanh

image.png

image.png

tanh是Sigmoid函数的变形,tanh的均值是0,在实际应用中有比Sigmoid更好的效果。

3.RELU

image.png

image.png

ReLU是近来比较流行的激活函数,当输入信号小于0时,输出为0;当输入信号大于0时,输出等于输入。

2.sigmoid和tanh导致梯度消失

sigmoid函数由上面的公式和区间分布可知,当变量很大时,结果趋近于1;当变量很小时,结果趋近于0;其导数在变量很大和很小时,得到的结果都是趋近于0,造成梯度消失的现象。

Tanh激活函数由上面的公式和区间分布可知,当变量很大时,结果趋近于1,;当变量很小时,结果趋近于-1;其导数在变量很大和很小时,结果都是趋近于0,同样会出现梯度消失。

3.Relu优点和改变

优点:

(1)从计算角度上,sigmoid和tanh激活函数均需要计算指数,复杂度高,而relu只需要一个阈值即可得到激活函数

(2)relu的非饱和性可以有效地解决梯度消失的问题,提供相对宽的激活边界。

(3)relu的单侧抑制提供了网络的稀疏表达能力。

缺点:

训练过程中会导致神经元死亡问题。由公式和区间分布可知,负梯度在经过改relu单元时被置为0,且在之后也不被任何数据激活,即流经该神经元的梯度永远为0,不对任何数据产生响应。

Lrelu、Prelu、RRelu等解决方法。

4.神经网络训练时参数设置

考虑全连接的深度神经网络,同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的,学习过程将无法打破这种特性,最终同一层网络层中的各个参数仍然是相同的。

我们需要随机的初始化神经网络参数值,打破参数对称性问题。

5.神经网络的模型优化

欠拟合和过拟合处理,除了一些机器学习的方式外,还有dropout,这里不具体介绍原理。