ディープラーニングの学習を支える最も基本的な最適化アルゴリズムが確率的勾配降下法(SGD: Stochastic Gradient Descent)です。「確率的」という言葉の意味と、全データを使う勾配降下法との違いがわかれば、AdamやRMSpropなど後続の手法を理解する土台もできあがります。

📖 ひと言でいうと

確率的勾配降下法とは、勾配降下法の一種で、全データではなくランダムに選んだ一部のデータだけで勾配を計算し、パラメータを更新していく手法です。全国の有権者全員に聞く代わりに、無作為抽出した少数への世論調査で傾向をつかむのに似ています。1回1回の見積もりは粗くても、繰り返せば全体としては正しい方向に進める、という発想です。

🖼 1枚でわかる確率的勾配降下法

確率的勾配降下法(SGD)の要点
  • 勾配降下法の一種 — 連続最適化問題の近似解を求める乱択アルゴリズム
  • 基本はランダム1点 — 1つのデータポイントで勾配を計算して更新
  • ミニバッチ版が主流 — 小さなデータ集合で計算するバージョンも広く使用
  • 強み — 大規模データやオンライン学習で効率的、局所最小に陥りにくいとされる
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

勾配降下法の一種で、連続最適化問題に対する近似解を求めるための乱択アルゴリズムである。ランダムに選んだ1つのデータポイントで勾配を計算するケースが基本だが、ミニバッチと呼ばれる小さなデータ集合で勾配を計算するバージョンも広く使用される。この手法は特に大規模データセットやオンライン学習環境で効率的に動作する。局所最小に陥りにくいとされる利点は主に非凸関数に対して有効だが、局所最小に陥る可能性自体はゼロではない。凸関数の場面では、基本的な勾配降下法でも全体の最小値に収束する可能性が高い。

かみ砕くと、「乱択アルゴリズム」とはランダム性を計算の中に取り入れたアルゴリズムのことです。SGDは全データで正確な勾配を求める代わりに、ランダム抽出したデータで勾配を近似します。1回の計算が軽くなるので大規模データやオンライン学習に向き、さらにランダムなゆらぎのおかげで浅い局所最小から抜け出しやすい、というのが要点です。ただし局所最小に陥る可能性がゼロになるわけではない、という限定も公式テキストは明記しています。

🔍 しっかり理解する

何が「確率的」なのか

もとになる勾配降下法(最急降下法)は、訓練データ全体を使って誤差関数の勾配を正確に計算し、パラメータを更新します。しかしデータが数百万件あると、1回の更新のために全件を計算するのは非常に重くなります。SGDは「ランダムに選んだデータで勾配を近似する」ことでこの問題を解決します。どのデータが選ばれるかが確率的に決まるため「確率的」勾配降下法と呼ばれます。

🅰 (バッチ)勾配降下法
  • 全データで勾配を正確に計算
  • 更新方向は安定するが1回が重い
  • 大規模データでは計算負荷が課題
🅱 確率的勾配降下法(SGD)
  • ランダム抽出したデータで勾配を近似
  • 1回の計算が軽く更新回数を稼げる
  • 方向はぶれるが、ゆらぎが局所最小からの脱出に役立つことも

ミニバッチSGDが実務の標準

データ1件だけで更新する基本形は計算が最も軽い反面、更新方向のぶれが大きくなります。全件使うバッチ勾配降下法は安定ですが重い。その中間として、数十〜数百件の「ミニバッチ」で勾配を計算して更新する方式が、計算効率と安定性のバランスに優れるため現在の標準になっています。ディープラーニングのフレームワークで単に「SGD」と呼ぶ場合、実際にはこのミニバッチ版を指していることがほとんどです。イテレーション(ミニバッチ1つでの更新1回)やエポック(全データ1周)という単位は、このミニバッチ学習を数えるための言葉です。

ランダムさがもたらす副産物

ニューラルネットワークの誤差関数は凸関数ではなく、局所最小(見せかけの谷)が多数存在する複雑な形をしています。SGDの勾配は毎回ランダムにぶれるため、その「ノイズ」が浅い谷を乗り越えるきっかけになり、局所最小に陥りにくいとされています。ただし公式テキストのとおり、この利点は主に非凸関数で意味を持つ話で、陥る可能性自体はゼロではありません。凸関数(谷が1つしかない形)であれば、基本的な勾配降下法でも全体の最小値に収束する可能性が高い点も押さえておきましょう。

💡 具体例で考える

訓練データ100万件の画像分類を考えます。バッチ勾配降下法では、パラメータを1回動かすだけで100万件分の勾配計算が必要です。ミニバッチSGD(バッチサイズ100)なら、同じ計算量で1万回の更新ができます。1回ごとの方向は多少粗くても、更新の回数で挽回できるため、実際の学習は圧倒的に速く進みます。

実際の学習では、エポックごとにデータをシャッフルしてからミニバッチを切り出すことで、毎周異なる組み合わせのデータで勾配を計算します。この「毎回違うサンプルで見積もる」ことこそがSGDのランダム性の源であり、同じデータを同じ順で繰り返すよりも偏りの少ない学習につながります。

またSGDは、AdaGrad・RMSprop・Adamといった発展的な最適化手法の共通の土台です。これらは「SGDの更新に、勾配の履歴を使った学習率の自動調整やモーメンタム(慣性)を追加したもの」と位置づけられます。まずSGDを理解しておくと、後続手法は「SGD+α」として整理できます。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「SGDを使えば局所最小に陥らない」は誤り: 陥り「にくい」とされるだけで、可能性はゼロではありません。この限定表現の有無は選択肢のひっかけになり得ます。
  • 勾配降下法との関係: SGDは勾配降下法と別物ではなく、勾配計算に使うデータをランダムな一部に置き換えた「勾配降下法の一種」です。
  • 「確率的=結果がランダムで信頼できない」ではない: ランダムなのは各更新に使うデータの選び方であり、繰り返しの中で誤差を減らす方向に進む設計になっています。
  • ミニバッチ学習との関係: 厳密な基本形は1データポイントでの更新ですが、ミニバッチで勾配を計算するバージョンも広くSGDと呼ばれます。試験ではどちらの記述も正しい説明として扱われ得ます。

📝 試験でのポイント

💡 ポイント
  • 「勾配降下法の一種で、ランダムに選んだデータで勾配を計算する乱択アルゴリズム」という定義の穴埋め・選択問題が典型です。
  • バッチ勾配降下法/SGD/ミニバッチ勾配降下法の3方式について、使うデータ量と特徴(安定だが重い/軽いがぶれる/バランス型)の対応が問われる想定です。
  • 「大規模データセットやオンライン学習環境で効率的」という適用場面、「局所最小に陥りにくいとされるが可能性はゼロではない」という限定付きの利点も出題ポイントです。

📚 まとめ

確率的勾配降下法(SGD)は、ランダムに選んだデータで勾配を近似して更新する、勾配降下法の効率化版です。基本は1データポイント、実務ではミニバッチ版が主流で、大規模データやオンライン学習で威力を発揮します。ランダムなゆらぎが局所最小からの脱出に役立つ一方、陥る可能性はゼロではないこと、そしてAdamなどの発展手法の土台であることを押さえておきましょう。