系列博客是博主學習神經網絡中相關的筆記和一些個人理解,僅爲作者記錄筆記之用,不免有很多細節不對之處。
規範化
本節,我們會討論一種最爲常用的規範化(regularization)手段——有時候被稱爲權重衰減(weight-decay)或者L2規範化(regularization)。L2規範化的想法是增加一個額外的項到代價函數上,這個項叫做規範化項。下面是\規範化的的交叉熵代價函數:
當然,對其他的代價函數也可以進行規範化,例如二次代價函數。類似的規範化形式如下:
更新方程
我們需要知道如何計算網絡對權重和偏置的偏導數 和 。對方程1 進行求偏導數得:
好了,這就是梯度下降工作的原理。
那麼隨機梯度呢?正如在沒有規則化的隨機梯度下降中,我們可以通過平均 個訓練樣本的小批量數據來估計 。隨機梯度下降的規範化學習規則就變成
其中後一項是在訓練樣本的小批量數據 上進行的,而 是對每個訓練樣本的(無規範化的)代價。這其實和之前通常的隨機梯度下降的規則是一樣的,除了有一權重下降因子 。最後,爲了完整,給出偏置的規範化學習規則。這當然是和我們之前的非規範化的情形一致了
這⾥求和也是在訓練樣本的⼩批量數據 上進⾏的。
測試
兩種方案:
- ReLU激活函數+均方誤差代價函數+L2規則化
- 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]
本節代碼可以在這裏下載到。