expérience « Code + tutoriel » reproduire le « modèle du monde », manière sans supervision train rapide

 Ji-won nouvelle compilation

Source: blog.otoro.net

Auteur: David Ha compilation: Xiao Qin

[New Ji-won EXAMEN « Modèle du monde » (Modèles du monde) est un modèle de réseau de neurones construit pour l'environnement d'apprentissage amélioré chercheur Google cerveau David Ha et AI Lab suisse, chef de coparrainée Jürgen Schmidhuber. « Modèle du monde » a été publié sur le papier a déclenché une discussion animée. Récemment, David Ha, l'un des auteurs a publié une méthode pour reproduire le modèle expérimental du monde, il apporte étape interprétation.

« Modèle du monde » (Modèles Monde) Un modèle de réseau de neurones est conçu pour renforcer l'environnement d'apprentissage scientifique de recherche Google cerveau David Ha et AI Lab suisse, chef de Jürgen Schmidhuber co-parrainé. modèle mondial peut Unsupervised Manière rapide de la formation, de sorte que l'intelligence artificielle de prédire l'état futur de l'environnement extérieur dans le « rêve », une augmentation substantielle de l'efficacité des tâches. Le document a été publié a déclenché une discussion animée.

Récemment, David Ha, l'un des auteurs a publié une méthode pour reproduire le modèle expérimental du monde, il apporte étape interprétation. Modèle de référence tensorflow sur GitHub: https: //github.com/hardmaru/WorldModelsExperiments

D'autres personnes ont réalisé le modèle mondial indépendant. Keras réaliser une partie de reproduction expérience CarRacing-v0. PyTorch a également un projet pour essayer de mettre en uvre ce modèle dans OpenAI Retro environnements Sonic.

modèle mondial, nous avons été pleinement discuté dans le document interactif original, qui ne sera pas une interprétation détaillée des documents.

Modèles thèse mondiale: https: //worldmodels.github.io/

Paramètres du logiciel

Je l'ai testé le code avec les paramètres suivants:

  • Ubuntu 16.04
  • Python 3.5.4
  • tensorflow 1.8.0
  • NumPy 1.13.3
  • Niveaux VizDoom Gym
  • OpenAI Gym 0.9.4 (Gym 1.0+ pauses VizDoom, peut être appliqué à la tâche CarRacing)
  • cma 2.2.0
  • mpi4py 2, s'il vous plaît voir notre estool alloué pour ce projet
  • Jupyter ordinateur portable, pour les tests de modèle et le suivi des progrès

J'utilise le raisonnement OS X, mais en utilisant le modèle de formation Google Cloud VM. I V et le modèle M formé sur l'exemple de GPU P100, formé en utilisant le contrôleur CMA-ES 64 ayant une CPU-noyaux (n1-standard-64) dans l'instance de l'unité centrale C. Voici un aperçu dont une partie des besoins de formation des GPU, qui a utilisé que partiellement CPU, et essayer de réduire le coût de l'exécution de l'expérience.

Exécuter modèle pré-formation

Vous avez seulement besoin de repo cloné dans un ordinateur de bureau en cours d'exécution en mode CPU, en utilisant repo modèle pré-formé fourni à reproduire les résultats. Il ne nécessite pas Clould VM ou GPU.

CarRacing-v0

Si vous utilisez un MacBook Pro, je vous recommande la résolution de « plus d'espace », car l'environnement CarRacing-v0 présente un écran haute résolution et ne respecte pas les paramètres par défaut.

Sur la ligne de commande, entrez carracing sous-répertoire. Essayez de jouer leur propre jeu, python en cours d'exécution dans le terminal env.py. Vous pouvez utiliser les quatre touches fléchées de votre clavier pour contrôler la voiture. Press (supérieure et inférieure) d'accélération / freinage tournant (gauche / droite).

Dans ce contexte, chaque terme va générer une nouvelle piste aléatoire . Bien que si je conduis très attentivement, vous pouvez facilement obtenir un score supérieur à 800, mais 900 points ou plus est difficile. Stanford Certains étudiants éprouvent des difficultés à toujours plus de 900 points. Cet environnement est nécessaire pour résoudre les 900 points en moyenne obtenus dans 100 chemin aléatoire consécutifs.

Pour exécuter un modèle de pré-formation et agent de vue en mode de rendu complet, exécutez:

python model.py rendu journal / carracing.cma.16.64.best.json

modèle de pré-formation fonctionne à 100 fois sans le mode de rendu (sans le mode de rendu, en raison de la nécessité d'utiliser l'environnement OpenGL à l'information de pixel d'extrait comme une valeur d'observation, et donc rendra encore une des choses plus simples à l'écran pour cela):

python model.py norender log / carracing.cma.16.64.best.json

Cette commande sortie un score de chaque test 100 après le test 100, il est également moyenne et l'écart-type de sortie. Le score moyen devrait être de 900 ou plus.

Pré-formé pour faire fonctionner le contrôleur, et visualisées en utilisant V M généré dans l'environnement d'utilisation:

python dream_model.py log / carracing.cma.16.64.best.json

DoomTakeCover-v0

Dans le répertoire de doomrnn, exécutez python doomrnn.py l'environnement généré par la M

Vous pouvez appuyer sur la gauche ou le droit de jouer le prochain match dans cet environnement. Pour visualiser le modèle pré-formation en cours d'exécution dans un environnement réel, exécutez:

python model.py doomreal rendre log / doomrnn.cma.16.64.best.json

S'il vous plaît noter que, en plus de la trame reconstruite et le cadre réel du jeu, la volonté de modifier l'environnement à des cadres d'affichage de 64 x 64 px recadrée. Pour exécuter le modèle dans un environnement réel et calculer un score moyen de 100, exécutez:

python model.py doomreal norender log / doomrnn.cma.16.64.best.json

Vous devriez obtenir le score moyen plus de 900 pas de temps de 100 fois dans les épisodes aléatoires. Si vous souhaitez obtenir un agent d'information statistique jouant le jeu dans l'environnement de construction, vous pouvez utiliser doomrnn au lieu de doomreal, les ci-dessus deux lignes de code fonctionne toujours. Si vous voulez changer l'environnement de température générée, modifier la température constante doomrnn.py le réglage actuel est de 1,25.

Pour lire le modèle de visualisation de jeu dans l'environnement de compilation, exécutez:

python model.py doomrnn rendre log / doomrnn.cma.16.64.best.json

Dès le début de la formation

DoomTakeCover-v0

Nous discutons d'abord l'expérience VizDoom, parce que cette expérience à partir de zéro pour atteindre des besoins moins informatiques. Étant donné que vous pouvez mettre à jour le modèle de prise en pension, donc je recommande cette fourche repo et clone / mettre à jour votre fourche. Je recommande de lancer une session tmux de commande afin que les emplois continueront à fonctionner dans la connexion ssh en arrière-plan est fermé.

Création d'une première instance de ~ 200GB core CPU et la capacité de stockage de 220 Go de mémoire vive 64 a et repo cloné dans cet exemple. Dans doomrnn répertoire, il y a un script appelé extract.py, il va extraire 200 épisodes de politique aléatoire et enregistrez le fichier comme .npz dans doomrnn / record. le script bash nommé extract.bash courra extract.py 64 fois, donc en exécutant le extract.bash bash, nous allons générer 12.800 fichier .npz doomrnn / record. Certains cas peuvent échouer au hasard, donc nous avons eu quelques données supplémentaires, bien qu'à la fin, nous avons utilisé seulement pour former 10000 épisodes V et M. Ce processus prend plusieurs heures (probablement pas 5 heures).

Après avoir créé un enregistrement dans le fichier de sous-répertoire, j'ai créé un exemple GPU P100 ~ 200 Go d'espace de stockage et ayant 220GB de RAM, et dans lequel le repo cloné. J'utilise la commande ssh copie scp pour copier dans le même enregistrement sous-répertoire instance de GPU les instances de CPU de tous les fichiers. Si scp ne fonctionne pas, vous pouvez utiliser l'outil gcloud. Si les deux instances dans la même zone, ce qui devrait être très rapide, moins d'une minute. Après avoir copié. Fichier NPZ à la machine GPU, désactivez l'instance de CPU.

GPU sur la machine, exécuter des commandes pour former bash gpu_jobs.bash de VAE, ensemble de données pré-enregistrées, et la formation MDN-RNN.

Cette gpu_jobs.bash exécuter successivement les trois éléments suivants:

1) python vae_train.py-- qui formera VAE, et après la formation, le modèle sera enregistré dans tf_vae / vae.json dans

