凸最適化

**凸最適化**（とつさいてきか、）とは最適化問題の分野のひとつで、凸集合上の凸関数の最小化問題である。凸最適化問題は局所的な最小値が大域的な最小値と一致する性質をもつことから、一般的な最適化問題よりも簡単に最適化が可能である。

実ベクトル空間 X 上の実数値凸関数 f:\mathcal{X}\to \mathbb{R} が X の凸部分集合 \mathcal{X} 上で定義される。

凸最適化問題とは、f(x) の最小値となる \mathcal{X} 上の点 x^\ast を見つけることである。

すなわち、x^\ast は任意の x \in \mathcal{X} に対して f(x^\ast) \le f(x) を満たす。

## 凸最適化問題
\mathcal{X} 上の x^\ast を見つける最適化問題である。
:f(x^\ast) = \min \{f(x):x \in \mathcal{X}\},
ここで \mathcal{X} \subset \mathbb{R}^n は実行可能集合で、f(x):\mathbb{R}^n \rightarrow \mathbb{R} は目的関数である。\mathcal{X} が閉凸集合で、\mathbb{R}^n 上で f(x) が凸関数であれば、これを凸最適化問題という。

以上は数学的に一般化された定義であるが、この問題が実際に提示される場面において \mathcal{X}\subseteq\mathbb{R^2} は具体的な形で表現されることが多い。よくある例として、与えられた凸関数 g_i(x):i = 1,\dots,m を用いて以下のように連立不等式をみたす集合として定義される：

\mathcal{X}:=\{x\in\mathbb{R^n}:g_i(x)\leq0,i = 1,\dots,m\}

こういった事情を踏まえて以下のような定義が与えられることもある：
: \begin{align}
&\operatorname{minimize}& & f(x) \\
&\operatorname{subject\;to}
& &g_i(x) \leq 0, \quad i = 1,\dots,m
\end{align}
ここで、関数 f, g_1 \ldots g_m : \mathbb{R}^n \rightarrow \mathbb{R} は凸である。

## 理論
凸最適化問題において以下の命題は真である。
* 極小値が存在すれば大域的最小値である
* すべての（大域的）最小値の集合は凸である
* 強凸関数であり関数が最小値を持てば、一意に決まる

ヒルベルト射影理論、分離超平面定理、などの（ヒルベルト空間上の）関数解析とも関係している。

## 標準形
*標準形*は凸最小化問題をよく使用される直感的な形式で表現する。

3つの部分で成り立つ。
:
 
実際には線形制約とアフィンな制約はよく使用される。これらの形式は h_j(x) = a_j^T x + b_j と表せられる。ここで、a_j は列ベクトル、b_j は実数である。

凸最小化問題は以下のように表される

: \begin{align}
&\underset{x}{\operatorname{minimize}}& & f(x) \\
&\operatorname{subject\;to}
& &g_i(x) \leq 0, \quad i = 1,\dots,m \\
&&&h_j(x) = 0, \quad j = 1, \dots,p.
\end{align}

等式制約 h(x) = 0 は2つの不等式制約 h(x)\leq 0 と -h(x)\leq 0 を用いて置き換えることができる。そのため、等式制約は理論的には冗長であるが実際上の利点のため使用される。これらのことから、なぜ h_j(x) = 0 が単に凸であるのではなくアフィンであるのかが容易に理解できる。h_j(x) を凸とすると h_j(x) \leq 0 は凸であるが、一方で -h_j(x) \leq 0 は凹となる。そのため、h_j(x) = 0 が凸となるための条件が h_j(x) がアフィンであることである。

## 例
以下で示す例はすべて凸最小化問題であるか、変数変換により凸最小化問題にできる問題である。
* 最小二乗法
* 線形計画問題
* 線形制約付き凸二次計画問題 
* 2次制約付き2次計画問題
* 錐線形計画問題
* 幾何計画問題
* 二次錐計画問題
* 半正定値計画問題
* エントロピー最大化

## ラグランジュの未定乗数法
標準形に表された凸最小化問題を考える。コスト関数を f(x)、不等式制約をg_i(x)\leq 0 (i=1\ldots m)  とすると、定義域 \mathcal{X} は

:\mathcal{X} = \left\lbrace{x\in X \vert g_1(x)\le0, \ldots, g_m(x)\le0}\right\rbrace.

