OpenAI a [annoncé] qu'il utilisera un algorithme appelé PPO (Proximal Policy Optimization) comme algorithme standard (https://blog.openai.com/openai-baselines-ppo/). Le code a également été publié, je vais donc l'essayer. Il semble qu'il soit inclus dans le package d'apprentissage amélioré appelé baselines.
Je l'ai essayé avec OSX 10.11.6, Python 3.5.1, TensorFlow 1.2.1.
La procédure d'installation sera décrite plus loin, et nous l'essayerons d'abord. L'exemple est run_atari.py depuis ici.
python run_atari.py
J'ai commencé à exécuter quelque chose, mais il semble que cela prendra du temps dans l'environnement atari avec mon MacBook Pro, donc c'est quelque chose de léger comme d'habitude Pendule inversé Allons. Utilisez Pendulmn-v0 de la salle de sport OpenAI. On vous dira peut-être à quel point vous aimez le balancement inversé du pendule, mais c'est facile mais c'est juste dans le sens de l'accomplissement. .. ..
C'est bien, mais du point de vue de l'utilisateur, il n'y a pas de code qui soit le plus agréable, comme la sauvegarde des résultats d'apprentissage et l'expérimentation avec des agents formés. Eh bien écrivons. .. .. Étant donné que la gestion des coefficients est gênante, je l'ai fait avec une méthode approximative d'enregistrement et de restauration de toute la session TensorFlow. Le code est donné ici [https://github.com/ashitani/PPO_pendulmn).
python run_pendulmn.py train
python run_pendulmn.py replay
Apprenez et jouez avec le modèle formé respectivement.
Le processus d'apprentissage est écrit sur monitor.json, donc traçons la transition de la récompense. L'axe horizontal est le nombre d'itérations et l'axe vertical est la récompense.
python plot_log.py
Crache png avec.
Humutty. Comme d'habitude, le comportement après avoir atteint le record le plus élevé n'est pas stable. Eh bien, l'apprentissage de renforcement appliqué aux systèmes instables est à ce point, mais ce serait bien de pouvoir laisser des agents avec des classements de récompense plus élevés.
Faisons quelque chose avec des hyper paramètres pour voir si nous pouvons l'améliorer encore un peu. Il y a un planning dans l'argument de learn (), et cette fois j'ai essayé d'atténuer linéairement le taux d'apprentissage avec schedule = "linear", mais s'il est linéaire, cela n'a pas pour effet de se calmer pendant un certain temps. Par conséquent, le taux d'atténuation personnalisé est défini comme suit. J'attendrai un moment après qu'il soit devenu extrêmement petit. Cette zone se fait dans un fichier appelé pposgd_simple.py, je l'ai donc modifié.
cur_lrmult = max(1.0 - float(timesteps_so_far) / (max_timesteps/2), 0)
if cur_lrmult<1e-5:
cur_lrmult = 1e-5
Et maintenant?
Oui. C'est un peu mieux. Je me demande si je dois le faire plus longtemps. De plus, Pendulmn-v0 semble avoir un état initial aléatoire, et je pense que cela l'affecte également.
Rejouons les résultats d'apprentissage.
C'est un sentiment agréable. Contrairement à mon [entrée] précédente (http://qiita.com/ashitani/items/bb393e24c20e83e54577), cet agent génère parfois un montant continu, surtout après la mise au repos.
Je ne peux que vous remercier pour la publication du code car j'ai pu exécuter le papier PPO sans lire une seule ligne. Cependant, je pense qu'il serait préférable de le rendre un peu plus accessible s'il doit être élevé à l'algorithme standard. Eh bien, je me demande à partir de maintenant.
Je pense que le même gymnase OpenAI est un excellent travail en termes d'unification de l'interface du côté de l'environnement. N'est-il pas possible pour le côté agent de créer une interface unifiée de la même manière? En un coup d'œil, même le DQN et le PPO des lignes de base ne sont pas unifiés (enfin, je comprends que la généralisation est difficile).
Je n'ai pas effectué de benchmark avec DQN, mais je pense que cela fera une différence si je ne le fais pas avec un problème plus difficile.
À propos, voici la procédure d'installation à partir d'aujourd'hui (22 juillet 2017). Finalement, un pip passera. ..
Tout d'abord, vous avez besoin de TensorFlow 1.0.0 ou supérieur. Pour installer TensorFlow, consultez la Documentation.
pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py3-none-any.whl
Ensuite, installez la dernière version de baseline de git. Il semble que vous puissiez utiliser pip, mais à partir d'aujourd'hui, il semble y avoir une incohérence.
git clone https://github.com/openai/baselines.git
Ajoutez \ _ \ _ init \ _ \ _. Py avec le contenu suivant à baselines / baselines / pposgd /.
from baselines.pposgd import *
C'est une installation.
cd baselines
python setup.py install
Installez toute autre personne à charge.
brew install openmpi
pip install mpi4py
pip install atari_py
Au moins, l'exemple run_atari.py a réussi.
Recommended Posts