[NN] 隨機VS批訓練

本文翻譯節選自1998-Efficient BackProp, Yann LeCun et al..

4.1 隨機VS批訓練

每一次迭代, 傳統訓練方式都需要遍歷所有數據集來計算平均梯度. 批訓練也同樣. 但你也可以使用隨機訓練的方法: 每次隨機選擇一個樣本$\{Z^t, D^t\}$. 使用它來計算對應的梯度從而更新權值:

$W(t+1) = W(t) - \eta \frac{\partial E^t}{\partial W}$ (11).

這種估計梯度的方式是有噪的, 可能不會每次迭代權值都會精確地沿着正確的梯度下降. 恰恰是這種噪聲使得隨機訓練有如下的優勢:

1. 隨機訓練比批訓練快

2. 隨機訓練結果更好

3. 隨機訓練可以用來追蹤變化

隨機訓練在大數據集上往往比批訓練更快. 爲何? 我們舉個簡單的例子: 如果一個大小爲1000的訓練集恰好由10個完全一樣的子集組成. 在1000個樣本中求取的平均梯度和僅僅計算前100個的平均梯度是一樣的. 因此批訓練浪費了很多時間. 另一方面, 隨機梯度將一個epoch視爲在大小爲100的訓練集訓練10次. 在實際中, 樣本很少在數據集中出現超過1次, 但通常會有很多相似的特徵聚合在一起. 在音素分類中, 所有音素/ae/的特徵都會包含有相同的信息. 正是這種冗餘, 導致了批訓練的慢速.

隨機訓練的結果往往更好是由於權值更新中的噪聲. 非線性網絡通常有多個深度不同的局部最小值. 訓練的目的是找到其中的一個. 批訓練會找到權值初始值附近的一個最小值. 在隨機訓練中, 權值更新中的噪聲會導致權值跳轉到另一個, 並且有可能是更好的一個解. 這可以參考文獻[15,30].

當建模的函數隨時間變化時隨機訓練的方式會更有用. 一個常見的工業應用場景就是數據的分佈隨着時間的變化而變化(機器隨使用時間而老化). 如果訓練機不能檢測到這種變化並隨着它改變, 它就不能正確地學習到數據, 泛化誤差也會變大. 使用批訓練, 這些變化就無從檢測, 學習到的結果也會很差. 使用隨機訓練, 如果恰當地進行處理的話(見4.7), 它就能夠跟蹤這些變化, 併產生較好的估計結果.

儘管隨機訓練有一些優勢, 批訓練也有如下的幾個優點, 使得我們有時也不得不使用它:

1. 收斂條件已經被證明

2. 許多加速訓練的方法僅對批訓練有效

3. 權值動態特性和收斂速率的理論分析更加簡單

這些優點使得我們可以忽略那些使隨機訓練更好的噪聲. 這種噪聲, 對於找到更好的局部最佳解非常關鍵, 同時也避免了最小值的全收斂(full convergence). 和收斂到確切的最小值不同, 收斂進程根據權值的波動而減慢(stall out). 波動的大小取決於隨機更新的噪聲幅度. 在局部最小值波動的方差和學習速率成比例[28,27,6]. 爲了減小波動, 有兩種方法: 一是減小學習速率; 二是使用一個自適應的批大小. 在[13,30,36,35]的理論中, 學習速率的最佳退火步驟的形式爲:

$\eta \sim \frac{c}{t}$ (12)

 其中$t$是模式的數量, $c$是一個常量. 

另一種去除噪聲的方法是使用"最小批", 即從一個最小的批尺寸開始, 隨着訓練進行不斷增大這個尺寸. Moller使用過這種方法[25], Orr討論過用這種方法解決線性問題[31]. 然而, 批尺寸增加的速率和批中放置的輸入和學習速率一樣非常難以確定. 在隨機學習中的學習速率的大小可以參考最小批的大小.

注意, 移除數據中的噪聲的問題可能在一些人看來並不重要, 因爲噪聲有助於泛化. 實際情況卻是在噪聲生效之前, 過訓練已經發生.

批訓練的另一個優點就是你可以使用二階的方法來加速學習過程. 二階方法通過估計梯度和誤差平面的曲率來加速學習. 給定曲率, 你就可以大致估計實際最小值的位置.

儘管批更新的好處很多, 隨機訓練仍然被更多人青睞, 尤其是處理大數據集的時候, 因爲它更快.

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