Dies ist eine einfache Anleitung, wie man mithilfe von Reinforcement Learning einer KI beibringt, das Snake-Spiel zu spielen. Der Artikel zeigt Schritt für Schritt, wie man eine benutzerdefinierte Spielumgebung einrichtet und die in Python standardisierte Stable-Baselines3-Algorithmusbibliothek verwendet, um die KI für das Spielen von Snake zu trainieren.
In diesem Projekt verwenden wir Stable-Baselines3, eine standardisierte Bibliothek, die eine benutzerfreundliche PyTorch-basierte Implementierung von Reinforcement Learning (RL)-Algorithmen ermöglicht.
Zunächst richten Sie die Umgebung ein. Es gibt viele integrierte Spielumgebungen in der Stable-Baselines-Bibliothek. Hier verwenden wir eine modifizierte Version des klassischen Snake, mit zusätzlichen kreuz und quer verlaufenden Wänden in der Mitte.
Ein besserer Belohnungsplan wäre, nur Schritte zu belohnen, die dem Essen näher kommen. Hier ist Vorsicht geboten, denn die Schlange kann immer noch nur lernen, im Kreis zu laufen, sich bei der Annäherung an Futter eine Belohnung zu holen, sich dann umzudrehen und zurückzukommen. Um dies zu vermeiden, müssen wir auch eine gleichwertige Strafe für den Verzicht auf Nahrungsmittel verhängen, das heißt, wir müssen sicherstellen, dass der Nettogewinn im geschlossenen Kreislauf Null ist. Wir müssen auch eine Strafe für das Auftreffen auf Wände einführen, da sich eine Schlange in manchen Fällen dafür entscheidet, gegen eine Wand zu schlagen, um näher an ihr Futter heranzukommen.
Die meisten Algorithmen für maschinelles Lernen sind recht komplex und schwer zu implementieren. Glücklicherweise implementiert Stable-Baselines3 bereits mehrere hochmoderne Algorithmen, die uns zur Verfügung stehen. Im Beispiel verwenden wir Proximal Policy Optimization (PPO). Wir müssen zwar nicht im Detail wissen, wie der Algorithmus funktioniert (sehen Sie sich dieses Erklärvideo an, wenn Sie interessiert sind), aber wir müssen ein grundlegendes Verständnis davon haben, was seine Hyperparameter sind und was sie tun. Glücklicherweise gibt es bei PPO nur wenige davon und wir werden Folgendes verwenden:
learning_rate: Legt fest, wie groß die Schritte für Richtlinienaktualisierungen sind, genau wie bei anderen maschinellen Lernszenarien. Wenn Sie den Wert zu hoch einstellen, kann der Algorithmus daran gehindert werden, die richtige Lösung zu finden, oder ihn sogar in eine Richtung drängen, von der er sich nie wieder erholen kann. Wenn Sie den Wert zu niedrig einstellen, dauert das Training länger. Ein gängiger Trick besteht darin, eine Zeitplanerfunktion zu verwenden, um es während des Trainings anzupassen.
Gamma: Rabattfaktor für zukünftige Belohnungen, zwischen 0 (nur unmittelbare Belohnungen sind wichtig) und 1 (zukünftige Belohnungen haben den gleichen Wert wie unmittelbare Belohnungen). Um den Trainingseffekt aufrechtzuerhalten, ist es am besten, ihn über 0,9 zu halten.
clip_range1+-clip_range: Eine wichtige Funktion von PPO, die dafür sorgt, dass sich das Modell während des Trainings nicht wesentlich ändert. Die Reduzierung hilft bei der Feinabstimmung des Modells in späteren Trainingsphasen.
ent_coef: Je höher sein Wert, desto mehr wird der Algorithmus dazu ermutigt, verschiedene nicht optimale Aktionen zu untersuchen, was dem Schema helfen kann, lokale Belohnungsmaxima zu umgehen.
Im Allgemeinen beginnen Sie einfach mit den Standard-Hyperparametern.
Die nächsten Schritte bestehen darin, einige vorgegebene Schritte zu trainieren, dann selbst zu sehen, wie der Algorithmus funktioniert, und dann mit den neuen möglichen Parametern, die die beste Leistung erbringen, von vorne zu beginnen. Hier zeichnen wir die Belohnungen für verschiedene Trainingszeiten auf.
Nach genügend Schritten konvergiert der Schlangentrainingsalgorithmus zu einem bestimmten Belohnungswert. Sie können das Training abschließen oder versuchen, die Parameter zu verfeinern und mit dem Training fortzufahren.
Die zum Erreichen der maximal möglichen Belohnung erforderlichen Trainingsschritte hängen stark vom Problem, dem Belohnungsschema und den Hyperparametern ab. Daher wird empfohlen, vor dem Training des Algorithmus eine Optimierung durchzuführen. Am Ende des Beispiels zum Trainieren der KI für das Schlangenspiel stellten wir fest, dass die KI in der Lage war, Nahrung im Labyrinth zu finden und eine Kollision mit dem Schwanz zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie man mit Python die KI trainiert, das Snake-Spiel zu spielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!