制約付き最適化・LP・凸最適化
概要
制約付き最適化は実数ベクトル $\mathbf{x} \in \mathbb{R}^n$ に対し
$$\min_{\mathbf{x}} f(\mathbf{x}) \quad \text{subject to} \quad \mathbf{g}(\mathbf{x}) \leq 0, \;\; \mathbf{h}(\mathbf{x}) = 0$$
を解く問題で、目的関数・制約の線形性・凸性・微分情報の有無に応じて多様なアルゴリズムが使い分けられる。
sangi は線形計画 (LP)、非線形最小二乗、境界制約 L-BFGS-B、ペナルティ法、拡張ラグランジュ法、凸最適化 (FISTA, ADMM) を optimization_nd.hpp / linear_programming.hpp / ConvexOptimization.hpp で提供する。
無制約最適化は Optimization-unconstrained、微分不要法は Optimization-derivative-free を参照。
線形計画 (LP)
LP は目的関数・制約がすべて線形である問題:
$$\min \mathbf{c}^T \mathbf{x} \quad \text{subject to} \quad A \mathbf{x} \;\{\leq, =, \geq\}\; \mathbf{b}, \quad \mathbf{x} \geq 0$$
輸送計画・生産計画・ポートフォリオ最適化・ネットワークフローなどの古典的応用がある。
シンプレックス法
Dantzig (1947) のシンプレックス法は実行可能領域 (凸多面体) の頂点を辿って最適頂点を探す。 各反復で:
- 現在の基底解に対し縮約コストを計算 (双対変数経由)。
- 負の縮約コストを持つ非基底変数を選び (入る変数)、上限制約から基底から出る変数を決める (pivot 規則: Bland 規則、最大改善規則等)。
- 基底を更新して次の頂点へ移る。
最悪計算量は指数 (Klee-Minty cube)、平均的には多項式時間で動く実用的アルゴリズム。 改訂シンプレックス法は基底逆行列を陽に保持せず LU 分解を更新することで疎な大規模問題でも効率的に動作する。
2 フェーズ法
実行可能基底解が直接見つからない場合、フェーズ I で人工変数を導入した補助 LP を解いて初期実行可能解を取得し、フェーズ II で本来の目的を最小化する。
sangi の simplex は 2 フェーズ改訂シンプレックス法を採用し、$\leq, =, \geq$ すべての制約型に対応する。
双対性
主問題 $\min \mathbf{c}^T \mathbf{x}$ s.t. $A \mathbf{x} \leq \mathbf{b}, \mathbf{x} \geq 0$ に対し 双対問題 $\max \mathbf{b}^T \mathbf{y}$ s.t. $A^T \mathbf{y} \leq \mathbf{c}, \mathbf{y} \geq 0$ が定義され、強双対定理から両者の最適値は一致する。 感度分析や経済学的解釈 (シャドープライス) に重要。
内点法と凸計画
シンプレックス法が境界を辿るのに対し、内点法は実行可能領域の内側を通って最適点に近づく。
主双対パスフォロワー
不等式制約 $\mathbf{x} \geq 0$ を対数バリア $-\mu \sum_i \log x_i$ で柔軟化:
$$\min \mathbf{c}^T \mathbf{x} - \mu \sum_i \log x_i \quad \text{subject to} \quad A \mathbf{x} = \mathbf{b}$$
$\mu \to 0$ の極限で元問題の解に収束する。中心パス上を Newton 法で近似的に追跡する。 Karmarkar (1984) で多項式時間が確立、Mehrotra (1992) の predictor-corrector 法で実用性能が大きく向上した。 密で大規模な LP では内点法が圧倒的に速い。
凸計画と SOCP / SDP
内点法は LP の枠を超えて、より一般の凸計画にも拡張される:
- QP (二次計画): $\min \tfrac{1}{2} \mathbf{x}^T Q \mathbf{x} + \mathbf{c}^T \mathbf{x}$, $A \mathbf{x} \leq \mathbf{b}$。SVM 等に多用。
- SOCP (二次錐計画): $\|A_i \mathbf{x} + \mathbf{b}_i\| \leq \mathbf{c}_i^T \mathbf{x} + d_i$ の形の二次錐制約。ロバスト LP・ポートフォリオ最適化。
- SDP (半正定値計画): 行列変数の半正定値制約。LMI 制御・組合せ緩和。
これらは self-concordant barrier の理論 (Nesterov-Nemirovski 1994) で統一的に扱える。 sangi 現バージョンは LP のシンプレックス法のみを提供し、QP / SOCP / SDP は今後の拡張対象である。
KKT 条件とラグランジュ乗数
等式制約 $\mathbf{h}(\mathbf{x}) = 0$ と不等式制約 $\mathbf{g}(\mathbf{x}) \leq 0$ のもとでの最適化問題に対し、 ラグランジュ関数
$$\mathcal{L}(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) = f(\mathbf{x}) + \boldsymbol{\lambda}^T \mathbf{h}(\mathbf{x}) + \boldsymbol{\mu}^T \mathbf{g}(\mathbf{x})$$
を導入する。$\mathbf{x}^*$ が局所最小点で制約が適切な regularity (LICQ 等) を満たすとき、 ある $\boldsymbol{\lambda}^*, \boldsymbol{\mu}^*$ が存在して以下の KKT 条件を満たす:
| 条件 | 式 |
|---|---|
| 定常性 | $\nabla_x \mathcal{L}(\mathbf{x}^*, \boldsymbol{\lambda}^*, \boldsymbol{\mu}^*) = 0$ |
| 原始実行可能性 | $\mathbf{h}(\mathbf{x}^*) = 0, \;\; \mathbf{g}(\mathbf{x}^*) \leq 0$ |
| 双対実行可能性 | $\boldsymbol{\mu}^* \geq 0$ |
| 相補スラック性 | $\mu_i^* \cdot g_i(\mathbf{x}^*) = 0 \;\; \forall i$ |
凸性 ($f, g_i$ 凸, $h_j$ アフィン) のもとでは KKT は十分条件にもなる。 多くの制約付き最適化アルゴリズム (SQP、内点法、active set) は KKT 系を反復的に解く。
SQP と active set 法
SQP (Sequential Quadratic Programming)
非線形制約付き最適化を反復的に QP 部分問題に置き換えて解く手法。各反復で:
$$\min_{\mathbf{p}} \; \nabla f(\mathbf{x}_k)^T \mathbf{p} + \tfrac{1}{2} \mathbf{p}^T H_k \mathbf{p}$$ $$\text{s.t.} \;\; \nabla h_j(\mathbf{x}_k)^T \mathbf{p} + h_j(\mathbf{x}_k) = 0, \;\; \nabla g_i(\mathbf{x}_k)^T \mathbf{p} + g_i(\mathbf{x}_k) \leq 0$$
$H_k$ はラグランジュ関数の Hessian (またはその BFGS 近似)。 二次収束する強力な手法で、SNOPT, NLPQL 等の商用ソルバの基盤。sangi 現バージョンでは未提供 (拡張候補)。
active set 法
不等式制約のうち現在の解で等号成立しているもの (active set) を仮定し、その上で等式制約問題を解く。 Lagrange 乗数の符号や KKT 違反で active set を更新する。 QP では古典的、$n$ が小〜中規模で疎な制約構造を持つ問題に有効。
ペナルティ法と拡張ラグランジュ
ペナルティ法
制約違反を目的関数のペナルティ項に変換し、無制約問題として解く:
$$\Phi_\mu(\mathbf{x}) = f(\mathbf{x}) + \mu \sum_i \max(0, g_i(\mathbf{x}))^2 + \mu \sum_j h_j(\mathbf{x})^2$$
$\mu \to \infty$ で制約満足に近づく。実装が単純で勾配ベース無制約ソルバを再利用できるが、 $\mu$ が大きいと条件数が悪化して内部最適化が困難になる。
sangi の penaltyMinimize は不等式制約版で、$\mu$ を段階的に増加させる。
拡張ラグランジュ法
ペナルティ項にラグランジュ乗数推定を加えた目的関数:
$$\mathcal{L}_A(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}; \rho) = f(\mathbf{x}) + \boldsymbol{\lambda}^T \mathbf{h}(\mathbf{x}) + \tfrac{\rho}{2} \|\mathbf{h}(\mathbf{x})\|^2 + \cdots$$
外側ループで $\boldsymbol{\lambda} \leftarrow \boldsymbol{\lambda} + \rho \, \mathbf{h}(\mathbf{x}_k)$ と更新することで、$\rho$ を中程度に保ったまま制約満足を達成できる。 Powell-Hestenes-Rockafellar 法とも呼ばれる。 ペナルティ法の ill-conditioning を回避し、SQP と並ぶ標準的手法である。
sangi の augmentedLagrangianMinimize は等式・不等式両対応の実装。
境界制約 (L-BFGS-B)
各変数に独立な上下限 $l_i \leq x_i \leq u_i$ を持つ問題は、勾配射影法と L-BFGS の組み合わせで効率的に解ける。 Byrd, Lu, Nocedal, Zhu (1995) の L-BFGS-B が標準実装。
各反復で:
- Cauchy point を勾配射影で計算し、active set を確定。
- 自由変数 ($l_i < x_i < u_i$) のみで L-BFGS ステップを計算。
- 射影ライン探索で境界を尊重しつつ更新。
パラメータが物理的に有界 (確率は $[0, 1]$ 等) な問題で広く使われる。
無制約変数には $l_i = -\infty, u_i = +\infty$ を渡せばよい。sangi の lbfgsbMinimize がこの実装。
非線形最小二乗 (Gauss-Newton, LM)
残差関数 $\mathbf{r}: \mathbb{R}^n \to \mathbb{R}^m$ ($m \geq n$) に対し $\min \tfrac{1}{2} \|\mathbf{r}(\mathbf{x})\|^2$ を解く問題。 曲線フィッティング・ロボット工学・コンピュータビジョン (bundle adjustment) で頻出する。
Gauss-Newton
残差の線形化 $\mathbf{r}(\mathbf{x} + \mathbf{p}) \approx \mathbf{r}(\mathbf{x}) + J \mathbf{p}$ から正規方程式:
$$J^T J \, \mathbf{p} = -J^T \mathbf{r}$$
$J$ がフルランクなら 1 反復ごとに大幅な減少を期待できる。 Hessian の二次項 $\sum r_i \nabla^2 r_i$ を無視するため、$\mathbf{r}$ が小さい近傍では Newton 法と等価になる。 $J^T J$ が悪条件・特異な場合に発散しやすい。
Levenberg-Marquardt
正規方程式に damping を加える:
$$(J^T J + \lambda I) \mathbf{p} = -J^T \mathbf{r}$$
$\lambda$ が大きいと最急降下方向に近づき、小さいと Gauss-Newton 方向に近づく。 gain ratio $\rho = \frac{\Delta f_{\text{actual}}}{\Delta f_{\text{predicted}}}$ で $\lambda$ を信頼領域的に更新する (Marquardt 1963)。
sangi の gaussNewtonMinimize は LM 正則化付き Gauss-Newton (固定 $\lambda$ + Armijo ライン探索)、
leastSquaresFit は gain ratio で適応的に $\lambda$ を制御する標準 LM 実装。
curveFit はモデル $y = f(x, \mathbf{p})$ のフィッティングを高レベル API で提供する。
共分散と統計
収束後、パラメータ共分散行列は $\mathrm{Cov}(\hat{\mathbf{p}}) = s^2 (J^T J)^{-1}$ で推定される ($s^2 = \|\mathbf{r}\|^2 / (m - n)$)。
各パラメータの標準誤差・$\chi^2$・reduced $\chi^2$ も LeastSquaresFitResult から取得できる。
関連記事: 非線形最小二乗法
FISTA と ADMM
機械学習・信号処理で頻出する非滑らかな凸最適化 (L1 正則化、TV 正則化等) には専用の高速アルゴリズムがある。
FISTA
Beck and Teboulle (2009) の Fast ISTA。次の合成問題を扱う:
$$\min_{\mathbf{x}} \; f(\mathbf{x}) + g(\mathbf{x})$$
$f$ は微分可能凸 (Lipschitz 定数 $L$ の勾配)、$g$ は近接作用素 $\mathrm{prox}_{\alpha g}(v) = \arg\min_u \{g(u) + \frac{1}{2\alpha} \|u - v\|^2\}$ が安価に計算できる凸関数。
反復式:
$$\mathbf{y}_k = \mathbf{x}_k + \frac{t_{k-1} - 1}{t_k} (\mathbf{x}_k - \mathbf{x}_{k-1})$$ $$\mathbf{x}_{k+1} = \mathrm{prox}_{(1/L) g}\bigl(\mathbf{y}_k - \tfrac{1}{L} \nabla f(\mathbf{y}_k)\bigr)$$ $$t_{k+1} = \tfrac{1 + \sqrt{1 + 4 t_k^2}}{2}$$
Nesterov の運動量で $O(1/k^2)$ 収束を達成。Lasso ($g = \lambda \|\cdot\|_1$, prox = soft thresholding)、TV 復元、低ランク行列復元等で標準。
sangi の fista が一般 FISTA、lassoFISTA が Lasso 特化版 (Lipschitz $L$ をパワーメソッドで自動推定)。
ADMM
Glowinski-Marrocco (1975) と Gabay-Mercier (1976) に遡る分割技法。 次の形を扱う:
$$\min \; f(\mathbf{x}) + g(\mathbf{z}) \quad \text{subject to} \quad A \mathbf{x} + B \mathbf{z} = \mathbf{c}$$
拡張ラグランジュを $\mathbf{x}, \mathbf{z}$ で交互最小化、双対変数 $\mathbf{y}$ を更新:
$$\mathbf{x}_{k+1} = \arg\min_{\mathbf{x}} \; f(\mathbf{x}) + \tfrac{\rho}{2} \|A \mathbf{x} + B \mathbf{z}_k - \mathbf{c} + \mathbf{u}_k\|^2$$ $$\mathbf{z}_{k+1} = \arg\min_{\mathbf{z}} \; g(\mathbf{z}) + \tfrac{\rho}{2} \|A \mathbf{x}_{k+1} + B \mathbf{z} - \mathbf{c} + \mathbf{u}_k\|^2$$ $$\mathbf{u}_{k+1} = \mathbf{u}_k + A \mathbf{x}_{k+1} + B \mathbf{z}_{k+1} - \mathbf{c}$$
変数分離で複雑な問題が 2 つの近接問題に分解されるため、$f, g$ の構造を活用できる。
分散最適化・consensus 最適化・複合正則化に強い。sangi の admmLasso は Lasso 特化版。
FISTA / ADMM の包括的解説は Boyd et al. (2011) の Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers を参照。
sangi の dispatch
| 問題の形 | 推奨関数 (sangi) |
|---|---|
| 線形目的・線形制約 (LP) | simplex / simplexMaximize |
| 境界制約 $l \leq x \leq u$ のみ | lbfgsbMinimize |
| 不等式制約のみ、勾配あり | penaltyMinimize |
| 等式 + 不等式、勾配あり | augmentedLagrangianMinimize |
| 非線形最小二乗 $\sum r_i(x)^2$ | gaussNewtonMinimize / leastSquaresFit |
| 曲線フィッティング $y = f(x, p)$ | curveFit |
| Lasso $\frac{1}{2}\|Ax - b\|^2 + \lambda \|x\|_1$ | lassoFISTA / admmLasso |
| 一般合成凸 $f + g$ ($g$ prox 可) | fista |
| 制約あり、勾配なし | cmaesMinimize + ペナルティ手動 (derivative-free) |
スケーリングの重要性
制約付き最適化では変数・制約のスケールが結果に大きく影響する。 変数を $[-1, 1]$ 程度に正規化、制約も同オーダーに揃えると ill-conditioning が大きく改善する。 LP では並列化された行・列スケーリング、非線形最小二乗では Jacobian 列正規化が標準的対策。
参考文献
- Nocedal, J. and Wright, S. J. (2006). Numerical Optimization, 2nd ed. Springer.
- Boyd, S. and Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press.
- Bertsekas, D. P. (1999). Nonlinear Programming, 2nd ed. Athena Scientific.
- Marquardt, D. W. (1963). "An Algorithm for Least-Squares Estimation of Nonlinear Parameters". SIAM J. Appl. Math., 11, 431–441.
- Beck, A. and Teboulle, M. (2009). "A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems". SIAM J. Imaging Sci., 2, 183–202.
- Boyd, S., Parikh, N., Chu, E., Peleato, B., and Eckstein, J. (2011). "Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers". Foundations and Trends in Machine Learning, 3, 1–122.