L’apprentissage par renforcement

L'apprentissage par renforcement

Dans le monde de l’intelligence artificielle, les réseaux de neurones sont à la base des plus grandes avancées des dix dernières années pour des usages aussi variés que la vision par ordinateur, la traduction automatique de texte et la prédiction de séries temporelles, mais aussi pour les algorithmes d’apprentissage par renforcement.

Parmi les premiers algorithmes d’apprentissage par renforcement, on compte le Temporal difference learning, proposé par Richard Sutton en 1988 et, encore utilisé largement aujourd’hui, le Q-learning mis au point par Chris Watkins en 1989.

Les algorithmes d’apprentissage par renforcement sont orientés objectif/résultat (goal-oriented), contrairement aux algorithmes supervisés traditionnels, souvent orienté données (data-driven). Ces algorithmes par renforcement apprennent à atteindre un objectif plus complexe ; par exemple, maximiser le nombre de points gagné après plusieurs tours de jeu. Dans des environnements riches, ces algorithmes peuvent atteindre des performance surhumaines (généralement au détriment d’un temps d’apprentissage plus long).

L’algorithme d’apprentissage par renforcement fonctionne de façon binaire : punition ou récompense. On demande à l’algorithme de prendre des décisions en série :  puis on le « punit » quand il ne prend pas la bonne décision et il est « récompensé » quand il prend la bonne – d’où le nom de cette famille d’algorithmes.

Récemment, on a boosté ces algorithmes d’apprentissage par renforcement avec des réseaux de neurones profonds afin, par exemple, de battre les meilleurs joueurs du monde au jeu de Go. Le Go est un jeu proposant beaucoup plus de combinaisons que les échecs, et les algorithmes traditionnels ne faisaient pas le poids face à un bon joueur humain. Ces algorithmes par renforcement ont aussi permis de développer des intelligences artificielles permettant de challenger des joueurs de jeux vidéo professionnels.

Techniquement, le renforcement répond au problème complexe de savoir corréler une action présente avec son impact positif et/ou négatif, mais différé. Comme les êtres humains, les algorithmes d’apprentissages doivent parfois attendre pour analyser les implications de leurs décisions. Cette famille d’algorithme est capable d’apprendre dans un environnement à réponse différée où il peut être difficile de savoir quelle action a conduit à quel résultat.

Les algorithmes d’apprentissage par renforcement 

Un algorithme d’apprentissage par renforcement peut être défini en termes d’agents, d’un environnement, d’états, d’actions et de récompenses. Ces termes sont expliqués ci-dessous.

