1. 程式人生 > >深度學習花書學習筆記 第八章 深度模型中的優化

深度學習花書學習筆記 第八章 深度模型中的優化

學習和純優化有什麼不同

我們期望降低的是期望泛化誤差,也叫風險。但是我們平時訓練時是以訓練誤差計算,俗稱經驗風險最小化。可能導致過擬合。

訓練方式:

當原問題較難運算時,可以計算對等問題,使用代理損失函式。但是提前終止演算法使用的是真實的損失函式一般。

當訓練資料過多時,一般每次訓練不使用全部樣本,而是選取部分批次來訓練,大大降低了訓練成本,提高訓練速度。

但是要注意,選取批次樣本時,要先將資料打亂(shuffle),這樣選取的批次才具有隨機和獨立性。

使用單個樣本來訓練的方式稱為線上學習或隨機學習。整個訓練集的演算法稱為批量或確定性演算法。但是小批量也可簡單的稱為隨機演算法。

基於小批量的演算法,可以認為每次從同分布資料集中,取出部分資料,這樣每次訓練樣本都不會重複,可以更好的泛化。

神經網路優化中的挑戰

梯度範數:

區域性極小值:神經網路中存在多個區域性極小值點,我們很容易得到區域性極小值而造成代價更大。

高原、鞍點和其他平坦區域:

鞍點,某些切面極小值的同時在某些切面極大值。

平臺區域也較難找尋極值點,會不斷擾動。

懸崖和梯度爆炸:突然很大的斜率。可以使用梯度截斷來克服

長期依賴:無法記憶之前神經網路處理的內容,以及層數太多導致梯度消失與梯度爆炸。

非精確梯度:精確梯度難以計算的情況下求近似。

區域性和全域性結構間的弱對應:區域性優化可能較難實現的時候,重點關注引數初始化方式。

基本演算法

隨機梯度下降:SGD 每次取補丁批量的小樣本,計算梯度,然後根據梯度的均值,原有引數減去學習率乘以梯度的均值。

看到一種優化方式,初始時,批量大小逐漸增加,加快初始時訓練速度。

動量相關演算法(Polyak):動量相關,原有SGD更新梯度的基礎上,增加了一個動量,代表本次梯度方向的動量,讓模型更穩定,更容易訓練。主要解決Hessian的病態條件,和隨機梯度的方差。

Nesterov動量演算法:動量演算法的變種,提高收斂速度,但是沒有改進收斂率

引數初始化策略

均勻初始化和高斯初始化

自適應學習率演算法

AdaGrad

RMSProp

Adam: AdaGrad + RMSProp

二階近似方法

優化策略和元演算法

批標準化:每層的輸入再做一次標準化,加快運算速度。