OpenAI hat [angekündigt], einen Algorithmus namens PPO (Proximal Policy Optimization) als Standardalgorithmus der Organisation zu verwenden (https://blog.openai.com/openai-baselines-ppo/). Der Code wurde ebenfalls veröffentlicht, also werde ich es versuchen. Es scheint, dass es im erweiterten Lernpaket baselines enthalten ist.
Ich habe es mit OSX 10.11.6, Python 3.5.1, TensorFlow 1.2.1 versucht.
Das Installationsverfahren wird später beschrieben und wir werden es zuerst versuchen. Das Beispiel ist run_atari.py von hier.
python run_atari.py
Ich habe angefangen, etwas auszuführen, aber es scheint, dass es in der Atari-Umgebung mit meinem MacBook Pro einige Zeit dauern wird, daher ist es etwas Leichtes wie üblich Invertiertes Pendel Lasst uns. Verwenden Sie Pendulmn-v0 von OpenAI Gym. Man könnte Ihnen sagen, wie sehr Sie den umgekehrten Pendelschwung mögen, aber es ist einfach, aber im Sinne der Leistung genau richtig. .. ..
Das ist in Ordnung, aber es gibt keinen Code, der aus Anwendersicht am meisten Spaß macht, z. B. das Speichern der Lernergebnisse und das Experimentieren mit geschulten Agenten. Nun, lass uns schreiben. .. .. Da die Handhabung der Koeffizienten problematisch ist, habe ich eine grobe Methode zum Speichern und Wiederherstellen der gesamten TensorFlow-Sitzung angewendet. Der Code wird hier angegeben [https://github.com/ashitani/PPO_pendulmn].
python run_pendulmn.py train
python run_pendulmn.py replay
Lerne und spiele mit dem trainierten Modell.
Der Lernprozess ist in monitor.json geschrieben. Zeichnen wir also den Übergang der Belohnung. Die horizontale Achse ist die Anzahl der Iterationen und die vertikale Achse ist die Belohnung.
python plot_log.py
Spuckt png mit aus.
Humutty. Wie üblich ist das Verhalten nach Erreichen des höchsten Rekords nicht stabil. Nun, das stärkende Lernen, das auf instabile Systeme angewendet wird, ist bis zu diesem Punkt, aber es wäre schön, Agenten mit höheren Belohnungsrankings hinterlassen zu können.
Lassen Sie uns etwas mit Hyperparametern machen, um zu sehen, ob wir es noch ein bisschen besser machen können. Das Argument von learn () enthält einen Zeitplan, und dieses Mal habe ich versucht, die Lernrate mit Zeitplan = "linear" linear zu dämpfen. Wenn es jedoch linear ist, hat es für eine Weile keine Beruhigung. Daher wird die benutzerdefinierte Dämpfungsrate wie folgt eingestellt. Ich werde eine Weile warten, bis es extrem klein wird. Dieser Bereich befindet sich in einer Datei namens pposgd_simple.py, daher habe ich ihn geändert.
cur_lrmult = max(1.0 - float(timesteps_so_far) / (max_timesteps/2), 0)
if cur_lrmult<1e-5:
cur_lrmult = 1e-5
Wie wäre es jetzt?
Ja. Es ist ein bisschen besser. Ich frage mich, ob ich es länger machen muss. Außerdem scheint Pendulmn-v0 einen zufälligen Anfangszustand zu haben, und ich denke, das wirkt sich auch darauf aus.
Lassen Sie uns die Lernergebnisse wiederholen.
Es ist ein gutes Gefühl. Im Gegensatz zu meinem vorherigen Eintrag gibt dieser Agent manchmal eine kontinuierliche Menge aus, insbesondere nach dem Stillstand.
Ich kann mich nur für die Codefreigabe bedanken, da ich das PPO-Papier ausführen konnte, ohne eine einzige Zeile zu lesen. Ich denke jedoch, es wäre besser, es ein wenig zugänglicher zu machen, wenn es auf den Standardalgorithmus angehoben werden soll. Nun, ich frage mich von jetzt an.
Ich denke, dasselbe OpenAI-Fitnessstudio ist eine großartige Aufgabe, um die Benutzeroberfläche auf der Umweltseite zu vereinheitlichen. Ist es nicht möglich, dass die Agentenseite auf die gleiche Weise eine einheitliche Schnittstelle erstellt? Auf einen Blick sind sogar DQN und PPO von Baselines nicht einheitlich (ich verstehe, dass die Verallgemeinerung schwierig ist).
Ich habe noch keinen Benchmark mit DQN durchgeführt, aber ich denke, es wird einen Unterschied machen, wenn ich es nicht mit einem schwierigeren Problem mache.
Das Folgende ist übrigens das Installationsverfahren ab heute (22. Juli 2017). Schließlich wird ein Pip passieren. ..
Zunächst benötigen Sie TensorFlow 1.0.0 oder höher. Informationen zur Installation von TensorFlow finden Sie unter Dokumentation.
pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py3-none-any.whl
Installieren Sie dann die neueste Version von Baseline von Git. Es scheint, dass Sie mit Pip gehen können, aber ab heute scheint es eine Inkonsistenz zu geben.
git clone https://github.com/openai/baselines.git
Fügen Sie \ _ \ _ init \ _ \ _. Py mit dem folgenden Inhalt zu baselines / baselines / pposgd / hinzu.
from baselines.pposgd import *
Es ist eine Installation.
cd baselines
python setup.py install
Installieren Sie alle anderen Abhängigen.
brew install openmpi
pip install mpi4py
pip install atari_py
Zumindest das Beispiel run_atari.py ist bestanden.
Recommended Posts