Reinforcement Learning

 

Introduction au Reinforcement Learning

3 choses à savoir

Le Reinforcement Learning est une technique de Machine Learning dans laquelle un agent informatique apprend à exécuter une tâche par la méthode essai-erreur dans un environnement dynamique. Cette approche laisse l'agent prendre une série de décisions pour maximiser la récompense liée à l'exécution réussie d'une tâche, sans intervention humaine et sans programmation explicite pour mener à bien la tâche en question.

Les programmes d'IA entraînés par Reinforcement Learning sont capables de battre des joueurs humains aussi bien au jeu de go qu'aux échecs, ainsi que dans des jeux vidéo. Le concept de Reinforcement Learning n'est certes pas nouveau, mais les progrès récents en matière de Deep Learning et de puissance de calcul ont permis d'obtenir des résultats remarquables dans le domaine de l'intelligence artificielle.

Pourquoi le Reinforcement Learning est important

Reinforcement Learning vs Machine Learning vs Deep Learning

Le Reinforcement Learning est une branche du Machine Learning (figure 1). Contrairement au Machine Learning supervisé ou non supervisé, le Reinforcement Learning ne repose pas sur un jeu de données statiques, mais sur une succession d'expériences dans un environnement dynamique. Les points de données, ou expériences, sont recueillis lors des interactions entre un agent software et son environnement, sur la base d'un apprentissage par essai-erreur. Cet aspect du Reinforcement Learning est important, car il permet de se dispenser de certaines étapes, comme la collecte, le prétraitement et la labellisation des données, incontournables dans l'apprentissage supervisé ou non supervisé. Concrètement, cela signifie que, moyennant un système de récompense approprié, un modèle de Reinforcement Learning peut commencer à apprendre un comportement par lui-même, sans supervision (humaine).

Le Deep Learning englobe les trois types de Machine Learning ; le Reinforcement Learning et le Deep Learning ne sont pas mutuellement exclusifs. La résolution de problèmes complexes de Reinforcement Learning s'appuie souvent sur des réseaux de neurones profonds, on parle alors de Deep Reinforcement Learning.

Les trois grandes catégories de Machine Learning : apprentissage non supervisé, apprentissage supervisé et Reinforcement Learning.

Figure 1. Les trois grandes catégories de Machine Learning : apprentissage non supervisé, apprentissage supervisé et Reinforcement Learning.

Navigation dans l'interface

Exemples d'applications du Reinforcement Learning

Les réseaux de neurones profonds entraînés par Reinforcement Learning permettent d'encoder des comportements complexes. Cette approche offre une alternative intéressante pour des applications impossibles ou difficiles à aborder avec des méthodes plus traditionnelles. Dans le domaine de la conduite autonome par exemple, un réseau de neurones peut remplacer le conducteur et décider comment tourner le volant en traitant les données issues de différents capteurs comme les images des caméras et les mesures lidar. Sans réseaux de neurones, le problème serait décomposé en sous-problème plus petits tels que l'extraction des caractéristiques des images issues des caméras, le filtrage des mesures lidar, la fusion des données issues des capteurs et la prise de décisions de « pilotage » basées sur les informations en provenance des capteurs.

Le Reinforcement Learning reste une approche en cours d'évaluation pour les systèmes de production, mais cette technologie semble prometteuse pour certaines applications industrielles.

Contrôles avancés : le contrôle des systèmes non linéaires constitue un problème complexe, souvent résolu en linéarisant le système à différents points de fonctionnement. Le Reinforcement Learning peut être appliqué directement au système non linéaire.

Conduite autonome : la prise de décision pour la conduite basée sur des images issues de caméras fait partie des pistes intéressantes car les réseaux de neurones profonds sont performants dans les applications exploitant des images.

Robotique : le Reinforcement Learning peut notamment s'avérer utile pour des applications comme la préhension robotique, par exemple apprendre à un bras robotisé comment manipuler divers objets dans des applications pick-and-place. La collaboration entre robots, ou entre robots et humains, offre également des perspectives intéressantes.

Ordonnancement : les problèmes d'ordonnancement apparaissent dans de nombreux scénarios, par exemple le contrôle des feux de signalisation ou la coordination des ressources dans une usine pour atteindre un objectif donné. Le Reinforcement Learning est une bonne alternative aux méthodes évolutives pour résoudre ces problèmes d'optimisation combinatoire.

Étalonnage : le Reinforcement Learning présente un intérêt dans des applications impliquant un étalonnage manuel des paramètres, comme l'étalonnage d'une unité de contrôle électronique (ECU).

Comment fonctionne le Reinforcement Learning

Le mécanisme d'apprentissage qui est à la base du Reinforcement Learning reflète de nombreux scénarios du monde réel. On peut citer comme exemple le dressage des animaux domestiques par une méthode de renforcement positif.

