大域最適解 ── 全範囲で最小の解
機械学習・運用工学・経済学――最適化問題はあちこちに登場。 「真の最適は見つかったのか?」は実用上の死活問題です。
山と谷で例えると:
非凸の地形ではどこを「最適」とするか保証が難しい。
$f(x) = x^4 - 4x^2 + x$ の例:
最小限のスニペットで動作確認できる例。 公的データ(SSDSE 等)を想定しています。
1 2 3 4 5 6 7 8 9 10 11 12 | import numpy as np from scipy.optimize import minimize, differential_evolution f = lambda x: x[0]**4 - 4*x[0]**2 + x[0] # 局所最適化(出発点で結果が変わる) print(minimize(f, x0=[ 1.0]).x) # 局所最小付近 print(minimize(f, x0=[-1.0]).x) # 大域最小付近 # 大域最適化 res = differential_evolution(f, bounds=[(-3, 3)]) print(res.x, res.fun) # 真の大域最小 |
| 手法 | 原理 | 適性 |
|---|---|---|
| 多スタートGD | 異なる初期値で複数回 | 低次元、 滑らか |
| 焼きなまし(SA) | 確率的に悪化も許容 | 離散・連続OK |
| 遺伝的アルゴリズム | 進化に倣う | 離散・組合せ |
| 差分進化 | 群知能 | 連続、 高次元 |
| ベイズ最適化 | 代理モデル | 評価コスト高 |
| 分枝限定 | 枝刈り探索 | 離散の厳密解 |
意外なことに、 大規模NNでは「大域最小に近い局所最小がたくさんある」ことが理論/実験で示されています:
| 手法 | 原理 | 適性 |
|---|---|---|
| 多スタートGD | 異なる初期値で複数回 | 低次元、 滑らか |
| 焼きなまし(SA) | 確率的に悪化も許容 | 離散・連続OK |
| 遺伝的アルゴリズム | 進化に倣う | 離散・組合せ |
| 差分進化 | 群知能 | 連続、 高次元 |
| ベイズ最適化 | 代理モデル | 評価コスト高 |
| 分枝限定 | 枝刈り探索 | 離散の厳密解 |
意外なことに、 大規模NNでは「大域最小に近い局所最小がたくさんある」ことが理論/実験で示されています: