1. 過擬合和欠擬合
欠擬合:是指模型沒有能夠很好的表現資料的結構,而出現的擬合度不高的情況,
過擬合:是指模型過分的擬合訓練樣本,但對測驗樣本預測準確率不高的情況,也就是說模型泛化能力很差,
欠擬合
資料特征少 ---------> 升維(特征擴展)(馬賽克,曝光度,增加噪聲)
資料量少 ---------> 獲取更多的資料
模型過于簡單 --------> 遷移學習,使用更復雜的模型
過擬合
資料特征多-------->降維(PCA,SVD),篩選特征,正則化 ,droupout
特征資料范圍差距大---------->資料縮放(歸一化,標準化)
模型過于復雜 ------------->梯度爆炸,遷移學習 ,梯度剪切:梯度閾值(在保證模型準確率下降不多的情況下,大幅度減少模型引數),正則化:L1
2. 梯度消失和梯度爆炸
梯度消失:經過神經網路計算后,梯度衰減為0的情況
梯度爆炸:經過神經網路計算后,梯度變得無限大,超過了運算范圍
梯度消失與梯度爆炸其實是一種情況,兩種情況下梯度消失經常出現:
一是在深層網路中,采用了不合適的損失函式,梯度縮減為0,比如sigmoid,
二是梯度爆炸一般出現在深層網路和權值初始化值太大的情況下,
梯度消失解決辦法:
1.更換激活函式 sigmoid---->relu
2.殘差學習 resnet
3.batchnorm:對神經網路隱藏層做特征縮放,提高精確度,
梯度爆炸:
1.梯度剪切:Dropout
2.正則化:L1正則化,L2正則化
一般情況下,對于同一組訓練資料,利用不同的神經網路訓練之后,求其輸出的平均值可以減少過擬合,Dropout就是利用這個原理,每次丟掉一半左右的隱藏層神經元,相當于在不同的神經網路上進行訓練,這樣就減少了神經元之間的依賴性,即每個神經元不能依賴于某幾個其它的神經元 ,使神經網路更加能學習到與其它神經元之間的更加健壯robust(魯棒性)的特征,另外Dropout不僅減少overfitting,還能提高準確率,
總之,正則化是通過給cost函式添加正則項的方式來解決過擬合,Dropout是通過直接修改神經網路的結構來解決過擬合,

注意:不能同時使用正則化和Dropout減少過擬合,正則化減少特征,或特征變為0,而dropout也是減少特征的,所以不能同時使用,
建議:一般都可以使用Dropout解決過擬合問題
回歸演算法中使用L2范數相比于Softmax分類器,更加難以優化
對于回歸問題,首先考慮是否可以轉化為分類問題,比如:用戶對于商品的評分,可以考慮將得分結果分成1~5分,這樣就變成了一個分類問題,
如果實在沒法轉化為分類問題的,那么使用L2范數的時候要非常小心,比如在L2范數之前不要使用Dropout,
一般建議使用L2范數或者Dropout來減少神經網路的過擬合
激活函式總結:激活函式包括sigmoid,tanh,relu,softmax,sigmoid激活函式采用缺值方式進行分類,而softmax多分類采用最大概率進行分類,sigmoid激活函式,可以解決二分類問題,但對于多分類問題,sigmoid不能解決,由于其值域為[0,0.25],其代價函式引起梯度消失;而tanh激活函式其值域為[0,1],較優于sigmoid激活函式,但也容易引起梯度消失;relu激活函式在(0,+無窮)不易引起梯度消失,而在(-無窮,0)值為0,從而引出leaky relu激活函式;而softmax函式:f(x)=ln(e^x+1),用于多分類神經網路輸出,
3. 梯度下降演算法
梯度下降演算法包括:批量梯度下降(Batch Gradient Descent,BGD)、小批量梯度下降(mini-BGD)、隨機梯度下降(Stochastic Gradient Descent,SGD).
批量梯度下降(BGD):每次迭代更新時,計算m個樣本的梯度做梯度下降(總樣本數為m)
優點:1.每次計算整個資料集梯度來更新引數
2.處理大型資料時速度很慢,甚至可能導致記憶體溢位
3.計算量比SGD大
4.在凸面誤差曲面中可以收斂得到全域最優值,
隨機梯度下降(SGD):每次迭代更新時,計算一個樣本的梯度做梯度下降(總樣本數為m)
優點:1.每次使用單個樣本進行訓練
2.處理大型資料時,速度更快
3.頻繁的引數更新使得引數間具有高方差
小批量梯度下降(mini-BGD):每次迭代更新時,計算n(1<n<m)個樣本的梯度做梯度下降(總樣本數為m)
優點:1.每次引數更新都使用多個訓練樣本進行計算
2.可以減少引數更新的波動,最終得到效果更好和更穩定的收斂
總之,小批量梯度下降,是對批量梯度下降以及隨機梯度下降的一個折中辦法,其思想是:每次迭代 使用 ** batch_size** 個樣本來對引數進行更新
每次選取n個資料作為下降計算的資料(1<n<m),n取值范圍最好為50-255范圍內,
優點:通過矩陣運算,每次在一個batch上優化神經網路引數并不會比單個資料慢太多,每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的效果,(比如上例中的30W,設定batch_size=100時,需要迭代3000次,遠小于SGD的30W次)可實作并行化
缺點:batch_size的不當選擇可能會帶來一些問題,
4. 梯度下降演算法優化器
4.1 momentum 動量優化器
動量優化器模仿小球,從A點滾動到B點的時候,小球帶有一定的初速度,在當前初速度下繼續加速下降,小球會越滾越快,更快的奔向谷底,momentum 動量法就是模擬這一程序來加速神經網路的優化的,
原始的梯度下降公式
w_new=w?αΔw
α為學習率,w為權重
動力優化器公式為
v_t=βv_t?1+αΔw
w_new=w?v_t
β為調整引數,一般設定為0.9
記錄上一次的運動量提供給當前梯度下降
4.2 Adagrad優化器

