iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
自我挑戰組

深度學習的學習 & ASR 中文語音辨識系列 第 12

【Day 12】深度學習的學習:mini-batch / Stochestic Gradient Descent

  • 分享至 

  • xImage
  •  

今天要來介紹 mini-batch, Stochestic Gradient Descent 有何差別
若是今天訓練集的資料量較大(e.g. m=5,000,000),直接進行訓練將會耗費大量時間,Gradient Descent 跑過整個資料集才能踏出一步
為了加速,我們需要利用 mini-batch 這個方法

稍微提及一下:

  • 1 epoch = 掃過一整個原始訓練集
  • 1 batch = 一次運算的資料量

若看到訓練過程迭代了 200 次,也就是跑了 200 個 batch,而 batch size = 16
總共跑了 16 * 200 = 3200 筆資料
你的 Training data size = 100
Epoch 數即為 3200 / 100 = 32 個

而 mini-batch 就是在指調整 batch size 的過程
適當的調整 batch size 可以讓 GD 的下降速度變得更快

  • mini-batch:1 < batch size <= data size

有時會看到 Stochestic Gradient Descent 這個詞
上方的不等式會看到 1 < batch size,原因是當你 batch size = 1 時,我們稱為**Stochestic Gradient Descent **

用一張圖來描述:
https://ithelp.ithome.com.tw/upload/images/20230927/2016328702K1jffGvC.png

簡單來說就是:
https://chart.googleapis.com/chart?cht=tx&amp;chl=x%5C%20%3A%3D%5Ctext%7B%20mini-batch%20size%7D%20
https://chart.googleapis.com/chart?cht=tx&amp;chl=m%5C%20%3A%3D%5Ctext%7B%20data%20set%20size%7D

  • Stochastic
    • https://chart.googleapis.com/chart?cht=tx&amp;chl=x%3D1
    • Vectorization speed ↘️
    • 上圖紫色的線非常雜亂,因為 batch size = 1 每跑一筆訓練資料就下降一次,所以容易被每一筆資料所干擾,但整體來說還是會朝最佳解去走
  • In-between
    • https://chart.googleapis.com/chart?cht=tx&amp;chl=x%5Cin(1%2Cm)
    • 就是 Mini-batch
    • Vectorization
    • Make progress w/o needing weight entire training set
    • 上圖綠色的線比較剛好,若是挑到適合的 batch size 則能加速下降
  • Batch
    • https://chart.googleapis.com/chart?cht=tx&amp;chl=x%3Dm
    • 就是平常的 Gradient Descent
    • Iteration Time ↗️
    • 上圖藍色的線下降的很好,但要記得他每次都跑了全部的 data,因此耗時非常久

寫成 code 搞不好清楚一點

if x == m:
		Batch_GD()
elif x == 1:
		Stochastic_GD()
else :
		Mini_Batch_GD()

Ref.


上一篇
【Day 11】深度學習的學習:Normalization
下一篇
【Day 13】深度學習的學習:Exponentially Weighted Average
系列文
深度學習的學習 & ASR 中文語音辨識30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言