N'ignorez plus jamais l'entraînement de renforcement.

Bonjour, Habr! Je vous présente la traduction de l'article «Ne plus jamais ignorer le renforcement de l'apprentissage» par Michel Kana, Ph.D.

Apprendre avec un enseignant et apprendre sans enseignant n'est pas tout. Tout le monde le sait. Commencez avec OpenAI Gym.

image

Allez-vous vaincre le champion du monde d'échecs, le backgammon ou y aller?

Il existe un moyen qui vous permettra de le faire - la formation de renforcement.

Qu'est-ce que l'apprentissage par renforcement?


L'apprentissage renforcé consiste à apprendre à prendre des décisions cohérentes dans un environnement avec la récompense maximale reçue qui est donnée pour chaque action.

Il n'y a aucun enseignant en lui, seulement un signal de récompense de l'environnement. Le temps compte et les actions affectent les données suivantes. Ces conditions créent des difficultés d'apprentissage avec ou sans enseignant.

image

Dans l'exemple ci-dessous, la souris essaie de trouver autant de nourriture que possible et évite les chocs électriques lorsque cela est possible.

image

Une souris peut être courageuse et obtenir une décharge pour se rendre dans un endroit avec beaucoup de fromage. Ce sera mieux que de rester immobile et de ne rien recevoir.

La souris ne veut pas prendre les meilleures décisions dans chaque situation spécifique. Cela nécessiterait une grande dépense mentale de sa part, et ce ne serait pas universel.

L'entraînement avec des renforts fournit des ensembles de méthodes magiques qui permettent à notre souris d'apprendre à éviter les chocs électriques et à obtenir le plus de nourriture possible.

La souris est un agent. Un labyrinthe avec des murs, du fromage et des pistolets paralysants est l'environnement . La souris peut se déplacer vers la gauche, la droite, le haut, le bas - ce sont des actions .

image

La souris veut du fromage, pas un choc électrique. Le fromage est une récompense . La souris peut inspecter l'environnement - ce sont des observations .

Formation au renforcement des glaces


Laissons la souris dans le labyrinthe et passons à la glace. «L'hiver est arrivé. Vous et vos amis jetiez du frisbee dans le parc lorsque vous avez soudainement lancé un frisbee au milieu du lac. Fondamentalement, l'eau du lac était gelée, mais il y avait quelques trous où la glace a fondu. ( source )

image

«Si vous marchez sur l'un des trous, vous tomberez dans l'eau glacée. De plus, il y a une énorme pénurie de frisbee dans le monde, il est donc absolument essentiel de faire le tour du lac et de trouver une route. »( Source )

Comment vous sentez-vous dans une situation similaire?


C'est un défi pour l'apprentissage par renforcement. L'agent contrôle les mouvements du personnage dans le monde de la grille. Certaines tuiles de grille sont passables, tandis que d'autres font tomber le personnage dans l'eau. L'agent reçoit une récompense pour avoir trouvé un chemin praticable vers l'objectif.

Nous pouvons simuler un tel environnement en utilisant OpenAI Gym - une boîte à outils pour développer et comparer des algorithmes d'apprentissage avec des renforts. Il donne accès à un ensemble normalisé d'environnements, comme dans notre exemple, qui s'appelle Frozen Lake . Il s'agit d'un support de texte qui peut être créé avec quelques lignes de code.

import gym from gym.envs.registration import register # load 4x4 environment if 'FrozenLakeNotSlippery-v0' in gym.envs.registry.env_specs: del gym.envs.registry.env_specs['FrozenLakeNotSlippery-v0'] register(id='FrozenLakeNotSlippery-v0', entry_point='gym.envs.toy_text:FrozenLakeEnv', kwargs={'map_name' : '4x4', 'is_slippery': False}, max_episode_steps=100, reward_threshold=0.8196 ) # load 16x16 environment if 'FrozenLake8x8NotSlippery-v0' in gym.envs.registry.env_specs: del gym.envs.registry.env_specs['FrozenLake8x8NotSlippery-v0'] register( id='FrozenLake8x8NotSlippery-v0', entry_point='gym.envs.toy_text:FrozenLakeEnv', kwargs={'map_name' : '8x8', 'is_slippery': False}, max_episode_steps=100, reward_threshold=0.8196 ) 

Il nous faut maintenant une structure qui nous permettra d'aborder systématiquement les problèmes d'apprentissage par renforcement.

Processus décisionnel de Markov


Dans notre exemple, l'agent contrôle le mouvement du personnage sur le monde de la grille, et cet environnement est appelé un environnement entièrement observable.

Puisque la future tuile ne dépend pas des tuiles passées en tenant compte de la tuile actuelle
(nous avons affaire à une séquence d'états aléatoires, c'est-à-dire à la propriété Markov ), nous avons donc affaire au soi-disant processus de Markov .

L'état actuel encapsule tout ce qui est nécessaire pour décider quel sera le prochain mouvement; rien n'est nécessaire pour se souvenir.