Reinforcement Learning pour le dressage d'un chien, où le chien et le dresseur constituent respectivement l'agent et l'environnement. Ils interagissent par le biais d'actions, de récompenses et d'observations.

Figure 2. Exemple de Reinforcement Learning : le dressage d'un chien

Appliquons la terminologie du Reinforcement Learning au dressage d'un chien (figure 2) : le but de l'apprentissage dans ce cas est d'entraîner le chien (l'agent) à accomplir une tâche dans un environnement qui englobe à la fois l'animal et le dresseur. Pour commencer, le dresseur donne un ordre ou un signal que le chien observe (observation). Le chien réagit alors par une action. Si cette action correspond au comportement souhaité, le dresseur récompense l'animal par une friandise ou un jouet, sinon le chien ne reçoit pas de récompense. Il est probable qu'en début d'apprentissage le chien réagisse de manière plus ou moins aléatoire, comme rouler sur le dos lorsqu'on lui dit "assis", parce qu'il essaie d'associer des observations spécifiques à des actions et à des récompenses. Cette mise en correspondance, ou mapping, entre observations et actions est appelée politique. Du point de vue du chien, l'idéal serait de réagir correctement à chaque demande, afin de recevoir un maximum de friandises. Le but du Reinforcement Learning est donc de «régler» la politique du chien afin qu'il apprenne les comportements qui maximiseront la récompense. À la fin de l'apprentissage, le chien doit être capable d'observer son maître et de faire ce qui est demandé, par exemple, s'asseoir lorsqu'on lui dit « assis », en s'appuyant sur la politique interne qu'il a développée. À ce stade, les friandises sont les bienvenues mais devraient théoriquement ne plus être nécessaires.

Gardons cet exemple en tête et passons à une autre tâche telle que garer un véhicule en utilisant un système de conduite autonome (figure 3). L'objectif est d'apprendre à l'ordinateur de bord (l'agent) à se garer sur la bonne place de parking grâce au Reinforcement Learning. Comme dans le cas du dressage du chien, l'environnement englobe tout ce qui est extérieur à l'agent et peut inclure la dynamique du véhicule, d'autres véhicules à proximité, les conditions météorologiques, etc. Durant la phase d'apprentissage, l'agent exploite les données de différents capteurs, comme les caméras, le GPS et le lidar (les observations), pour générer des commandes de changement de direction, de freinage et d'accélération (les actions). Pour apprendre à générer les actions adéquates à partir des observations (réglage de la politique), l'agent multiplie les tentatives pour garer le véhicule en utilisant un processus essai-erreur. Un signal positif peut venir récompenser la qualité d'un essai et guider ainsi le processus d'apprentissage.

Reinforcement Learning pour un stationnement autonome, où l'ordinateur du véhicule est l'agent.

Figure 3. Exemple de Reinforcement Learning : le stationnement autonome. 

Dans l'exemple du dressage, l'apprentissage se fait dans le cerveau du chien. Dans celui du stationnement autonome, l'apprentissage est géré par un algorithme d'apprentissage, chargé de régler la politique de l'agent en fonction des données issues des capteurs, des actions et des récompenses associées. Une fois l'apprentissage terminé, l'ordinateur de bord doit être capable de se garer en s'appuyant uniquement sur la politique ainsi définie et sur les informations fournies par les capteurs.

Il est indispensable de garder à l'esprit que le Reinforcement Learning est peu efficace quand le nombre d'échantillons est limité. Il faut un grand nombre d'interactions entre l'agent et son environnement pour recueillir les données nécessaires à l'apprentissage. AlphaGo, le premier programme informatique à avoir battu un champion du monde au jeu de go, a ainsi enchaîné sans interruption des millions de parties pendant plusieurs jours durant sa phase d'apprentissage, accumulant ainsi des connaissances que des humains auraient mis des milliers d'années à acquérir. Même pour des applications relativement simples, le temps d'apprentissage peut prendre de quelques minutes à plusieurs heures, voire plusieurs jours. La définition correcte du problème à résoudre est également délicate, car elle implique de prendre les bonnes décisions en matière de design, ce qui peut nécessiter quelques itérations. Il s'agit, par exemple, de choisir l'architecture appropriée pour les réseaux de neurones, de régler les hyperparamètres et de définir le signal de récompense.

Workflow du Reinforcement Learning

De manière générale, la formation d'un agent par Reinforcement Learning comprend les étapes suivantes (figure 4) :

Les éléments du workflow du Reinforcement Learning : environnement, récompense, agent, apprentissage de l'agent et déploiement.

Figure 4. Workflow du Reinforcement Learning .

1. Créer l'environnement

