Systèmes autonomes : l'IA pour l'industrie, sans code avec Microsoft Project Bonsai
- Publié le lundi 28 mars 2022
- temps de lecture 8 minutes
![](/-/media/reinforcement-learning.jpeg?vs=1&w=1120&la=fr-FR&hash=FDDD8D562385BD28EE43183B02034F00)
Dans le cadre de la mise en place de chaînes de production flexibles, l’industrie a de plus en plus besoin de robots autonomes dans sa transformation. C’est aussi l’occasion d’ajouter des nouvelles possibilités pour améliorer ou inventer de nouveaux processus grâce à l’IA et notamment au Reinforcement Learning (apprentissage par renforcement).
L’industrie n’a pas attendue l’IA pour mettre en œuvre des systèmes automatiques pour contrôler les processus industriels. Le fonctionnement d’une usine moderne est presque entièrement automatisé.
Néanmoins, ces systèmes comportent des limites qui contraignent l’exécution des process mis en place. Par exemple, réagir en temps réel à des phénomènes externes (que l’on appelle bruit) ou des changements de contexte (ex : déplacement d’un objet ou interférence d’une personne dans le champ d’action). C’est pourquoi les systèmes autonomes s’appuient sur les bases de l’intelligence artificielle et en particulier l’apprentissage par renforcement.
L’utilisation de l’IA comme solution aux défis proposés par l’évolution de l’industrie nécessite de nouvelles compétences et de nouveaux postes comme celui de Data Scientist. Mais pour faciliter l’accès au Reinforcement Learning aux équipes d’ingénieurs spécialistes, Microsoft propose une plateforme dédiée, Project Bonsai, qui permet de simuler des procédés industriels et créer des systèmes autonomes très facilement et très rapidement.
L’apprentissage par renforcement ou Reinforcement Learning est une méthode d’intelligence artificielle dans laquelle un agent est placé dans un environnement, doit prendre une décision et en fonction de celle-ci et de la modification de l’environnement, il recevra la récompense correspondante qui peut être positive ou négative. Par ce biais, l’agent apprend de ses actions.
L’agent évolue dans l’environnement et la séquence états-actions-récompenses. Afin de prendre une décision, l’agent utilise une politique (policy) qui est une équation qui lui permet de déterminer quelle action prendre en fonction de l’état observé. L’historique de chaque action est pris en compte par l’agent qui prend une nouvelle action en fonction des résultats des précédentes pour éviter le phénomène « tirage aléatoire ».
Au fur et à mesure de l’apprentissage, l’agent est confronté au dilemme Exploitation/Exploration. L’agent doit-il prendre une action dont il sait qu’elle va lui rapporter une récompense positive (Exploitation) ou doit-il prendre une décision qu’il n’a jamais prise dans l’espoir qu’elle lui rapporte une récompense plus importante plus tard (Exploration) ?
On distingue 2 approches pour le Reinforcement Learning : model-based et model-free. Pour chacune on applique des algorithmes classiques pour se rapprocher de la meilleure solution.
Dans un modèle « model-based », l’agent a accès aux probabilités de récompenses en fonction de l’action qu’il s’apprête à prendre dans la situation donnée. A l’inverse, un modèle « model-free », n’a pas accès à ces probabilités.Nous nous sommes intéressés à deux types d’algorithmes pour ce dernier type de modèle.
L’idée de cet algorithme est de maximiser la récompense en modifiant les paramètres de la politique à l’aide de gradients sur chaque paramètre.
Voir l’article suivant : https://towardsdatascience.com/policy-gradients-in-a-nutshell-8b72f9743c5d
Voir l’article suivant : https://www.freecodecamp.org/news/an-introduction-to-policy-gradients-with-cartpole-and-doom-495b5ef2207f/
Voir le repo suivant : https://github.com/simoninithomas/Deep_reinforcement_learning_Course/tree/master/Policy%20Gradients
L’idée derrière cet algorithme est de mapper la récompense maximale qu’un agent peut avoir pour chaque action et chaque état, sous forme de table appelée Q-table.
Le process d’entraînement de cet algorithme est le suivant :
A la fin de l’entraînement, les valeurs de la table permettent à un agent de prendre les meilleures décisions quel que soit son état. La fin de l’entraînement est déterminée par le Data Scientist : il choisit soit le nombre maximal d’étapes d’entraînement soit de manière automatique lorsque le modèle converge et que les Q-values ne varient plus.
Voir l’article suivant : https://www.freecodecamp.org/news/diving-deeper-into-reinforcement-learning-with-q-learning-c18d0db58efe/
Voir le repo suivant : https://github.com/simoninithomas/Deep_reinforcement_learning_Course/tree/master/Q%20learning/FrozenLake
L’utilisation de Q-table est recommandée lorsque le nombre d’états est peu important. Mais pour des environnements plus complexes où le nombre d’états possibles peut atteindre plusieurs millions (par exemple, aux échecs c’est 10^120 combinaisons), il est impraticable de maintenir une Q-table.
L’idée est donc d’utiliser un modèle de Deep Learning qui donnera pour un état donné, les Q-values pour chaque action :
Dans le cas d’un jeu vidéo, tel Doom ou Pong, le réseau neuronal prend en input les 4 dernières images et en output, il génère les Q-values pour chaque action disponible.
Pourquoi prendre 4 images ? Car cela permet d’obtenir les mouvements, les positions et les accélérations du jeu qui correspondent à l’état à l’instant t auquel est confronté l’agent pour prendre sa décision.
A chaque expérience, le tuple suivant (état, action, récompense, nouvel état) est donné au réseau neuronal afin qu’il apprenne. Cela crée des problèmes car il y a une forte corrélation entre les derniers tuples ingérés par le réseau neuronal et la prochaine décision prise. Si on utilise ce modèle pour un même jeu dans une situation différente, alors il sera incapable de prendre une décision. Deux solutions sont apportées à ce problème :
- Chaque expérience est conservée et un nombre de ces expériences est choisi de manière aléatoire lors des phases d’apprentissage afin que le modèle n’oublie pas les expériences précédentes. Les expériences sont conservées sous forme de tuple (state, action, reward, new_state) au sein de Deque (doubly ended queue, objet similaire à une liste en Python mais avec un traitement des pop et append plus rapide, il nécessite la librairie collections).
- Il est possible également d’arrêter les phases d’apprentissage et entrer dans une phase d’exploration plus que d’exploitation afin de rajouter des expériences issues de choix plus aléatoires. Celles-ci peuvent avoir une récompense plus faible qu’attendue mais elles auront le mérite d’être prises en compte lors des phases d’apprentissage.
Voir l’article suivant : https://www.freecodecamp.org/news/an-introduction-to-deep-q-learning-lets-play-doom-54d02d8017d8/
La définition du simulateur est primordiale dans l’apprentissage de notre modèle de Reinforcement Learning afin qu’il prenne en compte toutes les situations offertes par l’environnement et que la prise de décision, durant les actions, se fassent en fonction des bonnes variables.
En effet, à ce jour les exemples de Reinforcement Learning les plus parlants touchent aux jeux comme le Go ou les échecs, ou les jeux vidéo. Cela s’explique par le fait que l’environnement est parfaitement défini, toutes ces variables connues et le choix du joueur a priori limité. La courbe d’apprentissage est très importante lorsque l’on passe d’un jeu comme les échecs (nombre d’actions limité, nombre d’environnements important) à des jeux tels que Starcraft (nombre d’actions très important, nombre d’environnements quasiment infini). Parmi ces simulateurs de jeux vidéo, Microsoft s’appuie par exemple sur Minecraft et le Projet Malmo (https://www.microsoft.com/en-us/research/project/project-malmo/).
Le Digital Twin et les évolutions du Metaverse offrent également de nombreuses opportunités en termes de simulateurs.
Il semble donc très difficile de prendre en compte tous les éléments de la vie réelle lors de l’utilisation du Reinforcement Learning pour des cas industriels. Il faut donc un simulateur au plus proche de la vie réelle. Un simulateur biaisé induira ses biais au modèle et celui-ci ne saura pas répondre correctement aux différentes situations auxquelles il est confronté.
Parmi les simulateurs de procédés utilisés dans l’industrie, on peut citer par exemple Aspen HYSYS qui est l’un des leaders sur le marché de la chimie et de la pétrochimie. Pour chaque projet, il est nécessaire de choisir un package d’équations thermodynamiques. Ce choix est critique pour que le simulateur soit réaliste (source : https://processdesign.mccormick.northwestern.edu/index.php/Property_package). Il est nécessaire d’appliquer ce même soin lors de la définition d’un simulateur de Reinforcement Learning.
Microsoft Project Bonsai est une plateforme dite low-code qui accélère le développement d’automates avec de l’intelligence artificielle et qui fait partie des efforts sur les systèmes autonomes de Microsoft.
Ce projet permet facilement d’entraîner plus rapidement et plus efficacement un « brain » (un modèle de Reinforcement Learning) en appliquant automatiquement des algorithmes et en parallélisant massivement les essais sur un simulateur grâce au Cloud Azure.
Pour un projet Bonsai, il faut :
- Un simulateur
- Un fichier de code Inkling afin de définir les buts et objectifs de l’entraînement (le reward et la policy)
Les moteurs d’apprentissage sont intégrés à la plateforme et ne sont pas à définir. Ils comprennent les algorithmes suivants :
• Distributed Deep Q Network (APEX) (https://arxiv.org/pdf/1508.04186.pdf)
• Proximal Policy Optimization (PPO) (https://arxiv.org/pdf/1707.06347.pdf)
• Soft Actor Critic (SAC) (https://arxiv.org/pdf/1801.01290.pdf)
Lien : https://docs.microsoft.com/fr-fr/bonsai/product/components/engine
Il est désormais possible d’importer ses propres modèles d’apprentissage et il est possible de pouvoir tuner légèrement les modèles déjà présents sur la plateforme.
Lien : https://docs.microsoft.com/fr-fr/bonsai/inkling/advanced/algorithm
Les simulateurs utilisés sont les suivants :
• MATLAB Simulink
• AnyLogic
• VP Link
• Conteneurs dockerisés personnalisés
Lien : https://docs.microsoft.com/fr-fr/bonsai/product/components/simulation
Le dernier point est peut-être le plus intéressant car tout simulateur compatible avec le SDK et mis en container peut être facilement ajouté en tant que simulateur à la plateforme Bonsai. En plus des exemples déjà présents sur la plateforme, il est facile de rajouter ceux présents sur ce repo Github (https://github.com/microsoft/microsoft-bonsai-api) et de suivre les instructions données dans la documentation Bonsai (https://docs.microsoft.com/fr-fr/bonsai/guides/add-simulator?tabs=add-cli%2Ctrain-inkling&pivots=sim-platform-other). Cette méthode permet une grande flexibilité et offre des squelettes de créations de simulateurs pour développeurs en Python, Java ou C#.
Grâce à cette méthode, il est possible d’importer le simulateur et laisser la plateforme gérer le nombre de simulateurs tournant en parallèle. La puissance du Cloud permet de passer à l’échelle et d’entraîner notre agent.
Il est également possible d’entraîner un « brain » avec un simulateur tournant sur une machine non rattachée à la plateforme. La plateforme permet donc l’entraînement du « brain » et l’observation en temps réel des résultats (à la manière d’un Tensorboard).
Une fois entraînés, les brains peuvent être exportés sous forme de container Docker et container compatible avec Azure IoT Hub pour un déploiement rapide sur les IoT Edge devices.
Bonsai est une plateforme qui exécute des algorithmes de Reinforcement Learning qui sont connus mais limités. Ce qu’il est possible de reprocher à la plateforme est ce fonctionnement un peu boîte noire même si on peut légèrement adapter le paramétrage (fine-tuning). D’autant plus que l’interface permet de surveiller le bon apprentissage pour faire ces réglages fins.
Au niveau des simulateurs, un SDK permet de développer son propre simulateur. Mais on préfèrera s’appuyer sur des simulateurs compatibles du marché (MatLab, Anylogic, etc.), matures et éprouvés qui permettent de limiter les biais.
Surtout que concernant ces simulateurs, ces outils sont déjà connus et manipulables par les utilisateurs terrain. Ils peuvent plus facilement tirer parti de Bonsai en cherchant à résoudre un problème avec une approche Intelligence Artificielle.
On se concentre sur la problématique et sa modélisation ce qui positionne le produit directement auprès des populations terrain. Ainsi, Bonsai se présente comme un brique AI low-code pour des sociétés qui ont des process, automatisés ou non, et qui ont besoin d’une intelligence artificielle rapidement fonctionnelle pour les piloter.
En simplifiant, on peut dire que Bonsai s’apparente à l’AutoML du Reinforcement Learning. Il s’adresse surtout à des clients industriels qui n’ont pas les équipes de Data Scientists nécessaires pour la mise en place d’une telle intelligence.
Mais attention car au final, une fois un brain entraîné et disponible, il reste encore du travail. Il faut l’intégrer dans le système industriel, il faut l’alimenter en données et exécuter les commandes.
C’est aussi là qu’intervient l’expertise IoT et AI at Edge d’Avanade.
Commentaires