Sur chaque cellule suivante (c'est-à-dire une situation), l'agent choisit avec une certaine probabilité l'action qui mène à la cellule suivante, c'est-à-dire la situation, et l'environnement répond à l'agent avec observation et récompense.

Nous ajoutons la fonction de récompense et le coefficient de remise au processus de Markov, et nous obtenons le soi-disant processus de récompense de Markov . En ajoutant un ensemble d'actions, nous obtenons le processus décisionnel de Markov ( MDP ). Les composants de MDP sont décrits plus en détail ci-dessous.

Condition


Un état est une partie de l'environnement, une représentation numérique de ce que l'agent observe à un certain moment dans l'environnement, l'état de la grille du lac. S est le point de départ, G est la cible, F est la glace solide sur laquelle l'agent peut se tenir et H est le trou dans lequel l'agent tombera s'il marche dessus. Nous avons 16 états dans un environnement de grille 4 x 4, ou 64 états dans un environnement 8 x 8. Ci-dessous, nous allons dessiner un exemple d'un environnement 4 x 4 utilisant OpenAI Gym.

 def view_states_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.observation_space) print() env.env.s=random.randint(0,env.observation_space.n-1) env.render() view_states_frozen_lake() 

Actions


L'agent a 4 actions possibles, qui sont représentées dans l'environnement comme 0, 1, 2, 3 pour gauche, droite, bas, haut, respectivement.

 def view_actions_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.action_space) print("Possible actions: [0..%a]" % (env.action_space.n-1)) view_actions_frozen_lake() 

image

Modèle de transition d'état


Le modèle de transition d'état décrit comment l'état de l'environnement change lorsqu'un agent prend des mesures en fonction de son état actuel.

Le modèle est généralement décrit par la probabilité de transition, qui est exprimée comme une matrice de transition carrée de taille N x N, où N est le nombre d'états de notre modèle. L'illustration ci-dessous est un exemple d'une telle matrice pour les conditions météorologiques.

image

Dans l'environnement du lac gelé, nous supposons que le lac n'est pas glissant. Si nous allons à droite, nous allons définitivement à droite. Par conséquent, toutes les probabilités sont égales.

«Gauche» déplace la cellule de l'agent 1 vers la gauche ou la laisse dans la même position si l'agent est à la bordure gauche.

«Droite» la déplace d'une cellule vers la droite ou la laisse dans la même position si l'agent est à la frontière droite.

«Up» déplace la cellule d'agent 1 vers le haut, ou l'agent reste au même endroit s'il se trouve à la limite supérieure.

«Bas» déplace la cellule d'agent 1 vers le bas, ou elle reste au même endroit si elle est à la limite inférieure.

Rémunération


Dans chaque état F, l'agent reçoit 0 récompense; dans l'état H, il reçoit -1, puisque, passé dans cet état, l'agent décède. Et lorsque l'agent atteint l'objectif, il reçoit une récompense +1.

Étant donné que les deux modèles, le modèle de transition et le modèle de récompense, sont des fonctions déterministes, cela rend l'environnement déterministe. \

Remise


La remise est un paramètre facultatif qui contrôle l'importance des futures récompenses. Il est mesuré dans la plage de 0 à 1. Le but de ce paramètre est d'empêcher la récompense totale d'aller à l'infini.

La remise modélise également le comportement de l'agent lorsque l'agent préfère la récompense immédiate à la récompense qui pourrait être reçue à l'avenir.

Valeur


La valeur de la fortune est le revenu à long terme attendu avec une remise pour la fortune.

Politique (π)


La stratégie utilisée par l'agent pour sélectionner l'action suivante est appelée stratégie. Parmi toutes les politiques disponibles, la meilleure est celle qui maximise le montant de la rémunération reçue ou attendue au cours de l'épisode.

Épisode


L'épisode commence lorsque l'agent apparaît sur la cellule de départ et se termine lorsque l'agent tombe dans le trou ou atteint la cellule cible.

Visualisons tout cela


Après avoir passé en revue tous les concepts impliqués dans le processus décisionnel de Markov, nous pouvons maintenant modéliser plusieurs actions aléatoires dans un environnement 16x16 en utilisant OpenAI Gym. Chaque fois, l'agent sélectionne une action aléatoire et l'exécute. Le système calcule la récompense et affiche le nouvel état de l'environnement.

 def simulate_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0'), nb_trials=10): rew_tot=0 obs= env.reset() env.render() for _ in range(nb_trials+1): action = env.action_space.sample() # select a random action obs, rew, done, info = env.step(action) # perform the action rew_tot = rew_tot + rew # calculate the total reward env.render() # display the environment print("Reward: %r" % rew_tot) # print the total reward simulate_frozen_lake(env = gym.make('FrozenLake8x8NotSlippery-v0')) 

image

Conclusion


Dans cet article, nous avons brièvement passé en revue les concepts de base de l'apprentissage par renforcement. Notre exemple a fourni une introduction à la boîte à outils OpenAI Gym, qui facilite l'expérimentation d'environnements pré-construits.

Dans la partie suivante, nous présenterons comment concevoir et mettre en œuvre des politiques qui permettront à l'agent de prendre un ensemble d'actions afin d'atteindre l'objectif et de recevoir un prix tel que vaincre un champion du monde.

Merci de votre attention.

Source: https://habr.com/ru/post/fr475236/


All Articles