ニューラルネットワークの重みを更新するとき、「1回の更新にどれだけのデータを使うか」にはいくつかの流儀があります。その中で最も基本となるのが、訓練データを丸ごと全部使って更新するバッチ学習です。勾配降下法の教科書的な出発点として、まずここから理解しましょう。
📖 ひと言でいうと
バッチ学習とは、手元の訓練データ全体を一括(バッチ)で使って誤差を計算し、その結果に基づいて重みを更新する学習方式です。データを1件ずつ処理するのではなく、「全員の答案を採点し終えてから、まとめて教え方を1回見直す」やり方にあたります。
例えるなら、全校生徒1,000人分のテスト結果をすべて集計してから授業計画を1回修正する校長先生のようなものです。判断は全体を見た確実なものになりますが、集計に時間がかかり、途中で転入生(新しいデータ)が来てもすぐには反映できません。
🖼 1枚でわかるバッチ学習
📘 公式テキストの説明
バッチ学習では訓練データ全体を使って重みを更新する。この更新は一度ではなく、多くの場合複数のエポックを通じて繰り返される。計算資源が豊富で、データが静的な場合にはこの方法が適している。しかし、データが大規模の場合や、リアルタイムの更新が必要な場合は計算コストが高いという問題がある。
短い説明ですが、押さえるべき論点が3つ詰まっています。第一に「訓練データ全体を使って重みを更新する」という定義そのもの。第二に、全体を使うからといって更新が1回で終わるわけではなく、複数のエポック(訓練データ全体を1周する単位)にわたって繰り返される点。第三に、向き不向きの条件です。「計算資源が豊富」かつ「データが静的(内容が変わらない)」なら適していますが、データが大規模な場合やリアルタイム更新が必要な場合には計算コストの高さが問題になります。
🔍 しっかり理解する
更新1回の流れ — 「全部見てから動く」
バッチ学習における重み更新は、次のサイクルで進みます。勾配降下法の最も素朴な形(最急降下法と呼ばれる方式)は、このバッチ学習に対応します。
重要なのは、1エポックにつき重みの更新が1回しか行われないことです。訓練データが100万件あっても、100万件すべての誤差を集計し終えるまで重みは動きません。その代わり、更新に使う勾配は全データの情報を反映した「全体として最も誤差を減らす方向」になるため、更新のたびに誤差が安定して減りやすく、挙動が読みやすいという利点があります。同じデータと初期値なら毎回同じ結果になる再現性の高さも特長です。
長所と短所は表裏一体
バッチ学習の性質は、「全部見てから動く」ことの裏返しとして整理できます。
- 長所 — 全データに基づくため勾配のばらつき(ノイズ)が小さく、更新方向が安定する。挙動が決定的で解析しやすい。
- 短所①計算コスト — 1回の更新に全データ分の計算とメモリが必要。データが大規模になるほど、更新1回あたりの時間とメモリ消費が膨らみます。
- 短所②リアルタイム性 — 新しいデータが届くたびに全体を計算し直すのは非現実的で、逐次的な更新が必要な場面には向きません。
公式テキストの「計算資源が豊富で、データが静的な場合には適している」という条件は、この短所①②が問題にならない状況を言い換えたものです。
対極にあるオンライン学習、実務の主流はミニバッチ
「更新1回に使うデータ量」という軸で見ると、バッチ学習(全件)の対極には、データ1件ごとに重みを更新するオンライン学習があります。オンライン学習は逐次更新できる反面、1件のノイズに振り回されて更新方向が不安定になりがちです。バッチ学習の安定性とオンライン学習の機動性はちょうど裏表の関係にあり、この両極を理解しておくと、その中間としてデータを小分けにして更新するミニバッチ学習(別記事で詳述)がなぜ実務の標準になったのかが自然に理解できます。
💡 具体例で考える
たとえば、過去5年分・50万件の住宅取引データから価格予測モデルを作る場面を考えます。データは既に確定しており今後変化しない「静的」なデータで、社内のGPUサーバーも使える——この条件ならバッチ学習の弱点は表面化しにくく、全データに基づく安定した学習が素直に機能します。
一方、ECサイトのレコメンドモデルのように、ユーザーの行動データが毎分増え続け、直近の流行をすぐ反映したい場面ではどうでしょうか。バッチ学習では「新データを含めて全件を計算し直す」ことになり、更新のたびに膨大な計算が発生します。公式テキストの「リアルタイムの更新が必要な場合は計算コストが高い」とは、まさにこうした状況を指しています。
⚠️ よくある誤解・紛らわしい用語
- 「更新は1回だけ」という誤解 — 全体で1回更新したら終わり、ではありません。公式テキストにあるとおり、複数のエポックを通じて同じ手順が繰り返されます。
- エポックとの混同 — エポックは「訓練データ全体を1周した」という回数の単位で、バッチ学習は「1回の更新に使うデータ量」の方式名です。バッチ学習では1エポック=更新1回という対応になります。
- ミニバッチ学習との混同 — ディープラーニングの現場で「バッチサイズ」と呼ぶ場合、実際はミニバッチのサイズを指していることがほとんどです。用語上「バッチ学習」は全件一括方式を指す点に注意しましょう。
- オンライン学習との対比の取り違え — バッチ学習=全件で安定・逐次性なし、オンライン学習=1件ずつで機動的・不安定、という対応関係を逆にした選択肢に注意が必要です。
📝 試験でのポイント
- 「訓練データ全体を使って重みを更新する方式はどれか」という定義問題が基本形です。「一部を使う」「1件ずつ使う」との仕分けが問われます。
- 適する条件(計算資源が豊富・データが静的)と、問題になる条件(大規模データ・リアルタイム更新)の組み合わせは、正誤判定でそのまま出題され得ます。
- オンライン学習・ミニバッチ学習と並べ、更新単位(全件/1件/一部)を対応させる問題は定番です。
- 「複数のエポックを通じて繰り返される」という記述の正誤も問われ得ます。
📚 まとめ
バッチ学習は、訓練データ全体を使って重みを更新する学習方式で、更新は複数エポックにわたり繰り返されます。全体を見てから動くため更新が安定し再現性も高い一方、1回の更新に全データ分の計算が必要なため、大規模データやリアルタイム更新には不向きです。「計算資源が豊富でデータが静的なら適する」という条件と、対極のオンライン学習・中間のミニバッチ学習との位置関係をセットで押さえておきましょう。
