勾配降下法で学習を進めていたら、誤差が下がらなくなった——でも実はそこ、本当のゴールではないかもしれません。周りより低いだけの「見せかけの谷」、それが局所最適解です。この記事では、なぜ学習がそこにはまり込むのかという仕組みと、抜け出すための対策を中心に解説します。

📖 ひと言でいうと

局所最適解とは、その周辺の範囲では最も良く見えるものの、全体で見れば最良ではない解のことです。山下りに例えると、下っている途中にある小さなくぼ地にあたります。くぼ地の底ではどの方向へ進んでも一度は登りになるため、「ここが一番低い」と錯覚してしまいますが、峠を越えた先にはもっと深い谷(大域最適解)が広がっているかもしれません。

🖼 1枚でわかる局所最適解

局所最適解=周りより低いだけの「見せかけの谷」
  • 正体 — 最小に見えるが、全体の最小(大域最適解)ではない解
  • なぜはまる — 勾配降下法は足元の傾きしか見ないため、くぼみの底で勾配ゼロになり停止
  • 起きやすい条件 — 誤差関数が複雑な形(非凸)をしている場合
  • 対策 — 学習率の調整、モーメンタム、SGDのランダム性など
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

最小に見えるが実際にそうではない見せかけの解。

一文の短い定義ですが、「見せかけ」という言葉に本質が詰まっています。学習アルゴリズムの視点では、局所最適解の底は本物のゴールと区別がつきません。どちらも「そこから少し動くと誤差が増える」点、すなわち勾配がゼロになる点だからです。全体を見渡せば他にもっと良い解があるのに、局所的な情報だけでは気づけない——これが「最小に見えるが実際にそうではない」の意味です。

🔍 しっかり理解する

なぜ勾配降下法は騙されるのか

勾配降下法は、現在地の勾配(傾き)だけを頼りに、誤差が減る方向へ一歩ずつ進むアルゴリズムです。地形全体の地図を持っているわけではなく、足元しか見えていません。そのため、進んだ先が小さなくぼみだった場合、その底では全方向が登り坂となり勾配がゼロになるので、更新が止まってしまいます。ニューラルネットワークの誤差関数はパラメータ数が膨大で非常に複雑な形(非凸関数)をしており、こうしたくぼみが無数に存在し得ます。

局所最適解から抜け出す対策

対策の第一は学習率の調整です。学習率(1歩の幅)を大きめに設定すると、浅いくぼみなら勢いで乗り越えて、より深い谷へ進める可能性が高まります。ただし大きすぎると本物の最適解付近でも通り過ぎてしまうため、序盤は大きな学習率で広く探し、終盤は小さな学習率で丁寧に底へ降りる、というように段階的に下げていく工夫が定番として使われます。

第二はモーメンタムです。物理の慣性のように「直前まで進んでいた方向への勢い」を更新に加えることで、小さなくぼみや平坦な場所を惰性で通過しやすくします。また、確率的勾配降下法(SGD)が持つ更新のランダムなゆらぎも、浅い局所最適解からの脱出を助けるとされています。

第三は出発点を変えることです。勾配降下法がどの谷にたどり着くかは重みの初期値に左右されるため、初期値を変えて複数回学習し、最も良い結果を採用すれば、質の悪い局所最適解だけをつかむリスクを減らせます。どの対策も「必ず避けられる」保証はありませんが、組み合わせることで実用上十分に良い解へ到達しやすくなります。

鞍点・プラトーとの区別

学習が停滞する地形は局所最適解だけではありません。高次元の誤差関数では、ある方向から見ると極小、別の方向から見ると極大になっている鞍点という点があり、その付近では勾配が小さくなって学習が停滞しやすくなります。また、傾きがほとんどない平坦な領域はプラトーと呼ばれます。「谷底(局所最適解)」「馬の鞍の中央(鞍点)」「平原(プラトー)」という地形の違いをイメージで区別しておきましょう。どの地形でも共通するのは「勾配が小さくなって更新が進まなくなる」という症状で、外から損失の推移を見ているだけではどれにはまっているのか区別がつきにくい、という点も押さえておくと理解が深まります。

🅰 局所最適解
  • 周辺の中では最小の「くぼみの底」
  • どの方向へも登りになるため停止する
  • 全体最小(大域最適解)とは限らない
🅱 鞍点
  • ある方向には極小、別の方向には極大
  • くぼみの底ではないのに勾配が小さく停滞
  • 高次元の学習で特に問題になりやすい

💡 具体例で考える

ニューラルネットワークを同じデータ・同じネットワーク構造で2回学習させたのに、最終的に落ち着く誤差の値が毎回微妙に違う、という現象は実際の開発現場でもよく観察されます。これは重みの初期値が毎回ランダムに決まるため、出発点によってたどり着く谷(解)が変わるからです。初期値を変えて複数回学習し、最も良かったモデルを採用するという実務上の工夫は、局所最適解対策の素朴な例といえます。

もう1つの例として、学習率を段階的に調整するテクニックがあります。最初は学習率を大きくして浅いくぼみを飛び越えながら大まかに探索し、良さそうな領域に入ったら学習率を下げて底へ丁寧に降りていく。「大きく探して、小さく詰める」という2段構えが、途中の浅い局所最適解につかまるリスクの低減と、最終的な解の精度の両方に効いてくるわけです。

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

💡 ポイント
  • 大域最適解との違い: 大域最適解は「すべての解の中で最も良い解」、局所最適解は「周辺の中でだけ最良の解」です。「全体でのNo.1」か「ご近所No.1」かの違い、と覚えましょう。
  • 鞍点との混同: 局所最適解はどの方向にも登りになる「くぼみの底」ですが、鞍点は方向によって極小にも極大にも見える点です。どちらも学習停滞の原因ですが、地形として別物です。
  • 「局所最適解に落ちた学習は失敗」とは限らない: ディープラーニングでは、大域最適解でなくても実用上十分に誤差の低い解であれば問題ないことが多く、必ずしも大域最適解を求める必要はありません。
  • 「SGDやモーメンタムを使えば必ず回避できる」は誤り: これらは陥りにくくする工夫であって、回避を保証するものではありません。

📝 試験でのポイント

💡 ポイント
  • 「最小に見えるが実際にそうではない見せかけの解」という定義文から局所最適解を選ばせる、または大域最適解の定義と入れ替えたひっかけが典型的な想定です。
  • 「勾配降下法の課題」として局所最適解が挙げられ、対策に学習率の調整やモーメンタムが対応する、という因果のセットで問われやすいでしょう。
  • 鞍点・プラトーとの区別を問う問題に備え、「くぼみの底/方向により極小かつ極大/平坦な領域」という地形の対応を押さえておきましょう。

📚 まとめ

局所最適解は、周辺では最小に見えるものの全体の最小ではない「見せかけの谷」で、足元の勾配しか見ない勾配降下法が停止してしまう典型的な落とし穴です。対策には学習率の調整、モーメンタム、SGDのランダム性などがありますが、いずれも保証付きではありません。大域最適解(全体の最小)や鞍点(別種の停滞地形)との区別が試験の急所です。