G検定(ジェネラリスト検定)
ばっちがくしゅう
バッチ学習
Batch Learning
訓練セットの全事例について損失を計算してから、重みとバイアスを1回更新する学習の進め方。バッチサイズを全事例数Nに等しくした場合にあたり、大規模なデータでは実用的でなくなる。
詳しい説明
バッチ学習とは
バッチ学習(フルバッチ勾配降下法)は、訓練セットに含まれるすべての事例について損失を計算し終えてから、モデルの重みとバイアスを1回更新するやり方です。モデルが重みとバイアスを更新する前に処理する事例の数をバッチサイズと呼ぶので、バッチ学習はバッチサイズを訓練セットの事例数Nそのものにした場合にあたります。
更新の前にデータセットの全事例の損失を計算するという発想は素直なもので、根拠の教材も、まずモデルはそうすべきだと考えるかもしれない、とこの考え方を示しています。
大規模なデータでの問題
ただし同じ教材は、データセットが数十万件、さらには数百万件の事例を含む場合、フルバッチを使うのは実用的でないと続けます。1回の更新のたびに全事例を処理しなければならないためです。そこで、全事例を見なくても平均的には正しい勾配が得られる手法として、確率的勾配降下法(SGD)とミニバッチ確率的勾配降下法が挙げられています。
バッチサイズで並べた位置づけ
3つの手法は、バッチサイズの違いとして並べられます。
| 手法 | バッチサイズ |
|---|---|
| 確率的勾配降下法 | 1 |
| ミニバッチ確率的勾配降下法 | 1より大きくNより小さい |
| バッチ学習(フルバッチ) | N |
ミニバッチ確率的勾配降下法はフルバッチとSGDの折衷と説明され、バッチサイズを大きくするほどフルバッチ勾配降下法に近いふるまいになるとされています。
エポックと反復の数え方
エポックは、訓練セットの全事例をモデルが1回処理し終えたことを指します。教材の例では、1,000事例の訓練セットをミニバッチサイズ100で学習すると、1エポックを終えるのに10回の反復が必要です。同じ計算をバッチ学習に当てはめると、バッチサイズが事例数と等しいので1エポックの反復は1回となり、1エポックごとに重みとバイアスが1回だけ更新されます。訓練には通常多くのエポックが必要で、エポック数は学習を始める前に決めるハイパーパラメータです。
パラメータとハイパーパラメータ
バッチサイズ、学習率、エポック数は、訓練のさまざまな面を制御するハイパーパラメータです。これに対して重みとバイアスはモデルそのものの一部であるパラメータで、バッチ学習が更新する対象はこちらです。バッチ学習かミニバッチ学習かという違いは、ハイパーパラメータであるバッチサイズの選び方の違いとして整理できます。
試験との関係
バッチ学習、確率的勾配降下法、ミニバッチ学習の区別は、シラバス2024のキーワードに含まれる学習手法の基本事項です。
試験で問われること
G検定
- バッチサイズは重みとバイアスを更新する前にモデルが処理する事例の数であり、バッチ学習(フルバッチ)はこれを訓練セットの全事例数Nに等しくし、全事例の損失を計算してから1回更新する方法である。
- データセットが数十万件から数百万件の事例を含むと、更新のたびに全事例を処理するフルバッチは実用的でなくなり、全事例を見ずに平均的に正しい勾配を得るSGDやミニバッチSGDが使われる。
- バッチサイズで比べると、SGDは1、ミニバッチSGDは1より大きくNより小さい値、フルバッチはNであり、ミニバッチSGDはバッチサイズを大きくするほどフルバッチ勾配降下法に近いふるまいになる。
- エポックは訓練セットの全事例を1回処理し終えることを指し、1,000事例をミニバッチサイズ100で学習すると1エポックに10回の反復が必要で、フルバッチなら1エポックの反復は1回になる。
- バッチサイズ、学習率、エポック数は訓練を制御するハイパーパラメータ(エポック数は学習開始前に設定する)で、重みとバイアスはモデル自身の一部であるパラメータなので、両者を取り違えない。
最終更新日: 2026/09/23