1

Ich habe kürzlich einen RL-Kurs absolviert und schreibe einen Q-Learning-Controller für eine Energieverwaltungsanwendung mit kontinuierlichen Zuständen und diskreten Aktionen. Ich verwende ein neuronales Netzwerk (Q-Netzwerk) zur Approximation der Aktionswerte und Auswahl des maximalen Aktionswertes. Wie jedes Kontrollsystem habe ich bestimmte Beschränkungen oder Grenzen über Variablen, die vom Agenten nicht verletzt werden können. Sagen wir, wenn die Aktionen meines Controllers (Agenten) eine Batterie entladen oder laden sollen, kann die resultierende Energie nicht weniger als 0 oder mehr als die maximale Kapazität betragen.Hinzufügen von Einschränkungen in Q-Learning und Zuweisen von Belohnungen, wenn Einschränkungen verletzt werden

Ich möchte verstehen, wie solche Einschränkungen in der Aktion Auswahl oder Wert Approximation Routine hinzufügen? Zwei Ansätze kommen in den Sinn

(1) Angenommen, ich führe eine Episode für T-Schritte. Bei jedem Schritt gebe ich meinen aktuellen Status in das Q-Netzwerk ein und wähle den maximalen Aktionswert. Wenn ich bei dieser Aktion meine Beschränkungen verletze, kann ich eine große negative Belohnung vergeben, wenn ich die zugehörige Belohnung nicht zuordnen kann. Letztendlich werden alle Aktionen vermieden, die große negative Belohnungen erhalten (entsprechend einem unerwünschten Verhalten), und somit wird der Agent innerhalb der Modellbeschränkungen operieren. Wenn ich jedoch von einem Optimierungsstandpunkt aus denke, sollten solche Maßnahmen NIEMALS ergriffen werden, da sie nicht in die erlaubte Region fallen. Im Idealfall sollte ich die Iterationen genau dort stoppen, da alle sequenziellen Aktionen inakzeptabel sind. Dies wird zu einer schwerwiegenden Datenverschwendung führen.

(2) Zweitens führe ich meinen aktuellen Status dem Q-Netzwerk zu, wähle die Aktion aus, die dem maximalen Q-Wert entspricht, und prüfe die Einschränkung. Wenn verletzt, gehe ich die Handlung entsprechend dem zweithöchsten Q-Wert und wiederhole, bis meine Einschränkung (en) erfüllt ist. Aber wird dies jemals zu Optimalität führen?

Ich vermute, dass dies ein wiederkehrendes Problem beim Training autonomer Kontrollsysteme sein könnte, die Einschränkungen über mehrere Variablen beinhalten. Wir freuen uns sehr auf Ihr Feedback!

Antwort

1

Ich würde sagen, dass Option (1) ist ratsam und was ist in der Regel getan. Wenn Sie wirklich keine Aktion ausführen möchten, tun Sie es einfach nicht und stoppen Sie die Episode (und geben Sie eine große negative Belohnung ab). In Bezug auf Option (2) glaube ich nicht, dass dies zu Optimalität führen wird.

Q-Learning ist auch ein Off-Policy-Algorithmus. Das bedeutet, dass Sie Ihre Zielrichtlinie trainieren können, indem Sie Beispiele verwenden, die von anderen Sampler-Richtlinien gesammelt wurden, die "sicherer" sein und gefährliche Aktionen vermeiden können. Dies könnte jedoch aufgrund der reduzierten Exploration länger dauern.

Das ist sowieso ein sehr häufiges Problem in RL. Ich schlage vor, dass Sie sich bei Google eine "kostensensible Erkundung" ansehen. Dort finden Sie einige interessante Studien zu Ihrem Problem.

ANTWORTEN ZU KOMMENTARE

ich nicht ganz es. Haben Sie bereits einen Datensatz von Tupel (s,a,r,s')? (gesammelt von was auch immer Agent/Politik). Wenn dies der Fall ist, stoppe die Episode nicht und lerne einfach (mit einem Batch-Algorithmus, wie einer angepassten Q-Iteration). Ich habe vorgeschlagen, dass Sie aufhören sollten, wenn Sie Daten online sammeln müssen: Sie sammeln eine Aktion, aktualisieren die Richtlinie durch die Q-Learning-Update-Regel und setzen die Episode fort. Wenn das der Fall ist und Sicherheit dein Hauptanliegen ist, höre einfach auf, wenn etwas nicht erlaubt ist. Das einzige Problem, das ich sehe mit "es wird viel zu lernen brauchen" ergibt sich, wenn Ihr wahres Ziel "weit in der Zeit" ist (zB geben Sie nach einiger Zeit eine positive Belohnung) und es wird schwer für die Agent, um es zu erleben.Das ist jedoch nicht zu vermeiden: Es gibt immer einen Kompromiss zwischen "Sicherheit/Lernzeit" und "Erkundung/Ausbeutung".

+0

Dank @Simon. Was ich nicht verstehen kann, ist, dass wenn ich die Episode beende, wenn der Agent eine Aktion ausführt, die dazu führt, dass eine der Einschränkungen verletzt wird, ich die entsprechenden Daten verschwenden muss. Angenommen, ich lerne über 24 Stunden und mein Agent geht bei jedem Zeitschritt von einer Stunde aus. Mein Zustand ist definiert als, S = {v1, v2, v3}. Ich habe historische Zeitreihendaten für v1 und v2 für 365 Tage. Bei t = 1 ordne ich V3 jeden Tag einen festen Wert zu und lasse den Agenten untersuchen. Jetzt nimmt mein Agent eine ungültige Aktion bei t = 2, weist einen großen negativen R zu und stoppt das Training. Habe ich nicht Trainingsdaten für diesen Tag verschwendet? –

+0

Ich schätze, da RL-Agenten viel Zeit zum Trainieren brauchen, muss ich ihnen große Trainingsdaten geben. Meine Frage ist, kann ich diese Daten nur für 365 Tage kopieren und auf 2 Jahre, 3 Jahre usw. erweitern? Wie wird sich das auf die Leistung meines Agenten auswirken? Wie werden solche Probleme in RL angegangen? –

+0

@wannabe_nerd Ich habe meine Antwort bearbeitet (nicht genug Zeichen in einem Kommentar erlaubt). Ich habe auch vergessen zu erwähnen, dass Q-Learning offline ist, also können Sie Daten verwenden, die von einer anderen (sichereren) Richtlinie gesammelt wurden. – Simon