神经网络的梯度消失和过拟合产生原因及其解决方案
梯度消失
梯度消失原因
當神經網絡層數加深時,可能會出現一些問題。
- 梯度消亡:訓練過程非常緩慢
- 過擬合,在訓練數據上表現得很好,在測試集上表現得很差。
梯度消亡的現象:神經網絡輸入端的網絡層的系數逐漸不 再隨著訓練而變化,或者變化得很緩慢。隨著網絡層數增加,這個現象越發明顯。
梯度消失的前提:
- 使用基于梯度的訓練方法(梯度下降算法)
- 使用的激活函數具有輸出值遠遠小于輸入值的范圍,如Logistic,tanh。
梯度消亡問題分析
- 梯度下降算法依靠理解系數的微小變化對輸出的影響來學習網絡系數的值。如果一個系數的微小變化對網絡的輸出沒有影響或者影響非常小,那么就無法知道如何優化這個系數,或者優化得非常慢,造成訓練的困難。
- 使用梯度下降算法訓練網絡,如果激活函數具備輸出值范圍遠小于輸入值范圍,那么就會出現梯度消失,例如,雙曲正切函數tanh將 -∞到+∞的輸入壓縮到輸出-1到+1之間,除開-6到+6之間的數,其他輸入值的梯度變化都非常小,接近于0。如圖藍色為tanh函數,紅色為梯度
梯度消失解決方案
- 使用激活函數relu,輸入大于0,梯度為1,否則為0
- 使用激活函數leakyrelu:輸入大于等于0,梯度為1,否則為a。
- 采用不使用梯度的訓練方法,如基于遺傳進化算法,粒子群優化
過擬合
深度神經網絡面臨的第二個問題:過擬合。
以二分類問題為例
我們需要找到一條線把兩類分開。過擬合就是在訓練集表現得太好,沒有找到普遍規律,在測試集上錯誤反而比較高。_
常用的過擬合解決方案:
- dropout
- L2正則化
- L1正則化
- MaxNorm(最大范數)
dropout
首先需要選擇rate,如選擇1/3
在一輪訓練中,有1/3的隱含層神經元被舍棄用,如圖1,
第二輪中,又有隨機1/3的隱含層神經元被舍棄用,如圖2
在第三輪中,又有隨機1/3的隱含層神經元被舍棄用,如圖3
最后結束后,使用整體網絡,和每個神經元系數,因為之前網絡變小(只有部分神經元發揮作用)時得到的是輸出值,這次網絡變大了,所以最每個神經元系數要乘以(1-dropout rate)
L2正則化
L1正則化
最大范數約束
-
對每一個神經元對應的系數向量,設置一個最大第二范數值C,這個值通常設為3,如果一個神經元的第二范數值大于C,那么將每一個系數值按比例減小,使得第二范數值等于C
-
在訓練的每一次更新系數的時候都額外加上這一步:
-
由于最大范數的約束,可以防止由于訓練步長較大引發的過擬合。
神經元系數的初始化
這里和過擬合無關
bias(偏置系數):初始化為0
普通系數:初始化為
n為神經元中輸入元素的個數。
作者:電氣工程的計算機萌新-余登武
總結
以上是生活随笔為你收集整理的神经网络的梯度消失和过拟合产生原因及其解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GameFi是什么意思 继DeFi后币圈
- 下一篇: 蟹券的套路 没有螃蟹一张券赚一百