Epoch, Batch size, Iteration, Learning Rate

這幾個字眼在訓練 AI model 或閱讀 Paper 時都很常出現,這篇文章會以簡單的舉例來說明它們之間的關係。

--

前言

「Epoch」、「Batch size」、「Iteration」、「Learning rate」這些字眼,在人工智慧這領域很常見,訓練 AI 模型的過程,時常需要調整這些參數來影響模型的準確度。有些優化神經網路運算的技巧,也會延伸這些觀念來操縱數據,使神經網絡可以有更好的泛化能力。

所以理解這些概念彼此之間的關係非常重要,要說明這些概念,我想先「Epoch」開始,然後帶入數字很簡單的舉例。

Epoch

中文直翻的話是「時代」、「時期」的意思,但在神經網路訓練上,比較接近中文「期」的含意,指的是訓練模型過程裡,演算法完整使用過資料集每筆資料的狀態。

假設我們有一個很小的數據集,只有 10 筆資料,把它們全丟進神經網路運算完,那就是完成了 1 個 Epoch 的訓練。

Batch size

Batch 中文直翻的話意思是「批次」。

假設剛剛的 10 筆資料,每筆數據量都很大,電腦因為記憶體不夠用所以無法一次跑 10 筆。這時我們只好把 10 筆資料分批送進神經網路,這裡分批的數量就是 Batch size,今天我一次放 2 筆資料進神經網路運算,那 Batch size 就等於 2。

Iteration

Iteration 意思是「迭代」,這個概念與 Batch size 息息相關,畢竟我們把資料分批送進神經網路的時候,在程式語言的寫法上會透過迴圈來實踐。

延續剛剛的例子,我們如果一次送 2 筆資料進神經網路,那就要跑 5 次迴圈才算 1 個 Epoch,這時就稱訓練過程迭代了 5 次。

Data set size = Iteration * Batch size (1 Epoch)

這時換個角度來說,如果開發者決定要用 Batch size = 2 的條件,來訓練 5 個 Epoch,那總共要迭代幾次?

Iteration = (Data set size / Batch size)* Epoch

代入數字就是 10 / 2 * 5 = 25,總共要迭代 25 次才能完成開發者的期望。

這三個數值是會直接互相影響的,那與「Learning rate」的關係呢?

Learning rate

之前文章提到過梯度下降(Gradient descent),在每次計算誤差後會做偏微分來更新權重,這邊我放個公式方便回想:

更新的程度會由 ∇E(Gradient)乘上一個「 η(Learning rate)」來決定,而這邊的 ∇E 會受到一次丟給神經網路做運算的資料量影響,所以 Batch size 會影響神經網路收斂過程中,往 Minima 前進的速度與方向。

接下來沿用之前 Gradient descent 文章的實作來呈現 Batch size 對於收斂過程的影響。

這次的設定與之前些微不同,差異之處在於資料集總共有 2 筆資料,這樣才能比較 Batch size 數值大小所產生的差異。

我先在每次 Iteration 運算整個資料集,然後訓練 25 個 Epoch,結果像這個樣子:

結果並不意外,與之前只有1筆資料的收斂過程類似。

接著來看 Batch size = 1 的樣子,因為每個Iteration從運算 2 筆資料變成 1 筆,為了讓運算量接近,將 Epoch 調整成 50,結果像這樣子:

先以運算時間相同為前提來說明:

Batch size 大的時候,因為考量了比較多的數據,修正的方向會比較準確,但因為每次 Iteration 要算比較久,往 Minima 前進的次數就相對小。

Batch size 相對小的時候,因為只有考量局部數據,所以修正的方向會出現偏差,但因為每次 Iteration 要計算的資料量比較少,就有機會在同樣的時間成本下,修正比較多次。

Batch size = 1,又被稱為 Incremental mode,因為一次 Iteration 只需要算一筆資料,所以權重會被非常頻繁地更新,但因為方向較不準確,就會像是橫衝直撞一般,雖然快速但就整體而言不見得比較有效率,很多時候可能只是走冤枉路。

那我們回到真實訓練模型的過程,要花多少時間訓練模型其實沒有一定的標準,都是開發者自己要去決定的。我可以用較大的 Batch size 搭配較大的 η,那結果可能是不用那麼多的 Epoch 就能達到我的期望。

相對的,如果我想用 Batch size = 1 的條件下去訓練,那可能就要配置較小的 η ,才不會在接近 Minima 的時候來回走動,也就不用走太多冤枉路。但也因為 η 較小,我可能就需要比較多的 Epoch 才會走到 Minima。

總結

這些參數的設定沒有標準答案,都會依據目標、 Data、採用的 Model 和硬體資源等條件,而有不同的配置。在調整這些參數的過程,需要具備相關知識來讓模型收斂的更快更好,而不是每次調整都像買個樂透,然後期待有一次會中獎。

--

--

Ken Huang
人工智慧,倒底有多智慧?

在網路上自學的過程中,體會到開放式資源的美好,希望藉由撰寫文章記錄研究所的學習過程,同時作為回饋網路世界的一種方式。Email : kenhuang2019iii@gmail.com ,如果有任何問題都歡迎與我聯繫。