Stima dell'incertezza in problemi di inferenza ad alta dimensione senza campionamento?


9

Sto lavorando a un problema di inferenza ad alta dimensione (circa 2000 parametri del modello) per il quale siamo in grado di eseguire in modo robusto la stima MAP trovando il massimo globale del log-posteriore utilizzando una combinazione di ottimizzazione basata sul gradiente e un algoritmo genetico.

Mi piacerebbe molto poter fare una stima delle incertezze sui parametri del modello oltre a trovare la stima MAP.

Siamo in grado di calcolare in modo efficiente il gradiente del log-posteriore rispetto ai parametri, quindi a lungo termine miriamo a utilizzare l'MCMC Hamiltoniano per fare un po 'di campionamento, ma per ora sono interessato a stime non campionarie.

L'unico approccio che conosco è quello di calcolare l'inverso dell'assia nella modalità per approssimare il posteriore come multivariato normale, ma anche questo sembra impossibile per un sistema così grande, poiché anche se calcoliamo il elementi dell'Assia Sono sicuro che non siamo riusciti a trovare il suo contrario.4×106

Qualcuno può suggerire che tipo di approcci sono tipicamente utilizzati in casi come questo?

Grazie!

EDIT : informazioni aggiuntive sul problema

Sfondo
Questo è un problema inverso relativo a un grande esperimento di fisica. Abbiamo una mesh triangolare 2D che descrive alcuni campi fisici e i nostri parametri del modello sono i valori fisici di quei campi su ciascun vertice della mesh. La mesh ha circa 650 vertici e modelliamo 3 campi, quindi ecco da dove provengono i nostri parametri del modello 2000.

I nostri dati sperimentali provengono da strumenti che non misurano direttamente questi campi, ma quantità che sono complicate funzioni non lineari dei campi. Per ciascuno dei diversi strumenti abbiamo un modello forward che mappa i parametri del modello con le previsioni dei dati sperimentali e un confronto tra la previsione e la misurazione produce una probabilità logaritmica.

Riassumiamo quindi le probabilità logaritmiche di tutti questi diversi strumenti e aggiungiamo anche alcuni valori precedenti al log che applicano alcuni vincoli fisici ai campi.

Di conseguenza dubito che questo "modello" rientri perfettamente in una categoria: non abbiamo una scelta di quale sia il modello, è dettato da come funzionano gli strumenti reali che raccolgono i nostri dati sperimentali.

Set di
dati Il set di dati è composto da 500x500 immagini e esiste un'immagine per ogni telecamera, quindi i punti di dati totali sono 500x500x4 = .106

Modello di errore Al momento
riteniamo che tutti gli errori del problema siano gaussiani. Ad un certo punto potrei provare a passare a un modello di errore studentesco solo per una maggiore flessibilità, ma le cose sembrano ancora funzionare bene solo con i gaussiani.

Esempio di verosimiglianza
Questo è un esperimento di fisica del plasma e la stragrande maggioranza dei nostri dati proviene da telecamere puntate sul plasma con particolari filtri davanti alle lenti per guardare solo parti specifiche dello spettro luminoso.

Per riprodurre i dati ci sono due passaggi; prima dobbiamo modellare la luce che proviene dal plasma sulla rete, quindi dobbiamo modellare quella luce in un'immagine della telecamera.

La modellizzazione della luce che proviene dal plasma sfortunatamente dipende da quali siano effettivamente i coefficienti di velocità, che dicono quanta luce viene emessa dai diversi processi dati i campi. Queste tariffe sono previste da alcuni costosi modelli numerici, quindi dobbiamo archiviare il loro output su griglie e quindi interpolare per cercare valori. I dati della funzione rate vengono calcolati solo una volta: li memorizziamo quindi ne ricaviamo una spline all'avvio del codice e quindi quella spline viene utilizzata per tutte le valutazioni delle funzioni.

Supponiamo che e siano le funzioni di velocità (che valutiamo per interpolazione), quindi l'emissione -vertice della mesh è data da dove sono i 3 campi che sulla mesh. Ottenere il vettore di emissioni nell'immagine di una telecamera è facile, è solo una moltiplicazione con una matrice che codifica le parti della mesh attraverso cui guarda ogni pixel della telecamera.R1R2iEi

Ei=R1(xi,yi)+ziR2(xi,yi)
(x,y,z)G

Poiché gli errori sono gaussiani, la probabilità logaritmica per questa particolare fotocamera è quindi

L=12(GEd)Σ1(GEd)

dove sono i dati della videocamera. La probabilità logaritmica totale è una somma di 4 delle espressioni precedenti ma per telecamere diverse, che hanno tutte versioni diverse delle funzioni di velocità perché stanno guardando parti diverse dello spettro luminoso.dR1,R2

Esempio precedente
Abbiamo vari priori che in effetti stabiliscono solo limiti superiori e inferiori su varie quantità, ma questi tendono a non agire troppo sul problema. Ne abbiamo uno precedente che agisce fortemente, che applica efficacemente il livellamento di tipo laplaciano ai campi. Prende anche una forma gaussiana:

