概観
投げ縄型の問題で驚くほど速く収束することが判明している、乗数の交互方向法(ADMM)のバリアントを試してみるとよいでしょう。戦略は、拡張ラグランジアンで問題を定式化し、二重問題で勾配上昇を行うことです。この特定の正則化問題に特に適しています。メソッドの各反復の滑らかでない部分には、要素ごとに単純に評価できる正確な解があり、滑らかな部分には線形システムの解決が含まれるためです。l1l1
この投稿では
- 問題を一般化するための全体的なADMM公式を導き出し、
- 各ADMM反復のサブ問題を導出し、それらを状況に特化し、次に
- 各反復を解く必要がある結果の線形システムを調査し、およびの固有値分解(またはその低ランク近似)の事前計算に基づいて高速ソルバー(または前提条件子)を開発します。MTMYYT
- いくつかの結論をまとめて要約する
ここでの大きなアイデアのほとんどは、次のすばらしいレビューペーパーで説明されています。
ボイド、スティーブン等。「乗数の交互方向法による分散最適化と統計学習。」Foundations andTrends®in Machine Learning 3.1(2011):1-122。http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf
詳細に入る前に、これはメソッド/アルゴリズムの答えであり、実際の既存のコードの答えではないことに注意してください。このメソッドを使用する場合は、独自の実装をロールする必要があります。
ADMMの公式
一般に、を解決したいとします
minxs.t.∑i|xi|Ax=b.
元の投稿の問題は、適切なベクトル化を行うと、このカテゴリに分類されます。(これは原則としてのみです-実際にはベクトル化を実行する必要がないことがわかります)
代わりに、同等の問題である解くことができます
これにはラグランジアン
minx,zs.t.&∑i|xi|+α2||x−z||2+β2||Az−b||2Az=bx=z,
L(x,z,λ,γ)==∑i|xi|+α2||x−z||2+β2||Az−b||2+λT(Az−b)+γT(x−z)∑i|xi|+α2||x−z+1αγ||2+β2||Az−b+1βλ||2+α2||1αγ||2+β2||1βλ||2.
乗数の交互方向法は、双対問題の
勾配上昇を介して、二重問題解き
ます二重副問題の不正確な交互投影。つまり、反復
maxλ,γminx,zL(x,z,λ,γ),
xk+1zk+1γk+1λk+1=argminxL(x,zk,λk,γk)=argminzL(xk+1,z,λk,γk)=γk+α(xk+1−zk+1)=λk+β(Azk+1−b).
パラメータおよび(上記のBoyd&Parikhの論文で説明されています)の特定の穏やかな条件下では、ADMMメソッドは真の解に収束します。収束率は、勾配上昇法の中心にあるため、線形です。多くの場合、1)ヒューリスティックに基づいてパラメータおよびを変更するか、2)Nesterov加速を使用することにより、超線形になるように加速できます。ペナルティパラメータの変更に関する注意事項については、ボイドサーベイペーパーを参照してください。ADMMでNesterovアクセラレーションを使用する場合は、次のペーパーを参照してください。αβαβ
ゴールドスタイン、トム、ブレンダンオドノヒュー、サイモンセッツァー。「高速交互方向最適化手法。」CAMレポート(2012):12-35。ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
ただし、全体の収束率が線形にすぎない場合でも、問題の場合、このメソッドはスパースパターンを非常にすばやく見つけ、正確な値にゆっくりと収束することが確認されています。スパースパターンを見つけるのが最も難しいため、これは非常に偶然です。現在の研究分野のように思われる正確な理由。誰もがスパースパターンが速く収束するのを目にしますが、なぜそれが起こるのか正確に知っている人はいません。しばらく前に私はメールでボイドとパリクにこれについて尋ねましたが、パリクはそれが制御システムのコンテキストでメソッドを解釈することで説明されるのではないかと考えました。現象のもう1つのヒューリスティックな説明は、次の論文の付録にあります。l1
ゴールドスタイン、トム、スタンリーオシャー。「L1正則化問題の分割ブレグマン法。」SIAM Journal on Imaging Sciences 2.2(2009):323-343。ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
もちろん、今の難しさは、特定の状況でおよび更新サブ問題を解決することです。ラグランジアンはで2次なので、更新サブ問題は、線形システムを解くだけで済みます。それは微分不可能であるため、サブ問題は難しいようだが、それは要素ごとに適用することができソリューションのための正確な式があることが判明します!ここで、これらのサブ問題についてさらに詳しく説明し、元の投稿の問題に特定します。xzzzx
更新サブ問題のセットアップ(線形システム)z
以下のために更新、我々は
z
argminzL(xk,z,λk,γk)=argminzα2||x−z+1αγ||2+β2||Az−b+1βλ||2.
これはあなたの問題に特化して、
argminZJ,ZBα2||Jk+1−ZJ+1αΓJ||2Fro+α2||Bk+1−ZB+1αΓB||2Fro+β2||MZJ+ZBY−X+1αΛ||2Fro,
ここで、はフロベニウス(要素ごとの)ノルムを示します。これは2次の最小化問題です次の最適性条件は、とに関する目的関数の偏微分を取り、それらをゼロに設定することで見つけることができます。これは、
||⋅||Frol2ZJZB
00=−α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
元のポスターJustin Solomonのコメントで述べたように、このシステムは対称的であるため、共役勾配法は理想的な行列のない方法です。後のセクションでは、このシステムと、それを解決/事前調整する方法について詳しく説明します。ZJ,ZB
更新サブ問題の解決(分析的しきい値ソリューション)x
ここで、副問題
x
argminxL(x,zk,λk,γk)=argminx∑i|xi|+α2||x−zk+1αγk||2
最初に確認することは、合計が要素分割できることです。
∑i|xi|+α2||x−zk+1αγk||2=∑i|xi|+α2∑i(xi−zki+1αγki)2,
したがって、要素に並列に最適化問題を解くことができ、
xk+1i=argminxi|xi|+α2(xi−zki+1αγki)2.
この方程式の一般的な形式は、
mins|s|+α2(s−t)2.
絶対値関数は最適点をに引き寄せようとしていますが、2次項は最適点を引き寄せようとしています。したがって、真の解は2つの間のセグメントどこかにあり、が増加すると最適点がに引き寄せられ、減少すると最適点が引き寄せられ。s=0s=t[0,t)αtα0
これは凸関数ですが、ゼロでは微分できません。最小化ポイントの条件は、そのポイントでの目的のサブ導関数にゼロが含まれていることです。次の用語は、誘導体有する、絶対値関数は、HAS誘導体のための、セット値劣微分を間隔としてとき、および誘導体のための。したがって、目的関数全体のサブデリバティブ、
α(s−t)−1s<0[−1,1]s=01s>0
∂s(|s|+α2(s−t)2)=⎧⎩⎨1+α(s−t)[−1,1]+αt,−1+α(s−t),s>0s=0,s<0.
このことから、我々はでの目的の劣微分いることがわかり含まれている場合にのみ、。この場合、が最小化です。一方、が最小化子でない場合は、単一値の導関数をゼロに設定して、最小化子を解くことができます。これを行うと、
s=00|t|≤1αs=0s=0
argmins|s|+α2(s−t)2=⎧⎩⎨⎪⎪t−1α,0,t+1α,t>1α,|t|≤1α,t<−1α
この結果を、生成
する元の質問解決しようとしている実際の問題に再び特化
の更新は、単純に
t=Zkij−1αΓkij
Jk+1ij=⎧⎩⎨⎪⎪⎪⎪Zkij−1αΓkij−1α,0,Zkij−1αΓkij+1α,Zkij−1αΓkij>1α,|Zkij−1αΓkij|≤1α,Zkij−1αΓkij<−1α.
BBk+1=ZB−1αΓB,
元のポスター、ジャスティンソロモンのコメントに記載されています。全体として、更新を行うには、行列のエントリをループして、各エントリについて上記の式を評価する必要があります。J,B
システムのSchur補数ZJ,ZB
反復の最もコストのかかるステップは、システムを解くことです。
00=−α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
そのためには、このシステムに適したソルバー/プレコンディショナーを構築することは、いくらか努力する価値があります。このセクションでは、ベクトル化、Schur補体の形成、Krnoecker積の操作の一部、およびその後のベクトル化解除によってこれを行います。結果として得られるSchur補体系は、わずかに変更されたSylvester方程式です。
以下では、ベクトル化とクロネッカー製品に関する次のアイデンティティが絶対に重要です。
- vec(ABC)=(CT⊗A)vec(B),
- (A⊗B)(C⊗D)=AC⊗BD、
- (A⊗B)−1=A−1⊗B−1、および
- (A⊗B)T=AT⊗BT。
これらの恒等式は、行列のサイズと可逆性が方程式の各辺が有効な式になるような場合に常に保持されます。
システムのベクトル化された形式は、
(αI+β[I⊗MTMY⊗M(Y⊗M)TYYT⊗I])[vec(ZJ)vec(ZB)]=[vec(αJ+βMTX+ΓJ−MTΛ)vec(αB+βXYT+ΓB−ΛYT)],
または、
[I⊗(αI+βMTM)βY⊗Mβ(Y⊗M)T(αI+βYYT)⊗I][vec(ZJ)vec(ZB)]=[vec(F)vec(G)],
ここで、とは右側の簡略表記です。ここで、ブロックガウスの消去/シューア補数を実行して、クロネッカー積を凝縮するプロセスで、行列の左下のブロックを消去します。これは、
FG
[I⊗(αI+βMTM)0β(Y⊗M)T(αI+βYYT)⊗I−β2YYT⊗M(αI+βMTM)−1MT]…⋅[vec(ZJ)vec(ZB)]=[vec(F)vec(G)−βY⊗M(αI+βMTM)−1vec(F)].
ベクトル化を解除すると、順番に解かなければならない2つの方程式は、
ZB(αI+βYYT)−(βM(αI+βMTM)−1MT)ZB(βYYT)…=G−βM(αI+βMTM)−1FYT
(αI+βMTM)ZJ=F−βMTZBY.
が正方形で上位の場合のSchur補体系の解Y,M
このセクションでは、事前に計算された行列フル SVD を使用し、SylvesterにBartels-Stewartアルゴリズムの修正バージョンを適用することにより、(上記の式1.)のSchur補体系をます。方程式。アルゴリズムは、第2項の余分なを考慮に入れるために標準バージョンからわずかに変更されています。これにより、シルベスターの方程式は完全ではなくなります。一旦最初の式を介して発見され、容易に第2の式から求めることができます。2番目の方程式は、任意の方法で簡単に解くことができます。ZBYYT,MMT,MTMβYYTZBZJ
この方法では、ADMMプロセスが開始する前に2つの完全なSVDを事前計算するための先行費用が必要ですが、実際のADMM反復に適用するには高速です。この方法は制約行列の完全なSVDを扱うので、それらが平方に近く、上位にある場合に適しています。低ランクSVDを使用するより複雑な方法も可能ですが、後のセクションで説明します。
この方法は次のように発展します。ましょう
示す事前計算フル特異値分解となるように右側を凝縮。次いで、第一方程式となり、
乗算左と右を、新しい一時的な未知のを設定する直交係数によって、これはさらに
QDQT=YYT,WΣWT=MMT,VTVT=MTM
HZBQ(αI+D)QT−WβΣ(αI+Σ)−1ΣWTZBQDQT=H.
A=WTZBQA(αI+D)−βΣ(αI+Σ)−1ΣAD=WHQT.
これで、対角システム
解くことでを見つけることができますA
((αI+D)⊗I+D⊗βΣ(αI+Σ)−1Σ)vec(A)=vec(WHQT).
見つかっ、を計算し、を知ってについて上記の2番目の方程式を。これは、すでに固有値分解があるため、簡単です。AZB=WAQTZBZJMTM
初期費用は、と 2つの対称正定固有値分解を計算することであり、完全な解法の反復あたりのコストは、次数と同じ数の行列行列乗算によって支配されます。 1 CGサブイテレーションを行うときの大きさ。事前固有値分解のコストが高すぎる場合は、たとえば、ランチョス反復を早期に終了し、最大の固有ベクトルを維持することにより、不正確に計算できます。この方法は、直接ソルバーではなく、CGの優れた前提条件として使用できます。MTMYYT
が非常に長方形であるか、ランク近似が低い場合の解法M,Y
ここで、a)入力行列が非常に長方形である、つまり列よりも行数が多い、またはその逆の場合、またはb)ランクの近似が低い場合に、解決または事前調整に注意を向けます。以下の導出には、Woodbury式、Schur補数、およびその他の同様の操作の広範な使用が含まれます。ZJ,ZBM,Y
Schur補体系から始めます
(αI+βYYT)⊗I−β2YYT⊗M(αI+βMTM)−1MT.
いくつかの操作により、このシステムはより対称的な形式に変換されます
(αI+βI⊗MMT+βYYT⊗I)vec(ZB)=(I⊗(I+βαMMT))vec(H).
ここで、低ランクの近似を取り入れます。LET
の低下SVDのまたは低ランク近似のいずれかであり及び(プレースホルダでありません中古)。これらをシステムに代入すると、適用したい次の逆行列が得られます
QD1/2QT2=YWΣ1/2VT=M
YMQ2(αI+βI⊗WΣWT+βYYT⊗I)−1.
反転するための行列は、アイデンティティの低ランク更新であるため、論理的な戦略は、ウッドベリーの公式
(A+UCUT)−1=A−1−A−1U(C−1+UTA−1U)−1UTA−1.
ただし、低ランクのピースとは直交していないため、注意が必要です。したがって、Woodburyの公式を適用するために、両方の低ランクの更新を1つの大きな更新に収集します。そうして、ウッドベリーの公式を適用すると、
I⊗WY⊗I
(1αI+β[I⊗WQ⊗I][I⊗ΣD⊗Y][I⊗ΣTQT⊗I])−1=αI−βα2[I⊗WQ⊗I][I⊗(Σ−1+βαI)βαQT⊗WβαQ⊗WT(D−1+βαI)⊗Y]−1[I⊗ΣTQT⊗I].
コアの逆は、ブロックごとの2x2逆公式
[ABTBC]−1=[(A−BC−1BT)−1−C−1BT(A−BC−1BT)−1−A−1B(C−BTA−1B)−1(C−BTA−1B)−1].
この投稿はすでに十分に長いので、計算の長い詳細は省きますが、最終的な結果として、必要な部分行列をブロックごとの逆行列に差し込み、すべてを乗算すると、全体の逆行列に対して次の明示的な形式が得られます
(αI+βI⊗MMT+βYYT⊗I)−1=1αI−βα2(t11+s11+t12+s12+t21+s21+t22+s22),
ここで、
t11s11t12s12t21s21t22s22D11D22lh=αβI⊗Wl−1WT=(Q⊗Wl−1)D11(QT⊗l−1WT)=−αβQh−1QT⊗Wl−1WT=−(Qh−1⊗Wl−1)D22(h−1QT⊗WT)=t12=−(Qh−1⊗W)D22(h−1QT⊗l−1WT)=αβQh−1QT⊗I=(Qh−1⊗W)D22(h−1QT⊗WT)=αβ(h⊗I−I⊗l−1)−1=αβ(I⊗l−h−1⊗I)−1=αβΣ−1+I=αβD−1+I.
この形式では、逆行列を適用し、8つの左行列乗算サンドイッチと右行列乗算サンドイッチを介して項項を見つけることができます。クロネッカー積の合計を適用するための一般的な式は、
ZB
((A1⊗B1)+(A2⊗B2)+…)vec(C)=vec(BT1CA1+BT2CA2+…).
最後に行った明示的な逆はすべて対角線なので、「解決」するものは何もないことに注意してください。
線形ソルバーコード
上記の2つのソルバーをMatlab に実装しました。うまくいくようです。ソルバーコードはこちらです。zJ,ZB
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
ソルバーが機能することを確認するためのテストスクリプトはこちらです。また、ソルバーコードの呼び出し例も示します。
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
おわりに
ADMMタイプのメソッドはこのような問題に適していますが、独自の実装をロールする必要があります。メソッドの全体的な構造はかなり単純なので、MATLABのようなものでの実装はそれほど難しくありません。
問題の方法を完全に定義するために指定する必要がある、この投稿に欠けている部分は、ペナルティパラメータです。幸いなことに、パラメーターの値がおかしくない限り、メソッドは一般にかなり堅牢です。Boyd and Parikhの論文には、その参照と同様にペナルティパラメータに関するセクションがありますが、妥当な収束率が得られるまで、パラメータを試してみます。α,β
制約行列が良好な低ランク近似を持っている))、緻密、squareish、および高ランク、またはbのいずれかである場合に提示ソルバーの戦略は非常に有効です。将来の作業のトピックになる可能性のあるもう1つの有用なソルバーは、次の場合に最適化されたソルバーです。制約行列はスパースで正方形で高ランクですが、は適切な前提条件が存在します。これは、たとえば、が離散化されたラプラシアンの場合です。ZJ,ZBMαI+MMTM