Wie kann man das Vertrauen einer neuronalen Netzwerkvorhersage bestimmen?

22

Nehmen wir zur Veranschaulichung meiner Frage an, ich habe einen Trainingssatz, in dem die Eingabe einen Rauschgrad aufweist, die Ausgabe jedoch nicht.

# 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]

hier ist die Ausgabe die Steigung des Eingabearrays, wenn es rauschfrei wäre (nicht die tatsächliche Steigung).

Nach dem Training des Netzwerks sollte die Ausgabe für eine bestimmte Eingabe ungefähr so ​​aussehen.

# 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]

Meine Frage ist, wie ein neuronales Netzwerk so erstellt werden kann, dass es einen vorhergesagten Wert und ein Vertrauensmaß zurückgibt, z. B. eine Varianz oder ein Vertrauensintervall.

John
quelle
3
Wenn Sie nach einem Intervall suchen, das eine zukünftige Realisierung enthält , dann suchen Sie nach einem Vorhersageintervall , nicht nach einem Konfidenzintervall , das sich auf nicht beobachtbare Parameter bezieht . Dies wird oft verwechselt.
S. Kolassa - Wiedereinsetzung von Monica

Antworten:

20

Es hört sich so an, als ob Sie nach einem suchen , dh einem Intervall, das einen festgelegten Prozentsatz zukünftiger Realisierungen enthält. (In den Tag-Wikis finden Sie das und das für die Differenz.)

Ihre beste Wahl ist wahrscheinlich, direkt mit NN-Architekturen zu arbeiten, die keine Einzelpunktvorhersagen, sondern vollständige Vorhersageverteilungen ausgeben . Sie können dann gewünschte Vorhersageintervalle (oder Mittelwert- oder Medianpunktvorhersagen) direkt aus diesen Verteilungen extrahieren. Ich und andere haben argumentiert, dass Vorhersageverteilungen viel nützlicher sind als Punktvorhersagen , aber um ehrlich zu sein, ich habe noch nicht viel Arbeit an Vorhersageverteilungen mit neuronalen Netzen gesehen, obwohl ich meine Augen offen gehalten habe. Dieses Papier scheint nützlich zu sein. Vielleicht möchten Sie ein bisschen suchen, vielleicht auch mit anderen Schlüsselwörtern wie "Forecast Distributions" oder "Predictive Densities" und so weiter.

Dennoch möchten Sie vielleicht einen Blick auf den NeuroBayes-Algorithmus von Michael Feindt werfen, der einen Bayes-Ansatz verwendet, um prädiktive Dichten vorherzusagen.

