1. 程式人生 > >深度學習中的優化演算法(待更)

深度學習中的優化演算法(待更)

    優化演算法可以使得神經網路執行的速度大大加快,機器學習的應用是一個高度依賴經驗的過程,伴隨著大量迭代的過程,需要訓練諸多的模型來找到最合適的那一個。其中的一個難點在於,深度學習沒有在大資料領域發揮最大的效果,我們可以利用一個巨大的資料集來訓練神經網路,而大資料下其訓練的速度非常慢,此時通過好用的優化演算法就可以大大提高團隊的效率。

1、Mini-batch梯度下降

    在訓練過程中,把訓練集分割為小一點的子集進行訓練,這些子集被稱為mini-batch,x(i)表示第i個訓練樣本,z(L)表示神經網路中第L層的z值,X{t}表示第t個mini-batch。這樣在實際訓練過程中,每次可以同時處理單個的X{t}和Y{t},而不用同時處理全部的X和Y訓練集。

    當mini-batch大小設定為m時可以得到batch演算法,設定為1時即為隨機梯度下降演算法。Batch梯度下降從某處開始,相對噪聲低一些,幅度也大一些,可以繼續尋找最小值。隨機梯度下降噪聲相對較大,平均來看,它最終會靠近最小值,不過有時候也會方向錯誤,因為隨機梯度下降永遠不會收斂,而是一直會在最小值附近波動,但它並不會達到最小值並停留在此。

    mini-batch大小的確定原則:

  • 如果訓練集小於2000個樣本,直接進行batch梯度下降,沒必要使用mini-batch;
  • 使用mini-batch要確保X{t}和Y{t}符合CPU/GPU。