Quando è disponibile un Jacobiano analitico, è meglio approssimare l'Assia con


19

Supponiamo che sto calcolando alcuni parametri del modello per minimizzare la somma dei residui quadrati e suppongo che i miei errori siano gaussiani. Il mio modello produce derivati ​​analitici, quindi l'ottimizzatore non deve utilizzare differenze finite. Una volta che l'adattamento è completo, voglio calcolare gli errori standard dei parametri montati.

Generalmente, in questa situazione, l'assia della funzione di errore è considerata correlata alla matrice di covarianza da:

σ2H1=C
dove σ2 è la varianza dei residui.

Quando non sono disponibili derivati ​​analitici dell'errore, in genere non è pratico calcolare l'Assia, quindi JTJ è considerato una buona approssimazione.

Tuttavia, nel mio caso, ho una J analitica, quindi per me è relativamente economico calcolare H per differenza finita J.

Quindi, la mia domanda è questa: sarebbe più accurato approssimare H usando la mia J esatta e applicando l'approssimazione di cui sopra, o approssimare H con una differenza finita J?

Risposte:


12

Buona domanda. Innanzitutto, ricorda da dove proviene questa approssimazione Sia ( x i , y i ) i tuoi punti dati, f ( ) sia il tuo modello e β i parametri del tuo modello. Quindi la funzione oggettiva del problema dei minimi quadrati non lineari è 1HJTJ(xi,yi)f()βdoverè il vettore dei residui,ri=yi-f(xi,β). L'esatta Esiana della funzione obiettivo èH=JTJ+ri2ri. Quindi l'errore in questa approssimazione èH-JTJ=ri2ri12rTrrri=yif(xi,β)H=JTJ+ri2riHJTJ=ri2ri. È una buona approssimazione quando i residui stessi sono piccoli; o quando la seconda derivata dei residui è piccola. I minimi quadrati lineari possono essere considerati un caso speciale in cui la seconda derivata dei residui è zero.

Per quanto riguarda l'approssimazione delle differenze finite, è relativamente economico. Per calcolare la differenza centrale, è necessario valutare il Jacobiano un ulteriore volte (una differenza in avanti vi costerà n valutazioni supplementari, in modo da non disturbare). L'errore di approssimazione differenza centrale è proporzionale 4 r e h 2 , dove h è la dimensione del passo. La dimensione del passo ottimale è h ϵ 12nn4rh2h , doveϵè la precisione della macchina. Quindi, a meno che i derivati ​​dei residui non stiano esplodendo, è abbastanza chiaro che l'approssimazione della differenza finita dovrebbe essere MOLTO migliore. Vorrei sottolineare che, sebbene il calcolo sia minimo, la contabilità non è banale. Ogni differenza finita sul giacobino ti darà una fila dell'Assia per ogni residuo. Dovrai quindi riassemblare l'Assia usando la formula sopra.hϵ13ϵ

Vi è, tuttavia, una terza opzione. Se il tuo solutore utilizza un metodo Quasi-Newton (DFP, BFGS, Bryoden, ecc.), Sta già approssimando l'Assia ad ogni iterazione. L'approssimazione può essere abbastanza buona, poiché utilizza la funzione obiettiva e i valori di gradiente di ogni iterazione. La maggior parte dei solutori ti darà accesso alla stima finale dell'Assia (o al suo inverso). Se questa è un'opzione per te, la userei come stima dell'Assia. È già stato calcolato e probabilmente sarà una stima abbastanza buona.


Ottima risposta, grazie. Giustificarlo con un confronto dell'errore di stima in ogni caso è molto illuminante. Posso chiedere come si sa che è il passo ottimale per differenze finite? Non l'ho mai visto prima. ϵ1/3
Colin K,

5
Questo è un vecchio trucco per bilanciare l'errore di troncamento con l'errore di arrotondamento. Ovviamente, per ridurre al minimo l'errore di troncamento, si desidera rendere più piccolo possibile. Ma una volta che h diventa troppo piccolo, inizi a incorrere in un significativo errore di arrotondamento. La derivazione è relativamente semplice. Supponendo una differenza centrale, l'errore di troncamento è proporzionale a h 2 f ( x ) . L'errore di arrotondamento è sempre proporzionale a ϵ f ( x )hhh2f(x) . Aggiungi i due e minimizza suh. Ottienihϵ1ϵf(x)hh . hϵ13
Bill Woessner,

3
Questo vale solo per le differenze centrali. Per le differenze in avanti, la dimensione del passo ottimale è . Ci sono anche altri trucchi. Ad esempio, assicurati di sapere effettivamente cos'èh. So che sembra sciocco, ma nell'aritmetica in virgola mobile possono accadere cose strane. Ecco un modo semplice per assicurarsi di avere il valore corretto dih:. Matematicamente, ovviamente,hactual=hdesired. Ma se usi valori che non possono essere rappresentati esattamente in virgola mobile (comeh=0,0001), vedrai che non è così. hϵ12hhh_actual = (x + h_desired) - xhactual=hdesiredh=0.0001
Bill Woessner

Forse questo contenuto potrebbe essere aggiunto alla tua risposta, piuttosto che ai commenti. In questo modo, i futuri utenti non dovranno sfogliare una sezione di commenti estesa per trovare materiale che influisca direttamente sulle affermazioni fatte nella risposta.
Sycorax dice di reintegrare Monica il

2
Oh mio Dio. Un'approssimazione di Quasi-Newton dell'Assia può essere una terribile stima dell'Assia, e quindi portare a una stima molto scadente della matrice di covarianza. Può servire bene per facilitare la progressione dell'algoritmo in modo ottimale, ma può essere piuttosto scadente come una stima dell'Assia.
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.