L’apprentissage des algorithmes de machine learning traditionnels et supervisés utilise des données venant directement avec une réponse, une variable à expliquer que l’on appelle aussi un label, et qui est disponible au moment où l’on analyse les variables explicatives associées (les « features »). Ces données ont été labellisés par un expert ou extraites d’un historique (la « vérité de terrain »). Par exemple, pour construire un algorithme qui détecte des maladies à partir d’un dossier patient, il faut que des médecins détectent ces maladies sur les dossiers de milliers de patient qui peuvent, ensuite, être utilisés par l’algorithme pour être autonome (https://www.fda.gov/news-events/press-announcements/fda-permits-marketing-artificial-intelligence-based-device-detect-certain-diabetes-related-eye).

Cependant, un algorithme d’apprentissage par renforcement n’a accès à aucun label sous la forme (Bonne action, Mauvaise action) et l’agent apprenant doit tout de même décider comment effectuer sa tâche. En l’absence de label, l’agent apprend par expérience. L’algorithme va simuler l’environnement de la tâche qu’il doit apprendre et créer des données d’exemples. Il fonctionnera alors sur le système essai-erreur-réussite avec pour but de maximiser ses récompenses à long terme.

Action : Les actions sont l’ensemble des possibilités que peut choisir l’agent pour réagir à son environnement. Il est essentiel de noter que les actions forment un ensemble fini.

Agent : Un agent peut prendre un ensemble fini d’actions. Par exemple, un robot explorateur peut avancer, reculer, aller à droite ou à gauche. L’agent EST l’algorithme. Dans votre vie, vous êtes l’agent (mais vous n’êtes pas aussi limité dans les actions que vous pouvez entreprendre).

Environnement : Le monde dans lequel l’agent évolue (techniquement défini sous la forme de paramètres). Souvent, l’agent fait partie intégrante de l’environnement. L’environnement est donc une fonction qui prend en entrée l’état de l’agent, son état propre, et l’action de l’agent et qui retourne une récompense (positive ou négative), fonction de l’impact de l’action, et les deux états modifiés. Si vous êtes l’agent, votre environnement peut être constitué des lois de la physique et de la société qui traitent vos actions et déterminent leurs conséquences.au 

[…]Si vous êtes l’agent[…]

États : Un état est l’ensemble des paramètres qui définisse l’agent ; e.g. l’endroit où il se trouve. C’est une configuration qui peut évoluer en fonction du temps, des actions de l’agent et de son environnement. L’environnement aussi a un état qui lui est propre.

Récompenses : Une récompense est un feedback qui mesure le succès ou l’échec d’une action de l’agent. Ici, une récompense peut être négative. Par exemple, dans le jeu vidéo Mario, le joueur gagne des points quand il touche une pièce. La fonction de récompense peut être plus complexe. Par exemple, la distance de Mario à la fin du niveau. Cette récompense peut être immédiate ou différée. Des situations plus complexes peuvent arriver : Mario saute pour attraper une pièce (récompense +) et retombe sur un champignon (récompense — ). L’algorithme doit apprendre que ses actions ont des conséquences immédiates ET différées.

Ceci est une récompense.

Politique : le terme politique (policy en anglais) détermine la stratégie que l’agent utilisera , afin de choisir la meilleur des actions à effectuer selon son état courant. Une politique lie les différents états de l’agent à ses actions.

Peu importe son état (généralement défini par un ensemble de paramètres continus qui représente un espace non-fini non-borné), un agent retourne une action à son environnement. Et ce dernier retourne le nouvel état de l’agent et sa récompense. Un environnement est une fonction qui transforme des états selon une action émise par l’agent. Si l’on peut connaître, voir créer, la fonction de l’agent, on ne peut connaître la fonction de l’environnement ; c’est ce qui rend la tâche complexe : savoir réagir sans connaître la suite des évènements. L’environnement est une boîte noire.

Quelles différences avec le Machine Learning traditionnel ? 

Un algorithme d’apprentissage par renforcement est différent de l’apprentissage supervisé et non-supervisé par la manière d’interpréter ses entrées. Voyons comment Mario s’en sort face à un précipice avec chacune de ces technologies.

Apprentissage non-supervisé : J’ai déjà vu quelque chose comme ça avant ; plusieurs fois. Il me faudrait un expert pour que je puisse savoir ce que c’est. Dans le doute, j’avance… Game over.

Apprentissage supervisé : C’est un trou. Je le sais. J’en ai vu pleins. Un expert en trou m’en a parlé. J’ai appris que si c’est noir et profond : c’est un trou. L’expert m’a dit que face à un trou, il faut sauter au-dessus.

Apprentissage par renforcement : Ok… Je viens d’essayer d’avancer, on m’a enlevé une vie. J’ai essayé de reculer, je m’éloigne de la sortie. On va sauter… Ah ! Je note. Si c’est noir et profond, je saute.

Les algorithmes d’apprentissage profond par renforcement ; parce qu’une petite touche de réseau de neurones ne fait jamais de mal

Les dernières générations d’algorithme d’apprentissage par renforcement utilisent les réseaux de neurones profonds pour apprendre l’agent qui lie les états et les actions à effectuer. Ce sont des perceptrons multicouches qui, en fonction des états, sauront choisir la meilleure action. Contrairement à un réseau de neurone classique, ici, le réseau de neurones par renforcement n’essaiera pas de minimiser une fonction de coût mais de maximiser la fonction de récompense.

Pour les jeux vidéo, des réseaux de neurones à convolution (CNN) peuvent être utilisés pour reconnaître ou définir l’état de l’agent, e.g. Careful Mario ! There is a mushroom behind you !. Le CNN est utilisé de façon différente ici, par rapport à un problème de classification. Il ne labellise par l’image… Il la décrit, il lui donne un état. Cette description sera utilisée comme état de l’agent : Mario est-il en danger ?

La question n’est pas « Mon algorithme sera-t-il plus efficace par renforcement que supervisé ? ». C’est la tâche à accomplir qui vous conduira à utiliser l’une ou l’autre de ces stratégies. Pour en apprendre plus, je vous conseille de lire « Reinforcement Learning: An Introduction » par Sutton et Barto. Si vous êtes plutôt de ceux qui se jettent directement dans le bain, le projet github d’openai (https://github.com/openai/baselines) contient une implémentation des principaux algorithmes par renforcement ainsi que des données sur lesquels les entraîner/essayer.