【深度学习问题整理】
一、梯度消失和梯度爆炸
1.參考 https://blog.csdn.net/qq_25737169/article/details/78847691
2.概念:
???? 在深度神經網絡中,通常采用BP方法更新權重,一般采用鏈式求導法則求得梯度來更新,導數項包括多個因式相乘,其中有激活函數的導數和初始值等。這時如果梯度過大連乘起來就會越來越大以至于超出范圍無法收斂這叫做梯度爆炸,反之如果梯度過小連乘起來就會越來越小甚至為0導致權重無法更新,此時稱為梯度消失。
3.原因:
梯度消失和爆炸:不合適的損失函數。
梯度爆炸:網絡權值初始值太大
4.解決方案:
梯度消失和爆炸:預訓練+微調;采用ELU(ReLU的變種)等激活函數;batchnorm(對每一層的輸出規范為均值和方差一致來保證網絡的穩定性,并加速收斂);
梯度爆炸:梯度剪切;權重正則化;
梯度消失:殘差結構(短路機制可以無損地傳播梯度,不會導致梯度消失)
二、BN層
1.原理:
直接做歸一化學不到特征,加入可訓練的參數做歸一化
參考 https://blog.csdn.net/qq_25737169/article/details/79048516
2.為什么需要BN層:
訓練深度網絡的時候經常發生訓練困難的問題,因為,每一次參數迭代更新后,上一層網絡的輸出數據經過這一層網絡計算后,數據的分布會發生變化,為下一層網絡的學習帶來困難。
3.用處:
加速神經網絡訓練,加速收斂速度及穩定性;Batchnorm是歸一化的一種手段,極限來說,這種方式會減小圖像之間的絕對差異,突出相對差異是歸一化的一種手段,能夠減少絕對差異,突出相對差異;
不用BN時,需小心設計學習率和權重初值,有了BN可以采用大的學習率,加快訓練;
本身是一種正則的方式,可以替代其他正則方法如droupout等;
4.方法:
首先計算均值和方差,然后歸一化,最后縮放和平移。
??????
三、預訓練
1.目的
規則化,防止過擬合;壓縮數據,去除冗余;強化特征,減小誤差;加快收斂速度。而采用ReLu則不需要進行pre-training。
四、Dropout
1.原理
詳細參考:https://blog.csdn.net/stdcoutzyx/article/details/49022443%20和 https://blog.csdn.net/u012702874/article/details/45030991%20
做法:深度學習網絡的訓練過程中,對于神經網絡單元,按照一定的概率將其暫時從網絡中丟棄。注意是暫時,對于隨機梯度下降來說,由于是隨機丟棄,故而每一個mini-batch都在訓練不同的網絡。
起作用的原因:用了dropout相當于每次在原模型中找到一個更瘦的網絡,最后的網絡可以看做模型的集合,訓練的參數卻是一樣多的;相當于增加了樣本集。
2.優缺點
優點:防止過擬合
缺點:訓練時間稍長
3.注意點
訓練的時候是用部分神經元,測試的時候沒有dropout,而是全部都用,將輸出結果進行縮小,即乘以訓練時的1-p。
為了使用方便,我們不在測試時再縮小輸出,而在訓練時直接將輸出放大1/(1-p)倍。
參考:https://www.cnblogs.com/welhzh/p/6648613.html
五、樣本不均衡問題
1.控制比例
2.focal loss
六、難分樣本
1.控制比例時,選擇訓練Loss高的樣本
2.難分樣本繼續加入訓練
七、喵喵喵
1.不控制正負樣本比例可以收斂?
2.SSD融合和EAST融合方式比較?
八、Loss=Nan
1.不當的Loss函數
2.梯度爆炸
3.輸入數據問題
4.步長大于核大小
?
轉載于:https://www.cnblogs.com/EstherLjy/p/9329020.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【深度学习问题整理】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark streaming 消费 k
- 下一篇: Luogu P2920 时间管理【二分答