深度神經網絡的優化都是基本都是基於梯度下降的,梯度下降的過程就是尋找函數值下降速度最快的方向,沿着該方向迭代,快速到達局部最優解的過程。

梯度下降更新參數的方式最常見的有三種:

1. 批量梯度下降(Batch Gradient Descent)

每一次迭代時使用整個訓練集的數據計算Cost Function來進行梯度更新。

由於每一次參數更新都用到所有的訓練集數據,當樣本數量很大的時候,計算開銷大,速度慢。

2.隨機梯度下降(Stochastic Gradient Descent)

每一次迭代時,針對單個樣本計算Loss Function,然後計算梯度更新參數。這種方法速度比較快,但是收斂性能不好,可能造成目標函數劇烈震盪,並且大數據集的相似樣本會造成梯度的冗餘計算。

3.小批量梯度下降(Mini-Batch Gradient Descent)

每次迭代時,採用一小批樣本,一方面這樣可以降低參數更新時的方差,收斂更加穩定,另一方面可以充分利用深度學習庫中的高度優化的矩陣操作進行有效的梯度計算。

Mini-Batch Gradient Descent並不能保證很好的收斂性,Learning Rate 如果選擇的太小,收斂速度會很慢;如果選擇的太大,Loss Function可能在局部最優解附近不停地震盪甚至偏離。有一種措施是先設定大一點的學習率,當兩次迭代之間的變化低於某個閾值後,就減小Learning Rate。

在大規模的神經網絡訓練中,一般採用小批量梯度下降的方式。Batch Epoch Iteration就是其中的重要的概念。

1.Batch

每次迭代時使用的一批樣本就叫做一個Batch,樣本的數量稱爲Batch Size。Batch大小是一個超參數,用於定義在更新內部模型參數之前要處理的樣本數。深度學習每一次參數的更新的Loss Function並不是由一個樣本得到的,而是由一個Batch的數據加權得到。

2. Iteration

使用Batch Size個樣本訓練一次的過程叫做一個Iteration。

3. Epoch

一個epoch就是使用訓練集中的全部樣本訓練一次。通俗的講,Epoch的值就是整個訓練數據集被反覆使用幾次。

Epoch數是一個超參數,它定義了學習算法在整個訓練數據集中的工作次數。一個Epoch意味着訓練數據集中的每個樣本都有機會更新內部模型參數。Epoch由一個或多個Batch組成。

相關文章