第12课:优化神经网络——网络初始化技巧与超参数调试
上一篇,我們主要介紹了神經網絡中幾種常見的梯度下降優化算法,包括 Mini-Batch、Momentum、Nesterov Momentum、AdaGrad、RMSprop、Adam、Learning Rate Decay ,并對各自特點進行了說明和對比。本文將重點講解初始化神經網絡的一些技巧以及如何高效進行超參數調試。
網絡輸入標準化
我們知道,神經網絡的輸入層是訓練樣本的各個特征值,而不同特征值的數值范圍可能不同。例如訓練樣本數據中輸入層特征是二維的:$[x_1,x_2]$。$x_1$ 的數值范圍是 [0, 0.01],$x_2$ 的數值范圍是 [0, 100],彼此相差了 10000 倍。$x_1$ 與 $x_2$ 之間分布極不平衡,會造成訓練得到的權重 $W$ 數值差別很大,參數 $b$ 也是一樣。這樣的后果會造成運行梯度下降算法時,振蕩較大,輕則影響訓練速度,重則導致模型無法正確優化,無法獲得優質解。
怎么理解呢?下面用圖解的方式來說明。
上圖顯示了損失函數 $J$ 與 $W$ 和 $b$ 的凸函數關系。左邊兩張圖沒有進行輸入標準化,可見 $J$ 與 $W$ 和 $b$ 呈類似橢圓的形狀,這是因為彼此幅值范圍不同。根據上文中的假設,$x_1$ 與 $x_2$ 之間分布極不平衡,造成 $W$ 數值差別很大。這時,如果學習因子過大,就容易發生振蕩,使得 $J$ 下降不穩定。為了減小振蕩,只能盡量減小學習因子,但是會大大增加訓練時間,讓訓練變得非常緩慢和困難。
右邊兩張圖進行了輸入標準化
總結
以上是生活随笔為你收集整理的第12课:优化神经网络——网络初始化技巧与超参数调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己常用的C/C++小技巧
- 下一篇: VC实现在ListBox中选择背景位图