VAE prétraiter des données recueillies series.py python, à l'aide de pré-formation: 2) Ensuite, en le démarrant. est créé un nouvel ensemble de données dans un sous-répertoire nommé série de.

3) Ensuite, appelé series.npz enregistrer un ensemble de données, le script commencera la formation-RNN en utilisant MDN la commande suivante: rnn_train.py python. Cela va générer un modèle tf_rnn / rnn.json et tf_initial_z / initial_z.json dans. Les variables latentes initiales requises pour produire le fichier est enregistré initial_z.json environnement de l'épisode (z). ensemble du processus peut prendre 6-8 heures.

bloc-notes « vae_test.ipynb » L'entrée / image reconstruite visualisée en utilisant l'ensemble de données d'apprentissage sur la VAE.

V et M après la formation est terminée, vous obtiendrez trois nouveaux fichier JSON, doit maintenant copier vae.json, initial_z.json et rnn.json à tf_modelssub répertoire et remplacer le fichier précédent. Vous devez utiliser git add doomrnn / tf_models / *. Json à ces nouveaux modèles seront mis à jour repo git, et soumettre des mises à jour à votre fourchette. Après l'achèvement de cette opération, la machine peut être désactivée GPU. Vous devez démarrer le nouveau instance de CPU 64-core, puis connectez-vous sur la machine à nouveau.