S. Kolassa - Setzen Sie Monica wieder ein
quelle
1
Dies ist möglicherweise ein weiteres nützliches Dokument - ein neuronales Netz, das Verteilungen lernt: google.com/…
Pro Q
@Stephan: Der Link ist vergangen: (
Matthew Drury
@MatthewDrury: Welchen Link meinst du? Alle drei funktionieren gut für mich.
S. Kolassa - Wiedereinsetzung von Monica
Können Sie uns zu einer einfachen Ternsorflow-Demo / einem Beispiel mit NN Predictive Distributions führen?
Martin Thøgersen
@ MartinThøgersen: Entschuldigung, nein, ich benutze Tensorflow nicht ...
S. Kolassa - Monica
5

Ich bin mir nicht sicher, ob Sie ein Konfidenzintervall für eine einzelne Vorhersage berechnen können, aber Sie können in der Tat ein Konfidenzintervall für die Fehlerrate des gesamten Datensatzes berechnen (Sie können verallgemeinern, um die Genauigkeit und alle anderen zu bewertenden Maße zu ermitteln).

Wenn Ihre Fehlerrate ist, während einige Daten S der Größe n klassifiziert werden , ergibt sich ein 95% -Konfidenzintervall für Ihre Fehlerrate aus: e ± 1,96 eSn .

e±1,96e(1-e)n

(Siehe Buch "Machine Learning" von Tom Mitchell, Kapitel 5.)

BEARBEITEN

Ich schätze, ich sollte einen allgemeineren Fall angeben, nämlich : wobei allgemeine Auswahlmöglichkeiten fürzNin der folgenden Tabelle aufgeführt sind:

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
mp85
quelle
1
Dies würde
voraussetzen,
4
Für große Stichprobengrößen (was in ML durchaus üblich ist) ist dies im Allgemeinen sicher anzunehmen. Es war nicht nötig, eine Gegenstimme abzuhalten, sondern nur um Klärung zu bitten, aber na ja.
mp85
4

Vorhersageintervalle (PI) bei nichtparametrischen Regressions- und Klassifizierungsproblemen wie neuronalen Netzen, SVMs, zufälligen Wäldern usw. sind schwierig zu konstruieren. Ich würde gerne andere Meinungen dazu hören.

Nach meinem Kenntnisstand ist Conformal Prediction (CP) jedoch die einzige prinzipielle Methode zur Erstellung kalibrierter PI für die Vorhersage bei nichtparametrischen Regressions- und Klassifizierungsproblemen. Ein Tutorial zu CP finden Sie bei Shfer & Vovk (2008), J. Machine Learning Research 9 , 371-421 [pdf]

utobi
quelle
3

Ich kenne keine Methode, um das genau zu machen.

μσ(xich,yich)-LogN(yich-μ(xich),σ(xich))μ(xich)yichσ(xich)

yich-μ(xich)σ(xich)N(0,1)

et al
quelle
1
σ+
Gibt es konkrete Beispiele für die Verwendung einer NN zur Ausgabe von Parametern einer Verteilung, die über die Protokollwahrscheinlichkeit trainiert wurden?
Miss Palmer
3

Ich habe von keiner Methode gehört, die ein Konfidenzintervall für eine Vorhersage des neuronalen Netzwerks liefert. Trotz eines Mangels an formaler Methodik scheint es möglich zu sein, eine solche zu konstruieren. Ich habe es aufgrund der benötigten Rechenleistung noch nie versucht, und ich mache keine Behauptungen darüber, dass dies funktioniert, aber eine Methode, die für ein winziges neuronales Netz funktionieren könnte (oder mit blitzschneller GPU-Leistung könnte es für Netze mittlerer Größe funktionieren) ) würde darin bestehen, den Trainingssatz erneut zu testen und viele ähnliche Netzwerke (z. B. 10.000 Mal) mit denselben Parametern und Anfangseinstellungen zu erstellen und Konfidenzintervalle auf der Grundlage der Vorhersagen für jedes Ihrer Bootstrap-Netze zu erstellen.

Beispielsweise könnte man in den 10.000 Netzwerken, die wie oben beschrieben trainiert wurden, 2,0 (nach Abrunden der Vorhersagen der neuronalen Netzregression) von 9.000 dieser Zeiten erhalten, sodass Sie 2,0 mit einem 90% -KI vorhersagen würden. Sie können dann für jede vorgenommene Vorhersage ein Array von CIs erstellen und den Modus auswählen, der als primäres CI gemeldet werden soll.

Tony S
quelle
2
Ich bin gespannt, warum dieser Vorschlag abgelehnt wurde, da er im Wesentlichen auf etwas unkonventionelle Weise bootstrapping (die Rundungskomponente des Problems macht es einfach zu überprüfen, wie sicher das neuronale Netz über die Vorhersage ist). Es macht mir eigentlich nichts aus, wenn derjenige, der dies abgelehnt hat, erklären könnte, warum dies keine gültige Lösung für die vorgeschlagene Frage ist. Ich lerne mich selbst und würde mich über Feedback freuen!
Tony S
1
Ich habe nicht abgelehnt, aber nach meinem Verständnis würde die vorgeschlagene Methode Intervalle ausgeben, die die vorhergesagten Werte des Modells erfassen. Dies ist nicht dasselbe wie Intervalle, die die wahren Werte erfassen.
Miss Palmer
3

In Bezug auf die direkte Ausgabe von Vorhersageintervallen gibt es 2011 eine Veröffentlichung mit dem Titel " Umfassender Überblick über neuronale netzbasierte Vorhersageintervalle ".

Sie vergleichen vier Ansätze:

1: Delta-Methode 2: Bayes-Methode 3: Mittlere Varianzschätzung 4: Bootstrap

Dieselben Autoren entwickelten eine Methode zur Schätzung der unteren oberen Schranke für die Konstruktion neuronaler netzbasierter Vorhersageintervalle, die direkt eine untere und obere Schranke aus dem NN ausgibt. Leider funktioniert es nicht mit Backprop, aber die jüngsten Arbeiten haben dies ermöglicht. Hochwertige Vorhersageintervalle für Deep Learning .

Alternativ zur direkten Ausgabe von Vorhersageintervallen modellieren BNNs (Bayesian Neural Networks) die Unsicherheit in den Parametern eines NN und erfassen damit die Unsicherheit am Ausgang. Das ist schwer zu tun, aber populäre Methoden umfassen Lauf MC Aussetzer bei Vorhersagezeit oder ensembling .

