Risolvere il problema dell'ottimizzazione convessa utilizzato per il Denoising di alta qualità


8

La risposta più votata a questa domanda suggerisce che per denigrare un segnale preservando transizioni nitide si dovrebbe

minimizzare la funzione obiettiva:

|xy|2+b|f(y)|

dove è il segnale rumoroso, è il segnale negato , è il parametro di regolarizzazione eè una penalità di norma L1. Il denoising si ottiene trovando la soluzione a questo problema di ottimizzazione dipende dal livello di rumore.xyb|f(y)|yb

Tuttavia, non vi è alcuna indicazione di come si possa ottenere questo in pratica in quanto questo è un problema in uno spazio dimensionale molto elevato, specialmente se il segnale è lungo, ad esempio, 10 milioni di campioni. In pratica, come si risolve questo tipo di problema a livello computazionale per segnali di grandi dimensioni?


Sei interessato al tempo di esecuzione? Altrimenti, l'iterazione su come minimizzare una funzione è piuttosto estesa (mi viene in mente Levenberg-Marquardt, Nelder-Mead, ecc.). Ci sono anche alcune versioni modificate create appositamente per questo.
Grazie,

In realtà, ho una domanda per le persone che rispondono di seguito. Oltre ad essere lento, cosa c'è di sbagliato in qualcosa come Levenberg-Marquardt o Nelder-Mead? Questi sono ottimizzatori generalizzati, quindi puoi anche approssimare numericamente . f
Grazie

Sì, mi occupo del tempo di esecuzione, ma grazie per aver sottolineato questi metodi.
John Robertson,

Risposte:


6

Boyd ha un solutore di Matlab per problemi di minimi quadrati ℓ1 su larga scala . La formulazione del problema è leggermente diversa, ma il metodo può essere applicato al problema.

Anche l'approccio classico alla minimizzazione della majorization funziona bene. Ciò corrisponde a eseguire in modo iterativo la soglia minima ( per TV, ritaglio ).

Le soluzioni sono visibili dai link. Tuttavia, ci sono molti metodi per minimizzare questi funzionali attraverso un ampio uso della letteratura sull'ottimizzazione.

PS: Come menzionato in altri commenti, FISTA funzionerà bene. Un'altra famiglia di algoritmi "molto veloci" sono gli algoritmi dual-primal. Puoi vedere l' interessante documento di Chambolle per un esempio, tuttavia ci sono molti articoli di ricerca sui metodi primari-doppi per le formulazioni lineari di problemi inversi.


A cosa si riferisce esattamente "primal-dual"?
Spacey,

Mohammad, non ho implementato alcun algoritmo dual-primal per problemi inversi. Tuttavia, puoi vedere un esempio dal link che ho menzionato nella risposta: il documento di Chambolle. Da questo documento, puoi vedere cosa significa esattamente un algoritmo primal-dual. Questi metodi forniscono solo un'altra (e rapidamente convergente) soluzione ai problemi inversi.
Deniz,

Pensavo che il doppio primordiale fosse l'ottimizzazione combinatoria? Come puoi trasformare questo problema genericamente (per un genericof) in quel quadro?
Grazie

grazie, come ho già detto, non sono un esperto in questo settore. Puoi vedere il documento di Chambolle e vedere come i metodi primal-dual possono essere usati per risolvere i problemi1o regolarizzazione TV.
Deniz,

4

Per risolvere i problemi di ottimizzazione con penalità TV, utilizziamo un algoritmo proposto di recente chiamato algoritmi basati sul gradiente veloce per problemi di Denoising e deblurring dell'immagine a variazione totale vincolata (FISTA) , che ha un tasso di convergenza migliore rispetto ai metodi iterativi convenzionali, come ASD-POCS.


1
È possibile aggiungere ulteriori informazioni sull'algoritmo, poiché l'unico riferimento che hai collegato richiede l'acquisto dell'articolo?
Jason R,


@JasonR, è sostanzialmente Nesterov Acceleration Proxdell'operatore. Davvero un bel lavoro.
Royi,

3

Nel caso particolare in cui f(y)=y1, la funzione obiettivo può essere scritta come

xy2+by1=i(xiyi)2+bi|yi|,

minimizzare richiede di ridurre al minimo ogni voce della somma:

yi^=argmin{(xiyi)2+b|yi|}

Utilizzando i sottodifferenziali è possibile dimostrare che il minimizer è l'operatore con soglia minima con soglia . Questo è il metodo proposto da Donoho e Johnstone per il denoising del segnale. Vedi il loro articolo Adattamento spaziale ideale mediante restringimento ondulato per maggiori dettagli.b

Quindi, in questo caso, penso che non sia necessario un solutore più sofisticato per stimare il segnale.


Hai una penalità di norma anziché una penalità di variazione totale . È un errore di battitura? L1|yi||yi+1yi|
John Robertson,

Nella domanda dice: "e | f (y) | è un po 'di penalità della norma L1", quindi ho appena inserito la norma , che è il classico caso del denoising del segnale. Ma forse sto fraintendendo la domanda. 1
Alejandro,

Sì, avrebbe potuto essere più chiaro. In quella citazione è una funzione sull'intero segnale, non necessariamente una funzione in esecuzione su ciascun componente del segnale, ovvero può combinare insieme diversi campioni di segnale, ad esempio è perfettamente legittimo. fff(x0,x1,...)=(x1x0,x2x1,...)
John Robertson,

Vedo. Aggiungerò la mia risposta se per il caso particolare in cui è la norma . f(y)1
Alejandro,

2

Aggiunto: se, i termini sono tutti indipendenti - come sottolinea @Alejandro, puoi semplicemente ridurre a icona ogni termine da solo. È più interessante minimizzare dove invece di scopo di spingere molti su 0. Le seguenti note sono per questo caso. (Chiamo le variabili , non .)f(x)=1(x)=|xi|
Axb22+λx1
x1x2xi
xy


(Un anno dopo) un altro nome per questo caso norma è la regolarizzazione della rete elastica . Hastie et al., Elements of Statistical Learning p. 661 ss. discuterne per la classificazione.f(x)=1

Un modo semplice veloce per ottenere una soluzione approssimativa con molti è quello di alternarexi=0

  1. minimizzadai minimi quadratiAxb
  2. restringimento aka soft-soglia: imposta piccolo .xi=0

Questa è una forma di minimi quadrati iterativamente ripesati , con pesi 0 o 1. Mi aspetto che i metodi nei documenti citati nelle risposte precedenti forniranno risultati migliori; questo è semplice.

(Quando si minimizza una somma , è una buona idea tracciare e su una scala log-log per iter 1 2 3 ... Altrimenti, un termine potrebbe inondare l'altro, e non te ne accorgerai nemmeno, specialmente quando si ridimensionano diversamente.)f()+λg()f()λg()

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.