l'Intelligence Artificielle expliquée à travers l'intelligence humaine et la vie sociale

L'Intelligence Artificielle expliquée à travers l'intelligence Humaine et la vie sociale  

L’intelligence Artificielle est une discipline qui tente d’imiter une partie de l’intelligence humaine, animale et des êtres vivants avec des algorithmes (procédure qui montre à un ordinateur comment résoudre un problème avec une suite d’instructions). L’apprentissage automatique (Machines Learning) est une partie de l’intelligence artificielle utilisant des algorithmes qui permettent à l’ordinateur d’apprendre comme un être vivant de trois façons différentes : L’apprentissage Supervisé (Supervised Learning), L’apprentissage Non supervisé (UnSupervised Learning) et L’apprentissage par renforcement (Reinforcment Learning). On peut considérer aussi un 4e type,   l’apprentissage semi-supervisé qui n’est qu’une combinaison des deux premiers. 

Dans cet article, je tenterai de présenter quelques concepts de base de l'intelligence artificielle en racontant quelques exemples courants de la vie sociale et en racontant quelques récits de ma vie d'enfance. 

1. Apprentissage Supervisé 

Quand vous avez un malaise particulier ou des symptômes quelconques (température, vomissements, yeux ternes, etc), quelqu’un d’expérimenté comme votre maman, saura peut être deviner votre maladie sans avoir besoin de consulter chez le médecin. Dans ce cas, votre mère fait de la prédiction de la maladie en utilisant de l’apprentissage supervisé en tentant, à partir des quelques mesures ou signes (inputs) de diagnostiquer le type de maladie (Output). Pour atteindre cet état d’expertise, elle a capitalisé des milliers d’expériences similaires. Depuis que vous étiez bébé, elle était contrainte, à maintes reprises, de vous amener chez le médecin à chaque fois que des signes anormaux affectent votre état, pour effectuer des examens médicaux et des analyses qui concluent votre type de maladie et quel traitement à utiliser. Votre maman a fait de l’apprentissage supervisé à partir des milliers d’expériences  vécues. En effet, son cerveau  a appris à partir de ces cas, à trouver une relation approximative qui lie les symptômes à une maladie, à force de constater les données des expériences, grâce aux milliards de connexions existant entre des milliards de neurones biologiques de notre cerveau, qui existent entre les symptômes (Inputs) et le type de maladie (Output).  Il a aussi appris, à forcer d’expérimenter, quel est le meilleur traitement à prendre pour une maladie particulière (سال المجرب او ما تسالش الطبيب). Ce Proverbe Marocain qui signifie « Demander le conseil à quelqu’un qui a vécu des expériences de maladies est plus précieux que demander le conseil à un Médecin non expérimenté) cache la force de l’apprentissage supervisé en apprenant à partir des exemples de données étiquetées. 

L’apprentissage supervisé est donc un type d’apprentissage est basé sur les exemples de données étiquetées (Data Set) qui ont été relevés à la suite des expériences des experts métiers. Par exemple,  un médecin qui s’intéresse à caractériser une maladie particulière comme la COVID 19,  va penser à collecter des données sur tous ses patients avant d'effectuer un test PCR. Pour chaque patient, il va relever des informations diverses comme son poids,  son  groupe sanguin, son âge, sa température, sa tension artérielle, s’il est fumeur, s’il a une maladie chronique , s’il a été déjà vacciné ou non, quel type de vaccin, etc. Toutes ces données  représentent les Entrées de l’échantillon (Inputs). Après avoir effectué un Test PCR, il conclut si le patient est atteint  ou non et après une radio thoracique, il note la valeur de la charge virale du virus. Ces données représentent les Sorties (Output) ou l’étiquette de l’échantillon. Nous avons donc un échantillon étiqueté pour lequel on connait les entrées et les sorties. Avec le temps, le médecin, après avoir examiné des milliers de patients avec la même procédure,  finira par construire un ensemble de données (Data Set) qui représentent les données cliniques de la maladie du Coronavirus. Ces données  sont une mine d’or pour les algorithmes de l’intelligence artificielle et que l’être humain ne peut pas analyser. Les algorithmes d’apprentissages supervisés analyseront donc ces données étiquetées pour tenter de trouver la relation qui existe entre les entrées et les sorties. Cette phase s’appelle la phase d’apprentissage de l’algorithme qui crée un modèle représentant un petit cerveau avec des milliers de neurones connectés entre eux. Une fois cette phase d’apprentissage terminée, vient une deuxième phase d’évaluation du modèle qui consiste à lui donner les données en entrées d’un ensemble de nouveaux patients qu’il n’a pas vu pendant la phase d’apprentissage, mais pour lesquels on connait les résultats avec des analyses de test PCR pour constater si notre modèle a prédit les mêmes résultats que ceux obtenus par les analyses médicales. Si le modèle a réussi la prédiction de bons résultats à hauteur de plus de 98 %, on peut conclure qu’on peut faire confiance au modèle. Dans ce cas, nous n’aurons plus besoin de faire un Test PCR pour savoir si on est atteint de la COVID 19, ni faire une radio thoracique pour savoir la charge virale. Il suffirait de donner à l’ordinateur les données du patient (poids, température, etc) pour faire la prédiction et vous confirmer  si vous être positif et estimer  la charge virale du virus.  Si le taux réussite de la phase d’évaluation est inférieure à 98 %, on conclut que les données utilisées dans la phase d’apprentissage ne sont pas bonnes ou le nombre d’échantillons utilisé dans le Data set d’apprentissage n’est pas encore suffisant, ou la qualité des données collectées par le médecin ne sont pas bonnes ou tout simplement les paramètres de l’algorithme utilisé ne sont pas bons.

