Chapter 06
バッチ(一度に計算)
複数サンプルをまとめて一度に計算する単位。
チャプター別 ディープラーニング図
チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。
だから結果Yも一つの表で一度に出ます。
入力が一つの表にまとまると、結果Yも一つの表で一度に出ます。
ディープラーニングで見るバッチ
バッチとは複数の入力(サンプル)を一つの表(行列)にまとめて、同じ重みで一括計算する方式です。表の各列が一つのサンプルに対応します。
先生がテストを一枚ずつ採点するのと、30枚を採点機に一度に入れるのを比べてみてください。採点機の方がずっと速いですよね。バッチも同じで、GPUが多数の入力を同時に処理します。
ポイントは、同じ W(重み)と b(バイアス)がすべてのサンプルに適用されることです。サンプルごとに違うのは入力 X だけ。だから一回の行列の積で全サンプルの結果が出ます。
速度: GPUは一つずつ処理するより数千の数値を同時処理する方が得意です。バッチにすることでGPUの性能をフルに活かし、一つずつ計算するより数十〜数百倍速くなります。
学習の安定性: サンプル1個だけで重みを更新するとノイズが大きいです。ミニバッチ(例: 32個や64個)で勾配を平均すると、はるかに安定して学習が進みます。バッチサイズは学習の重要な設定です。
メモリ管理: 100万件のデータを一度にGPUに載せるのは不可能です(メモリが足りません!)。そこでミニバッチ(例: 64個ずつ)に分けて処理し、各バッチで重みを更新する方式をとります。
Netflix・YouTubeのレコメンド: ユーザー一人ずつ計算する代わりに、数千人分のデータをバッチ化して同時にスコアを算出します。これでリアルタイム配信が可能になります。
ChatGPT・翻訳: 多くのユーザーが同時に質問を送ると、クエリがバッチにまとめられてGPU一回のパスで処理されます。数百万ユーザーに素早く回答できるのはバッチのおかげです。
画像学習: 10万枚の画像で学習するとき、32枚ずつのミニバッチに分けて3,125回繰り返します。各ミニバッチで Z = W·X + b を計算し、誤差(損失)を測り、重みを少し調整します。
Xが複数列を持つ: 各列が一つのサンプルです。同じ W と b を各列に使います。空白がある行と列を確認し、その列の数値だけで計算します。
加減算・乗算・平均の操作: 同じ位置(同じ行・同じ列)同士で計算します。平均(例: ゼロ中心化)は列ごとに平均を求めます。空白のある列の値だけを使いましょう。
検算のコツ: 各列は独立で、ある列の結果が別の列に影響しません。列ごとに別々に確認するとミスを見つけやすいです。
複数サンプルを行列の列に並べたものがバッチです。同じ W, b で一度に を計算します。
1列 = 1サンプル。同じ W, b をすべての列に一度に適用。
例:1列(サンプル)の計算過程(열 1: X₁=3, X₂=1)
問題
バッチ演算(重みかけとバイアス足し、足し算、引き算、かけ算、平均引き、合計、平均など)の空欄(?)を埋めなさい。
各行からその行の平均を引いて空欄を埋めなさい。