在看神經網路相關的論文時,總是能看到Epochs, Batchsize, Iterations 這些字眼,要弄明白這些專業術語,不得不先講下梯度下降的概念,
梯度下降
梯度下降法是機器學習中經典的優化演算法之一,用來求解復雜曲線的最小值,“梯度”是指某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模),“下降”是指下降遞減的程序,
梯度下降法是多次迭代求解的,梯度下降的迭代質量有助于使模型盡可能擬合訓練資料,

梯度下降中有一個叫做學習率的引數,如上圖左所示,在迭代開始時,步長越大,學習率就越高,隨著點的下降,步長變短,即學習率變小,此外,誤差函式也在不斷減小,
我們在訓練模型時,如果訓練資料過多,無法一次性將所有影像資料輸入網路,為了解決這個問題,我們會將資料分成幾個部分進行分批訓練,即batch,使得每個批次的資料量是可以負載的,將這些batch的資料逐一輸入到網路中,更新神經網路的引數,使得網路收斂,
Epoch
一個Epoch指的是將所有的資料輸入網路完成一次向前計算及反向傳播,由于完成一個epoch訓練的周期較長(資料量大),一次性輸入所有資料計算機無法負荷,所以將其分成多個batches,那么為什么還需要訓練多個epochs呢?我們知道,訓練網路時,僅僅將所有資料迭代訓練一次是不夠的,需要反復訓練多次才能使網路收斂,在實際訓練時,將所有資料分成多個batches,每次輸入一個batch大小的資料進行訓練,梯度下降本身就是一個迭代程序,所以經過單個epoch更新權重是不夠的,
下圖展示了經過不同的epoch訓練的到的結果,

可見,隨著epoch的增加,神經網路中權重更新迭代的次數增加,曲線從開始的欠擬合,慢慢進入最佳擬合,epoch繼續增加,最后過擬合,
因此,epoch的個數是非常重要的,究竟設定多少才合適呢?恐怕沒有一個確切的答案,對于不同的資料集來說,最佳的epoch是不同的,但是,epoch的大小和資料集的多樣化程度有關,多樣化程度越強,epoch也應該越大,
Batchsize
Batch是每次輸入網路進行訓練的批次,而batchsize是每個batch中訓練樣本的數量,注意batch size 和 batch numbers 是不同的,
batchsize大小的選擇也是非常重要的,為了在記憶體容量和記憶體效率之間取得最佳平衡,batchsize 應該用心設定,從而最優化網路模型的性能和速度,
下圖為不同的batchsize 得到的訓練結果,其中藍色為所有資料一起輸入進行訓練,也就是只有一個batch,batch內包含所有訓練樣本;綠色為minibatch,即將所有資料分成若干個batches,每個batch內包含一小部分訓練樣本;紅色為隨機訓練,即每個batch內只有一個樣本,

從上圖看到,藍色全資料效果更好,當資料量較小,計算機記憶體可以負載的時候,可以采用這種訓練方式;綠色的mini分批次訓練精度略有損失;而紅色的隨機訓練,難以達到收斂狀態,
Iterations
所謂iterations就是完成一次epoch所需的batch個數,batch numbers就是iterations,
舉個例子來說,我們有12800個訓練樣本,分成100個batches,那么batchsize就是128,將所有的資料輸入網路,訓練完成一個epoch,需要經過100次iterations,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/36663.html
標籤:其他
上一篇:在國外怎么看國內電影電視劇視頻
下一篇:Pytorch自動求解梯度
