Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ミニバッチサイズと学習率の関係 /small-batch-learning
Search
Miyakawa Taku
July 17, 2018
Programming
0
2.2k
ミニバッチサイズと学習率の関係 /small-batch-learning
Miyakawa Taku
July 17, 2018
Tweet
Share
More Decks by Miyakawa Taku
See All by Miyakawa Taku
入門: 末尾呼び出し最適化 /tail-call-elimination-intro
miyakawataku
2
2.5k
JVM言語の動き方・動かし方 /make-jvm-lang
miyakawataku
6
2.3k
Java SE 8から11で何が起きた?一気におさらいしてみよう! /java-se-8-to-11
miyakawataku
15
5.6k
機械学習プロジェクトの進め方 /howtoproceedwithmlproject
miyakawataku
0
380
グラフアルゴリズムその2: 単一始点最短路問題 /graphShortestPaths
miyakawataku
0
200
Strassenのアルゴリズムによる行列積の計算 /strassen-algorithm
miyakawataku
8
3.5k
Viterbiのアルゴリズム /viterbi-algorithm
miyakawataku
0
320
Other Decks in Programming
See All in Programming
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
170
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
1.1k
Patterns of Patterns
denyspoltorak
0
1.4k
CSC307 Lecture 08
javiergs
PRO
0
670
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
190
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
250
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
920
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
200
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
140
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Producing Creativity
orderedlist
PRO
348
40k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
310
Docker and Python
trallard
47
3.7k
Writing Fast Ruby
sferik
630
62k
Transcript
ミニバッチサイズと学習率の関係 2018-07-17 宮川 拓
動機 ⚫ 確率的勾配降下法(SGD)では、訓練セッ ト全体ではなく、m個のサンプル=ミニ バッチを用いて重みを更新する ⚫ mは、メモリが許す限り大きければ大きい 方がいいのだろう、と勝手に決めつけてい たけど、実はそうでもないらしい 2/15
元ネタ ⚫ Dominic Masters and Carlo Luschi, “Revisiting Small Batch
Training for Deep Neural Networks” ◼ 著者はGraphcoreというML用チップ製造 スタートアップの人たち ◼ ミニバッチサイズと、学習率、モデルの 性能の関係を調べた論文 3/15
先に結論 ⚫ ミニバッチのサイズは小さめの方が良い ◼ テストデータに対する性能が良くなる ◼ 学習が発散しない学習率の幅が広くなる ⚫ ミニバッチのサイズを小さくすると、GPU 等を使った時に計算の並列度が低くなるが、
これは計算を複数のコア、マシンに分散す ることで相殺できるかも 4/15
Background 5/15
この章の概要 ⚫ 小さいミニバッチのほうが優れていそうだ、 ということの理論的根拠を示す 6/15
一般的なSGDのアルゴリズム ⚫ +1 = + η − 1 σ =1
∇ (2, 3) ◼ ただし、η : 学習率 ◼ ∇ : 各featureの傾斜 ◼ : サンプルiに対する損失 ⚫ ここでサンプルごとに ◼ 重みの更新値の期待値は、/に比例 ◼ Cov(重みの更新値)の期待値は、m≪M の時、2/に比例 7/15
和で重みを更新するアルゴリズム ⚫ ここで、(2, 3)に = を代入 ◼ +1 =
+ σ =1 ∇ (5) ◼ つまり、損失の平均ではなく、損失の和を 使って重みを更新するように変形した ◼ を「ベース学習率」と呼んでいる ⚫ ここでサンプルごとに ◼ 重みの更新値の期待値は に比例 ◼ Cov(重みの更新値)の期待値はm≪Mの時、 2 ∙ に比例 8/15
バッチサイズ変更の意味 ⚫ (5)において、n回の重み更新は次式のよう に表される ◼ + = − σ
=0 −1 σ =1 ∇ + + (7) ⚫ ここで、バッチサイズをn倍することは、 次式による重み更新を行うことを意味する ◼ +1 = − σ =0 ∇ (8) ⚫ (8)は、勾配の更新頻度を少なくした、(7) の近似計算とみなせる 9/15
バッチサイズ変更の意味 ⚫ 重みの更新に損失の平均を使う式(2, 3)の 観点では、mが大きい方がよく見える。訓 練データ全体を使う場合(m=M)のより 正確な近似になるから ⚫ しかし、サンプルごとの重み更新値の期待 値を一定化する観点からは、逆に見える。
⚫ また、Cov(重みの更新値)は 2 ∙ に比例す るので、mが小さければより大きなベース 学習率が許容できる 10/15
バッチサイズ変更の意味? ⚫ 「バッチサイズが小さいと、複数エポック 回した時に、ミニバッチのバリエーション が増えるからいいんじゃないか」みたいな 議論をどこかで読んだけど、本論文では触 れられてなかった 11/15
Batch Normalizationに関する議論 ⚫ 省略! 12/15
実験 13/15
実験 ベ ー ス 学 習 率 が 大 き
い 場 合 、 バ ッ チ サ イ ズ を 小 さ く 保 つ 必 要 が あ る バ ッ チ サ イ ズ が 小 さ け れ ば 、 大 き な ベ ー ス 学 習 率 が 許 容 で き る データセット、ネットワーク、BN有無、 Augmentation有無などによらず、傾向は同じ 14/15
実験結果 最良の結果はm=2~32の範囲に集中 実験ごとに、どの(ベース学習率xバッチサイズ)で 良い結果が得られたか。縦棒の太いところが良い結果 15/15