深度学习笔记(十)--深度神经网络的致命问题

随着神经网络层数的加深,有三个重大问题:

一是非凸优化问题,即优化函数越来越容易陷入局部最优解

二是(Gradient Vanish)梯度消失问题;

三是过拟合问题。

1、 非凸优化问题

线性回归,本质是一个多元一次函数的优化问题,设f(x,y)=x+y
多层神经网络,本质是一个多元K次函数优化问题,设f(x,y)=xy
在线性回归当中,从任意一个点出发搜索,最终必然是下降到全局最小值附近的。所以置0也无妨(这也是为什么我们往往解线性回归方程时初值为0)。
而在多层神经网络中,从不同点出发,可能最终困在局部最小值。局部最小值是神经网络结构带来的挥之不去的阴影,随着隐层层数的增加,非凸的目标函数越来越复杂,局部最小值点成倍增长,利用有限数据训练的深层网络,性能还不如较浅层网络。。避免的方法一般是权值初始化。为了统一初始化方案,通常将输入缩放到[−1,1],但是仍然无法保证能够达到全局最优,其实这也是科学家们一直在研究而未解决的问题。
所以,从本质上来看,深度结构带来的非凸优化仍然不能解决(包括现在的各类深度学习算法和其他非凸优化问题都是如此),这限制着深度结构的发展。

2、 (Gradient Vanish)梯度消失问题

这个问题实际上是由**函数不当引起的,多层使用Sigmoid系函数,会使得误差从输出层开始呈指数衰减。在数学上,**函数的作用就是将输入数据映射到0到1上(tanh是映射-1到+1上)。至于映射的原因,除了对数据进行正则化外,大概是控制数据,使其只在一定的范围内。当然也有另外细节作用,例如Sigmoid(tanh)中,能在**的时候,更关注数据在零(或中心点)前后的细小变化,而忽略数据在极端时的变化,例如ReLU还有避免梯度消失的作用。通常,Sigmoid(tanh)多用于全连接层,而ReLU多用于卷积层。
深度学习笔记(十)--深度神经网络的致命问题
Sigmoid
深度学习笔记(十)--深度神经网络的致命问题
ReLU
“梯度消失”现象具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。
幸运的是,这个问题已经被Hinton在2006年提出的逐层贪心预训练权值矩阵变向减轻,最近提出的ReLu则从根本上提出了解决方案。
2012年,Hinton组的Alex Krizhevsky率先将受到Gradient Vanish影响较小的CNN中大规模使用新提出的ReLu函数。
2014年,Google研究员贾扬清则利用ReLu这个神器,成功将CNN扩展到了22层巨型深度网络,见知乎。
对于深受Gradient Vanish困扰的RNN,其变种LSTM也克服了这个问题。

3、 过拟合问题

这就是神经网络的最后一个致命问题:过拟合,庞大的结构和参数使得,尽管训练error降的很低,但是test error却高的离谱


过拟合还可以和Gradient Vanish、局部最小值混合三打,具体玩法是这样的:
由于Gradient Vanish,导致深度结构的较低层几乎无法训练,而较高层却非常容易训练。
较低层由于无法训练,很容易把原始输入信息,没有经过任何非线性变换,或者错误变换推到高层去,使得高层解离特征压力太大。
如果特征无法解离,强制性的误差监督训练就会使得模型对输入数据直接做拟合。
其结果就是,A Good Optimation But a Poor Generalization,这也是SVM、决策树等浅层结构的毛病。
Bengio指出,这些利用局部数据做优化的浅层结构基于先验知识(Prior): Smoothness
即,给定样本(xi,yi),尽可能从数值上做优化,使得训练出来的模型,对于近似的x,输出近似的y。
然而一旦输入值做了泛型迁移,比如两种不同的鸟,鸟的颜色有别,且在图像中的比例不一,那么SVM、决策树几乎毫无用处。
因为,对输入数据简单地做数值化学习,而不是解离出特征,对于高维数据(如图像、声音、文本),是毫无意义的。
然后就是最后的事了,由于低层学不动,高层在乱学,所以很快就掉进了吸引盆中,完成神经网络三杀。

 

 

 

 

 

 

参考博客:https://blog.****.net/abc200941410128/article/details/79269386