log-prior=12xSx12ySy12zSz


1
Quale modello stai adattando? Regressione lineare? GP? Un modello di conteggio gerarchico? Calibrazione bayesiana di un modello di computer? Per favore, aggiungi maggiori dettagli sul problema che stai risolvendo e scriverò una risposta con pro e contro di VI.
DeltaIV,

1
@DeltaIV Ho aggiornato la domanda con qualche informazione in più: è possibile che non abbia elaborato esattamente quello che stavi cercando. Se è così fammi sapere e farò un'altra modifica, grazie!
CBowman,

1
@DeltaIV Grazie ancora! Altre informazioni aggiunte, fammi sapere se c'è qualcos'altro che posso aggiungere.
CBowman

1
@DeltaIV le immagini dei dati sono 500x500 e ce n'è una per ogni telecamera, quindi i punti dati totali sono 500x500x4 = . I dati della funzione rate vengono calcolati solo una volta: li memorizziamo, quindi ne ricaviamo una spline all'avvio del codice e quindi quella spline viene utilizzata per tutte le valutazioni delle funzioni. 106
CBowman

1
Non ho un riferimento, ma ci sono molte approssimazioni di basso rango per calcolare l'inverso della matrice. ad es. trova gli autovalori più grandi , supponi che i rimanenti siano uguali e usa un'approssimazione approssimativa per gli autovettori corrispondenti a autovalori bassi. Sono abbastanza sicuro che ci sono anche decomposizioni approssimative / iterative di Cholesky che convergono al valore esatto. termina le iterazioni dopo aver atteso il tempo massimo consentito2000 - kk2000k
probabilitlogico

Risposte:


4

Prima di tutto, penso che il tuo modello statistico sia sbagliato. Trasformo la tua notazione in una più familiare per gli statistici, quindi lascia

d=y=(y1,,yN), N=106

sii il tuo vettore di osservazioni (dati) e

X=θ=(θ1,...,θp)y=φ=(φ1,...,φp)z=ρ=(ρ1,...,ρp), p650

i tuoi vettori di parametri, di dimensione totale . Quindi, se ho capito bene, si assume un modellod=3p2000

y=solr1(θ,φ)+ρsolr2(θ,φ))+ε, ε~N(0,ioN)

dove è la matrice di interpolazione spline .solN×d

Questo è chiaramente sbagliato. Non è possibile che gli errori in punti diversi dell'immagine della stessa fotocamera e nello stesso punto in immagini di telecamere diverse siano indipendenti. Dovresti esaminare statistiche e modelli spaziali come minimi quadrati generalizzati, stima dei semivariogrammi, kriging, processi gaussiani, ecc.


Detto questo, poiché la tua domanda non è se il modello sia una buona approssimazione del processo di generazione dei dati, ma come stimare un tale modello, ti mostrerò alcune opzioni per farlo.

HMC

2000 parametri non sono un modello molto grande, a meno che tu non stia allenando questa cosa su un laptop. Il set di dati è più grande ( punti dati), ma se si ha accesso a istanze cloud o macchine con GPU, framework come Pyro o Tensorflow Probability risolveranno il problema. Quindi, potresti semplicemente usare l'hamiltoniano Monte Carlo basato su GPU.106

Pro : inferenza "esatta", nel limite di un numero infinito di campioni dalla catena.

Contro : nessun limite stretto per l'errore di stima, esistono più metriche diagnostiche di convergenza, ma nessuna è l'ideale.

Grande approssimazione del campione

Con un abuso della notazione, denotiamo con il vettore ottenuto concatenando i tuoi tre vettori di parametri. Quindi, usando il teorema del limite centrale bayesiano (Bernstein-von Mises), potresti approssimare con , dove è il valore del parametro "vero", è la stima MLE di e è la matrice di informazioni Fisher valutata in . Naturalmente, essendo sconosciuto, useremoθp(θ|y)N(θ0^n,ion-1(θ0))θ0θ0^nθ0ion-1(θ0)θ0θ0ion-1(θ0^n)anziché. La validità del teorema di Bernstein-von Mises dipende da alcune ipotesi che puoi trovare, per esempio, qui : nel tuo caso, supponendo che siano lisce e differenziabili, il teorema è valido, perché il supporto di un gaussiano prior è l'intero spazio dei parametri. O, meglio, sarebbe valido se i tuoi dati fossero effettivamente presi come si presume, ma non credo che lo siano, come ho spiegato all'inizio.R1,R2

Pro : particolarmente utile nel casoGarantito per convergere alla risposta giusta, nell'impostazione iid, quando la probabilità è regolare e differenziabile e il precedente è diverso da zero in un quartiere di .p<<Nθ0

Contro : il più grande svantaggio , come hai notato, è la necessità di invertire la matrice di informazioni di Fisher. Inoltre, non saprei giudicare empiricamente l'accuratezza dell'approssimazione, a meno di usare un campionatore MCMC per estrarre campioni da . Naturalmente, ciò vanificherebbe innanzitutto l'utilità dell'uso di B-vM.p(θ|y)

