1行定義
ミニバッチ学習とは、訓練データを数十〜数百件ずつの小さなまとまり(ミニバッチ)に分け、まとまりごとに勾配を計算して重みを更新する学習方法のことです。
くわしく
ミニバッチ学習は、ニューラルネットワークの学習で最もよく使われる、重みの更新の進め方です。訓練データを小さなまとまりに分け、まとまりごとに重みを更新します。このまとまりをミニバッチ、1つのミニバッチに含まれるデータの件数をバッチサイズと呼びます。
3つの学習方法の比較
勾配降下法で重みを更新するとき、1回の更新に何件のデータを使うかで、次の3つに分かれます。
- バッチ学習:訓練データ全件の勾配で1回更新します。勾配は安定しますが、1回の計算が重く、データが多いと扱いにくくなります。
- オンライン学習:データを1件ずつ使って更新します。計算は軽いものの、1件ごとのばらつきで更新の向きが大きくぶれます。
- ミニバッチ学習:その中間です。数十〜数百件の勾配の平均で更新するため、ぶれをある程度抑えつつ、計算量も現実的な範囲に収まります。
ミニバッチ学習とオンライン学習は、ランダムに選んだデータで更新するため、どちらも確率的勾配降下法(SGD)と呼ぶことがよくあります。
エポックとイテレーション
訓練データ全体を1回使い切ることを1エポック、重みを1回更新することを1イテレーションと数えます。1エポックのイテレーション数は「データ数 ÷ バッチサイズ」です。たとえば1万件のデータをバッチサイズ100で学習すると、1エポックで100回更新します。
利点と注意点
ミニバッチ内の複数のデータは、GPUでまとめて並列に計算できます。また、勾配に適度なばらつきがあるため、局所最適解や鞍点にとどまりにくくなる効果も期待されます。
バッチサイズはハイパーパラメータです。大きすぎるとメモリが足りなくなり、小さすぎると更新がぶれやすくなります。なお、バッチ正規化は、このミニバッチの単位で平均と分散を計算します。
覚え方
「全部はバッチ、1件はオンライン、その間がミニバッチ」と覚えます。
G検定での出題
出題のされ方
全データで1回更新するバッチ学習、1件ずつ更新するオンライン学習との違いが問われます。データ数とバッチサイズから、1エポックあたりのイテレーション数や更新回数を求める計算も問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| ミニバッチ学習このページの用語 | 訓練データを数十〜数百件ずつの小さなまとまり(ミニバッチ)に分け、まとまりごとに勾配を計算して重みを更新する学習方法 |
| オンライン学習 | データを1件ずつ使い、受け取るたびに勾配を求めて重みを更新していく学習方法 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
バッチサイズを1にしたミニバッチ学習は、訓練データ全件を使って1回更新するバッチ学習と同じになる。
答えを見る
答え × 誤り
バッチサイズ1は、1件ずつ更新するオンライン学習にあたります。全件を1つのまとまりにした場合がバッチ学習です。
-
ミニバッチ学習では、ミニバッチ内のデータそれぞれの勾配を平均して、1回の重みの更新に使う。
答えを見る
答え ◯ 正しい
平均した勾配を使うことで、1件ずつの勾配で更新するよりも、更新の向きのぶれが小さくなります。
-
ミニバッチ学習のバッチサイズは、学習の途中で重みと同じように自動で最適な値に更新される。
答えを見る
答え × 誤り
バッチサイズは、学習を始める前に人が決めるハイパーパラメータです。GPUのメモリの量や学習の安定性を見ながら選びます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目16 最適化手法)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (8.1.3 Batch and Minibatch Algorithms)
- Sebastian Ruder, An overview of gradient descent optimization algorithms (2016)