PPO-Algorithmus mit Aktionsmaske Aktionsmaske (mit Code-Implementierung)

Die vom neuronalen Netzwerk des Akteurs ausgegebene Aktionswahrscheinlichkeit stellt die Wahrscheinlichkeit aller Aktionen dar. Bei der Anwendung des PPO-Algorithmus zur Lösung praktischer Probleme stoßen wir häufig auf Situationen, in denen die Aktion eingeschränkt ist, das heißt, einige Aktionen sind sinnvoll und die Agentenaktion wird select_action abgetastet Derzeit können wir nur aus diesen angemessenen Aktionssammlungen Stichproben ziehen.

Es gibt zwei gängige Lösungen: Die eine besteht darin, illegale Handlungen mit Strafen zu belohnen, die andere darin, Aktionsmasken zu maskieren. Die Grundidee der Aktionsmaske besteht darin, der vom neuronalen Netzwerk des Akteurs ausgegebenen Aktionswahrscheinlichkeit eine Maskenebene hinzuzufügen. Eine Maske von 1 für legale Aktionen bedeutet, dass die entsprechende Aktionswahrscheinlichkeit ausgegeben wird, und eine Maske von 0 für illegale Aktionen bedeutet nein Geben Sie die entsprechende Aktionswahrscheinlichkeit aus.

Im Folgenden werden schrittweise das Prinzip der Aktionsmaske und seine Implementierung im PPO-Algorithmus vorgestellt und in Form von Abfangen wichtiger Teile einiger relevanter Referenzmaterialien vorgestellt ~

Im Allgemeinen ist die Aktionsmaskenmethode viel effektiver als die Methode zum Hinzufügen von Strafen zu illegalen Aktionen während des Trainings (Referenz: DRL-Algorithmus-Implementierungshinweise – Zhihu https://zhuanlan.zhihu.com/p/412520739).
Fügen Sie hier eine Bildbeschreibung ein

Aktionsmaske Aktionsmaske Prinziperklärung

Wie sollten ungültige Aktionen beim Reinforcement Learning maskiert werden? – Zhihu https://zhuanlan.zhihu.com/p/538953546
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Wie der PPO-Algorithmus die Aktionsmaske verwendet

Am Beispiel des PPO-Algorithmus für diskrete Aktionen ist die Ausgabe des Akteurnetzwerks immer noch die Aktionswahrscheinlichkeit aller Aktionen. Es gibt zwei Stellen, an denen die Aktionsmaske hinzugefügt werden muss: Eine ist die Aktionsauswahl bei der Auswahl der Aktionsstichprobe und die andere Das andere ist das Training des Akteurnetzwerks. Was man oft leicht vergisst, ist, dass man beim Training des Akteurnetzwerks zweitens auch die Aktionsmaske beim Sampling mitbringen muss (Referenz: Was bedeutet die Aktionsmaske von Tencent Artificial Intelligence Juewu? - Zhihu https://www.zhihu.com /question/446176024#)
Fügen Sie hier eine Bildbeschreibung ein

Implementierung des Aktionsmasken-Aktionsmaskencodes

Als ich die Aktionsmaske implementierte, habe ich zunächst so vorgegangen: Während des Samplings wurde die entsprechende Position der illegalen Aktion in der Logits-Ebene in eine negative Zahl mit einem großen Absolutwert geändert und nach dem Übergeben der Softmax-Funktion die Wahrscheinlichkeit von Die illegale Aktion wurde 0 (Referenz: Wie Softmax Maskenoperationen durchführt – Zhihu https://zhuanlan.zhihu.com/p/543736799). Es wird ein Fehler auftreten: Das neuronale Netzwerk gibt nan aus. Im Allgemeinen gibt das neuronale Netzwerk nan aus, wahrscheinlich weil der Divisor während der Gradientenaktualisierung auf 0 und die Protokollfunktion auf 0 trifft.

Die Lösung besteht nicht darin, die manuelle Softmax-Funktion zu verwenden, sondern die integrierte Funktionsbibliothek von Torch.distributions.Categorical zu verwenden (Referenz: PPO Practice Guide – Zhihu https://zhuanlan.zhihu.com/p/627389144)

Verweise

Besonderer Dank geht an die oben genannten Referenz-Blogger für ihr aufrichtiges Teilen! ! !

Supongo que te gusta

Origin blog.csdn.net/ningmengzhihe/article/details/131515927
Recomendado
Clasificación