深度學習——提高網絡性能(一)

一、偏差/方差:
深度學習很少談論偏差,方差權衡問題,一般都是分開討論:

high bias(underfitting):在訓練集上表現的不好
high variance(overfitting):在測試集表現的不好
如下圖所示,可以通過training error and dev error 來判斷擬合程度:

二、機器學習基礎:
在機器學習中通常會考慮方差、偏差均衡問題,需要設計算法使減低任何一方的同時很少影響另一方,而在深度學習中我們不太需要考慮這一點。
通常解決辦法: (training data performance)high bias-->1、增加網絡的深度或增加隱含層節點數(主要);2、優化算法;3、考慮神經網絡架構問題(不常需要考慮)
(dev data performance)high variance-->1、增大數據量(主要);2、正則化;3、考慮神經網絡框架
四三、正則化:
1、Logistic Regression:
L1正則化、L2正則化:公式入下圖所示:使用L1正則化會使權重稀疏化
其中λ被稱作regularization parameter,它可以通過交叉驗證尋得最優值。

Neural Network:
Frobenius norm (weight decay)不稱作L2 Regularizaion

如果λ設置的很大,權重矩陣W會被設置爲接近0的數,調整λ會使權重的影響發生變化(變小),不容易發生過擬合
so如果正則化參數變得很大,參數W會變小,Z也會相對變小,這使得激活函數逼近線性,整個神經網絡會計算離線性函數近的值,所以不會過擬合

Dropout Regularization(隨機失活):
遍歷每一層——設置節點概率——消除一些節點——刪除與節點有關的連接
keep_prob:表示保留某個隱藏單元的概率,消除一個隱藏單元的概率爲1-keep_prob-->生成隨機矩陣
inverted dropout(例:設層數爲3):
d3 = np.randn.random(a3.shape[0], a3.shape[1]
a3 = np.multiply(a3, d3)<keep_prob
a3 = a3/keep_prob    #確保a3期望值不變

因爲z4 = W4·a3+b4 a3有1-keep_prob的元素歸零,爲了不影響z4的期望值,/keep_prob將會修正或彌補1-keep_prob概率的那部分
在預測測試階段不使用dropout,因爲測試時候我們不希望輸出的結果是隨機的

如果擔心神經網絡的某些層容易發生過擬合,可以把這些層的keep_prob值設置的比其他層的更低
dropout在計算機視覺中應用的比較多,dropout是個正則化方法有助於預防過擬合,在其他領域用的很少
關閉dropout確保J函數單調遞減,然後在打開它,這樣不會引入bug

其他正則化的方法:
數據增廣,data augmentation,或者early stopping

歸一化輸入(一個加速訓練的方法):如果特徵值處於相似範圍,歸一化不是很重要了就。
第一步:零歸一化;第二步:歸一化方差
如下圖左邊,必須使用很小的學習率多次迭代才能找到最小值,如果函數是一個更圓的球形輪廓,梯度下降法能更快找到最小值。

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