Dans le contexte de l’enseignement, imaginez que le professeur, au lieu de faire le cours pour montrer aux étudiants comment résoudre un problème dans un domaine particulier, se limite à leur donner directement des milliers d’exercices avec solutions (Output). Ensuite, les élèves, à force d’analyser ces milliers d’exercices avec solutions,  finiront par apprendre eux même les relations qui lient les entrées de l’exercice avec leurs solutions (Phase d’apprentissage). Pour la phase de Test, le professeur va donner aux étudiants une centaine d’exercices pour lesquels il connait déjà la solution afin de vérifier si les élèves ont assimilé le cours, notamment si le score est minimum 98 %. A chaque  nouvel exercice ,  le professeur fera confiance à l’élève qui réussit à atteindre la phase d’évaluation à plus de 98%. Dans ce cas-là, pour lui, cet apprenant est une boîte noire qui sait résoudre des problèmes, sans savoir comment il le fait. Cependant,  cette boite noire finira sans doute par se tromper (jamais de 100% de réussite dans la phase d’évaluation). Ce qui peut engendrer des dégâts. C’est bien cela le danger de l’intelligence artificielle. Quand on estime qu’un algorithme a bien appris à résoudre des problèmes, il aura toujours besoin de la présence humaine pour constater des anomalies particulières et se faire aider par l’expertise de l’Homme et permettre à  l’IA de se corriger et s’améliorer avec le temps. Ce qui nous amène à  la notion d’un autre type d’apprentissage à savoir l’apprentissage par renforcement qui sera expliqué par la suite.

En informatique,  pour créer des modèles de machines Learning avec l’apprentissage supervisé, beaucoup d’algorithmes sont utilisés dans la littérature comme : « SVM », « Random Forest », « Arbres de Décision » ou encore les réseaux de neurones artificiels qui représentent une approximation de mode de fonctionnement des réseaux de neurones biologiques des êtres humain et animale, etc. Les neurones du réseau sont organisés en couches. chaque couche est composée d'un nombre quelconques de neurones. Chaque neurone d'une couche est connecté aux neurones des couches suivantes. Quand le nombre d'entrées (Inputs) n'est pas important, seules deux couches ou 3 voire une seule couche de neurone peut suffire. Si le nombre d’entrée du modèle est très important comme pour le cas des prédictions à partir des images ou chaque pixel représente une entrée, le nombre de couches de neurones du modèle devient très important. On parle alors d’un apprentissage profond  (Deep Learning). Pour les prédictions à partir des images, les algorithmes de Deep Learning qui ont prouvé leur efficacité,  on trouve CNN (Convolutional  Neural Network : Réseaux de neurones à convolution). Pour la prédiction à partir des séquences temporelles comme le signal Audio ou vidéo, les algorithmes de de Deep Learning les plus connus sont RNN (Réseaux de neurones Récurrents) avec l’une de ses variantes les plus efficaces comme LSTM (Long Short Term Memory). 



 Les algorithmes basés sur les réseaux de neurones se basent sur le calcul de l’algèbre linaires, c’est-à-dire des calculs matriciels. Dans le cas de Deep Learning, le nombre de neurones du modèle et le nombre d’exemples de données d’apprentissage est très élevé. Ce qui fait que l’algorithme est contraint de faire des calculs sur des matrices de très grandes dimensions. Ceci entraîne un temps de calcul excessif pendant la phase d’apprentissage. La phase d’apprentissage peut prendre des heures et parfois des jours. C’est la raison pour laquelle, il faut utiliser des machines parallèles qui contiennent des milliers de micro-processeurs pour accélérer le calcul. Les cartes GPUs (Graphical Processing Unit) qui sont des cartes graphiques  créés principalement pour les jeux vidéo,  ont été la principale solution utilisée dans ce domaine. Si vous voulez entraîner un modèle de Deep Learning, vous avez intérêt à acheter un ordinateur qui contient des cartes GPUs comme NVIDEA, non pour les jeux vidéo, mais pour accélérer l’entraînement des modèles de DeepLearning pour lesquels les CPUs ne sont pas suffisants. Il faut donc combiner les CPUs et les GPUs.

Pour créer des applications de Machines et Deep Learning plus facilement, des FrameWorks existent pour tous les langages de programmation. On peut citer les plus populaires : pour

  • Le langage Python : TensorFlow, KERAS de Google, PyTorche Face book, etc.
  • le langage JAVA : DeepLearninG4J
  • Java Script : TensorFlowJS
  • C# : ML.Net
2. Apprentissage Non Supervisé :

Comme expliqué dans l’article précédent, dans le domaine de l’Intelligence Artificielle, L’apprentissage Automatique (Machines Learning) peut se faire de trois façons : L’apprentissage supervisé, l’apprentissage non supervisé et l’apprentissage par renforcement. Dans l’article précédent j’ai tenté d’expliquer l’apprentissage supervisé avec des exemple très simples. Dans ce post, je vais tenter de faire pareil pour banaliser, au mieux que je puisse, comment fonctionne l’apprentissage non supervisé parallèle et distribué.





Pour expliquer l’apprentissage non supervisé, un exemple me vient en tête. Quand j’étais encore enfant, mon père que Dieu aie son âme, LAH IRHMO رحمه الله , connu par le surnom « DADDA BOULLAH », me demandait de temps en temps de l’aider dans les champs surtout pendant la période de récolte des fruits ou légumes. Quand il est question de récolter les dattes, je l’accompagnais pour l’aider, mais surtout que j’y trouvait beaucoup de plaisir. Dans Notre village ISFOUTALIL, à proximité de OUARZAZATE, les dattiers n’étaient pas aussi hauts que celles qui se trouvent dans des régions au du sud de OUARZAZAT comme ZAGORA qui est très connue par la qualité de ses dates.