Vous devez d'abord définir l'environnement dans lequel l'agent de Reinforcement Learning va agir, notamment l'interface entre l'agent et son environnement. L'environnement peut être un modèle de simulation ou un système physique réel. Les environnements simulés sont généralement recommandés dans un premier temps car ils sont plus sûrs et laissent le champ libre aux expérimentations.

2. Définir la récompense

Précisez ensuite le signal de récompense que l'agent utilise pour mesurer sa performance par rapport à l'objectif à atteindre, et la méthode de calcul de ce signal à partir de l'environnement. La définition de la récompense peut être une étape délicate, nécessitant plusieurs itérations pour aboutir à un résultat satisfaisant.

3. Créer l'agent

Créez ensuite l'agent, qui comprend la politique et l'algorithme d'apprentissage de Reinforcement Learning. Vous devez donc :

a) Choisir une façon de représenter la politique (par exemple en utilisant des réseaux de neurones ou des look-up tables).

b) Sélectionner l'algorithme d'apprentissage approprié. Différentes représentations sont souvent associées à des catégories spécifiques d'algorithmes d'apprentissage. Mais la plupart des algorithmes modernes de Reinforcement Learning s'appuient sur des réseaux de neurones car ce sont de bons candidats pour de larges espaces d'état/action et des problèmes complexes.

4. Entraîner et valider l'agent

Définissez des options d'apprentissage (comme des critères d'arrêt) et entraînez l'agent pour régler la politique. Veillez à valider la politique entrainée à la fin de l'apprentissage. Si nécessaire, revoyez les choix de design, comme le signal de récompense et l'architecture de la politique, puis recommencez l'apprentissage. Le Reinforcement Learning est en général inefficace si le nombre échantillons à disposition pour l'apprentissage est réduit; l'apprentissage peut prendre de quelques minutes à plusieurs jours selon l'application. Dans le cas d'applications complexes, la parallélisation de l'apprentissage sur plusieurs CPU, GPU et clusters d'ordinateurs permettra d'accélérer le processus (figure 5).

Accélérez l'apprentissage dans le contexte d'un Reinforcement Learning inefficace sur les échantillons en utilisant le calcul parallèle pour atteindre une politique optimale.

Figure 5. Entraîner les modèles de Reinforcement Learning avec le calcul parallèle

5. Déployer la politique

Déployez la représentation de la politique entraînée en utilisant, par exemple, le code C/C++ ou CUDA généré. À ce stade, la politique est un système de prise de décision autonome.

L'apprentissage d'un agent par Reinforcement Learning est un processus itératif. Les décisions et les résultats obtenus en fin de processus peuvent vous obliger à revenir à une phase antérieure du workflow d'apprentissage. Si par exemple le processus d'apprentissage ne converge pas vers une politique optimale dans un délai raisonnable, vous devrez peut-être mettre à jour l'un des éléments suivants avant d'entraîner à nouveau l'agent :

  • Les paramètres d'apprentissage 
  • La configuration de l'algorithme de Reinforcement Learning 
  • La représentation de la politique 
  • La définition du signal de récompense 
  • Les signaux d'action et d'observation 
  • La dynamique de l'environnement

Reinforcement Learning avec MATLAB et Simulink

MATLAB® et Reinforcement Learning Toolbox™ simplifient les tâches de Reinforcement Learning. Vous pouvez implémenter des contrôleurs et des algorithmes de prise de décision pour des systèmes complexes comme des robots et des systèmes autonomes en travaillant sur les différentes étapes du workflow de Reinforcement Learning. Vous pouvez en particulier :

1. Créer des environnements et des fonctions de récompense en utilisant MATLAB et Simulink® 

2. Utiliser des réseaux de neurones profonds, des polynômes et des look-up tables pour définir des politiques de Reinforcement Learning

Utilisation de MATLAB et Reinforcement Learning Toolbox pour apprendre à un robot bipède à marcher.

Figure 6. Apprendre à un Robot à marcher avec Reinforcement Learning Toolbox™

3. Utiliser, évaluer, comparer différents algorithmes de Reinforcement Learning répandus comme DQN, DDPG, PPO et SAC, en modifiant très peu votre code, ou bien créer votre propre algorithme personnalisé

4. Utiliser Parallel Computing Toolbox™ et MATLAB Parallel Server™ pour entraîner plus rapidement des politiques de Reinforcement Learning en exploitant plusieurs GPU, CPU, clusters d'ordinateurs ou ressources cloud

5. Générer du code et déployer des politiques de Reinforcement Learning pour des dispositifs embarqués avec MATLAB Coder™ et GPU Coder™ 

6. Démarrer avec le Reinforcement Learning grâce à des exemples de référence.

Démarrer rapidement

Reinforcement Learning Onramp

Familiarisez-vous avec les méthodes de Reinforcement Learning pour les problèmes relatifs aux systèmes de contrôle.