CS231n學習筆記——批量歸一化(Batch Normalization)、監視訓練

CS231n學習筆記——批量歸一化(Batch Normalization)

想要保持單位高斯激活,那麼就需要做批量歸一化,即在神經網絡中額外加入一層,以使得中間的激活值均值爲0方差爲1。
在這裏插入圖片描述
如果我們想要正確的激活單位高斯函數,我們可以取目前處理的批數據的均值,利用均值和方差來進行歸一化,如果我們要在訓練的每一層都保持良好的高斯分佈,就需要進行批量歸一化。而且需要它能夠微分,這樣才能在梯度反向傳播的時候計算局部梯度。

這一步通常在全連接層(或卷積層)與激活函數之間進行。批量歸一化處理的是輸入數據而不是權重。
在完成歸一化操作後,需要進行額外的縮放操作,γ和β都是學習到的參數,用來恢復恆等函數。
在這裏插入圖片描述
批量歸一化改進了整個網絡的梯度流,具有更好的魯棒性,能夠在更廣泛的學習率和不同初始值下工作。所以一旦使用批量歸一化訓練會變得更容易。
也可以把它看作正則化的一種。

監視訓練

監視訓練過程並在訓練過程中調整超參數。
第一步,數據初始化,做零均值處理
第二步,選擇網絡結構,包括隱藏層數量,每層神經元數量等
第三步,完整性檢查
在這裏插入圖片描述
首先關閉正則項,loss的值
在這裏插入圖片描述
然後加入正則項,觀察到loss上升表示正確
第四步,開始訓練,先用一小部分數據訓練,確保訓練過程中loss在降低,準確率在上升
第五步,拿出全部數據訓練,加上一個小正則化項,然後從小值開始嘗試學習率,會存在一個loss變化不大,但是準確率上升的過程,這是因爲參數值依然分散,但是性能略有提升。
在這裏插入圖片描述

超參數最優化

對任何超參數,執行交叉驗證:在訓練集上訓練,然後在驗證集裏驗證效果。
在這裏插入圖片描述
如圖是在一定範圍內搜索最佳學習率。
通常來說學習率是最重要的參數,應該先確定它,之後像regularization正則化,學習判據和模型大小等並不是那麼敏感,所以應該來回迭代,先找出最佳學習率然後返回尋找其他超參數。

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