類神經網路訓練不起來怎麼辦 (二): 批次 (batch) 與動量 (momentum) - 李宏毅機器學習筆記

Posted by: Max Chen | in Machine Learning, 資料工程 | 1 year, 10 months ago |

什麼是Batch?

  1. 每次用一部分的資料算出gradient(loss),update參數,不會拿全部的資料計算gradient(loss),update參數。 其中一部分的資料就稱為一個Batch。
  2. 把所有的Batch通通算過一遍,就稱為一個epoch。
  3. 每做完一個epoch,劃分不同的Batch,這件事就叫做Shuffle。

為什麼要用Batch?

增加運算效率

理論上,在不考慮平行運算下,小的Batch會跑得比較快,但update參數時造成的noisy也多;而大的Batch跑得慢,但較update參數比較可以一步到位。

圖片引用李宏毅老師投影片

但真實環境中,我們是有GPU平行運算的,Batch大小與耗費時間幾乎成反比。

這點與我做SQL Tuning的時候經驗符合:效能來說,Batch 從來都不是越大或越小越好,因為還有平行運算。

圖片引用李宏毅老師投影片

準確率呢?

小的Batch Size反而會有更好的準確率,這是一個Optimaization問題,而不是Overfiting問題。

圖片引用李宏毅老師投影片

一個合理的解釋是,當Batch Size越大,就越有可能遇到走不下去的點,反之Batch Size越小,就有越多可選擇路徑。

圖片引用李宏毅老師投影片

而且在Testing時,小的Batch比較好,也就是說,大的Batch容易Overfiting。

一個合理的解釋:小的Batch容易走到平原,使得Training與Testing的誤差小(紅色虛線處),大的Batch容易走到谷底,使得Training與Testing的誤差大(紅色虛線處)。

圖片引用李宏毅老師投影片

Batch Size比較,結論一切都是Trade-off,需由自己嘗試。

圖片引用李宏毅老師投影片

什麼是Momentum

Momentum引入物理動量的概念,有動能的存在,應該要考慮動能,如此一來,不一定到saddle point就會做不下去。

考慮動能前,每次都走gradient的反方向 圖片引用李宏毅老師投影片

考慮動能後,走gradient與momentum的向量之和處。 圖片引用李宏毅老師投影片

數學證明,其實每個momentum,就是所有gradient的某個Sum。 圖片引用李宏毅老師投影片

Reference:

https://www.youtube.com/watch?v=zzbr1h9sF54&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index=5

https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/small-gradient-v7.pdf

Currently unrated
 or 

Subscribe

* indicates required

Recent Posts

Archive

2023
2022
2021

Categories

Apache 1

Data Science 2

Dbfit 1

Design Pattern 1

Devops 4

DigitalOcean 1

Django 1

English 3

Excel 5

FUN 4

Flask 3

Git 1

HackMD 1

Heroku 1

Html/Css 1

Linux 4

MDX 1

Machine Learning 2

Manufacture 1

Master Data Service 1

Mezzanine 18

Oracle 1

Postgresql 7

PowerBI 4

Powershell 4

Python 22

SEO 2

SQL Server 53

SQL Server Analytics Service 1

SQLite 1

Windows 1

database 8

work-experience 1

其他 1

投資入門 1

投資心得 2

時間管理 1

總體經濟 2

自我成長 3

資料工程 1

Tags

SEO(1) Github(2) Title Tag(2) ML(1) 李宏毅(1) SQL Server(18) Tempdb(1) SSMS(1) Windows(1) 自我成長(2) Excel(1) python Flask(1) python(5) Flask(2)

Authors

Max Chen (159)

Feeds

RSS / Atom

類神經網路訓練不起來怎麼辦 (二): 批次 (batch) 與動量 (momentum) - 李宏毅機器學習筆記

© COPYRIGHT 2011-2022. Max的文藝復興. ALL RIGHT RESERVED.