Come determinare la fiducia di una previsione della rete neurale?


22

Per illustrare la mia domanda, supponiamo che io abbia un set di addestramento in cui l'input ha un certo livello di rumore ma l'output no, per esempio;

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

qui l'output è il gradiente dell'array di input se fosse silenzioso (non il gradiente effettivo).

Dopo aver addestrato la rete, l'output dovrebbe essere simile a questo per un determinato input.

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

La mia domanda è: come può essere creata una rete neurale in modo tale da restituire un valore previsto e una misura di confidenza, come una varianza o un intervallo di confidenza?


3
Se stai cercando un intervallo che conterrà una realizzazione futura , allora stai cercando un intervallo di predizione , non un intervallo di confidenza , che riguarda parametri non osservabili . Questo è spesso confuso.
S. Kolassa - Ripristina Monica il

Risposte:


20

Sembra che tu stia cercando un , ovvero un intervallo che contenga una percentuale prespecificata di realizzazioni future. (Guarda il tag wiki per e per la differenza.)

È probabile che la tua scommessa migliore funzioni direttamente con le architetture NN che non generano previsioni a punto singolo, ma intere distribuzioni predittive . È quindi possibile estrarre direttamente gli intervalli di previsione desiderati (o la media o le previsioni in punti mediani) da queste distribuzioni. Io e altri abbiamo sostenuto che le distribuzioni predittive sono molto più utili delle previsioni puntuali , ma ad essere sincero, non ho ancora visto molto lavoro sulle distribuzioni predittive con reti neurali, sebbene abbia tenuto gli occhi aperti. Questo documento sembra che potrebbe essere utile. Potresti voler cercare un po ', magari usando anche altre parole chiave come "distribuzioni di previsione" o "densità predittive" e simili.

Detto questo, potresti voler esaminare l' algoritmo NeuroBayes di Michael Feindt , che utilizza un approccio bayesiano per prevedere le densità predittive.


1
Questo potrebbe essere un altro documento utile - una rete neurale che apprende le distribuzioni: google.com/…
Pro Q

@Stephan: Il collegamento è scomparso: (
Matthew Drury,

@MatthewDrury: quale link intendi? Tutti e tre stanno lavorando bene per me.
S. Kolassa - Ripristina Monica il

Puoi condurci a una semplice demo / esempio di Ternsorflow con NN Predictive Distributions?
Martin Thøgersen,

@ MartinThøgersen: scusa, no, non uso Tensorflow ...
S. Kolassa - Ripristina Monica il

5

Non sono sicuro che puoi calcolare un intervallo di confidenza per una singola previsione, ma puoi effettivamente calcolare un intervallo di confidenza per il tasso di errore dell'intero set di dati (puoi generalizzare per l'accuratezza e qualsiasi altra misura che stai valutando).

Se è il tuo tasso di errore durante la classificazione di alcuni dati S di dimensione n , un intervallo di confidenza del 95% per il tuo tasso di errore è dato da: e ± 1,96 eSn .

e±1.96e(1-e)n

(vedi il libro "Machine Learning" di Tom Mitchell, capitolo 5.)

MODIFICARE

Immagino che dovrei indicare un caso più generale, che è: dove le scelte comuni perzNsono elencate nella seguente tabella:

e±zNe(1-e)n,
zN
confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58

1
Ciò richiederebbe che la distribuzione asintotica sia normale
user2879934

4
Per campioni di grandi dimensioni (che è abbastanza comune in ML) è generalmente sicuro supporre che. Non è stato necessario il voto negativo, basta chiedere chiarimenti, ma vabbè.
mp85,

4

Gli intervalli di predizione (PI) nella regressione non parametrica e i problemi di classificazione, come reti neurali, SVM, foreste casuali, ecc. Sono difficili da costruire. Mi piacerebbe sentire altre opinioni su questo.

Tuttavia, per quanto ne so, Conformal Prediction (CP) è l'unico metodo di principio per la creazione di PI calibrati per la previsione nella regressione non parametrica e problemi di classificazione. Per un tutorial su CP, vedi Shfer & Vovk (2008), J. Machine Learning Research 9 , 371-421 [pdf]


3

Non conosco alcun metodo per farlo in modo esatto.

μσ(Xio,yio)-logN(yio-μ(Xio),σ(Xio))μ(Xio)yioσ(Xio)

yio-μ(Xio)σ(Xio)N(0,1)


1
σ+

Ci sono esempi concreti che qualcuno ha visto di usare un NN per generare parametri di una distribuzione, addestrati sulla probabilità del log?
Miss Palmer,

3

Non ho sentito parlare di alcun metodo che dia un intervallo di confidenza per una previsione della rete neurale. Nonostante la mancanza di metodologia formale, sembra che sia possibile costruirne una. Non ho mai tentato questo a causa della potenza di calcolo che sarebbe necessaria e non faccio affermazioni su questo funzionamento per certo, ma un metodo che potrebbe funzionare per una piccola rete neurale (o con una potenza della GPU estremamente veloce potrebbe funzionare per reti di dimensioni moderate ) sarebbe ricampionare il set di addestramento e costruire molte reti simili (diciamo 10.000 volte) con gli stessi parametri e le impostazioni iniziali, e costruire intervalli di confidenza basati sulle previsioni per ciascuna della tua rete avviata.

