3 Stimmen

Verstärkungslernen und POMDP

  • Ich versuche, Multi-Layer-NN zu verwenden, um die Wahrscheinlichkeitsfunktion in einem partiell beobachtbaren Markov-Prozess zu implementieren.
  • Ich dachte, die Eingaben für das NN wären: aktueller Zustand, ausgewählte Aktion, Ergebniszustand; Die Ausgabe ist eine Wahrscheinlichkeit in [0,1] (Wahrscheinlichkeit, dass die Durchführung der ausgewählten Aktion im aktuellen Zustand zum Ergebniszustand führt)
  • Beim Training habe ich das NN mit den zuvor genannten Eingaben gefüttert und ihm für jeden bereits aufgetretenen Fall die Ausgabe=1,0 beigebracht.

Das Problem :
Für fast alle Testfälle liegt die Ausgabewahrscheinlichkeit bei 0,95. Kein Ergebnis lag unter 0,9! Sogar für fast unmögliche Ergebnisse gab es diese hohe Wahrscheinlichkeit.

PS: Ich denke, das liegt daran, dass ich ihm nur geschehene Fälle beigebracht habe, aber keine nicht geschehenen. Aber ich kann ihm nicht bei jedem Schritt in der Episode die Ausgabe=0.0 für jede nicht eingetretene Aktion beibringen!

Gibt es Vorschläge, wie dieses Problem gelöst werden kann? Oder vielleicht eine andere Möglichkeit, NN zu verwenden oder prob Funktion zu implementieren?

感謝

2voto

bayer Punkte 6687

Das Problem ist, dass die Summe aller möglichen Folgezustände gleich 1 sein muss. Wenn Sie Ihr Netzwerk so konstruieren, ist das nicht garantiert. Mir fallen zwei mögliche Alternativen ein, bei denen ich von diskreten Zuständen ausgehe.

  1. Wenn Sie eine Vorhersage machen, lassen Sie das Netz für jeden möglichen Folgezustand laufen. Anschließend normalisieren Sie, indem Sie durch die Summe aller Wahrscheinlichkeiten dividieren.
  2. Verwenden Sie einen Ausgang pro möglichem Folgezustand. Sie können dann eine Softmax-Schicht (wie bei der Klassifizierung) verwenden und die Werte, die dann von 0 bis 1 reichen und sich zu 1 summieren, als Wahrscheinlichkeiten interpretieren.

Aus mathematischer Sicht sind diese beiden Dinge in etwa gleichwertig.

Bei kontinuierlichen Variablen müssen Sie Verteilungen annehmen (z. B. eine multivariate Gaußverteilung) und die Parameter dieser Verteilung (z. B. Mittelwert und Kovarianzabweichung) als Ausgaben verwenden.

0voto

shuttle87 Punkte 14716

Bei der Anpassung des NN möchten Sie vielleicht einen größeren Bereich von Daten anpassen. Gibt es beim Training irgendwelche Daten, die Sie mit einer Wahrscheinlichkeit von annähernd 0 angepasst bekommen möchten? Wenn dies nicht der Fall ist, vermute ich, dass Sie schlechte Ergebnisse erzielen könnten. Als ersten Schritt würde ich versuchen, im Trainingsdatensatz einige andere Dinge auszuwählen.

Und wie trainieren Sie das NN? Haben Sie es mit anderen Methoden versucht? Wie sieht es mit den Aktivierungsfunktionen aus? Vielleicht experimentieren Sie mit verschiedenen Funktionen.

Bei neuronalen Netzen denke ich, dass einige Versuche bei der Auswahl des Modells hilfreich sein werden. (Tut mir leid, wenn das alles nicht spezifisch genug ist.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X