[PYTHON] Apprentissage par renforcement 37 Démarrez automatiquement avec l'enrubanneuse Atari

Il est destiné aux débutants en IA, des lycéens aux étudiants universitaires.

Lorsque j'essaye d'utiliser ATARI d'OpenAI, je veux un wrapper pour couvrir les particularités du jeu. Par exemple, en cas de rupture de bloc, le point de vie est initialement défini sur 5, mais le jeu ne fonctionnera que si vous appuyez sur le bouton de tir au début et lorsque le point de vie diminue (en cas d'échec). Si vous ne dépassez pas cela, ce sera comme un imbécile que l'apprentissage automatique ne progressera pas du tout. Personnellement, c'est une perte de temps. En premier lieu, un wrapper appelé FireResetEnv est préparé, mais si vous cassez le bloc, il ne bougera pas à chaque fois que votre vie diminuera, donc si vous échouez une fois, il restera tel quel. J'ai donc écrit un wrapper comme celui ci-dessous.

class FireResetEnvAuto(gym.Wrapper):
    def __init__(self, env):
        """Take action on reset for envs that are fixed until firing."""
        gym.Wrapper.__init__(self, env)
        assert env.unwrapped.get_action_meanings()[1] == 'FIRE'
        assert len(env.unwrapped.get_action_meanings()) >= 3
        self.lives = 0

    def reset(self, **kwargs):
        self.env.reset(**kwargs)
        self.lives = self.env.unwrapped.ale.lives()
        obs, _, done, info = self.env.step(1)
        if done or info.get('needs_reset', False):
            self.env.reset(**kwargs)
        obs, _, done, info = self.env.step(2)
        if done or info.get('needs_reset', False):
            self.env.reset(**kwargs)
        return obs

    def step(self, ac):
        lives = self.env.unwrapped.ale.lives()
        if lives<self.lives:
            self.lives=lives
            return self.env.step(1)
        return self.env.step(ac)

La plupart sont chainerrl / wrapper / atari_wrapper.py J'ai juste ajouté un peu. C'est chokozainerrl.

Recommended Posts

Apprentissage par renforcement 37 Démarrez automatiquement avec l'enrubanneuse Atari
Apprentissage amélioré à partir de Python
Apprentissage par renforcement 34 Créez des vidéos d'agent en continu
Renforcer l'apprentissage 13 Essayez Mountain_car avec ChainerRL.
Faites de l'art ASCII avec l'apprentissage en profondeur
Explorez le labyrinthe avec l'apprentissage augmenté
Faites sourire les gens avec le Deep Learning
Créer un exe Scrapy avec Pyinstaller
Créer un contrôleur d'interface audio avec pyusb (1)
[Python] Essayez facilement l'apprentissage amélioré (DQN) avec Keras-RL
Renforcer l'apprentissage 11 Essayez OpenAI acrobot avec ChainerRL.
Fabriquer un appareil de surveillance avec un capteur infrarouge
Renforcer l'apprentissage 12 Guide de démarrage rapide de ChainerRL Version Windows
Défier la rupture avec le modèle Actor-Critic renforçant l'apprentissage
[Mac] J'ai essayé de renforcer l'apprentissage avec Open AI Baselines
[Mémo d'apprentissage] Comment créer une application avec Django ~ Jusqu'à ce que Hello World soit affiché ~
[Mémo d'apprentissage] Comment créer une application avec Django ~ De l'environnement virtuel au push vers github ~