Utilisez Python pour écrire un émulateur Gameboy et entraîner des modèles d'IA!

Source: Cur de la machine

Cet article est à propos de 2853 mots , Il est recommandé de lire 7 minutes .

Cet article présente un émulateur Gameboy écrit en Python qui a attiré une large attention sur les réseaux sociaux.

Pour de nombreux après-80 et après 90, Nintendo Gameboy représente une grande partie de la jeunesse. Beaucoup de jeux que nous connaissons étaient à l'origine portés sur cet ordinateur de poche 8 bits, y compris les célèbres séries "Mario" et "Zelda". Pour les joueurs nationaux, c'est la série "Pokemon" que nous avons le plus joué.

Cela fait 30 ans que cette console de jeu est sortie pour la première fois, mais l'enthousiasme des gens pour elle n'a pas diminué. Hier, un émulateur Gameboy écrit en Python a attiré une large attention sur les réseaux sociaux.

La jeunesse de Lord est de retour? La publication de l'auteur sur Reddit a rapidement reçu des milliers de likes.

Mads Ynddal, l'un des auteurs du projet, a annoncé que la version 1.0 de PyBoy était officiellement publiée.

Qu'est-ce que PyBoy?

En bref, il s'agit d'un émulateur Game Boy écrit entièrement à partir de zéro en Python, et prend en charge les scripts via API. Les chercheurs ont ajouté des définitions de type afin de pouvoir utiliser Cython pour compiler le logiciel, obtenant ainsi des performances comparables à celles des simulateurs écrits en C et C ++.

Lien du projet: https://github.com/Baekalfen/PyBoy

Caractéristiques

PyBoy est conçu pour être accessible via Python, il soutient et encourage donc les gens à faire de la recherche expérimentale, et les robots et l'intelligence artificielle expérimentent. Les chercheurs créent des wrappers spécifiques au jeu. Actuellement, les wrappers permettent aux programmeurs d'interagir avec Tetris et Super Mario sans avoir besoin d'avoir une connaissance approfondie de Game Boy. Vous pouvez vous référer au document: https://docs.pyboy.dk.

Les auteurs du projet veulent également apprendre et essayer des fonctions plus particulières. Selon les recherches du projet universitaire, ils ont ajouté une fonction de rembobinage au simulateur, ce qui signifie que vous pouvez revenir en arrière dans n'importe quel jeu.

Architecture du simulateur PyBoy

En 1990, Nintendo a demandé un brevet pour la Game Boy. La figure ci-dessous montre l'intégration et la connexion entre le CPU, la RAM, la cassette et l'affichage dans ce brevet.

Diagramme d'architecture dans le brevet Game Boy.

Sur cette base, les membres du projet PyBoy ont développé une classe pour chaque composant en Python, établissant ainsi une base pour le «système client» sur le «système hôte» (le système exécute Python). Le système client est le matériel virtuel Game Boy. En théorie, il peut exécuter toutes les parties du logiciel écrit pour la Game Boy.

La figure suivante montre toutes les classes et leurs relations dans le simulateur PyBoy:

L'importance de PyBoy pour l'apprentissage par renforcement et sa comparaison avec d'autres environnements

Au fil des ans, de nombreuses personnes ont développé des émulateurs Gameboy, et il existe maintenant des outils qui peuvent fonctionner sur des ordinateurs et des téléphones portables. Pourquoi en écrire un en Python? Bien sûr, il est utilisé pour former l'intelligence artificielle.

Envie de jouer à des jeux? Gameboy est un peu "difficile à apprendre" pour les gens de nos jours.

L'approche la plus proche de l'apprentissage général par renforcement de l'intelligence artificielle

Le concept d'intelligence artificielle générale fait référence à la capacité des machines à mener à bien toute tâche intellectuelle que les humains peuvent accomplir. À l'heure actuelle, nos recherches sur l'IA sont encore loin de cet objectif. Wu Enda a dit auparavant que ce que fait l'apprentissage profond, c'est seulement un «ajustement de courbe» de haute dimension.

Contrairement à ces algorithmes d'apprentissage automatique qui reposent sur des données pré-collectées (même nécessitant beaucoup d'étiquetage manuel), l'apprentissage par renforcement est un algorithme qui n'est entraîné que grâce à des récompenses environnementales, et son mécanisme de fonctionnement est similaire au système de dopamine à l'intérieur du corps humain. L'apprentissage par renforcement est actuellement l'algorithme d'apprentissage automatique qui se rapproche le plus de la capacité des humains à apprendre de l'expérience, et est particulièrement adapté aux scénarios où les agents doivent prendre des décisions en fonction de leur environnement.

