ミニバッチ学習とは

みにばっちがくしゅうmini-batch learning別名 ミニバッチ勾配降下法、ミニバッチ

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つのまとまりにした場合がバッチ学習です。

  2. ミニバッチ学習では、ミニバッチ内のデータそれぞれの勾配を平均して、1回の重みの更新に使う。

    答えを見る

    答え ◯ 正しい

    平均した勾配を使うことで、1件ずつの勾配で更新するよりも、更新の向きのぶれが小さくなります。

  3. ミニバッチ学習のバッチサイズは、学習の途中で重みと同じように自動で最適な値に更新される。

    答えを見る

    答え × 誤り

    バッチサイズは、学習を始める前に人が決めるハイパーパラメータです。GPUのメモリの量や学習の安定性を見ながら選びます。

練習問題

ミニバッチ学習の問題(9問)
  1. バッチサイズと更新回数
  2. バッチ・オンライン学習の比較
  3. 学習の停滞への対処
  4. 学習率を減衰させる理由
  5. ミニバッチの並び順の影響
  6. 小さいミニバッチでの正規化
  7. バッチ正規化の推論時の統計量
  8. バッチ正規化の出力の計算
  9. 拡張を加えるタイミング

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術16

出典

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習