Ad esempio, nelle 10.000 reti addestrate come discusso sopra, si potrebbero ottenere 2.0 (dopo aver arrotondato le previsioni di regressione della rete neurale) 9.000 di quelle volte, quindi si dovrebbe prevedere 2.0 con un IC al 90%. È quindi possibile creare una matrice di elementi della configurazione per ciascuna previsione effettuata e scegliere la modalità da segnalare come elemento della configurazione principale.


2
Sarei curioso di sapere perché questo suggerimento è stato scartato in quanto è essenzialmente il bootstrap in un modo leggermente non convenzionale (la componente di arrotondamento del problema rende facile verificare la fiducia della rete neurale sulla previsione). In realtà non mi dispiace il voto negativo se chiunque lo avesse votato potrebbe spiegare perché questa non è una soluzione valida alla domanda proposta. Sto imparando me stesso e apprezzerei il feedback!
Tony S,

1
Non ho votato verso il basso, ma da quanto ho capito il metodo proposto avrebbe prodotto intervalli che catturano i valori previsti del modello, questo non è lo stesso degli intervalli che catturano i valori reali.
Miss Palmer,

3

In termini di emissione diretta degli intervalli di previsione, esiste un documento del 2011 " Revisione completa degli intervalli di previsione basati sulla rete neurale "

Confrontano quattro approcci:

1: metodo Delta 2: metodo bayesiano 3: stima della varianza media 4: Bootstrap

Gli stessi autori hanno continuato a sviluppare il metodo di stima del limite superiore inferiore per la costruzione di intervalli di predizione basati sulla rete neurale che genera direttamente un limite inferiore e superiore dall'NN. Sfortunatamente non funziona con il backprop, ma i recenti lavori hanno reso possibili intervalli di predizione di alta qualità per il deep learning .

Alternativa all'emissione diretta di intervalli di predizione, le reti neurali bayesiane (BNN) modellano l'incertezza nei parametri di una NN e quindi catturano l'incertezza all'uscita. Questo è difficile da fare, ma i metodi più diffusi includono l'esecuzione dell'abbandono MC al momento della previsione o il montaggio .


1
In realtà è abbastanza facile farlo con Bayesian Deep Learning. Vedi ad esempio edwardlib.org/tutorials/bayesian-neural-network
DeltaIV

2

In realtà ci sono modi per farlo usando il dropout. Esegui la valutazione con dropout abilitato (di solito è disabilitato per la valutazione ma attivato durante l'allenamento) ed esegui la valutazione più volte.

La distribuzione dei risultati da più esecuzioni diverse può essere utilizzata come intervalli di confidenza.

Vedi l'articolo " Dropout come approssimazione bayesiana: rappresentare l'incertezza del modello nel deep learning " Guarda la presentazione su YouTube Andrew Rowan - Bayesian Deep Learning con Edward (e un trucco usando Dropout)


1

Non c'è modo, tutti i modelli ML non riguardano la comprensione del fenomeno, sono i metodi di interpolazione con la speranza "che funzioni". Inizia con tali domande fiducia, robustezza al rumore non ci sono risposte.

Quindi, per ricavare qualcosa, si prega di utilizzare varie scienze applicate e fondamentali:

  • Usa il controllo (e fai ipotesi sulla dinamica)

  • Usa l'ottimizzazione convessa (con alcune condizioni extra sulla funzione)

  • Usa le statistiche matematiche (con ipotesi preliminari sulle distribuzioni)

  • Usa l'elaborazione del segnale (con alcuni presupposti che il segnale è limitato in banda)

Gli scienziati usano alcune ipotesi prelimiarie (chiamate assiomi) per ricavare qualcosa.

Non c'è modo di dare fiducia senza un'ipotesi preliminare, quindi il problema non è nel DL mehtod, ma è un problema in qualsiasi metodo che tenta di interpolare senza QUALSIASI ipotesi preliminare: non c'è modo di derivare via algebra qualcosa di intelligentemente senza un'ipotesi.

NN e vari metodi ML sono per la prototipazione rapida per creare "qualcosa" che sembra funzionare "in qualche modo" verificato con validazione incrociata.

Ancora più in profondità la regressione che si adatta a E [Y | X] o la sua stima può essere un problema assolutamente errato da risolvere (forse pdf nel punto Y = E [Y | X] ha minimo, non massimo), e ce ne sono molti così sottili cose.

Vorrei anche ricordare due problemi irrisolvibili in AI / ML, che possono essere dimenticati per alcuni motivi, dietro gli slogan di bellezza:

(1) Sono metodi di interpolazione, non estrapolazione: non ha la capacità di affrontare nuovi problemi

(2) nessuno sa come si comporterà un modello su dati che non provengono dalla stessa distribuzione (uomo in costume di banana per localizzazione pedonale)


che ne dite di modellare l'errore dal set di dati di allenamento per "prevedere" l'errore per inferenza?
Jacko,

Supponiamo anche che sia additivo "predict_for_mean" + "predict_for_error". Puoi immaginare qualsiasi schema per prevedere segnali ed errori separatamente. Ma ancora una volta - se "solo interpoliamo" non possiamo dire qualcosa con sicurezza. Prevediamo la temperatura in superficie. Sì, puoi dire questa mia previsione "20" e la previsione di errore è "5". Quindi dice che penso che la vera risposta stia nel [20-5, 20 + 5] ma per capire davvero cosa significa, dobbiamo capire il vero fenomeno e il modello matematico. E ML non riguarda entrambi. Altre aree fanno alcune ipotesi preliminari.
bruziuz,

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.