Come funziona L-BFGS?


14

Lo scopo del documento era ottimizzare alcuni parametri massimizzando la probabilità di log regolarizzata. Quindi calcolano i derivati ​​parziali. E poi gli autori menzionano che ottimizzano l'equazione usando L-BFGS, una procedura quasi-Newton standard per ottimizzare le funzioni regolari di molte variabili (niente più dettagli).

Come funziona ?


3
Quale carta? Inserisci un collegamento in un documento Ha bisogno di un contesto. Inserisci collegamenti ad acronimi, ad es. L-BFGS E spiegali : L-BFGS = algoritmo Broyden – Fletcher – Goldfarb – Shanno (BFGS) a memoria limitata
Carl

1
en.wikipedia.org/wiki/Limited-memory_BFGS Esistono molte varianti, che possono differire notevolmente in termini di capacità e prestazioni.
Mark L. Stone,

ciao, grazie signor Mark :) darò un'occhiata. L'articolo è cs.stanford.edu/people/jure/pubs/circles-tkdd14.pdf (ottimizzazione dell'equazione 6)
Abir,

Fondamentalmente pensa a L-BFGS come un modo per trovare un minimo (locale) di una funzione oggettiva, usando i valori della funzione oggettiva e il gradiente della funzione oggettiva. Quel livello di descrizione copre molti metodi di ottimizzazione oltre a L-BFGS. Puoi leggere di più a riguardo nella sezione 7.2 di springer.com/us/book/9780387303031 .
Mark L. Stone,

1
BFGS è un modo per cercare di ottenere un metodo del primo ordine per imitare un metodo del secondo ordine (newton) tramite il metodo secant
user795305

Risposte:


28

Fondamentalmente pensa a L-BFGS come un modo per trovare un minimo (locale) di una funzione oggettiva, usando i valori della funzione oggettiva e il gradiente della funzione oggettiva. Quel livello di descrizione copre molti metodi di ottimizzazione oltre a L-BFGS. Puoi leggere di più a riguardo nella sezione 7.2 di Nocedal e Wright "Ottimizzazione numerica, 2a edizione" http://www.springer.com/us/book/9780387303031 . Una discussione molto superficiale su L-BFGS è disponibile su https://en.wikipedia.org/wiki/Limited-memory_BFGS .

Metodo del primo ordine significa che vengono utilizzati i gradienti (primi derivati) (e forse i valori delle funzioni oggettive), ma non l'Assia (secondi derivati). Pensa, per esempio, alla discesa con pendenza e alla discesa più ripida, tra molte altre.

Metodo del secondo ordine significa che vengono utilizzati gradienti e iuta (e forse valori di funzione oggettivi). I metodi del secondo ordine possono essere basati su

  1. Matrice hessiana "esatta" (o differenze finite di gradienti), nel qual caso sono noti come metodi di Newton o

  2. Metodi di Quasi-Newton, che approssimano l'Assia in base alle differenze di gradienti su diverse iterazioni, imponendo una condizione "secante" (Quasi-Newton). Esistono molti metodi Quasi-Newton diversi, che stimano l'Assia in diversi modi. Uno dei più popolari è BFGS. L'approssimazione dell'Assia BFGS può essere basata sull'intera storia dei gradienti, nel qual caso viene definita BFGS, oppure può essere basata solo sui gradienti m più recenti, nel qual caso è nota come memoria BFGS limitata, abbreviata come L-BFGS. Il vantaggio di L-BFGS è che richiede solo il mantenimento dei gradienti m più recenti, dove m è di solito tra 10 e 20, che è un requisito di archiviazione molto più piccolo rispetto a n * (n + 1) / 2 elementi richiesti per memorizzare l'intero (triangolo) di una stima dell'Assia, come richiesto da BFGS, dove n è la dimensione del problema. A differenza del BFGS (completo), la stima dell'Assia non viene mai formata o archiviata esplicitamente in L-BFGS (sebbene alcune implementazioni del BFGS formino e aggiornino solo il fattore Choelsky dell'approssimazione dell'Assia, piuttosto che l'approssimazione dell'Assia stessa); piuttosto, i calcoli che sarebbero richiesti con la stima dell'Assia vengono eseguiti senza formarlo esplicitamente. L-BFGS viene utilizzato al posto di BFGS per problemi molto grandi (quando n è molto grande), ma potrebbe non funzionare bene come BFGS. Pertanto, BFGS è preferito rispetto a L-BFGS quando è possibile soddisfare i requisiti di memoria di BFGS. D'altra parte, L-BFGS potrebbe non essere molto peggiore in termini di prestazioni rispetto a BFGS. la stima dell'Assia non viene mai formata o memorizzata esplicitamente in L-BFGS (sebbene alcune implementazioni di BFGS formino e aggiornino solo il fattore Choelsky dell'approssimazione dell'Assia, piuttosto che l'approssimazione dell'Assia stessa); piuttosto, i calcoli che sarebbero richiesti con la stima dell'Assia vengono eseguiti senza formarlo esplicitamente. L-BFGS viene utilizzato al posto di BFGS per problemi molto grandi (quando n è molto grande), ma potrebbe non funzionare bene come BFGS. Pertanto, BFGS è preferito rispetto a L-BFGS quando è possibile soddisfare i requisiti di memoria di BFGS. D'altra parte, L-BFGS potrebbe non essere molto peggiore in termini di prestazioni rispetto a BFGS. la stima dell'Assia non viene mai formata o memorizzata esplicitamente in L-BFGS (sebbene alcune implementazioni di BFGS formino e aggiornino solo il fattore Choelsky dell'approssimazione dell'Assia, piuttosto che l'approssimazione dell'Assia stessa); piuttosto, i calcoli che sarebbero richiesti con la stima dell'Assia vengono eseguiti senza formarlo esplicitamente. L-BFGS viene utilizzato al posto di BFGS per problemi molto grandi (quando n è molto grande), ma potrebbe non funzionare bene come BFGS. Pertanto, BFGS è preferito rispetto a L-BFGS quando è possibile soddisfare i requisiti di memoria di BFGS. D'altra parte, L-BFGS potrebbe non essere molto peggiore in termini di prestazioni rispetto a BFGS. i calcoli che sarebbero richiesti con la stima dell'Assia vengono eseguiti senza formarlo esplicitamente. L-BFGS viene utilizzato al posto di BFGS per problemi molto grandi (quando n è molto grande), ma potrebbe non funzionare bene come BFGS. Pertanto, BFGS è preferito rispetto a L-BFGS quando è possibile soddisfare i requisiti di memoria di BFGS. D'altra parte, L-BFGS potrebbe non essere molto peggiore in termini di prestazioni rispetto a BFGS. i calcoli che sarebbero richiesti con la stima dell'Assia vengono eseguiti senza formarlo esplicitamente. L-BFGS viene utilizzato al posto di BFGS per problemi molto grandi (quando n è molto grande), ma potrebbe non funzionare bene come BFGS. Pertanto, BFGS è preferito rispetto a L-BFGS quando è possibile soddisfare i requisiti di memoria di BFGS. D'altra parte, L-BFGS potrebbe non essere molto peggiore in termini di prestazioni rispetto a BFGS.

Anche a questo livello di descrizione, ci sono molte varianti. Ad esempio, i metodi possono essere totalmente non salvaguardati, nel qual caso tutto va bene e potrebbero non convergere in nulla, anche su problemi convessi. Oppure possono essere salvaguardati. I metodi di salvaguardia si basano generalmente su aree di fiducia o ricerca di linee e hanno lo scopo di garantire la convergenza a qualcosa. Cosa molto importante, il solo sapere che un metodo è L-BFGS non ti dice da solo quale tipo di protezione viene utilizzata. È un po 'come dire che un'auto è una berlina a 4 porte - ma ovviamente non tutte le berline a 4 porte sono uguali in termini di prestazioni o affidabilità. È solo un attributo di un algoritmo di ottimizzazione.


1
Ciao marco, ho ancora bisogno del tuo aiuto, potresti dirmi brevemente la differenza tra i metodi newton e quazi newton ?? grazie
Abir il

3
I metodi di Newton calcolano la matrice hessiana, "da zero", ad ogni iterazione dell'algoritmo, esattamente, o mediante differenze finite del gradiente in quell'iterazione. I metodi Quasi-Newton costruiscono un'approssimazione della matrice hessiana usando il metodo differenze di gradiente tra le iterazioni. Esistono molti modi diversi per farlo, dando origine a una varietà di metodi Quasi-Newton diversi, come BFGS, DFP, SR1 e altri. Solitamente i metodi Newton richiedono una grande quantità di compjuting ad ogni iterazione per calcolare l'Assia, molto più calcolo per iterazione rispetto ai metodi Quasi-Newton.
Mark L. Stone,
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.