深層学習の学習とは、損失関数を最小化するパラメータを勾配に沿って探す最適化の過程です。この項目では、最急降下法から確率的勾配降下法(SGD)、そしてモメンタムとNesterov Accelerated Gradientまで、最適化アルゴリズムの基礎を学びます。更新式の計算はE資格の定番問題です。
📖 概要
ニューラルネットワークの学習では、損失関数 L(θ) をパラメータ θ について最小化します。基本戦略は、損失が最も急に減る方向(勾配の逆方向)に少しずつパラメータを動かす勾配降下法です。1回の更新に使うデータの量によって、全データを使う最急降下法(バッチ勾配降下法)、1サンプルずつ使う確率的勾配降下法、その中間のミニバッチ学習に分かれ、深層学習では計算効率の観点からミニバッチ方式が標準です。
しかし、素朴な勾配降下は、谷が細長く曲がった損失面(Pathological Curvature)で振動して収束が遅くなるという弱点があります。これを改善するのが、過去の勾配を慣性として蓄積するMomentumと、その改良版であるNesterov Accelerated Gradientです。これらは次項の適応的学習率法(AdaGrad・RMSProp・Adam)の土台にもなっています。
🔍 キーワード解説
最急降下法と学習率
最急降下法(勾配降下法、バッチ勾配降下法)は、訓練データ全体で計算した損失の勾配を使ってパラメータを更新する方法です。更新式は
θ ← θ - η ∇L(θ)
で、∇L(θ) は損失のパラメータに関する勾配、η が学習率です。学習率は1回の更新でどれだけ進むかを決める最重要ハイパーパラメータで、大きすぎると損失が振動・発散し、小さすぎると収束が極端に遅くなります。学習の途中で学習率を段階的に下げるスケジューリングもよく行われます。
全データで勾配を計算する最急降下法は、勾配の推定は正確ですが、データが大規模になると1回の更新のコストが莫大になる点が実用上の課題です。
確率的勾配降下法(SGD)とミニバッチ
確率的勾配降下法(SGD: Stochastic Gradient Descent)は、データ全体ではなくランダムに選んだ一部のデータで勾配を近似して更新する方法です。狭義には1サンプルごとの更新を指しますが、実際には数十〜数百サンプルのミニバッチ単位で勾配を計算する「ミニバッチSGD」が標準で、単にSGDと呼ばれることが多いです。
ミニバッチ方式には、(1) 1回の更新が軽く同じ計算資源で何度も更新できる、(2) GPUの並列計算と相性が良い、(3) 勾配に適度なノイズが乗ることで浅い局所解や鞍点から抜け出しやすくなる、といった利点があります。バッチサイズは勾配推定の分散と計算効率のトレードオフを決めるハイパーパラメータです。なお、訓練データ全体を一巡することを1エポックと呼びます。
Pathological Curvature
Pathological Curvature(病的な曲率)は、損失関数の等高線が細長い谷のようになっている状況を指します。方向によって曲率が大きく異なる(条件数が悪い)ため、素朴な勾配降下では曲率の大きい壁の方向に振動を繰り返し、本当に進みたい谷底方向にはわずかしか進めません。学習率を上げると振動が発散し、下げると進みが遅くなるというジレンマに陥ります。この問題が、勾配の履歴を使うモメンタム系や、方向ごとに学習率を変える適応的手法が必要とされる動機です。
Momentum
Momentum(モメンタム)は、過去の勾配を指数的に減衰させながら蓄積した「速度」を使って更新する方法です。速度 v を用いて
v ← α v - η ∇L(θ) θ ← θ + v
と更新します。αはモメンタム係数(例: 0.9)で、慣性の強さを決めます。物理的には、損失面の上をボールが転がるイメージです。振動する方向の勾配は正負が打ち消し合って抑制され、一貫して同じ向きの勾配は蓄積されて加速するため、Pathological Curvatureのもとでも谷底方向へ効率よく進めます。
Nesterov Accelerated Gradient
Nesterov Accelerated Gradient(NAG、Nesterovモメンタム)は、Momentumの改良版です。現在の位置で勾配を計算する代わりに、「慣性でこれから移動するであろう先の位置(θ + αv)」で勾配を評価します。
v ← α v - η ∇L(θ + α v) θ ← θ + v
いわば「一歩先を見てからブレーキやハンドルを調整する」方式で、行き過ぎを事前に検知して補正できるため、標準のMomentumより振動が抑えられ収束が改善することが多いとされます。「勾配をどの地点で評価するか(現在地か、慣性で進んだ先か)」がMomentumとの唯一の違いであり、試験でもこの点が問われます。
📝 試験でのポイント
- SGD・Momentum・NAGの更新式に具体的な数値を代入して、更新後のパラメータや速度を計算させる問題が頻出です
- 最急降下法(全データ)・SGD(1サンプル)・ミニバッチ学習の違いと、それぞれの長所短所(勾配の正確さ vs 計算コスト・ノイズの効用)を整理しましょう
- 学習率が大きすぎる/小さすぎるときに起こる現象(発散・振動/収束の遅さ)は正誤問題の定番です
- MomentumとNAGの違いは「勾配を評価する位置」(現在位置か、慣性で移動した先か)。この一点を明確に説明できるようにしましょう
- Pathological Curvature(細長い谷での振動)がなぜ起き、モメンタムがなぜそれを緩和するか(振動成分の打ち消しと一貫方向の加速)を理解しておきましょう
📚 まとめ
学習の基本は、勾配の逆方向に学習率ηだけ進む勾配降下法であり、深層学習では計算効率とノイズの効用からミニバッチSGDが標準です。細長い谷(Pathological Curvature)での振動という弱点は、勾配を慣性として蓄積するMomentumで緩和され、慣性で進んだ先の勾配を使うNesterov Accelerated Gradientでさらに改善されます。これらの考え方は、次に学ぶ適応的学習率法(Adamなど)の基礎になります。
