梯度消失和梯度爆炸以及過擬合和欠擬合

其實梯度爆炸和梯度消失問題都是因爲網絡太深,網絡權值更新不穩定造成的,本質上是因爲梯度反向傳播中的連乘效應

梯度消失與梯度爆炸

梯度消失

主要原因:在反向傳播的過程中,每層的梯度大於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、增加數據量
2、降低網絡的複雜度
3、dropout
4、early stoping(早停)
5、參數正則化,降低過擬合,提高泛化能力(正則化的目的是用來防止過擬合的,所以增大正則化係數可以解決過擬合,減小則可以解決欠擬合)
6、使用BN(Batchnorm本質上是解決反向傳播過程中的梯度問題)

欠擬合

表現:在訓練集以及測試集上同時具有較高的誤差,此時模型的偏差較大
造成原因:模型太簡單,數據太複雜,網絡沒有學習到數據內容
解決辦法:
1、增加數據特徵項
2、適當增加網絡的複雜度
3、增加模型學習率
4、加載預訓練模型,微調網絡結構
5、使用集成學習方法、或者使用多模型融合

附:

relu的主要貢獻在於:
解決了梯度消失、爆炸的問題
計算方便,計算速度快
加速了網絡的訓練
同時也存在一些缺點:
由於負數部分恆爲0,會導致一些神經元無法激活(可通過設置小學習率部分解決)
輸出不是以0爲中心的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章