神經網絡學習(九)優化方法:規範化

系列博客是博主學習神經網絡中相關的筆記和一些個人理解,僅爲作者記錄筆記之用,不免有很多細節不對之處。

規範化

本節,我們會討論一種最爲常用的規範化(regularization)手段——有時候被稱爲權重衰減(weight-decay)或者L2規範化(regularization)。L2規範化的想法是增加一個額外的項到代價函數上,這個項叫做規範化項。下面是\規範化的的交叉熵代價函數:

(1)C=1nxj[yjlnajL+(1yj)ln(1ajL)]+λ2nww2
其中第一項就是常規的交叉熵的表達式。第二項是所有權重的平方和,即規範化項。然後使用一個因子 λ/2n 進行量化調整,其中 λ>0 可以稱爲規範化參數,而 n 就是訓練集合的大小。我們會在後面討論λ 的選擇策略。需要注意的是,規範化項裏面並不包含偏置,這點我們後面也會再講述。

當然,對其他的代價函數也可以進行規範化,例如二次代價函數。類似的規範化形式如下:

(2)C=12nxyaL2+λ2nww2
兩者都可以寫成這樣:
(3)C=C0+λ2nww2
其中 C0 是原始的代價函數。直覺地看,規則化的效果是讓網絡傾向於學習小一點的權重,其他的東西都一樣的。在最小化代價函數時,大的權重只有能夠給出原始代價足夠的提升時才被允許。換言之,規範化可以當做一種尋找最小化權重和最小化原始代價函數的折中方法。這兩部分之間相對的重要性就由 λ 的值來控制了:λ 越小,就越偏向於最小化原始代價函數,反之,越向於最小化權重。

更新方程

我們需要知道如何計算網絡對權重和偏置的偏導數 C/wC/b 。對方程1 進行求偏導數得:

(3)Cw=C0w+λnw
(4)Cb=C0b
C0/wC0/b 可以通過反向傳播進行計算,我們看到其實計算規範化代價函數的梯度是很簡單的:僅僅需要反向傳播,然後加上λnw 得到所有權重的偏導數。而偏置的偏導數沒有變化,所以偏置的梯度下降學習規則不會發生變化:
(5)bbηC0b
權重的學習規則就變成:
(6)wwηC0wηλnw=(1ηλn)wηC0w
除了多添加了一個因子1ηλn 調整權重w ,上式和通常的梯度下降學習規則相同。這種調整權重的方法有時被稱爲權重衰減}(weight-decay),因爲它使得權重變小。粗看,這樣會導致權重會不斷下降到0 ,但實際不是這樣的,C0w 可能會讓權重增加。

好了,這就是梯度下降工作的原理。

那麼隨機梯度呢?正如在沒有規則化的隨機梯度下降中,我們可以通過平均m 個訓練樣本的小批量數據來估計C0/w 。隨機梯度下降的規範化學習規則就變成

(7)w(1ηλn)wηmxCxw

其中後一項是在訓練樣本的小批量數據x 上進行的,而Cx 是對每個訓練樣本的(無規範化的)代價。這其實和之前通常的隨機梯度下降的規則是一樣的,除了有一權重下降因子1ηλn 。最後,爲了完整,給出偏置的規範化學習規則。這當然是和我們之前的非規範化的情形一致了
(8)bbηmxCxb

這⾥求和也是在訓練樣本的⼩批量數據x 上進⾏的。

測試

兩種方案:

  1. ReLU激活函數+均方誤差代價函數+L2規則化
  2. Sigmoid激活函數+交叉熵代價函數+L2規則化

第一種方案的的一個測例:epoch = 100, mini_batch_size = 100, eta = 1(學習速率), lamda = 5(lambda是關鍵詞),網絡結構 = [784,30,50,10]

這裏寫圖片描述
最高識別率97.6%,加入規則化後能提高1%的識別率

第二種方案的的一個測例:epoch = 100, mini_batch_size = 100, eta = 1(學習速率), lamda = 5(lambda是關鍵詞),網絡結構 = [784,30,50,10]

這裏寫圖片描述
提升效果有限,但是未達到97.5%

下面是利用 Michael Nielsen 的程序中network2進行的測試,epoch = 30, mini_batch_size = 10, eta = 0.5(學習速率), lamda = 5(lambda是關鍵詞),網絡結構 = [784,30,10]

這裏寫圖片描述

下面是利用 Michael Nielsen 的程序中network2進行的測試,epoch = 100, mini_batch_size = 100, eta = 1 (學習速率), lamda = 5(lambda是關鍵詞),網絡結構 = [784,30,10]

這裏寫圖片描述

本節代碼可以在這裏下載到。

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