文章目录
- 问题1:梯度消失
- 问题2:梯度爆炸
- 问题3:过拟合
- 问题4:欠拟合
- 问题5:退化现象
问题1:梯度消失
定义:网络反向传播权值越算越小到最后权值可以忽略不计了。
判断方法:随着隐藏层数目的增加,分类准确率下降。
原因:网络太深,网络权重更新不稳定造成的,本质上是因为梯度方向传播的连乘效应。
解决方案:
①使用Relu、LeakRelu、Elu等激活函数;
ReLU的作用:①解决了梯度消失、爆炸的问题②计算方便,计算速度快③加速了网络的训练
②加BN层;
BN的作用:①加速网络收敛速度 ②可以改善梯度消失问题
③使用残差网络结构;
④使用长短期记忆网络(LSTM);
⑤预训练微调。
问题2:梯度爆炸
定义:网络反向传播权值越来越大,以指数形式增长。
判断方法:随着隐藏层数目的增加,分类准确率下降。
原因:网络太深,网络权重更新不稳定造成的,本质上是因为梯度方向传播的连乘效应。
解决方案:
①梯度剪切:思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸
②权重正则化:比较常见的是l1正则,和l2正则;
③使用Relu、LeakRelu、Elu等激活函数;
④加BN层;
⑤使用残差网络结构;
⑥预训练微调,权重初始化调小。
问题3:过拟合
定义:训练集准确率高(loss小)而验证集准确率低(loss大)。
判断方法:对比训练集和验证集准确率和损失,如果相差过大就有可能过拟合了。
解决方案:
①权重衰减,即L1、L2正则化;
②提前停止;
③扩大训练集样本、数据增强;
④重新选用合适的模型,减小网络容量;
⑤添加Dropout;
⑥参数共享与参数绑定;
⑦bagging:可以组合多个模型起到减少泛化误差的作用;
⑧辅助分类器:在Google Inception V1中,采用了辅助分类节点的策略,即将中间某一层的输出用作分类,并按一个较小的权重加到最终的分类结果中,这样相当于做了模型的融合,同时给网络增加了反向传播的梯度信号,提供了额外的正则化的思想;
⑨加入BN层:在Google Inception V2中所采用,是一种非常有用的正则化方法,可以让大型的卷积网络训练速度加快很多倍,同时使得收敛后分类的准确率也可以大幅度的提高;
⑩使用交叉验证方法。
问题4:欠拟合
定义:网络学习不到东西,在训练集时准确率就很差(loss高)。
解决方案:
①寻找最优的权重初始化方案;
②使用适当的激活函数,如ReLU;
③选择合适的优化器和学习率。SGD,Momentum、Adagrad、Adadelta。可以选择开始用Adadelta,快收敛时用SGD,即优化器的组合效果会更好;
④选择更深、更复杂的模型,以此来学习到更多特征。
问题5:退化现象
定义:随着网络深度的增加,准确率开始达到饱和并且在之后会迅速下降。
原因:网络过于复杂,训练不加约束。
解决方案:使用残差网络结构。