Maintenant, les base d'un cycle de formation des instances de CPU 64-core, CMA-ES, lancer la commande train.py python doomrnn répertoire. Cela commencera le formateur et continuer la formation jusqu'à ce que Ctrl-C pour ce travail. Le contrôleur C sera formé à la température 1,25 M dans l'environnement de construction. Vous pouvez charger généré des fichiers journaux plot_training_progress.ipynb portable au progrès du moniteur. Après 200 itérations (ou environ 4-5 heures) après, devrait être suffisant pour obtenir des résultats substantiels, vous pouvez arrêter. Je me suis arrêté après près de 18 itérations, mais il ajouterait pas vraiment valeur après 200 fois, vous ne pouvez pas perdre votre argent. Le journal / *. Json ajouter tous les fichiers déjà dans la fourchette de la pension, et puis arrêtez l'instance.

FIG: en utilisant les formation de CMA-ES DoomRNN, les performances d'enregistrement C dans l'environnement généré

Utilisez votre instance de bureau, et a une nouvelle fois tirer le repo de la fourche, vous pouvez maintenant exécuter le code suivant pour tester la nouvelle formation V, les modèles M et C.

python model.py doomreal rendre log / doomrnn.cma.16.64.best.json

Vous pouvez remplacer doomreal avec doomrnn ou rendus norender pour essayer de générer l'environnement ou l'agent tenter 100 fois.

CarRacing-v0

CarRacing-v0 procédure de VizDoom que l'exemple précédent est presque le même, cette section se concentre sur les différences en place.

Étant donné que l'environnement CarRacing-v0 est construit en utilisant OpenGL, même sans rendre l'environnement de salle de mode, il dépend également d'une sortie graphique, si la boîte CloudVM doit être commande du serveur sans tête tassée X. Vous pouvez voir le fichier extract.bash dans le répertoire carracing, exécutez xvfb terme -a -s « -Screen 01400x900x24 + l'extension RANDR » avant la commande réelle. De plus, la collecte de données et modèle de formation M V et la même procédure que VizDoom.

S'il vous plaît noter que, après le modèle de formation et de VAE-RNN MDN, vous devez copier séparément vae.json, initial_z.json et rnn.json à vae, initial_z et répertoire RNN (au lieu de copier à tf_models comme DoomRNN dans), et couvrant la précédente fichier et mise à jour comme repo en forme de fourche habituelle.

Figure: formation vae_test.ipynb pour le contrôle sur les données extraites CarRacing-v0 VAE.

Dans ce contexte, nous utilisons le V et modèles M en tant que contrôle prédictif de modèle (MPC), dans un environnement réel et des contrôleurs de formation C, plutôt que de la formation dans l'environnement de production. , Vous devez donc exécuter gce_train.bash, au lieu de courir train.py. Parce que nous formons dans un environnement réel, par rapport à DoomRNN, la formation lentement. Parce qu'il est exécuté en tmux session de formation, vous pouvez exécuter dans tmux Jupyter parallèle dans une autre session à utiliser plot_training_progress.ipynb progrès moniteur portable, il se chargera généré des fichiers journaux.

Carte: formation de CMA-ES-CarRacing v0. Enregistrement des performances dans un environnement réel C.

Après 150-200 générations (ou environ 3 jours), il devrait être suffisant pour obtenir un score moyen de 880, et très proche de la 900 points souhaité. Si vous êtes satisfait de la 850 + points recommandé alors vous pouvez arrêter. Qualitativement, l'agent dernier par rapport à 900 + de marquer des points 850-870 est pas très mal, je ne veux pas gaspiller de l'argent durement gagné sur un nuage. Obtenez 900 + des points peut prendre plusieurs semaines. Le modèle final avec log / *. Json format d'enregistrement, vous pouvez tester et de voir la manière habituelle.

