Panoramica
Si potrebbe desiderare di provare una variante del alternata Indicazioni metodo dei moltiplicatori (ADMM), che è stato trovato a convergere con sorprendente rapidità per l1 problemi di tipo lazo. La strategia è quella di formulare il problema con un Lagrangiano aumentato e quindi effettuare un'ascesa a gradiente sul doppio problema. È particolarmente piacevole per questo particolare l1 problema regolarizzata perché la parte nonsmooth di ogni iterazione del metodo ha una soluzione esatta si può semplicemente valutare elemento per elemento, mentre la parte liscia comporta la soluzione di un sistema lineare.
In questo post noi
- ricavare una formulazione ADMM generale per una generalizzazione del problema,
- derivare i sottoproblemi per ogni iterazione di ADMM e specializzarli nella propria situazione, quindi
- studiare il sistema lineare risultante che deve essere risolto ogni iterazione, e sviluppare un risolutore veloce (o precondizionatore) in base precomputing decomposizioni autovalori (o approssimazioni di basso rango thereof) per MTM e YYT .
- riassumere con alcune osservazioni conclusive
La maggior parte delle grandi idee qui sono trattate nel seguente eccellente documento di revisione,
Boyd, Stephen, et al. "Ottimizzazione distribuita e apprendimento statistico tramite il metodo della direzione alternata dei moltiplicatori." Foundations and Trends® in Machine Learning 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf
Prima di entrare nei dettagli, voglio notare che questa è una risposta metodo / algoritmo, non una risposta pratica al codice esistente: se si desidera utilizzare questo metodo, è necessario implementare la propria implementazione.
Formulazione ADMM
In generale, supponiamo di voler risolvere
minXstΣio| Xio|A x = b.
Il problema nel post originale rientra in questa categoria dopo un'appropriata vettorializzazione. (questo è solo in linea di principio - vedremo che la vettorializzazione non deve essere eseguita in pratica)
Potresti invece risolvere il problema equivalente,
che ha Lagrangiano
L(x,z,λ,γ)=
minx , zst&Σio| Xio| + α2| | x-z| |2+ β2| | Az- b | |2A z= bx = z,
L ( x , z, λ , γ) ==Σio| Xio| + α2|| x-z| |2+ β2|| Az- b | |2+ λT( A z- b ) + γT( x - z)Σio| Xio| + α2| | x-z+ 1αγ| |2+ β2| | Az- b + 1βλ | |2+ α2| | 1αγ| |2+ β2| | 1βλ | |2.
Il metodo della direzione alternata dei moltiplicatori risolve il doppio problema,
tramite salita gradiente sulle doppie variabili, tranne che con proiezioni alternate inesatte sui doppi sottoprocessi. Cioè, si fa l'iterazione
x k + 1
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).
In determinate condizioni lievi sui parametri e β (spiegati nel documento Boyd & Parikh sopra linkato), il metodo ADMM converge alla vera soluzione. Il tasso di convergenza è lineare, poiché è al centro un metodo di risalita gradiente. Spesso può essere accelerato per essere superlineare di 1) modificando i parametri α e β man mano che si procede in base all'euristica o 2) utilizzando l'accelerazione di Nesterov. Per le note sulla modifica dei parametri di penalità, consultare il documento del sondaggio Boyd e per l'utilizzo dell'accelerazione di Nesterov con ADMM consultare il documento seguente,αβαβ
Goldstein, Tom, Brendan O'Donoghue e Simon Setzer. "Metodi di ottimizzazione rapida della direzione alternata." Rapporto CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
Tuttavia, anche se la velocità di convergenza globale è lineare solo, per problemi del metodo è stata osservata per trovare il modello sparsity molto rapidamente, e poi convergere più lentamente sui valori esatti. Poiché trovare il modello di scarsità è la parte più difficile, questo è molto casuale! Le ragioni esatte per cui sembrano essere un'area di ricerca attuale. Tutti vedono il modello di sparsità convergere rapidamente, ma nessuno sembra sapere esattamente perché ciò accada. Qualche tempo fa ho chiesto a Boyd e Parikh di questo tramite e-mail e Parikh ha pensato che potesse essere spiegato interpretando il metodo in un contesto di sistemi di controllo. Un'altra spiegazione euristica del fenomeno si trova nell'appendice del seguente documento,l1
Goldstein, Tom e Stanley Osher. "Il metodo split Bregman per i problemi regolarizzati L1." SIAM Journal on Imaging Sciences 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
Naturalmente ora le bugie di difficoltà nel risolvere i e z aggiornamento sottoproblemi per la vostra situazione specifica. Poiché il lagrangiano è quadratico in z , il sottoproblema di aggiornamento z richiede semplicemente di risolvere un sistema lineare. Il sottoproblema x sembra più difficile poiché non è distinguibile, ma si scopre che esiste una formula esatta per la soluzione che può essere applicata elemento per elemento! Discutiamo ora questi sottoproblemi in modo più dettagliato e li specifichiamo al problema nel post originale.XzzzX
Setup per il sottoproblema di aggiornamento (sistema lineare)z
Per l' aggiornamento , abbiamo
a r g m i n z L ( x k , z , λ k , γ k ) = a r g m i n z αz
a r g m i nzL ( xK, z, λK, γK) = a r g m i nzα2| | x-z+ 1αγ| |2+ β2| | Az- b + 1βλ | |2.
Specializzato al tuo problema questo diventa,
a r g m i nZJ, ZBα2| | Jk + 1- ZJ+ 1αΓJ| |2Fr o+ α2| | Bk + 1- ZB+ 1αΓB| |2Fr o+ β2| | MZJ+ ZBY- X+ 1αΛ | |2Fr o,
dove indica la norma Frobenius (elementwise l 2 ). Questo è un problema di minimizzazione quadratica, in cui si possono trovare le condizioni di ottimalità del primo ordine prendendo derivate parziali dell'obiettivo rispetto a Z J e Z B e ponendole a zero. Questo è
0| | ⋅ | | Fr ol2ZJZB
00= - α2( Jk + 1- ZJ+ 1αΓJ) + β2MT( MZJ+ ZBY- X+ 1βΛ ) ,= - α2( Bk + 1- ZB+ 1αΓB) + β2( MZJ+ ZBY- X+ 1βΛ ) YT.
Come notato nei commenti del poster originale Justin Solomon, questo sistema per è simmetrico, quindi il gradiente coniugato è un metodo ideale privo di matrice. Una sezione successiva discute questo sistema e come risolverlo / precondizionarlo in modo più dettagliato.ZJ, ZB
Risoluzione del sottoproblema update (soluzione di soglia analitica)X
Passiamo ora al sottoproblema ,
a r g m i n x L ( x , z k , λ k , γ k ) = a r g m i n x ∑ i | x i | + αX
a r g m i nXL ( x , zK, λK, γK) = a r g m i nXΣio| Xio| + α2| | x- zK+ 1αγK| |2
La prima cosa da vedere è che la somma può essere suddivisa elemento per elemento,
Σio| Xio| + α2| | x- zK+ 1αγK| |2= ∑io| Xio| + α2Σio( xio- zKio+ 1αγKio)2,
Quindi possiamo risolvere il problema di ottimizzazione elemento per elemento in parallelo, producendo
Xk + 1io= a r g m i nXio| Xio| + α2( xio- zKio+ 1αγKio)2.
La forma generale di questa equazione è,
minS| s | + α2( s - t )2.
La funzione del valore assoluto sta cercando di tirare il punto ottimale verso , mentre il termine quadratico sta cercando di tirare il punto ottimale verso s = t . la vera soluzione si trova quindi da qualche parte sul segmento [ 0 , t ) tra i due, con α crescente che tende a tirare il punto ottimale verso t , e che diminuisce α tirando il punto ottimale verso 0 .s = 0s = t[ 0 , t )αtα0
Questa è una funzione convessa ma non è differenziabile a zero. La condizione per un punto minimizzante è che il sottoderivativo dell'obiettivo in quel punto contenga zero. Il termine quadratico ha la derivata e la funzione del valore assoluto ha la derivata - 1 per s < 0 , la subderivativa a valore impostato come intervallo [ - 1 , 1 ] quando s = 0 e la derivata 1 per s > 0 . Quindi otteniamo il subderivativo per la funzione obiettivo generale,
∂α ( 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.
Da ciò vediamo che il sottoderivativo dell'obiettivo in contiene 0 se e solo se | t | ≤ 1s = 00 , nel qual casos=0è il minimizer. D'altra parte, ses=0non è il minimizer, allora possiamo impostare la derivata a valore singolo uguale a zero e risolvere per il minimizer. In questo modo si ottiene,
argmins| s| +α| t | ≤ 1αs = 0s = 0
a r g m i nS| s | + α2( s - t )2= ⎧⎩⎨⎪⎪t - 1α,0 ,t + 1α,t > 1α,| t | ≤ 1α,t < - 1α
Specializzando nuovamente questo risultato sul problema reale che stiamo cercando di risolvere nella domanda originale in cui produce,
J k + 1 i j ={ Z k i j - 1t = ZKio j- 1αΓKio j
L'aggiornamento perBè semplicemente
Bk+1=ZB-1
Jk + 1io j= ⎧⎩⎨⎪⎪⎪⎪ZKio j- 1αΓKio j- 1α,0 ,ZKio j- 1αΓKio j+ 1α,ZKio j- 1αΓKio j> 1α,| ZKio j- 1αΓKio j| ≤ 1α,ZKio j- 1αΓKio j< - 1α.
BBk + 1= ZB- 1αΓB,
come notato dal poster originale Justin Solomon nei commenti. Nel complesso, eseguire l'aggiornamento per richiede solo di scorrere ciclicamente le voci delle tue matrici e di valutare le formule precedenti per ciascuna voce.J, B
Complemento Schur per la sistemaZJ, ZB
Il passaggio più costoso dell'iterazione è risolvere il sistema,
00= - α2( Jk + 1- ZJ+ 1αΓJ) + β2MT( MZJ+ ZBY- X+ 1βΛ ) ,= - α2( Bk + 1- ZB+ 1αΓB) + β2( MZJ+ ZBY- X+ 1βΛ ) YT.
A tal fine, vale la pena di costruire un buon risolutore / precondizionatore per questo sistema. In questa sezione lo facciamo vettorializzando , formando un complemento di Schur , facendo alcune manipolazioni del prodotto Krnoecker e quindi non vettorizzando. Il risultante sistema di complementi di Schur è un'equazione di Sylvester leggermente modificata .
In quanto segue le seguenti identità sulla vettorializzazione e sui prodotti Kronecker sono assolutamente fondamentali:
- v e c (ABC) = ( CT⊗ A ) v e c ( B ) ,
- ( A ⊗ B ) ( C⊗ D ) = A C⊗ B D
- ( A ⊗ B )- 1= A- 1⊗ B- 1
- ( A ⊗ B )T= AT⊗ BT
Queste identità valgono ogni volta che le dimensioni della matrice e l'invertibilità sono tali che ogni lato dell'equazione è un'espressione valida.
( α I+ β[ Io⊗ MTMY⊗ M( Y⊗ M)TYYT⊗ io] ) [ v e c ( ZJ)v e c ( ZB)]= [ v e c ( α J+ βMTX+ ΓJ- MTΛ )v e c (αB+βXYT+ ΓB- Λ YT)] ,
[ Io⊗ ( α I+ βMTM)βY⊗ Mβ( Y⊗ M)T( α I+ βYYT) ⊗ I] [ v e c ( ZJ)v e c ( ZB)] = [ v e c ( F)v e c (G)] ,
Fsol
[ Io⊗ ( α I+ βMTM)0β( Y⊗ M)T( α I+ βYYT) ⊗ I- β2YYT⊗ M( α I+ βMTM)- 1MT] ...⋅ [ v e c ( ZJ)v e c ( ZB)] = [ v e c ( F)v e c (G)-βY⊗ M( α I+ βMTM)- 1v e c (F)] .
Senza pubblicità, le due equazioni che dobbiamo risolvere in sequenza sono,
ZB( α I+ βYYT) - ( βM( α I+ βMTM)- 1MT)ZB(βYYT)…=G−βM(αI+βMTM)−1FYT
(αI+βMTM)ZJ=F−βMTZBY.
Y,M
ZBYYT,MMT,MTMβYYTZBZJpuò essere trovato facilmente dalla seconda equazione. La seconda equazione è banale da risolvere con qualsiasi metodo che ti piace.
Questo metodo richiede un costo iniziale per il pre-calcolo di due SVD completi prima dell'avvio del processo ADMM, ma è quindi veloce da applicare nelle iterazioni ADMM effettive. Poiché il metodo si occupa di SVD completi delle matrici dei vincoli, è appropriato quando sono vicini al quadrato e al rango elevato. È anche possibile un metodo più complicato che utilizza SVD di basso livello, ma è presentato in una sezione successiva.
QDQT=YYT,WΣWT=MMT,VTVT=MTM
HZBQ(αI+D)QT−WβΣ(αI+Σ)−1ΣWTZBQDQT=H.
A=WTZBQA(αI+D)−βΣ(αI+Σ)−1ΣAD=WHQT.
Ora possiamo trovare A
((αI+ D ) ⊗ I+ D ⊗βΣ ( αI+ Σ )- 1Σ ) v e c ( A ) = v e c ( WHQT) .
UNZB= WA QTZBZJMTM
MTMYYT
M, Y
ZJ, ZBM, Y
( αI+βYYT) ⊗I- β2YYT⊗M( αI+ βMTM)- 1MT.
( αI+βio⊗ MMT+βYYT⊗io) v e c ( ZB) = ( I⊗ ( I+ βαMMT) ) v e c ( H) .
Q D1 / 2QT2= YWΣ1 / 2VT= M
YMQ2( α I+ βio⊗ WΣ O.T+ βYYT⊗ io)- 1.
( A + UCUT)- 1= A- 1- A- 1U( C- 1+ UTUN- 1U)- 1UTUN- 1.
io⊗ WY⊗ io
( 1αio+ β[ Io⊗ WQ ⊗ I] [ I⊗ ΣD ⊗ Y] [ I⊗ ΣTQT⊗ io] )- 1= α I- βα2[ Io⊗ WQ ⊗ I] [ I⊗ ( Σ- 1+ βαio)βαQT⊗ WβαQ ⊗ OT( D- 1+ βαio) ⊗ Y]- 1[ Io⊗ ΣTQT⊗ io] .
[ ABTBC]- 1= [ ( A - B C- 1BT)- 1- C- 1BT( A - B C- 1BT)- 1- A- 1B ( C- BTUN- 1B )- 1( C- BTUN- 1B )- 1] .
( α I+ βio⊗ MMT+ βYYT⊗ io)- 1= 1αio- βα2( t11+ s11+ t12+ s12+ t21+ s21+ t22+ s22) ,
t11S11t12S12t21S21t22S22D11D22lh= αβio⊗ Wl- 1WT= ( Q ⊗ Ol- 1) D11( QT⊗ l- 1WT)= - αβQ h- 1QT⊗ Wl- 1WT= - ( Q h- 1⊗ Wl- 1) D22( h- 1QT⊗ WT)= t12= - ( Q h- 1⊗ W) D22( h- 1QT⊗ l- 1WT)= αβQ h- 1QT⊗ io= ( Q h- 1⊗ W) D22( h- 1QT⊗ WT)= αβ( h ⊗ I- io⊗ l- 1)- 1= αβ( Io⊗ l - h- 1⊗ io)- 1= αβΣ- 1+ I= αβD- 1+ I.
ZB
( ( A1⊗ B1) + ( A2⊗ B2) + … ) V e c ( C) = v e c ( BT1CUN1+ BT2CUN2+ ... ) .
Nota che tutte le inversioni esplicite con cui siamo finiti sono diagonali, quindi non c'è niente da "risolvere".
Codice del risolutore lineare
Ho implementato i due precedenti zJ, ZBsolutori in Matlab. Sembra funzionare bene. Il codice del risolutore è qui.
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
Uno script di test per verificare che i solutori funzionino. Mostra anche come esempio come chiamare il codice del risolutore.
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
Osservazioni conclusive
I metodi di tipo ADMM sono adatti a problemi come questo, ma è necessario implementare la propria implementazione. La struttura complessiva del metodo è piuttosto semplice, quindi l'implementazione non è troppo difficile in qualcosa come MATLAB.
Il pezzo mancante da questo post che dovrebbe essere specificato per definire completamente il metodo per il tuo problema è una scelta di parametri di penalità α , β. Fortunatamente il metodo è generalmente piuttosto robusto fintanto che i valori dei parametri non sono pazzi. Il documento di Boyd e Parikh ha una sezione sui parametri di penalità così come i riferimenti in essa, ma vorrei solo sperimentare i parametri fino a ottenere tassi di convergenza ragionevoli.
Il ZJ, ZBle strategie di risoluzione presentate sono molto efficaci se le matrici di vincoli sono a) densi, quadrati e di alto rango, oppure b) hanno una buona approssimazione di basso rango. Un altro risolutore utile che potrebbe essere un argomento di lavoro futuro sarebbe un risolutore ottimizzato per il caso seguente: la matrice dei vincoliM è scarso, quadrato e di alto rango, ma esiste un buon precondizionatore per α I+ MMT. Questo sarebbe il caso se, ad esempio,M è un Laplaciano discretizzato.