Inferenza variazionale

In questo caso, piuttosto che trovare l'esatta (che richiederebbe il calcolo di un integrale idimensional), abbiamo scelto di approssimare con , dove appartiene alla famiglia parametrica indicizzata dal vettore di parametri . Cerchiamo st che una certa discrepanza tra e sia minimizzata. Scegliendo questa misura come divergenza KL, otteniamo il metodo dell'inferenza variabile:p(θ|y)d-pqφ(θ)qQφφφ*qp

φ*=un'rgmionφΦDKL(qφ(θ)||p(θ|y))

Requisiti per :qφ(θ)

  • dovrebbe essere differenziabile rispetto a , in modo da poter applicare metodi per l'ottimizzazione su larga scala, come la discesa stocastica del gradiente, per risolvere il problema della minimizzazione.φ
  • dovrebbe essere abbastanza flessibile da poter approssimare accuratamente per un certo valore di , ma anche abbastanza semplice da cui è facile campionare. Questo perché stimare la divergenza di KL (il nostro obiettivo di ottimizzazione) richiede di stimare una previsione rispetto a .p(θ|y)φq

Si può scegliere per essere pienamente fattorizzato, vale a dire, il prodotto di distribuzioni di probabilità univariate:qφ(θ)d

qφ(θ)=Πio=1dqφio(θio)

questo è il cosiddetto metodo Bayes variazionale a campo medio . Si può provare (vedi, ad esempio, il capitolo 10 di questo libro ) che la soluzione ottimale per ciascuno dei fattori èqφj(θj)

logqj*(θj)=Eioj[logp(y,θ)]+const.

dove è la distribuzione congiunta di parametri e dati (nel tuo caso, è il prodotto della tua probabilità gaussiana e dei priori gaussiani rispetto ai parametri) e l'aspettativa è rispetto all'altra variazionale distribuzioni univariate . Naturalmente, poiché la soluzione per uno dei fattori dipende da tutti gli altri fattori, dobbiamo applicare una procedura iterativa, inizializzando tutte le distribuzioni su alcune ipotesi iniziali e quindi aggiornandole ripetutamente una alla volta con l'equazione sopra. Si noti che invece di calcolare le aspettative sopra come unp(y,θ)q1*(θ1),...,qj-1*(θj-1),qj+1*(θj+1),...,qd*(θd)qio(θio)(d-1)-integrale dimensionale, che sarebbe proibitivo nel caso in cui i priori e la probabilità non siano coniugati, è possibile utilizzare la stima di Monte Carlo per approssimare l'aspettativa.

L'algoritmo Variazionale Bayes in campo medio non è l'unico possibile algoritmo VI che potresti usare: l'Autocodificatore Variazionale presentato in Kingma & Welling, 2014, "Bayes Variazionali a codifica automatica" è un'alternativa interessante, dove, anziché assumere una forma pienamente fattorizzata per , e quindi derivando un'espressione in forma chiusa per , si presume che sia gaussiano multivariato, ma con parametri eventualmente diversi in ciascuno degli punti dati. Per ammortizzare il costo dell'inferenza, viene utilizzata una rete neurale per mappare lo spazio di input allo spazio dei parametri variazionali. Vedi l'articolo per una descrizione dettagliata dell'algoritmo: le implementazioni VAE sono di nuovo disponibili in tutti i principali framework di Deep Learning.qqioqN


quel modello di indipendenza VB può essere un terribile approccio per le misure di precisione . Di solito equivale a approssimazioni di tipo plug-in senza regolazione. semplici esempi non stanno usando aggiustamenti "gradi di libertà" in te e usando distribuzioni normali invece di t. un problema soprattutto per i parametri di iperS2
probabilityislogic

@DeltaIV Il modello statistico in genere è abbastanza buono, gli errori tra le diverse telecamere sono molto indipendenti e diversi pixel nella stessa telecamera saranno sostanzialmente indipendenti, a meno che non siano letteralmente adiacenti. Potremmo codificare alcune correlazioni spaziali nei pixel adiacenti utilizzando una probabilità di processo gaussiana, ma ciò richiederebbe che invertiamo direttamente la matrice di covarianza o risolviamo un sistema lineare sparsa ogni volta che vogliamo valutare la probabilità, che è molto di più costoso (anche se non fuori discussione).
CBowman

2

potresti voler controllare alcuni dei software "bayesX" e possibilmente anche il software "inla". entrambi avranno probabilmente delle idee che puoi provare. Google

entrambi fanno molto affidamento sullo sfruttamento della scarsità nella parametrizzazione della matrice di precisione (vale a dire indipendenza condizionale, modello di tipo markov) - e hanno algoritmi di inversione progettati per questo. la maggior parte degli esempi si basa su modelli guassiani a più livelli o auto regressivi. dovrebbe essere abbastanza simile all'esempio che hai pubblicato

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.