この問題に対するラグランジュ関数は
:*L*(*x*,*&lambda;*0,...,*&lambda;**m*) = *&lambda;*0*f*(*x*) + *&lambda;*1*g*1(*x*)  + ... + *&lambda;**m**g**m*(*x*).

X 上の関数 f を最小化する X 上の点 x に関して実数値のラグランジュ係数 \lambda_{0}, ..., \lambda_{m} が存在し、以下を満たす。
# X 上のすべての変数に関して x は*L*(*y*, λ0, λ1, ..., λm) を最小化する
# λ0 ≥ 0, λ1 ≥ 0, ..., λ*m* ≥ 0, 少なくともひとつは λ*k*&gt;0,
# *&lambda;*1*g*1(*x*) = 0, ..., *λ**m**g**m*(*x*) = 0 (相補スラック性).

## 方法
凸最小化問題は以下の方法を用いて解くことが可能である。
* 内点法
* バンドル法
* 射影劣勾配法

その他の手法
*切除平面法
*楕円体法
*劣勾配法
*ドリフトプラスペナルティー法

劣勾配法は簡単に実装でき多くの適応例がある。双対劣勾配法は劣勾配法を双対問題に適応した方法である。ドリフトプラスペナルティー法は双対劣勾配法と類似しているが、主変数に関して時間平均をとっている点が異なる。

## 凸最小化が難しい場合: 自己整合障壁
凸最適化問題のクラスによっては更新法の効率は悪いものがある。それはクラスには多くの関数と劣勾配を評価しなければ、精確に最小値を得られない問題を含んでいるからである。この問題はアルカディ・ネミロフスキーによって議論されている。

そのため実用上の効率を求めるには問題のクラスにさらに制約を加える必要がある。2つの障壁関数法の方法がある。1つはネストロフとネミロフスキーによる自己整合障壁関数（self-concordant）、もう1つはTerlakyらによる自己正規障壁関数である。

## 準凸最小化
凸のレベル集合をもつ問題は理論上は効率的に最小化できる。ユーリ・ネストロフは準凸最小化問題を効率的に解けることを証明した。これの結果はKiwielによって拡張された。

計算複雑性の理論の中では、準凸計画問題と凸計画問題は問題の次元に対して多項式時間で解くことが可能である。ユーリ・ネストロフが最初に準凸最小化問題を効率的に解くことが可能であることを示した。
しかし、この理論的に効率的な方法は発散する数列をステップサイズに用いていた。これは古典的な劣勾配法の開発に使われていた。発散数列を用いる古典的な劣勾配法は、劣勾配射影法、勾配バンドル法、非平滑フィルタ法などの現代的な凸最小化法よりかなり遅いことが知られている。

凸に近いが非凸の関数の問題は計算困難である。Ivanovの結果によれば関数が滑らかさあっても単峰の関数を最小化することは難しい。

## 拡張
正無限を含むように凸関数を拡張できる。たとえば、指標関数は x\in\mathcal{X} を満たす領域では 0 をもち、その他は正無限である。

凸関数の拡張には擬似凸関数と準凸関数を含む。凸解析と更新法の部分的な拡張は、非凸最小化問題に対する近似解法として一般化された凸性の中で考えられている。

## 参考文献
* 
* 
* Borwein, Jonathan, and Lewis, Adrian. (2000). *Convex Analysis and Nonlinear Optimization*. Springer.
* Hiriart-Urruty, Jean-Baptiste, and Lemaréchal, Claude. (2004). *Fundamentals of Convex analysis*. Berlin: Springer.
* 
* 
* 
* 
* Nesterov, Y. and Nemirovsky, A. (1994). *Interior Point Polynomial Methods in Convex Programming.* SIAM
* Nesterov, Yurii. (2004). *Introductory Lectures on Convex Optimization*,  Kluwer Academic Publishers
* 
* 

## 関連項目
* カルーシュ・クーン・タッカー条件
* 最適化問題
* 双対問題
* 凸解析
* スレーターの条件
* ホアン・トゥイ - 凸最適化の研究者

## 外部リンク
* Stephen Boyd and Lieven Vandenberghe, ''Convex optimization''  (book in pdf)
* EE364a: Convex Optimization I and EE364b: Convex Optimization II, Stanford course homepages
* 6.253: Convex Analysis and Optimization, an MIT OCW course homepage
* Brian Borchers, An overview of software for convex optimization