從Adagrad優化演算法中可以看出,隨著演算法不斷迭代, r會越來越大,整體的學習率會越來越小,這樣做的原因是隨著更新次數的增大,我們希望學習率越來越慢,因為我們認為在學習率的最初階段,我們距離損失函式最優解還很遠,隨著更新次數的增加,越來越接近最優解,所以學習率也隨之變慢,
優點:學習率自動更新,隨著更新次數增加,學習率隨之變慢,
缺點:分母會不斷累積,這樣學習率就會后所并最終變得非常小,演算法會失去效用,
4.3 RMSprop優化器
RMSprop優化器是一種改進的Adagrad優化器,通過引入一個衰減系數,讓r每回合都都衰減一定的比例,
RMSprop優化器很好的解決了Adagrad優化器過早結束的問題,很合適處理非平穩目標,對于RNN網路效果很好,

Adam( Adaptive Moment Estimation ):是從Adagrad、Adadelta上發展而來,Adam為每個待訓練的變數,維護了兩個附加的變數m_t和v_t:
m_t=β_1m_t?1+(1?β_1)g_t (mt-相當于變化的學習率)
v_t=β_2v_t?1+(1?β_2)g_t^2 (vt-動量)
其中t表示第t次迭代,g_t是本次計算出的梯度,從形式上來看m_t和v_t分別是梯度和梯度平方的移動均值,從統計意義上看,m_t和v_t是梯度的一階矩(均值)和二階矩(非中心方差)的估計,因此而得名,
| 梯度優化器演算法 | 作用 | 區別 | 好處 |
|---|---|---|---|
| momentum梯度演算法 | 指數加權平均數先平方再開方 | 添加了動力優化器;如果給了你一個初動量,那么你到達曲線最低點的速度是大于沒有初動量的;下降的速度是普通梯度下降快10倍;momentum=0.9還可以更容易跳出區域最優解 | 占用極少記憶體 |
| rmsp演算法 | 通過指數加權平均數和學習率控制梯度下降的 | 引入衰減系數,隨著學習率變小,學習率衰減的比率也變小 | |
| adam演算法 | 同時使用動量梯度演算法和rmsq演算法 | 結合了momentum和rmsp優化器優點,效果更好 |
5. batch歸一化、dropout、正則化區別
batch歸一化:主要對神經網路的輸入層和隱藏層的z做歸一化,
dropout:隨機取消一些節點,削弱了神經元節點之間的聯合適應性,增強了泛化能力,即剪枝,防止過擬合,
正則化:例如L1,L2正則化,防止過擬合,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/413653.html
標籤:其他
上一篇:SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation
