機械学習の理論コース(数学、経済学、最適化、財務など)を勉強するとき、「二重問題」の概念がよく見られます。
デュアルタスクは、最適化問題のターゲット関数の低い(または高い)推定値を取得するためによく使用されます。 さらに、最適化問題のほとんどすべての意味のあるステートメントについて、二重問題には意味のある解釈があります。 つまり、重要な最適化の問題に直面している場合、その二重の問題もおそらく最も重要です。
この記事では、円錐双対性について説明します。 私の意見では、デュアルタスクを構築するこの方法は、当然のことながら注目を奪われています...
次のマット...
通常、デュアルタスクはどのように構築されますか?
いくつかの最適化問題を与えましょう:
デュアルタスクは、次のスキームに従って構築されます。
このスキームの主な難点は、検索ステップで配線されています
。
問題が凸でない場合、これはcoです-一般に、多項式時間で解決することはできません(
)およびこの記事のこのような問題については、今後触れません。
問題が凸であると仮定します、それでは何ですか?
問題が滑らかな場合、1次の最適条件を使用できます
。 この条件から、すべてが正常であれば、推測または
そして
または直接機能する
。
問題がスムーズでない場合は、1次条件のアナログを使用できます
(こちら
関数の微微分を示します
)ただし、この手順は通常はるかに複雑です。
場合によっては、同等の「滑らかな」最適化問題があり、それに対して二重の問題を構築できます。 ただし、構造を改善するために(非滑らかから滑らかに)、原則として、常に次元の増加を支払う必要があります。
円錐双対性
次の表現を可能にする最適化タスク(以下の例)がかなりあります。
\ min_ {R ^ nのx \} c ^ Tx \\ Ax + b \ in K
どこで
-マトリックス
-ベクトル
-非縮退凸コーン。
この場合、デュアルタスクは次のスキームに従って構築できます。
デュアルタスクは、次のスキームに従って構築されます。
共役円錐はどこですか
コーン用
として定義される
K ^ * = \左\ {y \ in R ^ k | z ^ T y \ geq 0、\ quad \ forall z \ in K \ right \} 。
ご覧のように、二重問題の構築の複雑さ全体が二重円錐の構築に移されました。 しかし、喜びは、デュアルコーンを構築するための優れた計算法があり、非常に頻繁にデュアルコーンをすぐに書き出すことができることです。
例
問題の二重最適化問題を構築する必要があると仮定します。
ここに
、
最初に気づくことができます:目的関数は常に線形にすることができます!
むしろ、線形目的関数には常に同等の問題があります。
\ min_ {Rのn \ ^ n、Rのy \、Rのz \} y + z \\ \ | x \ | _2 \ leq y \\ \ | x \ | _1 \ leq z \\ Ax \ geq b
今、あなたは少し秘密の知識を使用する必要があります:多くの
K_1 = \ {(x、t)\ in R ^ n \ times R | \ quad \ | x \ | _1 \ leq t \}
そして
K_2 = \ {(x、t)\ in R ^ n \ times R | \ quad \ | x \ | _2 \ leq t \}
凸コーンです。
したがって、問題の同等の表記法に到達します。
\ min_ {R ^ nのx \、Rのy \、Rのz \} y + z \\ I_ {n + 1} \ begin {pmatrix} x \\ y \ end {pmatrix} + 0_ {n +1} \ K_2 \\ I_ {n + 1} \ begin {pmatrix} x \\ z \ end {pmatrix} + 0_ {n + 1} \ K_1 \\ Ax-b \ in R _ + ^ k
これで、二重の問題をすぐに書き出すことができます。
または、少し簡単にするために、
どこで
。
さらなる研究のためのリンク: