ディープラーニングの学習の仕組み
G検定の勾配降下法(学習率とバッチサイズの違いを小さな計算で確認)
G検定には、勾配降下法、確率的勾配降下法(SGD)、学習率、ミニバッチ学習といった用語が並びます。このページは、損失が(w−3)²の簡単な例で、重みを3回更新する計算を4通りの学習率で行い、その後で更新回数の数え方を整理します。勾配降下法は、損失を減らす向きに重みを少しずつ動かす作業を繰り返す方法で、その歩幅が学習率です。
このページの損失と数値は、手計算できるように決めた架空の例です。
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-10-02。
試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。
結論
- 勾配降下法は、損失を減らす向き(負の勾配の向き)に、重みを少しだけ動かす作業を繰り返す
- 動かす大きさは、学習率×勾配。学習率が小さすぎると進みが遅く、大きすぎると収束しない
- 全データで1回更新するのがフルバッチ、1件ごとに更新するのがSGD、その中間がミニバッチ
- 同じデータ・同じエポック数でも、バッチサイズが小さいほど更新回数は多い
- SGDは、1回の更新に使う例が1件だけなので、損失が上下に揺れやすい(ノイズが大きい)
更新式
Googleの機械学習集中講座は、勾配降下法を、損失が最小になる重みとバイアスを反復的に見つける数学的手法と説明しています。手順は、現在の重みで損失を計算し、損失を減らす向きを決め、その向きに少しだけ動かし、これを損失がそれ以上減らなくなるまで繰り返す、というものです。同じ資料は、新しい重みを「古い重み−(少額×傾き)」の形で示しています。このページでは、その少額に当たる値を学習率として扱います。
このページの例では、損失をL(w)=(w−3)²とします。最小になるのはw=3のときです。傾き(勾配)は2×(w−3)で、更新式は新しいw=古いw−学習率×2×(w−3)です。初期値は0なので、最初の傾きは2×(0−3)=−6で、負の傾きの向きに動くとwは大きくなります。
学習率を4通りで比べる
初期値0から3回更新したときのwの値です。学習率が0.1なら、1回目は0−0.1×(−6)=0.6になります。
| 学習率 | 1回目 | 2回目 | 3回目 | 動き |
|---|---|---|---|---|
| 0.01 | 0.06 | 0.1188 | 0.1764 | 進みが遅い(3回でも目標3の手前0.18) |
| 0.1 | 0.6 | 1.08 | 1.464 | 目標3へ近づく(残りの距離が毎回0.8倍) |
| 1.0 | 6 | 0 | 6 | 0と6を行き来して近づかない |
| 1.1 | 6.6 | −1.32 | 8.184 | 行き来のたびに目標から遠ざかる |
目標との距離(w−3)は、1回の更新で(1−2×学習率)倍になります。学習率0.1なら0.8倍、0.01なら0.98倍で、どちらも縮みますが速さが違います。学習率1.0なら−1倍で、距離は同じまま符号だけが入れ替わり、0と6を行き来します。1.1なら−1.2倍で、距離が毎回大きくなります。この例では、1−2×学習率の絶対値が1より小さいときだけ、目標へ近づきます。
Googleの機械学習集中講座も、学習率が低すぎると収束に時間がかかり、高すぎると収束せず、損失を最小限に抑える値の周りを飛び回ると説明しています。目標は、高すぎず低すぎない学習率を選ぶことです。用語は学習率の用語集にあります。
バッチサイズと更新回数
Googleの機械学習集中講座は、バッチサイズを、重みとバイアスを更新する前に処理する例の数を指すハイパーパラメータと説明しています。エポックは、学習用のデータの全例を1回処理したことです。1,000件のデータを20エポック学習する場合の更新回数を並べます。用語の違いだけを整理したい場合は、エポック・バッチサイズ・イテレーションの比較を先に読むと整理できます。ここでは更新回数の数え方に絞ります。
| 方式 | 1回の更新に使う件数 | 1エポックの更新回数 | 20エポックの更新回数 |
|---|---|---|---|
| 全データ(フルバッチ) | 1,000件 | 1回 | 20回 |
| ミニバッチ(バッチサイズ100) | 100件 | 10回 | 200回 |
| 1件ずつ(SGD) | 1件 | 1,000回 | 20,000回 |
同じ資料は、ミニバッチSGDを、フルバッチとSGDの折衷案で、バッチサイズが1より大きくNより小さい数になる方式と説明しています。ミニバッチでは、バッチ内の例をランダムに選び、勾配を平均してから、1回の更新を行います。更新回数は、1エポックあたり「データ件数÷バッチサイズ」で数えます。用語はミニバッチ学習とエポックの用語集にあります。
SGDのノイズ
Googleの機械学習集中講座は、確率的勾配降下法では、1回の更新ごとに1つの例(バッチサイズが1)だけを使うと説明しています。十分に繰り返せば機能しますが、ノイズが非常に多くなります。ここでのノイズは、学習中に起きる変動のことで、更新の途中で損失が上下に揺れる形で表れます。
「確率的」という語は、各バッチを構成する例がランダムに選ばれることを指す、とも説明されています。1件ごとの更新は回数が多く、その1件に引っ張られて揺れやすいのが、SGDの特徴です。ミニバッチは、フルバッチとSGDの折衷です。SGDとAdamの違いはSGDとAdamを比べたページに整理しています。
問題文から読み取る
このページの計算例から導いた読み方です。出題を予想するものではありません。
- 「損失を減らす向きに、重みを少しずつ動かす」とあれば、勾配降下法
- 「更新の歩幅」「大きすぎると収束せず、小さすぎると時間がかかる」とあれば、学習率
- 「1件ずつ更新」「ノイズが大きい」とあれば、確率的勾配降下法(SGD)
- 「全データの勾配を平均してから1回更新」は、フルバッチ。「一部の例をまとめて」は、ミニバッチ
- 「バッチサイズを小さくすると、1エポックの更新回数は増える」という文は、上の表と一致する
G検定の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
よくある質問
勾配降下法は、G検定のシラバスにありますか?
JDLAの公開シラバスをもとにしたこのサイトのキーワード整理に、勾配降下法・確率的勾配降下法(SGD)・学習率・ミニバッチ学習・エポック・イテレーションが入っています。このページは、その学習の仕組みの用語を計算で確認する内容です。
勾配降下法は、必ず最小の損失に行き着きますか?
このページの計算例のように学習率が合っていれば損失は減りますが、必ずとは言えません。Googleの機械学習集中講座は、学習率が高すぎるとモデルは収束せず、損失を最小限に抑える重みとバイアスの周りを飛び回ると説明しています。
学習率とバッチサイズは、どちらも自分で決める値ですか?
どちらもハイパーパラメータです。Googleの機械学習集中講座は、ハイパーパラメータをユーザーが制御する値、パラメータを学習中にモデルが計算する値と区別し、学習率とバッチサイズをハイパーパラメータとして挙げています。
エポックとイテレーションは、同じ意味ですか?
同じではありません。Googleの機械学習集中講座は、エポックを学習用のデータの全例を1回処理したことと説明しています。このページでは、重みを1回更新することを1イテレーションと数えます。この数え方だと、1エポックあたりの更新回数はバッチサイズで変わります。
