論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
数理最適化
Mathematical Optimization
最適化

🔖 キーワード索引

数理最適化Mathematical Optimization最適化

本ページは 数理最適化(Mathematical Optimization)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。

💡 30秒で分かる結論

📍 文脈 — どこで使う概念か

数理最適化(Mathematical Optimization)は、 AI・機械学習・オペレーションズリサーチ(OR)の 共通基盤。 機械学習の「学習」は 損失関数の最小化問題に他なりません。 物流のルート、 シフト計画、 ポートフォリオ、 化学プロセスの最適化など、 産業のあらゆる場面で使われます。

🎨 直感で掴む — 具体例で理解する

最適化問題の一般形:

目的関数 $f(x)$ を最小化、 制約 $g_i(x) \le 0$ のもとで

例:

分野目的関数制約
機械学習予測誤差を最小化過学習しないこと
物流配送コストを最小化時間・容量制約
金融ポートフォリオのリスク最小化期待収益 ≥ X%
製造生産コスト最小化需要を満たす

問題の 形(凸 / 非凸、 線形 / 非線形、 連続 / 整数)で適用手法が大きく変わります。

📐 定義・数式

【最適化問題の一般形】
$$\min_{\mathbf{x} \in \mathcal{X}} f(\mathbf{x}) \quad \text{s.t.} \quad g_i(\mathbf{x}) \le 0, \; h_j(\mathbf{x}) = 0$$
$f$ = 目的関数、 $g_i$ = 不等式制約、 $h_j$ = 等式制約、 $\mathcal{X}$ = 変数の領域
【勾配降下法】
$$\mathbf{x}_{t+1} = \mathbf{x}_t - \eta \nabla f(\mathbf{x}_t)$$
勾配(最も急な下り方向)に $\eta$ 倍だけ進む。 機械学習の学習則の基本

🔬 記号・要素の読み解き

$f(\mathbf{x})$
目的関数。 最小化したい量
$g, h$
不等式・等式制約
$\nabla f$
勾配ベクトル。 関数が最も急に増加する方向
$\eta$(学習率)
1 ステップで進む量。 ハイパラ
凸関数
局所最小 = 大域最小。 解きやすい
非凸関数
局所最小が複数。 解きにくい(深層学習の損失関数はほぼこれ)

🧮 数値例・実値計算

例:簡単な 2 次関数 $f(x) = (x-3)^2$ を勾配降下で最小化

ステップ$x_t$$f(x_t)$勾配 $2(x-3)$
00.09.0−6.0
1 ($\eta=0.3$)1.81.44−2.4
22.520.23−0.96
32.810.04−0.38
103.000.0000.00

10 ステップで最小値 $x = 3$ に到達。 学習率が大きすぎると振動、 小さすぎると遅い。

🐍 Python 実装例

最小コードで動かしてみる例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from scipy.optimize import minimize
import numpy as np

# Rosenbrock 関数の最小化(最適化ベンチマーク)
def rosenbrock(x):
    return (1 - x[0])**2 + 100 * (x[1] - x[0]**2)**2

result = minimize(rosenbrock, x0=[0, 0], method='BFGS')
print(f'最適解: {result.x}')
print(f'最適値: {result.fun:.6f}')

⚠️ よくある落とし穴

❌ 局所最適
非凸関数では局所解に収束。 複数初期値で再実行、 焼きなまし法等。
❌ 学習率の選択
大きすぎると発散、 小さすぎると遅い。 Adam 等の適応的手法が定番。
❌ 制約の取り扱い
ペナルティ法、 ラグランジュ法、 内点法など、 制約の種類で手法が変わる。
❌ 離散最適化の難しさ
整数計画は NP 困難。 厳密解は小規模問題のみ、 大規模は近似(焼きなまし、 GA)。
❌ 勾配の特異点
微分不可能な点(ReLU の 0 点)は劣勾配で扱う。