Fräulein Palmer
quelle
1
Mit Bayesian Deep Learning ist das eigentlich ganz einfach. Siehe zum Beispiel edwardlib.org/tutorials/bayesian-neural-network
DeltaIV
2

Es gibt tatsächlich Möglichkeiten, dies mit Dropout zu tun. Führen Sie die Evaluierung mit aktiviertem Dropout aus (es ist normalerweise für die Evaluierung deaktiviert, aber beim Training aktiviert) und führen Sie die Evaluierung mehrmals aus.

Die Ergebnisverteilung aus mehreren verschiedenen Läufen kann als Konfidenzintervall verwendet werden.

Siehe den Artikel " Dropout als Bayes'sche Annäherung: Repräsentation der Modellunsicherheit in Deep Learning ". Sehen Sie sich die Youtube-Präsentation an Andrew Rowan - Bayes'sches Deep Learning mit Edward (und einen Trick mit Dropout).

user1141008
quelle
1

Es gibt keine Möglichkeit, bei allen ML-Modellen geht es nicht um das Verständnis von Phänomenen, sondern um Interpolationsmethoden mit der Hoffnung, "dass es funktioniert". Beginnen Sie mit solchen Fragen Vertrauen, Robustheit gegen Lärm gibt es keine Antworten.

Um etwas abzuleiten, verwenden Sie bitte verschiedene angewandte und fundamentale Wissenschaften:

  • Verwenden Sie die Steuerung (und machen Sie eine Vermutung über die Dynamik)

  • Verwenden Sie konvexe Optimierung (mit einigen zusätzlichen Bedingungen für die Funktion)

  • Verwenden Sie mathematische Statistiken (mit vorläufigen Annahmen zu Verteilungen)

  • Signalverarbeitung verwenden (mit einigen Annahmen, dass das Signal bandbegrenzt ist)

Wissenschaftler verwenden einige vorläufige Annahmen (Axiome genannt), um etwas abzuleiten.

Es gibt keine Möglichkeit, ohne eine vorläufige Annahme Vertrauen zu schenken, daher ist dies kein Problem in DL-Methoden, aber es ist ein Problem in jeder Methode, die versucht, ohne eine vorläufige Annahme zu interpolieren - es gibt keine Möglichkeit, ohne Annahme etwas Intelligentes über die Algebra abzuleiten.

NN und verschiedene ML-Methoden sind für das schnelle Prototyping gedacht, um "etwas" zu erstellen, das scheinbar "irgendwie" funktioniert und mit einer Kreuzvalidierung überprüft wurde.

Noch tiefer kann die Regressionsanpassung E [Y | X] oder ihre Schätzung ein absolut falsches zu lösendes Problem sein (vielleicht hat PDF in Punkt Y = E [Y | X] ein Minimum, kein Maximum), und es gibt viele solcher subtilen Probleme Dinge.

Lassen Sie mich auch zwei unlösbare Probleme in AI / ML, die aus bestimmten Gründen vergessen werden können, hinter Schönheitsslogans in Erinnerung rufen:

(1) Es sind Interpolationsmethoden, keine Extrapolation - es ist nicht in der Lage, mit neuen Problemen umzugehen

(2) niemand weiß, wie sich ein Modell auf Daten verhält, die nicht aus derselben Verteilung stammen (Mann in Bananenkostüm zur Fußgängerlokalisierung)

Bruziuz
quelle
Wie wäre es mit der Modellierung des Fehlers aus dem Trainingsdatensatz, um den Fehler für die Inferenz "vorherzusagen"?
Jacko
Nehmen wir sogar an, es ist additiv "predict_for_mean" + "predict_for_error". Sie können sich jedes Schema vorstellen, um Signal und Fehler getrennt vorherzusagen. Aber noch einmal - wenn wir "nur interpolieren", können wir nicht sicher etwas sagen. Wir sagen die Oberflächentemperatur voraus. Ja, Sie können sagen, dass meine Vorhersage "20" und die Vorhersage für Fehler "5" ist. Ich denke also, dass die reale Antwort in [20-5, 20 + 5] liegt, aber um wirklich zu verstehen, was es bedeutet, müssen wir die realen Phänomene und das mathematische Modell verstehen. Und bei ML geht es nicht um beides. Andere Bereiche gehen von vorläufigen Annahmen aus.
Bruziuz