Processi gaussiani: come utilizzare GPML per l'output multidimensionale


13

Esiste un modo per eseguire la regressione del processo gaussiana sull'output multidimensionale (possibilmente correlato) utilizzando GPML ?

Nello script demo ho trovato solo un esempio 1D.

Una domanda simile sul CV che affronta il caso di input multidimensionali.


Ho esaminato il loro libro per vedere se riuscivo a trovare qualcosa. Nel nono capitolo di questo libro (sezione 9.1), hanno menzionato questo caso di uscite multiple. Hanno menzionato un paio di modi per affrontarlo, Uno - usando un processo di rumore correlato e Due - Cokriging (Correlazione precedente).

Ancora non so come posso incorporare queste idee nel framework GPML.


Inoltre, ci sono altre librerie / framework GP che supportano l'output multidimensionale?


"Predicting Structured Data" parla dell'utilizzo di SVM nel caso di una classe (stima della densità del kernel) sui kernel comuni tra input e output. Dato che sono entrambi macchine kernel questo approccio dovrebbe funzionare. Ho trovato un documento che menziona qualcosa di simile. datamin.ubbcluj.ro/tr/2011/sogp.pdf i miei tentativi di adattare algoritmi di apprendimento strutturato sono stati piuttosto spaventosi, quindi non sono sicuro di come si accumulino.
Jessica Collins,

Risposte:


7

Credo che il Twin Gaussian Processes sia esattamente quello che stai cercando. Non riesco a descrivere il modello meglio dell'abstract della carta stessa, quindi copierò e incollalo:

Descriviamo i processi gemellati gaussiani (TGP) 1, un metodo di previsione strutturato generico che utilizza priori del processo gaussiano (GP) su covariate e risposte, sia multivariate, sia stime degli output minimizzando la divergenza di Kullback-Leibler tra due GP modellati come normali distribuzioni su set di indici di formazione finiti e testare esempi, sottolineando l'obiettivo che input simili dovrebbero produrre percezioni simili e questo dovrebbe valere, in media, tra le loro distribuzioni marginali. TGP cattura non solo le interdipendenze tra covariate, come in un tipico GP, ma anche quelle tra le risposte, quindi vengono tenute in considerazione le correlazioni tra input e output. Il TGP è esemplificato, con risultati promettenti, per la ricostruzione di pose umane 3d da sequenze video monoculari e multicamera nel benchmark HumanEva recentemente introdotto, dove otteniamo un errore di 5 cm in media per marcatore 3d per modelli addestrati congiuntamente, utilizzando i dati di più persone e più attività. Il metodo è rapido e automatico: non richiede la creazione manuale della posa iniziale, i parametri di calibrazione della fotocamera o la disponibilità di un modello corporeo 3D associato a soggetti umani utilizzati per l'allenamento o i test.

Gli autori hanno generosamente fornito codice e set di dati di esempio per iniziare.


Benvenuto nel sito, @caoy. Ti dispiacerebbe fornire alcune informazioni su cosa c'è in quel link? In questo modo, i lettori potrebbero sapere se vale la pena perseguirli, e significherebbe che c'è ancora qualcosa di valore qui in caso di linkrot futuri.
gung - Ripristina Monica

@gung, grazie, spero che l'abstract faccia il lavoro.
Yanshuai Cao,

@caoy ... Puoi per favore approfondire la media della distribuzione predittiva e la varianza degli output nei processi gaussiani gemellati?
Sandipan Karmakar,

3

Risposta breve La regressione dell'output multidimensionale è un po 'complicata e nel mio attuale livello di conoscenza non direttamente incorporato nella toolbox GPML.

Risposta lunga È possibile suddividere il problema di regressione dell'output multidimensionale in 3 parti diverse.

  1. Gli output non sono correlati tra loro : basta regredire gli output singolarmente come lo script demo per il caso 1d.
  2. Gli output sono correlati ma non conoscono la relazione tra di essi - Fondamentalmente ti piacerebbe imparare le relazioni interne tra gli output. Come menziona il libro, coKriging è un buon modo per iniziare. Esistono software diversi da GPML che possono consentire direttamente di eseguire cokriging, ad es. ooDace
  3. Gli output sono correlati e conosci la relazione tra loro : esegui un cokriging regolare ma puoi applicare forti vincoli tra gli output applicando i vincoli nell'ottimizzatore (mentre riduci al minimo la probabilità marginale del log) come affermato da Hall & Huang 2001 o applicare le relazioni nella funzione precedente come affermato da Constantinescu & Anitescu 2013 .

Spero possa essere d'aiuto :)


2

Questo è un modulo di scikit-learn che ha funzionato sorprendentemente bene per me:

http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html

# Instanciate a Gaussian Process model
gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1e-1,
                     random_start=100)

# Fit to data using Maximum Likelihood Estimation of the parameters
gp.fit(X, y)

# Make the prediction on the meshed x-axis (ask for MSE as well)
y_pred, MSE = gp.predict(x, eval_MSE=True)
sigma = np.sqrt(MSE)

1

Ero alla ricerca di processi gaussiani multi-output e ho trovato molti modi per agire con esso come, metodo di convoluzione, metodo di modellazione di effetti misti e l'ultimo questo Twin Gaussian Processes (TGP).

Ho dei dubbi sul concetto di Twin Gaussian Processes (TGP). Qualcuno può aiutarmi con quello?

In TGP, gli autori stanno scoprendo l'output previsto ( ) minimizzando la divergenza KL tra input e output viceversa. Ma in generale, cerchiamo la distribuzione predittiva dell'output, ovvero . Una cosa da notare qui che la varianza predittiva, cioè , non ha alcun ruolo in esso. Nel caso di TGP, l'output previsto è uguale alla media della distribuzione predittiva di ? p(y*|y)~(μ,σ2)σ2y y yy^p(y|y)(μ,σ2)σ2yy^y

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.