1 L2正則化
L2正則化又被稱作權重衰減,因爲相當於在爲正則化的基礎上將之前的先衰減倍。
正則化爲啥能降低過擬合?
- 正則化會使一部分參數接近於0,相當於降低了一些隱藏層單元的影響,相對是模型變得簡單
- 因爲神經網絡使用了非線性激活函數,但是當w比較小時,z通常也會比較小,對有些激活函數來說會相對集中在近線性區,例如tanh中紅線部分,會使模型相對簡單。
2 Droup out 正則化
Droup Out 可以隨機刪除上鏡網絡中的單元,使得每次迭代只是用到了網絡的一部分,我們不願意把賭注都放在一個節點上,即不願意給任意一個輸入加入過多權重(這邊通過可能被隨機刪除實現),droup out將產生收縮權重的平方範數的效果,若覺得某層更容易過擬合,可與將對應層的keep_prob設置的小一點。Droup out一大缺點就是損失函數J不能被明確定義,每次迭代都會隨機移除一些節點,這導致我們無法check是否每一次都在朝梯度減小的方向運行,若想要debug,可以關掉Droup out。上圖以第3層舉例,這邊我們需要注意,爲了儘量不影響到第四層的計算,我們期望第3層的輸出期望不變,故在進行隨機失活後,我們會將第三層的輸出除以keep_prob,這邊keep_prob表示被保留的概率,keep_prob=1表示保留所有單元,即不做Droup out。
3 其他正則化
- 數據增廣
- early stopping:因爲權重參數通常是隨機初始化的比較小的數據,隨着迭代的進行,權重參數可能慢慢變大,及早停止,可能有部分權重參數還比較小
4 提升速度
- 數據歸一化,同傳統機器學習一樣,方便執行梯度下降
- 梯度消失/爆炸
產生原因:
下圖舉了一個🌰,深度神經網絡,激活函數使用恆等函數,權重矩陣相同,權重參數是這些層的所有的權重矩陣的乘積,相當於指數級別的增長,若參數大於1,則很容易變得很大,若小於1,則很容易變得很小。
再舉一個例子,假設前一層單元很多,則該層輸入很多,累加值有可能比較大,爲了防止值過大或過小,單元數n越大,我們希望權重參數越小,這樣累加值才小。所以在權重參數初始化的時候,我們可以在隨機初始化的基礎上除以輸入特徵規模相關。