Aiuta a decidere tra l'interpolazione cubica e quadratica nella ricerca di linee


9

Sto eseguendo una ricerca di linea come parte di un algoritmo BFGS quasi-Newton. In un passaggio della ricerca della linea utilizzo un'interpolazione cubica per avvicinarmi al minimizer locale.

Sia la funzione di interesse. Voglio trovare un tale che .x f ( x ) 0f:RR,fC1xf'(X*)0

Sia noto , f ( x k ) , f ( x k + 1 ) e f ( x k + 1 ) . Supponi anche 0 x k < x < x k + 1 . Io inserisco un polinomio cubico Q ( x ) = a x 3 + b x 2 + c x + df(XK)f'(XK)f(XK+1)f'(XK+1)0XK<X*<XK+1Q(X)=un'X3+BX2+cX+din modo che , Q ( 0 ) = f ( x k ) , Q ( x k + 1 - x k ) = f ( x k + 1 ) e Q ( x k + 1 - x k ) = f ( xQ(0)=f(xk)Q(0)=f(xk)Q(xk+1xk)=f(xk+1).Q(xk+1xk)=f(xk+1)

Risolvo l'equazione quadratica: per la mia cercata x usando la soluzione a forma chiusa.(1):Q(xxk)=0x

Quanto sopra funziona bene nella maggior parte dei casi, tranne quando quanto la soluzione in forma chiusa per ( 1 ) si divide per un che diventa molto vicino o esattamente 0 .f(x)=O(x2)(1)a0

La mia soluzione è quella di guardare e se è "troppo piccolo" semplicemente prendere la soluzione in forma chiusa per la Minimizer del polinomio quadratico Q 2 ( x ) = b x 2 + c x + d per il quale ho già i coefficienti b , c , d dal precedente adattamento a Q ( x ) .aQ2(x)=bx2+cx+db,c,dQ(x)

La mia domanda è: come posso escogitare un buon test per quando eseguire l'interpolazione quadratica sul cubo? L'approccio ingenuo di prova per è male a causa di motivi numerici in modo da sto guardando | a | < ϵ τ dove ϵ è la precisione della macchina, ma non sono in grado di decidere un buon τ che sia invariante in scala di f .a0|a|<ϵτϵτf

Domanda bonus: ci sono problemi numerici con l'uso dei coefficienti, , dall'adattamento cubico fallito o dovrei eseguire un nuovo adattamento quadratico con il modo appropriato di calcolare i coefficienti?b,c,d

Modifica per chiarimento: Nella mia domanda è in realtà ciò che viene comunemente chiamato ϕ ( α ) = f ( ˉ x k + α ¯ p k ) in letteratura. Ho appena semplificato la formulazione della domanda. Il problema di ottimizzazione che sto risolvendo non è lineare in 6 dimensioni. E sono ben consapevole che le condizioni di Wolfe sono sufficienti per la ricerca della linea BFGS, quindi affermando che ero interessato a f ( x ) 0fϕ(α)=f(x¯k+αpk¯)f'(X*)0; Sto cercando qualcosa che soddisfi le forti condizioni di Wolfe e prendere il minimizzatore dell'approssimazione cubica è un buon passo lungo la strada.

La domanda non riguardava BFGS, ma piuttosto come determinare quando il coefficiente cubico è abbastanza piccolo da rendere più appropriata un'approssimazione quadratica.

Modifica 2: Aggiorna notazione, le equazioni sono invariate.

Risposte:


4

Hmm ... l'interpolazione cubica non è inaudita per la ricerca di linee, ma in genere è eccessiva.

Se sto leggendo correttamente il tuo problema, è solo uno scalare? In questo caso BFGS non è probabilmente il modo più efficiente per risolvere il tuo problema. È probabile che algoritmi di ottimizzazione scalare come il metodo di Brenth risolvano il problema più rapidamente.x

Esistono numerosi algoritmi di ricerca di linee per BFGS. Per le mie applicazioni, usando la memoria limitata BFGS (L-BFGS) questa ricerca di linee funziona molto bene. Ricorda che devi solo soddisfare le condizioni di Wolfe e probabilmente non otterrai molto trovando il minimizzatore esatto.

Ad ogni modo, per rispondere effettivamente alla tua domanda: considererei semplicemente il passaggio al polinomio quadratico se risolvere quello cubico produce valori "cattivi" come NaN o Inf (come si fa qui ).

Non sono sicuro di cosa intendi usando ? Questi coefficienti per l'adattamento cubico non saranno gli stessi dell'adattamento quadratico, quindi non è possibile riutilizzarli.b,c,d

Infine, si consiglia di utilizzare , piuttosto che f ( x 0 ) , come la funzione sarà (probabilmente) essere solo approssimativamente cubica o quadratica a livello locale, e x k e x k - 1 dovrebbe essere più vicino a l'un l'altro (e la soluzione) di x 0 .f(xk1)f(x0)xkxk1x0

Spero che sia di aiuto.


A cura di chiarezza. "Usando " intendo che ho fatto un adattamento cubico a Q ( x ) = a x 3 + b x 2 + c x + d e ho scoperto che a 0 ho quindi Q ( x ) = b x 2 + c x + d che è già un polinomio quadratico. E la domanda era se i coefficienti b , c , db,c,dQ(x)=ax3+bx2+cx+da0Q(x)=bx2+cx+db,c,dottenuti per questo adattamento sono sensati da usare per fare un'interpolazione o se dovrei ricalcolare nuovi coefficienti per un adattamento quadratico tipico.
Emily L.,

Ah, giusto, ovviamente. Non vedo alcun problema nell'uso dei coefficienti da un punto di vista numerico. L'unico punto in cui penso sia importante, è molto vicino alla soluzione in cui si terminerebbe comunque.
LKlevin,

Puoi motivare la tua risposta calcolando il cubo e controllando i valori "cattivi"? Perché è sicuro di fare quando o una 0 ? a<<ba0
Emily L.,

Quando , b , c e d saranno approssimativamente quelli del caso quadratico. Dato che la ricerca delle linee BFGS è piuttosto solida, dovresti essere d'accordo nell'utilizzarli, anche se non sono completamente precisi. Finché obbedirai alle condizioni di Wolfe otterrai convergenza. Per quanto riguarda i valori "cattivi", purché il computer sia in grado di eseguire con precisione i calcoli con la precisione di cui hai bisogno, tutto va bene. Quando non è possibile, inizierai a vedere inf e NaN. a0b,cd
LKlevin,

4

C'è un articolo di Moré, implementato da Nocedal, al riguardo:

Jorge J. Moré e David J. Thuente. 1994. Algoritmi di ricerca di linee con riduzione sufficiente garantita. ACM Trans. Matematica. Softw. 20, 3 (settembre 1994), 286-307. DOI http://dx.doi.org/10.1145/192115.192132 ( prestampa ).


Benvenuti su SciComp.SE! Ho formattato il tuo post per semplificare la ricerca del documento. Se riesci a trovare un link per l'implementazione di Nocedal, sarebbe utile.
Christian Clason,
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.