La figure suivante montre comment l'agent RL utilise uniquement des images de jeu comme entrée pour apprendre les stratégies de contrôle de Mario.

Pourquoi de nombreuses recherches sur la RL sont-elles menées sur Atari au lieu d'autres questions plus pratiques?

La recherche sur la RL utilise Atari comme référence pour les raisons suivantes:

  • L'environnement Atari nous permet d'utiliser le même algorithme pour tester plusieurs environnements différents afin de vérifier la polyvalence de l'algorithme RL;
  • Puisque l'entrée n'est que l'image du jeu, la complexité du problème est augmentée;
  • Atari fournit aux chercheurs une plateforme de test reconnue capable de comparer équitablement les performances de différents algorithmes;
  • RL nécessite une grande quantité de données interactives pour l'apprentissage.Avant le test réel dans l'environnement réel, Atari fournit une plate-forme de test sûre, rapide et économique pour la vérification initiale de l'algorithme.
  • L'image suivante montre certains environnements Atari:

    Comparaison d'Atari, PySC2 et d'autres environnements avec PyBoy

    La section précédente présentait les nombreux avantages de la formation des agents RL dans l'environnement Atari, mais avec le développement de RL, cet environnement relativement simple ne convient progressivement plus aux nouvelles recherches RL actuelles. Il n'y a pas si longtemps, l'Agent57 proposé par DeepMind dépassait le niveau moyen des joueurs humains dans tous les environnements Atari, ce qui indiquait également que la recherche RL sur les environnements Atari touche progressivement à sa fin.

    Les environnements plus difficiles tels que DeepMind et PySC2 de Blizzard exigent que les agents apprennent des stratégies complexes de coordination et de confrontation. Bien qu'AlphaStar ait obtenu des résultats impressionnants dans cet environnement, il reste encore de nombreux problèmes à résoudre. Ce qui suit est un diagramme schématique de l'environnement PySC2.

    On peut dire que la difficulté de l'environnement PyBoy se situe entre Atari et PySC2, elle nous fournit un nouveau benchmark pour vérifier les performances de RL. Avant d'appliquer RL à des problèmes pratiques plus complexes, nous pouvons effectuer des tests peu coûteux et efficaces dans cet environnement modérément difficile.

    Comme la dit Andrej Karpathy, directeur de lintelligence artificielle et de la conduite autonome de Tesla, «il faut toujours essayer un pistolet BB avant datteindre le Bazooka».

    Introduction à Github

    comment installer?

    Si vous avez configuré un environnement qui peut exécuter Python normalement, l'installation sera très simple:

  • Installez SDL2 via le gestionnaire de packages (sudo apt install libsdl2-dev ou brew install sdl2)
  • Utilisez pip install pyboy pour installer Pyboy
  • Vous pouvez utiliser PyBoy directement depuis le terminal $ pyboy file.rom ou l'utiliser dans un script Python:

    depuis pyboy import PyBoypyboy = PyBoy ('ROMs / gamerom.gb') alors que pas pyboy.tick (): pass

    Le projet prend également en charge macOS, Raspberry Pi (Raspbian), Linux (Ubuntu) et Windows 10.

    Documentation de l'API PyBoy

    Si les utilisateurs ont besoin de créer leur propre robot ou IA, vous pouvez trouver tous les composants externes à prendre en charge dans la documentation PyBoy (https://baekalfen.github.io/PyBoy/index.html). Les différentes classes et leur utilisation sont toutes C'est très détaillé, donc je ne les répéterai pas ici. (L'index de structure comme indiqué ci-dessous)

    Exemple court

    PyBoy peut être chargé en tant qu'objet en Python. Ainsi, il peut être initialisé à partir d'un autre script et peut être contrôlé et détecté par ce script. Jetez un il à un "robot" rugueux sur gamewrapper_tetris.py, interagissant avec le jeu. Bien sûr, tous les composants externes peuvent être trouvés dans la documentation PyBoy.

    Pour les documents généraux sur Game Boy, vous pouvez afficher les documents Pan, qui contiennent des informations détaillées sur chaque sujet.

    Ce qui suit est une courte démo de lecture de données à partir de l'écran, le code peut également être trouvé dans gamewrapper_mario.py:

    import osimport sysfrom pyboy import PyBoy, WindowEvent # Nous permet d'importer PyBoy depuis le répertoire ci-dessousfile_path = os.path.dirname (os.path.realpath (__ file __)) sys.path.insert (0, file_path + "/ .." ) # Vérifiez si la ROM est fournie via argvif len (sys.argv) > 1: filename = sys.argvelse: print ("Utilisation: python mario_boiler_plate.py") exit (1) quiet = "--quiet" in sys.argvpyboy = PyBoy (filename, window_type = "headless" if quiet else "SDL2" , window_scale = 3, debug = not quiet, game_wrapper = True) pyboy.set_emulation_speed (0) assert pyboy.cartridge_title () == "SUPER MARIOLAN" mario = pyboy.game_wrapper () mario.start_game () assert mario.score == 0assert mario.lives_left == 2assert mario.time_left == 400assert mario.world == (1, 1) assert mario.fitness == 0 # Un score de fitness intégré pour le développement de l'IAlast_fitness = 0print (mario) pyboy.send_input (WindowEvent .PRESS_ARROW_RIGHT) pour _ dans la plage (1000): assert mario.fitness > = last_fitness last_fitness = mario.fitness pyboy.tick () if mario.lives_left == 1: assert last_fitness == 27700 assert mario.fitness == 17700 # Perdre un live, signifie 10.000 points dans cette empreinte de fitness (mario) breakelse: print ( "Mario n'est pas mort?") Exit (2) mario.reset_game () assert mario.lives_left == 2pyboy.stop ()

    Si vous exécutez le code ci-dessus avec Super Mario Land ROM chargé, vous obtiendrez l'image et la sortie du terminal ci-dessous. Il est à noter que le modèle de Mario est affiché sous la forme d'index 0, 1, 16, 17.

    A propos de l'auteur

    Les auteurs du projet Asger Anders Lund Hansen, Mads Ynddal et Troels Ynddal sont tous originaires du Danemark. Mads Ynddal, diplômé de l'Université de Copenhague au Danemark, a déclaré qu'en fait, ce simulateur Gameboy remonte à son projet en 2015 lorsqu'il était à l'université.

    La version 1.0 de l'émulateur Gameboy a été publiée, mais les développeurs peuvent encore faire beaucoup de choses. Le développeur du projet a déclaré que les directions actuelles qui peuvent être avancées incluent l'ajout de son, de couleur, de connexion de simulation Gameboy au simulateur et d'empaquetage de plus de jeux, et bien sûr, il existe des exemples de formation de réseaux de neurones.

    J'espère qu'avec les efforts des gens, les jeux de Gameboy pourront également renaître. Plus important encore, il a désormais pour mission de former l'intelligence artificielle.

    -Terminer-

    Suivez la plate-forme publique officielle WeChat de l'Institut Tsinghua-Qingdao pour la science des données " Tarte aux données AI "Et le numéro de soeur" Tarte aux données JEU "Obtenez plus d'avantages de cours et un contenu de qualité.

    l'intelligence artificielle et de la race de l'intelligence humaine: l'intelligence humaine contre le peigne ensemble
    Précédent
    Thé persistante pendant près de 60 ans, Meizhou Jiaoling saisir l'occasion pour polir « spéciale banane » nouvelle carte
    Prochain
    Yangjiang policiers recueillaient à minuit, le réseau inter-provincial de gangs de fraude arrêté
    Plus Carte Voir Hailing drill anti-terroriste! Restaurer les capacités d'intervention d'urgence de test de Somethin
    observation du Sud | deux mois 3 fois sur le « Nouvelles du Réseau », Dongguan Shatin à faire quoi?
    L'éducation juridique au printemps de la première leçon, les élèves des procureurs Huiyang nuage franco-prussienne
    Regardez l'histoire à travers le « argent Yaner »: la relation entre l'argent et dynasties
    Daxing grand parc Garonne Hull
    lire la nuit | héros au lieu de « Je me souviens quand »
    Dans le cadre de l'épidémie, que diriez-vous d'un quart de l'économie chinoise? Une carte, deux minutes pour comprendre rapidement
    Dans le cadre de l'épidémie, que diriez-vous d'un quart de l'économie chinoise? Une carte, deux minutes pour comprendre rapidement
    Le ministre Li gouverneur par intérim de la province du Shandong (CV ci-joint)
    produits touristiques industriels dans la province du Guangdong a publié la liste de la ligne! Zhanjiang vacances cette ligne à ce sujet?
    E aide infirmière mariage vlog | « repos arrière de sa vie, je l'espère vous plus heureux. »