深度学习算法之过拟合、局部最小值和梯度弥散·

来源:互联网 发布:雅可比矩阵的计算 编辑:程序博客网 时间:2024/05/29 04:48

紧接着上文优化方法总结一下优化方法是从哪些地方入手的。
The Difficulty of Training Deep Architectures and the Effect of Unsupervised Pre-Training
一、局部最小值
求解函数的梯度,当梯度值为0时,可以说该点是该函数的极大值或者极小值。当把定义域内的所有极值点都求出来,进行比较之后,最终可以确定函数在定义域内的最值。

如果函数是凸函数,那么极值点就是最值点。

可以说极值点就是局部最小值,最值点就是全局最小值。(不考虑边界)

由于有界集上的连续可微函数是一定能通过梯度下降法找到极值点的。对于凸函数,从任意一点出发,沿着梯度下降的方向走,最终一定下降到全局最小值附近,而非凸函数,从任意一点出发,沿着梯度下降方向最大可能则是走向那个离出发点最近的局部最小值basin of attraction。

但是多层神经网络恰恰不是凸函数,所以理论上存在多个局部最小值,而且随着层数的增加,局部最小值就越多,这就是CNN的致命缺陷之一。

如何针对局部最小值进行优化呢?

首先,就是优化起始点。

1、均匀分布初始权重(Uniform distribution)
2、高斯分布初始权重(Gaussian distribution)
3、PositiveUnitball
4、Xavier
5、MSRA
6、Bilinear

然后,就是在梯度下降中自适应的调节学习率,使得梯度有可能跳出某个局部最小值。caffe中的solver

比如加入动量的梯度下降,在梯度下降后期陷入局部最小值的时候,有可能借助之前相同的动量越出局部最小值。

二、梯度弥散

激活函数与梯度弥散

梯度弥散造成梯度反向传播在最后几层就结束了,不管后面训练的再好,前面的网络仍然一塌糊涂。

三、过拟合

拟合能力强,预测能力弱。

解决方法:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout,BN

从三个方面讲:

第一就是输入,数据集越大,网络的泛化能力越强;

第二,从输出的角度讲,密切关注loss的变化趋势,当loss变化不在陡峭,趋于平缓时,就可以提前结束训练过程,防止过拟合;

最后,从网络结构的角度,过拟合说明网络结构太复杂,可以使用dropout或者BN进行结构的瘦身。

0 0
原创粉丝点击