contribution

Il y a beaucoup de bonnes idées que vous pouvez essayer, par exemple, les méthodes de formation itérative, l'apprentissage de transfert, la motivation intrinsèque, et d'autres environnements.

Figure: Un environnement de pendule pixel générative bruyant?

Si vous souhaitez étendre le code et essayer quelque chose de nouveau, je vous suggère de modifier le code et essayer de résoudre nouvel environnement spécifique, plutôt que d'essayer d'améliorer le code de travailler simultanément dans plusieurs environnements. Je trouve que le travail, si vous voulez essayer de résoudre l'environnement difficile, nécessitent généralement des modifications spécifiques personnalisées. Se félicite de la demande de tirage de soumission avec des sous-répertoires séparés, sous-répertoires peuvent être adaptés à l'environnement spécifique que vous essayez de résoudre et d'expliquer dans les fichiers README.md dans les sous-répertoires.

lecture:

Je recommande de lire l'article ci-dessous avant d'essayer de reproduire l'expérience pour obtenir des renseignements généraux.

  • Modèles thèse mondiale: https: //worldmodels.github.io/
  • Un guide visuel Evolution Stratégies: blog.otoro.net/2017/10/29/visual-evolution-strategies
  • Stratégies stables en pleine évolution: blog.otoro.net/2017/11/12/evolving-stable-strategies/

Les éléments suivants sont du matériel de lecture en option:

  • Réseaux de mélange Densité: blog.otoro.net/2015/06/14/mixture-density-networks/
  • Réseaux Mélange de densité avec tensorflow: blog.otoro.net/2015/11/24/mixture-density-networks-with-tensorflow/

Si vous n'êtes pas familier Variational Autoencoders, s'il vous plaît lire le tutoriel suivant:

  • Variationnelle Autoencoder en tensorflow: https: //jmetzen.github.io/2015-11-27/vae.html
  • Bâtiment Autoencoders à Keras: https: //blog.keras.io/building-autoencoders-in-keras.html
  • Génération des images grand format Latent vecteurs: blog.otoro.net/2016/04/01/generating-large-images-from-latent-vectors/

Si vous n'êtes pas familier génération de séquence continue RNN, s'il vous plaît lire les documents suivants:

  • Génération des séquences récidivante Réseaux de Neurones: https: //arxiv.org/abs/1308.0850
  • Une représentation neuronale de croquis Dessins: https: //arxiv.org/abs/1704.03477
  • Generation Demo dans l'écriture manuscrite tensorflow: blog.otoro.net/2015/12/12/handwriting-generation-demo-in-tensorflow/
  • Réseau récurrent Neural Tutoriel pour les artistes: blog.otoro.net/2017/01/01/recurrent-neural-network-artist/

Original: http: //blog.otoro.net/2018/06/09/world-models-experiments/

ventes de Lexus à la polarisation États-Unis, qu'est-ce que cela signifie?
Précédent
Big Année | pourquoi aujourd'hui soir?
Prochain
années consécutives locales marquant une donnée de carrière haute + numéro, Ding Yan Yu-hang devrait MVP sa réélection
Il suffit! Fou a frappé 8,5 milliards, la pluie tombe dans la salle, mais aussi le feu de l'aéroport Changi de Singapour
Jeep 75th Anniversary Edition lumière gratuite: « Les oiseaux sont un bon oiseau, il est plus que des mots. »
classement des médailles des Jeux Olympiques d'hiver en Norvège et en Allemagne pour suivre le rythme, a augmenté à la troisième au Canada, en Chine, 5 d'argent et 19
La poésie Shu canoë swing, en passant le rouge animé
Un taux de puce de 99%! pluie cerise, salle d'arc en ciel, plages de sable blanc ... Kasuga liste net punch rouge sorti!
crevette vivant néerlandais sous les haricots pour la nourriture - regard sur le cycle écologique de l'agriculture dans les espèces Hanchuanluming élevage dans les exploitations familiales
Aviation Industry Chang Fei: Célébrons nouvelle année saine et civilisée
Chambre d'hôtes de choix difficiles? Vomissements de sang finition Shaoguan 7 fabuleux B & B, vous donner un voyage de vacances idéale
Après avoir résolu turbocompressé et les prix, la nouvelle Honda Jed pourrait enlever voyage de golf pour les acheteurs Kerry?
Vive les commentaires du public, je veux juste dire trois mots Liu Xingyu, ancien champion olympique qui ne peuvent pas lire
7 à long Tiggo si gentil, vous ne pas voiture concept curieux est sciés il?