深度學習筆記:正則化 1

1、訓練集/驗證集/測試集

訓練集:用於訓練模型。

驗證集(簡單交叉驗證集 cross validation set/development set/dev set):用於評估多種算法模型的性能,儘可能優化算法

測試集(test set):評估模型準確率

驗證集和測試集和可以合在一起,當我們不做無偏差估計的時候。

2、偏差、方差

偏差(bias):訓練集準確率。模型在訓練集表現越好,預測準確率越高,則偏差越低。換句話說,偏差大就是擬合度不夠。

方差(variance):驗證集準確率。模型在測試集表現越好,則方差越低。可能是擬合度不夠,也可能過擬合,把訓練集中的特徵過度提取,降低了泛化能力。

3、機器學習基礎方法

減小偏差的方法:1、更大規模的網絡。2、更長訓練時間/輪數(不一定有用)

減少方差的方法:1、更多的數據。2、正則化以減少過擬合。

找到一個合適的網絡結構(正則化良好的大網絡)可能對減小這兩個東西同時有幫助。

可以用訓練驗證集來檢測偏差、方差。

4、L2正則化

在損失函數L後面減去一個正則化項,L2正則化項是指權值向量w中各個元素的平方和然後再求平方根。由於有正則化項,所以反向傳播一層一層求梯度的過程中,每層的參數都會乘以一個(1 - lambda/m)的小於1 的係數,造成權重衰減。正則化參數lambda設置的越大,w權重矩陣中的值

機器學習中正則化L2和L1的直觀理解:http://blog.csdn.net/jinping_shi/article/details/52433975

L2正則化是如何影響權重矩陣w在更新使讓w中的數更接近0:http://blog.csdn.net/u012162613/article/details/44261657

5、dropout正則化(隨機失活)

設置一個參數keep-prob=一個概率,表示在這一層要把多少比例的神經元設爲失活。keep-prob用來乘以本層的輸出a,這樣就讓一部分神經元的輸出失效。

每一次迭代(訓練出一個模型),失活的神經元是不同的

6、直觀理解dropout

隨機失活就是在層之間添加一個BOOL類型的矩陣,隨機選擇矩陣中的0,1,用矩陣乘以該層的輸出a,隨機去掉本層一些節點。這些矩陣在每一輪訓練中隨機生成,所以每一輪訓練相當於對一個不同結構的網絡進行訓練。

一般我們在一些參數較多(容易發生過擬合)的層上應用dropout,對於不會過擬合的層,keep-prob可以設爲1。計算機視覺領域通常用dropout來正則化。

爲什麼它有助於防止過擬合?http://blog.csdn.net/stdcoutzyx/article/details/49022443http://blog.csdn.net/u012162613/article/details/44261657

7、其他正則化方法

可以用微修改原圖片的方式增加訓練集的數據量,也可以用早停的方式,在訓練集偏差仍減小,但測試集方差將增大時停止訓練。

8、正則化輸入(normalizing inputs)

第一步:均值化0。第二步:歸一化樣本中的每一個參數,比如輸入訓練集X有x1、x1兩個參數,共有m個樣本,即有m個x1、x2,我們要讓m個x1和x2的方差相同(同分布)。作用是可以加速訓練,因爲進行對損失函數的優化過程中(梯度下降),即找損失函數的最/極值得過程中,同分布可以讓梯度下降更快到達最/極小值,這樣我們就可以用更大的步長,從而加快訓練。

用這種方法,也要對測試集進行歸一化輸入。

9、梯度消失和梯度爆炸

指梯度特別小或者特別大的情況,會導致迭代訓練過慢或者不穩定

10、神經網絡的權重初始化

爲解決梯度消失、梯度爆炸的問題,應該妥善隨機初始化權重w[l]。在Relu激活函數中,我們通常會用w[l]=np.random.rand(shape) * np.sqrt(2/n[l-1]),一種高斯分佈的隨機初始化。np.sqrt(2/n[l-1])是初始化權重過程中可以調節的超參數,它一般不是首要調節的超參數。

11、梯度的數值逼近(雙邊梯度檢測)

講述的是一種進行梯度檢測的方法,使用的是雙邊檢測來檢測某個點x的導數近似值(f'(a) = ( f(a+v) - f(a-v) ) / 2v , 其中,v是一個非常小的數),而不是單邊,這樣的導數近似值更準確,因爲更加接近微積分的定義。

12、梯度檢測

梯度檢測可以檢查反向傳播的實現過程中的BUG。這樣,由雙邊梯度檢驗算出某點梯度的近似值,與真實值比較,(比較過程設計矩陣的範數等計算,不過有些類似於矩陣各個位置之差相加後再開平方這種),如果比較地差值小,比如小於 10^-7 這種,可以認爲反向傳播的實現是正確的,如果比較大,比如 10^-3,應繼續debug

總結:

13、實現梯度檢測


* 正則化是爲了防止過擬合,減小模型的方差,提高泛化能力。

* 正則化輸入是爲了讓訓練正常進行,不會發生過慢等情況。

* 梯度檢測是爲了確保模型中反向傳播算法的正確實施

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