深度学习的问题及解决方法
主要面临的问题包括梯度弥散化,参数难调节,过拟合等。这几个问题最先解决的应该是梯度弥散化,即梯度消失和梯度爆炸,通过适当的参数初始化,可以缓解这个问题;在能收敛的情况下,需要对超参数进行调节,加快收敛速度;收敛后需要对bias和variance进行调节,防止过拟合。
1 梯度弥散化
使用ReLU代替sigmoid.优点在于单侧抑制,较宽阔的兴奋边界,稀疏激活性。更贴合神经元的工作原理。ReLU和变种已经成为最主流的激活函数。Hinton在论文中证明ReLu相当于一堆的sigmoid层。
合理参数初始化可以一定程度缓解特征消失和特征爆炸。对于tanh激活函数,参数矩阵可以用Xavier初始化,对于ReLu激活函数,吴恩达的建议如下图所示。
模型参数初始化(来自吴恩达的深度学习课程)2 参数难以调试,特别是对SGD
神经网络通常不是一个凸优化问题,充满了局部最优解。有理论表示,局部最优解也有可能达到比较好的效果,全局最优反而是过拟合的。
局部最优示意在高维空间中,很难遇到局部最优解,直观地理解,对每一维都有可能是凹函数或者凸函数,20000维的空间,局部最优的概率是2的-20000次方。所以,在高维空间,遇到比较多的是图中所示的鞍点。
对于SGD,刚开始的时候我们希望收敛快,而后面则希望稳定地落入局部最优解。通过Adagrad,Adam等自适应的算法可以减轻调试参数的负担。
3 过拟合
使用正则。通过把每层的正则加到最终的损失函数里,简化模型。直观理解,就是使得更多的参数为零。
使用Dropout进行采样,即在深度学习某一层输出的时候随机丢弃一些数据。增大样本量的同时,减少特征数,防止过拟合。
数据增强。在图像识别领域,可以通过旋转,变换,扩大标注样本集。模型大,数据少,可能导致过拟合,通过增强数据,可以解决样本少的问题。
提早结束训练(early stopping)。在梯度下降过程中,有时候会遇到,训练集的代价函数或者准确率随迭代轮次单调递减,到了验证集代价函数会先下降后上升,这时候就需要提早结束。出现这种情况,往往是因为越往后,参数w越来越大,出现过拟合。使用正则一般不会出现这种情况,但使用正则的话,参数λ的搜索空间比较大,所以有时候为了时间减少,可以在不使用正则的情况下,在不同的迭代轮次结束训练,选择较小的一组w。