Toutefois, Il fallait quand même grimper les arbres d’une hauteur de 6 à 8 mètres pour pouvoir couper les baies qui groupaient les dattes. Des personnes spécialisées souvent très souples et acrobatiques sont très sollicitées pour accomplir ce genre d’opération qualifiée de pénible et qui n’est pas sans risque vu les moyens artisanaux utilisés. En bas de l’arbre, il fallait au minimum 4 personnes dont je suis parfois candidat, qui tenaient chacun un coin d’une couverture multi-fonctions la rendant tendue loin du sol, pour accueillir les baies des dattes qui allaient être jetés en chute libre une fois découpées par le Grimpeur et éviter ainsi qu’elles s’écrases au sol. IL fallait avoir les muscles et les dorceaux pour ne pas relacher son coin de couvertures et éviter une éventuelle Gifle de rigolade de la part des grands.

L’objectif était bien sûr de garder en bon état les fruits. Une fois l’opération terminé, il fallait faire une classification qui consistait à séparer les différentes catégories des dattes. Elles y en avaient celles qui sont bien cuites en bon état et prêtent à être consommées, celles qui sont trop cuites à la limite d’être en mauvaise état, celles qui ne sont pas encore cuites (ABLOUH) qui nécessitaient d’être gardées exposées au soleil pendant quelques jours supplémentaires au toit de la maison pour qu’elles deviennent consommables, celles destinées à être rejetées, celles qui destinées à être consommée par les animaux domestiques après une étape de préparation.

Bref, moi je faisais partie de ceux qui devrait exécuter cette tâche de classification. L’opération consistait donc à créer répartir les dattes en groupes (Clusters) selon une mesure de similarité qui décide qu’une unité de datte (Individu) appartient à quel groupe. Cette mesure de similarité se basait uniquement sur la capacité de yeux à faire la différence, mais aussi le toucher comme capteur qui indique le degré de cuisson de la datte. Comme l’opération se fait par plusieurs personnes en parallèle (Ordinateur parallèle à plusieurs Micro-processeurs), cette tâche peut se faire plus rapidement proportionnellement au nombre des personnes qui y travaillent (Nombre de processeurs) et aussi les vitesses et performances des travailleurs (Fréquence des Micro-processeurs). L’opération se fait en plusieurs itérations. Souvent, dans la première itération, quelques dattes n’étaient pas classées dans le bon groupe. C’est mon père qui est plus expérimenté qui viendrait corriger d’une manière plus fine l’opération de clustering en deuxième itération pour décider de déplacer quelques dattes d’un groupe vers un autre groupe adéquat selon sa propre vision et son expertise. Parfois mon père ne le faisait rien que pour nous montrer qu’il faut faire plus d’efforts pour apprendre plus davantage et chercher toujours plus de précision.
Au bout de plusieurs itérations on finit par apprendre à classifier les dattes d’une manière très précise. Chaque unité de dattes dispersée au sol, on la prend et on la jette rapidement vers le bon cluster. C’est bien la phase de prédiction.

40 ans après, quand je travaillais dans mon doctorat d’état avec mon très cher ami et collègue le Professeur BOUATTANE qui est lui-même issu des régions de FIGUIG très connue par ses beaux palmiers, Il étaient question de travailler sur des algorithmes parallèles de clustering comme KMeans, comme l’une des applications de validation d’un modèle de machine virtuelles basées sur des systèmes multi agents que je développait à l’époque. Cet algorithme de classification ou de clustering fait parti de la famille des algorithmes de l’apprentissage non supervisé, la deuxième des trois méthodes de Machines Learning (Apprentissage automatique) de l’Intelligence Artificielle. Ce genre d’algorithme n’est rien d’autres que la méthode qu’on utilisait dans l’exemple de classification des dates. Si vous avez compris la méthode qu’on utilisait pour classifier les dates en plusieurs clusters, c’est que vous avez compris ce que c’est l’apprentissage non supervisé (UnSupervised Learning) don voici une définition

Dans le domaine informatique et de l'intelligence artificielle, l'apprentissage non supervisé désigne la situation d'apprentissage automatique où les données ne sont pas étiquetées (au départ quand on prend une datte, on ne connait pas encore à quel groupe elle appartient, car on ne connait pas encore le nombre de cluster, ni comment on va les classifier). L'apprentissage non supervisé consiste à apprendre sans superviseur. Il s’agit d’extraire des classes ou groupes d’individus présentant des caractéristiques similaires (Mesures de similarité). La qualité d'une méthode de classification est mesurée par sa capacité à découvrir certains ou tous les motifs cachés (Quand un vrai expert regarde les dattes, il pourra voir des caractéristiques que les autres ne pourront pas voir et qu’il va prendre en considération dans le calcul de la mesure de similarité pour décider à quel groupe appartient la date et peut être créer un nouveau cluster si cette caractéristique les distinguent des autres individus des autres groupes).

L’un des algorithmes d’apprentissage supervisé qui sont très connu est K-MEANS. Dans nos travaux de recherche on tentait d’implémenter à l’époque cet algorithme d’une manière parallèle et distribuée. C’est tout simplement le cas de l’exemple des dates ou plusieurs agents participent en même temps à l’opération de classification. On le faisait de deux manières soit que tous les agents travaillent sur la classification d’un grand lot pour former directement les clusters finaux. En informatique c’est ce qu’on appelle Systèmes Parallèles à mémoire partagée ou encore l’architecture SIMD (Single Instruction Multiple Data) dans le quels tous les agents exécutent la même instruction (classifier une date), sur des données multiples (chacun s’occupe de classifier des dattes différentes). Plus vous avez le nombre d’agents important, plus le travail se fait plus rapidement. En informatique en utilise des Cartes GPUs qui contient des milliers de petits microprocesseurs pour accélérer ce genre de calcul. Ce modèle à mémoire partagé a un inconvénient c’est que qu’on crée des zones de conflits car tous les agents travaillent sur le même lot. Ça peut arriver que la main d’un agent heurte celle d’un autre agent dans l’exemple de classification des dates. Le deuxième inconvénient c’est que tous les agents devraient travailler au même endroit là ou se trouve grand lot des dattes.

