概述:
本文论述了深度学习过程中经常存在的梯度爆炸、梯度消失和拟合问题以及主要解决方法。
梯度爆炸是什么? 梯度爆炸的影响训练阶段出现梯度爆炸时的表现如何缓解梯度爆炸的梯度消失? 什么是梯度消失? 梯度消失的影响如何解决梯度消失问题什么是过拟合? 如何解决拟合问题? 参考资料1什么是梯度爆炸1.1梯度爆炸? [1]
反向传播过程中使用的是链式求导规律,当逐层偏导数大于1时,乘积和呈指数增长,误差梯度累积,引起梯度爆炸。
1.2梯度爆炸的影响
梯度爆炸会导致模型权重更新幅度过大,模型变得不稳定,无法有效学习,还会出现无法进一步更新的NaN权重值。
1.3训练阶段出现梯度爆炸时的表现
模型不会从训练数据中更新(低损耗等) () ) ) ) )。
型号不稳定,更新过程中损失变化幅度过大
在训练中模型的权重为NaN值
训练中,各节点和层的误差梯度值持续超过1.0
1.4如何缓解梯度爆炸
减少缩短步骤(RNNs )
设定坡度阈值,超过后切断
使用加权正则化
采用Relu、leakRelu、elu等激活函数
采用正规化(BN、LN、)
2坡度消失2.1坡度消失是什么?
反向传播过程中使用的是链式求导规律,如果每阶偏导数小于1,则乘积更小,误差梯度接近0时梯度消失。
1.2坡度消失的影响
坡度消失后,模型权重将不会更新,模型将无法学习。
1.3缓解坡度消失的方法
减少缩短步骤(RNNs )
采用Relu、LeakRelu、elu等激活函数
采用正规化(BN、LN、)
采用残差链接
3过拟合3.1过拟合是什么?
过拟合是模型参数拟合过程中的一个问题。 由于训练数据中含有采样误差,训练时复杂模型还考虑了采样误差,很好地拟合了采样误差。 具体而言,表明最终模型在训练集中效果较好的测试集中效果较差,模型泛化能力较弱。
3.2如何缓解拟合
(一)数据上
从数据源中获取更多增长
数据增强
对输入数据施加随机噪声
(二)模型上
缩小网络结构
多模型融合、集成学习
(三)培训阶段
Dropout[4]
Dropout的机制主要是在训练过程中,通过忽略一定比例的神经元(使隐藏层节点的值为0 )来减少神经元(隐藏层节点)之间的相互作用。 也就是说,在前向传播时,将某个神经元的激活值以一定的概率p停止,可以使模型的通用性更强,而不太依赖于某个局部特征。
代码实现:
defdropout(x, level ) : if level0. or level=1: # level是概率值,介于0和1之间(raisevalueerror (dropoutlevelmustbeinintervance ) ) retain _ prob=1.-level random _ tensor=NP.random.binomial (n=1,p=retain_prob,size=x.shape(#0,1,) )
将权重添加到噪声中
提前结束(Early stopping ) ) ) )。
标签平滑(Label Smooth ) ) ) ) ) ) ) )。
4参考资料[1]了解神经网络中的梯度爆炸
[2]详细了解坡度消失和爆炸的原因及其解决方法
[3]在机器学习中防止过拟合的方法是什么?
[4]Drop大法