其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应
梯度消失与梯度爆炸
梯度消失
主要原因:在反向传播的过程中,每层的梯度大于0小于1(sigmoid函数的最大梯度为0.25),经过很深的网络进行反向传播的时候,就会造成梯度接近0的情况,造成梯度消失
梯度爆炸
主要原因:网络太深、初始化权重太大、损失函数设计不合理、权重更新不稳定等原因造成的
解决办法
1、降低网络的深度,如果需要深度网络,可以使用resnet中的短链接结构以防止梯度消失(resnet中的短链接可以改善梯度消失问题,但是resnet主要不是解决梯度消失问题的 https://www.jianshu.com/p/09643588f373)
2、激活函数使用ReLU,代替sigmoid函数
3、使用BN(Batchnorm本质上是解决反向传播过程中的梯度问题)
4、使用权重正则化、梯度剪切(一般针对梯度爆炸使用)
5、加载预训练模型,在预训练模型上进行微调
过拟合与欠拟合
过拟合
表现:在训练集上的性能很好,但是在验证集上的性能很差,网络学习到了数据的特例信息,降低了网络的泛化能力,此时模型的方差较大
造成原因:模型太复杂,数据简单却选择了大模型,数据量有限
解决办法:
1、增加数据量<