En Informatique, Ceci revient à utiliser plusieurs microprocesseur (GPUs) d’un même ordinateur qui partagent une même mémoire ou les données son stockées. L’opération de Clustering peut se faire également d’une manière distribuée. Cela revient à diviser le grand lot de date en plusieurs sous lots en fonction du nombre de agents et puis chaque agent peut travailler seul sur son propre part du lot pour faire sa classification indépendamment des autres. Ici on évite le problème de zone de conflit et en plus les agents ne son pas obligés de travailler au même endroit. Chacun peut travailler d’une manière distribuée dans son propre coin. Une fois que tous les agents terminent leur classification, il reste à faire une opération d’agrégation des sous clusters qui consistent à grouper les sous clusters homogènes et on obtient le même résultat. Techniquement, on peut utiliser plusieurs ordinateurs séparés connecté en réseau pour exécuter ce genre d’algorithme. Ce genre d’algorithme est aussi connu par le nom « MapReduce » qui est l’un des algorithmes connus en Big Data (Mapper pour Découper une grande structure de données en plusieurs morceaux en vue de les traiter d’une manière distribuée et ensuite Reduce pour faire l’agrégation des résultats obtenus pour morceau traité). A vous de juger quel est l’algorithme qui est plus performant et quels sont les avantages et inconvénients de chacun des deux méthodes : le CLUSTERING Parallèle à mémoire partagée ou le Clustering Distribué. Vous n’avez qu’à penser l’exemple de classification des dates. 

3. 𝗔𝗽𝗽𝗿𝗲𝗻𝘁𝗶𝘀𝘀𝗮𝗴𝗲 𝗽𝗮𝗿 𝗿𝗲𝗻𝗳𝗼𝗿𝗰𝗲𝗺𝗲𝗻𝘁.

=> 𝗘𝗽𝗶𝘀𝗼𝗱𝗲 𝟭 : 𝗮̀ 𝗙𝗼𝗿𝗰𝗲 𝗱𝗲 𝗙𝗼𝗿𝗴𝗲𝗿 𝗼𝗻 𝗱𝗲𝘃𝗶𝗲𝗻𝘁 𝗔𝗠𝗭𝗜𝗟


Pour vous expliquer ce que c’est l’apprentissage par renforcement, j’aimerai bien vous raconter mon histoire d’enfance avec l’unique Forgeron du village qu’on nommait 𝗔𝗠𝗭𝗜𝗟 dans notre Langue Native Tamazight. Cette histoire tentera de vous projeter dans la période entre 1975 et 1985.

L’atelier de ce Forgeron était le seul endroit du village où l’on pouvait voir un clicher artisanal de l’Industrie. Son petit atelier était situé stratégiquement dans une place qu’on s’appelait « 𝗔𝗥𝗛𝗕𝗜 », l’une autre place du Village qui engorge une autre partie importante de la mémoire du vécu du village et qui mérite de lui consacrer un récit à part. A l’entrée de cette place, se trouvait l’unique Mosquée du village. Ce qui exposait cette place à une dynamique particulière. Pour apprendre les bases de l’alphabet et le coran (القرآن), les enfants de notre âge (de 5 à 10 ans), étaient censés aller à la mosquée « 𝗧𝗜𝗠𝗭𝗚𝗨𝗜𝗗𝗔 », le lieu ouvert de la connaissance et de la sagesse. On y allait presque chaque jour, à l’exception du Mercredi qui représentait un jour de vacances, mais aussi un jour ou il fallait tout de même s’y présenter pour payer des frais symboliques hebdomadaires au FQIH (𝗧𝗔𝗟𝗕) de 𝗧𝗜𝗠𝗭𝗚𝗨𝗜𝗗𝗔. L’unité de ces frais hebdomadaire était de l’ordre d’un ŒUF (𝗧𝗔𝗚𝗟𝗔𝗬𝗧) ou son équivalent en monnaie « 20 centimes de dirham » (4 DRIAL). Ceux qui avaient plus de moyens donnaient au FQIH plus que cette valeur. Ce qui leurs valait des privilèges de la part du FRIQ, qui se matérialisaient par le fait éviter les couts de bâtons de suprématie parfois injustes de la part du FQIH et qui étaient presque inévitables en classes. Les causes de Ces châtiments pourraient être d’ordre pédagogiques au moment il fallait réciter le courant devant lui, le fait de ne pas pouvoir résister au sommeil instantané, comme c'est aussi le cas du FQIH lui-même, vers le plein milieu de la journée (14H) sous une chaleur écrasante, cela peut être aussi à cause du bavardage, ou encore injustement comme ça ; une façon de nous envoyer un message comme quoi le payement du dernier Mercredi n’était pas satisfaisant pour lui. Bref, Revenons à notre sujet principal AMZIL. A chaque fois que j’en avais la possibilité, je prenais beaucoup de plaisir à apprécier ses merveilles en le surveillant de près. Bien sûre à condition de ne pas avoir la mal chance, très courante, de trouver des personnes de l’âge de mon père bien allongées à l’entrée de la porte de son atelier qui discutent souvent sur des sujets d’adultes. Ce qui nous valait une expulsion des lieux sous prétexte d’aller jouer avec les enfants de notre âge. Les adultes ne prenaient pas conscience que les gamins étaient très intelligents et déduisent ce qui se cachaient derrière ces expulsions non fondées ni justifiées. Comme j’insistai beaucoup de voir comment travaille ce Forgeron, j’ai fini par trouver chez lui une place privilégiée. L’activité principale du Forgeron consistait à confectionner les chaussures en fer (Fer à Cheval : 𝗧𝗜𝗦𝗦𝗜𝗟𝗔 pluriel de 𝗧𝗔𝗦𝗦𝗜𝗟𝗧 en langue Tamazight) destinées aux ânes et aux chevaux qui étaient presque les seuls moyens de transport des habitants et des marchandises du village. J’étais impressionné par la vitesse avec laquelle il confectionnait ces chaussures « fer à cheval ». Sa main droite tenait avec une longue pince métallique, une barre de fer submergée dans un feu produit par la combustion du charbon du bois. Sa main gauche, avec un seul doigt et avec beaucoup de délicatesses, fessait tourner un souffleur à base d’un système poulie courroie qui produisait suffisamment de courant d’air nécessaire pour accélérer la combustion du charbon. En quelques minutes, la barre de fer change de couleur vers un dégradé de couleur entre le jaune et le rouge qui traduisait que la température du fer a rendu la matière de la barre suffisamment mole et déformable facilement. Brusquement, en plaquant la barre de fer sur un grand support métallique et avec quelques coups de marteau sur le fer, il réussit rapidement à déformer le fer pour lui donner la forme à la taille du pied de l’âne qui attendait juste à côté avec beaucoup de sagesse non habituelle. On dirait que l’âne montrait qu’il attendait impatiemment ses nouvelles chaussures. Rien qu’avec ses yeux et son regard pointu, AMZIL scan la pointure qu’il fallait pour la bête. S’il le fallait, l’opération de finition de TASSILT se fait en plusieurs itérations (Souffler, Feu, Rouge ? , Coups de marteaux, …). La dernière étape de cette procédure était de percer, avec la même manière, les quatre trous de TASSILT qui serviraient de fixation sur les pattes de l’âne. Une fois confectionnées, la nouvelle chaussure est trompée dans l’eau pour prendre sa part de rigidité à la surface. J’ai appris, 13 ans après en préparant mon baccalauréat en Fabrication Mécanique à Marrakech ce que c’est une trompe et pleins d’autres choses comme la sidérurgie (Métallurgie du fer) avec son cycle du fameux Haut-Fourneau et toutes les machines de laminage, Pliage, Estompage, etc. et j’ai appris à formaliser ce que AMZIL faisait comme activité. Pour le reste, AMZIL, utilisait un couteau spécial et un autre marteau pour couper les parties mortes et inutiles des pâtes de l’âne (l'équivalent des angles pour nous) pour que le périmètre de la patte ne dépasse pas le périmètre de la chaussure en fer. Cette opération, apparemment, ne faisait aucun mal à l’âne. La preuve c’est qu’il n’émettait aucune grimace particulière signifiant qu’il a eu un mal particulier. Enfin, il ne restait qu’à enfoncer des clous spéciaux fabriqués localement, pour fixer la chaussure sur la patte de l’âne. Ces clous devraient prendre une direction très précise avec une inclinaison bien calculée mentalement, pour que la pointe du clou sort du côté de la patte, pour qu’elle soit ensuite pliée et enterrée autour de la surface de la patte. J’ai compris par la suite que, si cette inclinaison est ratée, la pointe du clou finirait par toucher le fond du pied de l’âne. Avec la douleur que ce faux geste allait provoquer pour l’âne, la bête réagirait instantanément avec un coup de pied non mesuré et imprévisible qui pourraient finir en plein visage du propriétaire de l’âne. Ce dernier se devrait de tenir le pied de sa bête tout en étant pliée en bonne position pour permettre à AMZIL de foncer confortablement ses clous. Par mal chance, ce coup de pied de l’âne peut finir aussi sur le visage du Forgeron lui-même. C’est justement ce genre de scènes qui excitaient et plaisait au gamin et qui les attirait car ça nous rendait fous de rire. Bien sûre, il n’y a pas d’assurance pour les accidents de travail, ni d’ailleurs de médicaments. En une vingtaine de minutes l’âne peut savourer ses nouvelles chaussures. Quant à moi, pendant tout le processus, mes yeux restaient, tout le temps, très ouvertes pour ne rater aucune séquence du processus. Cet endroit était mon univers préféré. J’apprenais beaucoup de choses de l’industrie du fer rien qu’en observant ce magistral AMZIL. Avec le temps j’ai fini par avoir des privilèges de sa part pour lui donner un coup de main en s’occupant de la soufflerie et rien de plus. L’un de ses petits-enfants, qui devrait assurer sa relève, lui, avait le privilège d’essayer des coups de marteaux pour déformer le fer, mais restant très loin de la perfection du Maitre et surtout pas question de tenter la dangereuse opération d’enfoncer les clous d’attache. Bien sûre l’activité de AMZIL ne se limitait pas à la confection des fers à cheval. De temps en temps il reçoit de la part des habitants des Théières Trouées qu’il devrait souder et des tables en métal qui ont besoin de leur confectionner des pieds. En te cas moi, je n’est pas pu continuer à faire comme lui, mais j’ai tout de même appris à fabriquer des pièges en métal qu’on utilisait pour chasser des oiseaux, mon activité préférée mais cela est une autre histoire. Revenant à l’Intelligence humaine avant l’intelligence artificielle. Remarquons bien qu’il est quasi impossible d’apprendre à forger à la perfection, rien qu’en écoutant ou en observant le Forgeron. Il ne pourrait pas donc s’agir d’un apprentissage supervisé en se limitant à des données transmises par notre expert le forgeron. Le problème est beaucoup plus compliqué que cela. Il faut absolument tenter de faire et refaire ces procédures des milliers de fois vous-même pour finir au bout quelques mois voire quelques années à apprendre à reproduire les gestes du forgeron à la perfection. L’apprentissage de ce métier artisanal nécessite à votre cerveau d’apprendre à faire des calculs mentaux très complexes sans que vous en aperceviez. C’est bien là ou se cache le mystère de l’être humain. En Intelligence Artificielle, des Mathématiciens dont André MARCOV et BELLMAN-Fort ont réussi à formaliser cette façon d’apprendre à faire des choses qui est très difficiles chez les humains et animaux. Ce genre d’apprentissage qui est basé sur l’apprentissage par les expériences vécues et non pas par les données s’appelle l’𝐀𝐩𝐩𝐫𝐞𝐧𝐭𝐢𝐬𝐬𝐚𝐠𝐞 𝐩𝐚𝐫 𝐫𝐞𝐧𝐟𝐨𝐫𝐜𝐞𝐦𝐞𝐧𝐭 ou 𝗥𝗲𝗶𝗻𝗳𝗼𝗿𝗺𝗲𝗻𝘁 𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴. Ce qui traduit bien le proverbe « à Force de Forger on devient AMZIL ». Expression qui m'a été inspirée par mon cher cousin DADA LHAJ ABLLAH, un grand Monsieur qui était d'une des éclaires du village et qui nous a montré que tout est possible et avec qui j'ai renoué de très belles conversations grâce en partie à mes récits dont nous partageons beaucoup de choses. => 𝗘𝗽𝗶𝘀𝗼𝗱𝗲 𝟮 : 𝗗𝗶𝗳𝗳𝗲́𝗿𝗲𝗻𝗰𝗲 𝗲𝗻𝘁𝗿𝗲 𝗹’𝗮𝗽𝗽𝗿𝗲𝗻𝘁𝗶𝘀𝘀𝗮𝗴𝗲 𝘀𝘂𝗽𝗲𝗿𝘃𝗶𝘀𝗲́ 𝗲𝘁 𝗹’𝗮𝗽𝗽𝗿𝗲𝗻𝘁𝗶𝘀𝘀𝗮𝗴𝗲 𝗽𝗮𝗿 𝗿𝗲𝗻𝗳𝗼𝗿𝗰𝗲𝗺𝗲𝗻𝘁 : Quand vous donnez à un élève un ensemble d’exercices avec solutions sans lui faire de cours qui montre les formules à utiliser pour résoudre ces exercices, Il pourra, avec beaucoup d’efforts et beaucoup de tentatives, en analysant ces exercices avec leurs solutions, déduire une approximation de la méthode à utiliser résoudre ce genre d'exercices et deviner peut-être les formules qui lient les entrées et les sorties de l’ensemble de l’exercice. C’est un travail certes difficile, mais c’est possible. En Intelligence artificielle, comme expliqué auparavant dans l’un des articles précédents, cette façon d’apprendre à faire des choses s’appelle l’apprentissage Supervisé. On apprend avec des exemples de données étiquetées avec des entrées/ sorties fournies par un expert en la matière. Un petit gamin, qui ne comprend pas encore ce que vous lui dites, ne peut pas apprendre avec de manière supervisée avec des exemples de données, mais plutôt par ses propres expériences. Le gamin commence par la phase d’exploration. Il tentera de toucher tout ce qu’il voit devant lui, il tentera de marcher dans toutes les directions sans limites sans mesurer le danger. Il agira sur son environnement pour l’explorer. A chaque fois qu’il agit sur l’environnement. Par exemple marcher depuis son lit pour tomber au sol, il reçoit des récompenses de la part de l’environnement. Ses récompenses peuvent être soit positives soit négatives. Quand il sautera de son lit, il va se faire mal et passera des moments à pleurer et son cerveau notera qu’il la récompense est négative. La réaction douloureuse de l’environnement après cette expérience changera l’état du bébé pour passer de l’état normale vers un état avec des blessures et des douleurs. Son cerveau notera par conséquent que cette expérience négative est à éviter dans le futur. S’il met dans sa bouche un bonbon sucré qui fond rapidement dans sa bouche qu’il découvre à coté, il finira par apprécier cette expérience et son cerveau notera que ce genre d’actions apporte des récompenses positives. Le gamin continuera à explorer l’environnement, jour après jour et à apprendre de chaque expérience vécue. Parfois l’enfant ne peut pas savoir si l’expérience est positive ou négative. C’est le cas où il casse un plat précieux et que ses parents, qui font partie de son environnement doivent intervenir pour lui gifler peut-être les mains pour qu’il sache que qu’il s’agit bien d’une récompense négative de l’environnement. Une fois qu’il tente les choses plusieurs fois, il finira tout seul à apprendre à prendre les bonnes décisions en se trouvant dans une situation donnée et grâce ce qu’il a appris pendant la phase d’E𝘅𝗽𝗹𝗼𝗿𝗮𝘁𝗶𝗼𝗻. Il s’agit là de la phase d’E𝘅𝗽𝗹𝗼𝗶𝘁𝗮𝘁𝗶𝗼𝗻 qui consiste à exploiter ce que votre cerveau a appris dans le passé. Ce qui permet de prendre les actions optimales en se trouvant dans un état (Situation) donnée. => 𝗘𝗽𝗶𝘀𝗼𝗱𝗲 𝟯 : 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺𝗲 𝗔𝗽𝗽𝗿𝗲𝗻𝘁𝗶𝘀𝘀𝗮𝗴𝗲 𝗽𝗮𝗿 𝗥𝗲𝗻𝗳𝗼𝗿𝗰𝗲𝗺𝗲𝗻𝘁 𝗲𝘅𝗽𝗹𝗶𝗾𝘂𝗲́ 𝗮𝘂𝘅 𝗶𝗻𝗳𝗼𝗿𝗺𝗮𝘁𝗶𝗰𝗶𝗲𝗻𝘀 : Si on voudrait créer un AMZIL Robot virtuel capable avec produire un fer à cheval à partir d’une barre chauffée et prête, avec un minimum possible de coups de marteau. Il faudra d’abord l’entrainer ce robot. Cette phase d’entrainement, se déroulera comme suit : 𝟏. 𝐄𝐭𝐚𝐩𝐞 𝟏 : On prépare une nouvelle barre de fer bien chauffée sous le feu ; 𝟮. 𝗘𝘁𝗮𝗽𝗲 𝟮 : Le robot va tenter de taper un coup A(t) (Prendre une Action commandée par des moteurs à l’instant t) sur la barre n’importe comment (Aléatoirement). Chaque coup (Action) va entrainer la déformation de la barre. On dira que la barre a changé d’état en passant de l’état S à l’instant t vers l’état S’ à l’instant t+1. L’état de la barre peut être représentée par une matrice représentant sa forme. On commencera petit à petit à former un graphe à états dont les nœuds représentent les états de la barre (S0, S1, S2, …, Sn) et les arcs qui lient les états sont représentés par les actions prises par le robot permettant de passer d’un état à l’autre. Chaque action peut être représentée par un vecteur de de paramètres du coup frappé par le rebot (Force, Vitesse des moteurs, position de prise du marteau, etc…). Le nombre d’états du graphe ne peut pas être déterminé car chaque expérience peut générer des états différents. On dira que le problème est 𝘀𝘁𝗼𝗰𝗵𝗮𝘀𝘁𝗶𝗾𝘂𝗲. Ce qui signifie que notre graphe à états n’est connu à l’avance. Si le nombre de formes possibles qu’on peut obtenir après chaque coup est fixe. On dira que le problème est 𝗱𝗲́𝘁𝗲𝗿𝗺𝗶𝗻𝗶𝘀𝘁𝗲. 𝟯. 𝗘𝘁𝗮𝗽𝗲 𝟯 : Ensuite Il nous faudra attribuer une récompense R (Reward) à l’état actuel de la barre. a) Cette récompense peut être positive, négative ou nulle. b) La récompense sera maximale (par exemple 10) si la forme de barre après le coup est dans la forme finale du fer à cheval. c) Elle sera minimale (par exemple -10) quand la barre est dans une forme irrécupérable pour désigner l’échec de la partie. d) Elle sera nulle pour signifier qu’il n’y a aucune récompense. Ce qui signifie que notre expert qui se charge de noter chaque coup du robot ne peut pas décider de la pertinence du fait que la barre soit dans cet état. e) Pour noter les actions du robot, on va supposer que nous avons à notre disposition un vrai expert (un vrai AMZIL) bien disponible pour très longtemps pour assister et évaluer chaque coup du robot. Autrement il faudrait l’automatiser cette procédure avec une autre Intelligence Artificielle dont je reviendrai tout à l’heure. 𝟰. 𝗘𝘁𝗮𝗽𝗲 𝟰 : On reprend les étapes 2 et 3 jusqu’à ce que qu’on obtienne une récompense maximale positive de sortie et une récompense minimale négative de sortie. 𝟱. 𝗘𝘁𝗮𝗽𝗲 𝟱 : On reprend plusieurs fois depuis l’étape 1 avec une nouvelle barre (même état initial) pour refaire plusieurs expériences d’entrainement. 𝟲. 𝗘𝘁𝗮𝗽𝗲 𝟲 : Quand on estime que le nombre d’expériences réalisées, dans cette phase d’entrainement, par notre robot est suffisant, le robot a mémorisé toutes ces expériences par notre graphe à états. Chaque nœud du graphe représente un état de notre barre déformée et possède une récompense attribuée. A chaque état, on associe un ensemble d’actions possibles que le robot peut prendre quand la barre est dans cet état. Chaque action prise (coup de marteau) mène vers un autre état différent de la barre. Cette phase de se faire une représentation de cette manière de l’environnement s’appelle la phase d’exploration. 𝟳. 𝗘𝘁𝗮𝗽𝗲 𝟳 : Cette phase d’exploration doit se terminer par une phase d’apprentissage avec un calcul très important qui consiste apprécier et renforcer la valeur de toutes les actions qui ont été prises et ayant permet d’arriver à un état final. Pour cela, le robot va faire ce que l’on appelle une back propagation de la récompense finale obtenue à la sortie, vers les actions prises à partir des différents états précédents et ayant permis d’arriver à l’état final. Pour ce faire on exécute les opérations suivantes : a) Pour état S b) Pour chaque action A, de l’état S, c) Calculer une valeur Q à attribuer à chaque action A. Cette valeur mesure à quel point il est très intéressant de prendre cette action A en étant dans l’état S pour se retrouver dans l’état S’. Cette valeur est déterminée en utilisant une fonction qui s’appelle la « Value Function », en : • Retranchant de la valeur actuelle de Q une proportion (α Q) ou α représente le facteur d’apprentissage entre 0 et 1 (proche de 0) • En ajoutant la quantité (α R) ou R représente la récompense de l’état S • En ajoutant une proportion (α.γ) qui multiplie la valeur maximale de l’action A’ de l’état S’ou γ représente un facteur d’actualisation qui est entre 0 et 1 (proche de 1). Cette proportion représente le maximum de récompense qu’on peut espérer dans l’état futur S’en ayant pris l’action A à l’état S. Ce qui donne l’équation de de BELLMAN Suivante (Voir photo). d) Répéter les opérations a), b) et c) un certain nombre de fois suffisamment pour converger (jusqu’à ce que les valeurs des actions se stabilisent). Ce nombre s’appelle le nombre d’époques d’apprentissage. 𝟴. 𝗘𝘁𝗮𝗽𝗲 𝟴 : A ce stade notre Robot a appris comment forger les fers à cheval. Il peut désormais passer à la phase d’exploitation qui consiste tout simplement à prendre les actions optimales (les bons coups de marteaux) pour chaque état de la barre. Ce qui signifie que quand le robot se trouve dans un état S, il choit l’action qui maximise le nombre de récompenses (Actions qui possède une valeur de Q la plus grande parmi toutes les actions possibles qu’il peut prendre dans cet état) => 𝗗𝗲𝗲𝗽 𝗥𝗲𝗶𝗻𝗳𝗼𝗿𝗰𝗺𝗲𝗻𝘁 𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴 :
Vous trouverez bientôt le code source de quelques exemples d'implémentations de ce gernres d'algorithmes dans mon compte Github https://github.com/mohamedYoussfi et bientôt quelques vidéos sur ma chaîne Youtube avec mes étudiants en classe https://www.youtube.com/user/mohamedYoussfi
Dans les expériences de la phase d’entrainement du robot, nous avions besoin d’un expert pour attribuer des récompenses aux différents états après chaque coup de marteau. Un vrai expert AMZIL peut bien servir pour effectuer cette opération, mais il est aussi possible d’automatiser cette procédure en créant une autre Intelligence Artificielle de type apprentissage supervisée qui fasse cette tâche d’attribution des récompenses. Cela peut consister à créer un modèle de Deep Learning en utilisant les CNN (Réseaux de neurones à Convolutions). Pour entrainer ce modèle CNN, il nous faudrait un DataSet contenant des milliers d’images représentant les différentes formes de la barre en passant de l’état initial (Barre cylindrique) vers l’état final (Forme du Fer à cheval). On a qu’à filmer la barre en cours de déformation par un vrai AMZIL. Chaque image doit être étiquetée par une Récompense attribuée cette fois ci par un vrai expert. Une fois le modèle entrainé avec ce dataset, nous n’aurons plus besoin du Forgeron pour attribuer les récompenses. Il suffit d’installer des caméras dans les yeux du robot pour qu’il puisse observer lui-même la forme de la barre et attribut lui-même la récompense grâce à la prédiction effectuée par le modèle CNN entrainé. Dans ce cas nous diront que notre robot utilise la technique de Deep-Reinforcment Learning. Deep Learning est utilisé pour déterminer l’état de la barre grâce aux caméras et Reinforcment Learning pour permettre au robot de prendre l’action optimale dans un état donné de la barre.
- L'apprentissage supervisé : SVM, Arbres de Décisions, Réseaux de neurones, MLP, CNN, RNN, LSTM
Pour ne pas utiliser un robot pour entrainer notre modèle d'apprentissage par renforcement, on aurait pu se servir de AMZIL lui même. Il suffirait d'installer plein de capteurs sur lui pour mesurer tous les gestes qu'il produit pour confectionner TISSILA et des caméras pour surveiller les différents états de la barre en cours de déformation pour former notre graphe à états avec les récompenses adéquates plus facilement et encore plus efficacement. C'est cette technique qui est plutôt utilisée dans le domaine de la robotique. => 𝗘𝘅𝗲𝗺𝗽𝗹𝗲 𝗱𝗲 𝗹𝗮 𝘃𝗼𝗶𝘁𝘂𝗿𝗲 𝗮𝘂𝘁𝗼𝗻𝗼𝗺𝗲 𝗰𝗼𝗺𝗺𝗲 𝗮𝗽𝗽𝗹𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗱𝗲 𝗗𝗲𝗲𝗽-𝗥𝗲𝗶𝗻𝗳𝗼𝗿𝗰𝗺𝗲𝗻𝘁 𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴 : C'est d'ailleurs avec cette technique de Deep-Reinforcment Learning que la voiture autonome a vu le jour. Avec un modèle CNN, des caméras (Lidars), installé sur différents coins de la voitures, on arrive à faire une abstraction d'état de l'environnement. On détecte si des obstacles sont à coté, à quelle distance, types d'objets sur la route, etc... On fournit à l'algorithme QLearning (Reinforcment learning) entrainé dans un simulateur, cet état détecté par CNN. QLearning prend les bonnes actions (Accélérer, Freiner, tourner à gauche, tourner à droite, etc...) pour éviter les obstacles et atteindre l'objectif. Vous voyez donc que c'est QLearning qui est conduit et c'est CNN qui représente les yeux de la voiture. => 𝗦𝘂𝗶𝘁𝗲 𝗱𝘂 𝗖𝗵𝗲𝗺𝗶𝗻 : Et Bien, il ne reste plus qu'à implémenter des exemples d'applications d'IA utilisant : - L'apprentissage non supervisé : KMEANS - L'apprentissage par renforcement : Q-LEARNING - Deep-Reinforcment Learning : (CNN+Q-LEARNING)

Pour commencer, voici un exemple d'implémentation en Java très basique.

à vos réactions chers lecteurs ...

Commentaires

Enregistrer un commentaire

Posts les plus consultés de ce blog

Part 1- D’une Architecture Monolithique Vers une Architecture micro-services

Part 2 : D'une architecture monolithique vers une architecture micro-services

Prise en main de Spring Boot : Premier Service backend