top of page

L'Apprentissage Profond

Dernière mise à jour : 2 mars 2022




  1. Introduction

  2. Procédure d’apprentissage

  3. Organisation de l’apprentissage profond

  4. Les écueils du biais cognitif et du temps de calcul prohibitif

  5. Les perspectives de développement

  6. Conclusion





  1. Introduction


L’apprentissage profond (Deep Learning) est une technique récente, dans le domaine de l’Intelligence Artficielle, qui s’est imposé depuis environ 5 ans, comme la plus performante pour de nombreuses applications :


  • Identification d’images, pour la sécurité, le domaine médical, la conduite autonome, etc...

  • Reconnaissance de la parole pour la traduction automatique, les robots intelligents (chatbots), etc.

  • Les jeux, comme le Go, les Echecs, le Bridge, et…


Cette avancée technologique a pu se produire grâce aux progrès importants dans le domaine du matériel :


  • Ordinateurs puissants et rapides, suivant la loi de Moore qui, dès les années 1990, a prédit que la puissance de calcul des ordinateurs allait doubler tous les 3 ans, pour un prix divisé par 2.

  • Cartes graphiques performantes GPU, grâce à d’importants investissements de sociétés comme NVIDIA et Google. L’important parallélisme (opérations effectuées en même temps) est très adapté pour l’apprentissage profond.


De nombreux concours (Kaggle, ILSVRC), avec des milliers de participants et des prix importants (plusieurs millions de $), ont prouvé la supériorité de l’apprentissage profond sur toutes les autres techniques. Les 2 apports technologiques qui ont permis cette avancée sont, outre l’architecture sous forme de réseau neuronal :

  • La Rétropropagation du gradient, permettant de corriger les paramètres du réseau, par rétropropagation de l’écart en sortie entre le résultat du calcul, et ce qui était attendu.

  • La Convolution, ensemble de techniques permettant de réduire le temps de calcul.


Les importants investissements en Intelligence Artificielle aujourd’hui montrent que cette technologie est devenue mature, et ne subira pas les hivers précédents, quand les espoirs ont été déçus : IA symbolique des années 1960, systèmes experts des années 1980. C’est devenu une avancée majeure, au même titre que internet.


On peut donc dire que nous assistons aujourd’hui à une véritable révolution technique, combinant internet, les matériels performants, et l’Intelligence Artificielle. Au même titre que la machine à vapeur et que l’électricité, dans le passé.


L’apprentissage profond est bien adapté pour de grands ensembles de données, car il est auto-adaptatif et ne nécessite pas de mise en forme compliquée de ces données. C’est ainsi que le réseau LeNet de Yann LeCun a été utilisé par le service postal des Etats-Unis pour, dès les années 1990, automatiser la lecture des codes postaux sur les enveloppes de courrier.

  1. Procédure d’apprentissage


L’apprentissage se fait en général en 2 étapes :


  • Un ensemble de données d’apprentissage sont présentées au programme d’apprentissage, avec connaissance de leurs résultats de sortie, de manière à ce que ce programme apprenne. Ces donnés, dites d’entraînement, sont en quantité importante, (jusqu’à plusieurs millions) découpées en lots plus petits (de taille de l’ordre de 500), pour être présentées au programme en des époques successives. On calcule, à chaque époque, la perte, c’est-à-dire l’écart entre le résultat obtenu par le calcul, et le résultat attendu, et aussi la précision ou exactitude, caractérisant la valeur de ce calcul. Une mise ne forme de la perte et de l’exactitude sont nécessaires pour cela.

  • Une fois l’entraînement effectué, qui a permis de valider les paramètres du réseau, le programme est testé avec un nouveau jeu de données, en quantité plus réduite ; à chaque époque, on calcule la perte et la précision du calcul .


Une fois le système entraîné et validé, on présente des exemples pour vérifier que le système a bien appris, et a été validé.


  1. Organisation de l’apprentissage profond



L’apprentissage est préparé selon plusieurs phases :


  • Mise en forme des données d’apprentissage et des données de test pour qu’elles soient correctement prises en compte dans le programme.

  • Construction de l’architecture du réseau, à base d’objets appelés des neurones. Ces neurones sont composés de différentes parties

    • Un paramètre de réglage, qui sera calculé lors de l’entraînement

    • Une fonction de sommation de l’entrée du neurone, multipliée par le paramètre de réglage, avec un vecteur dit de biais

    • une fonction d’activation non linéaire (relu, sigmoïde, ,,,)


  • L’architecture du réseau comprend les parties suivantes :

    • Le nombre de couches (layers), avec, pour chacune, le type d’activation

    • Le nombre de niveaux par couche

    • Le type de connexion (Entièrement connectée ou Dense avec motifs globaux, convolution avec motifs locaux invariants par translation et hiérarchie spatiale de motifs, ,,,)

    • Une spécialisation de la couche de sortie, préparant l’étiquette de sortie


  • Utilisation d’un optimiseur, qui va réguler le programme en rétropropageant le gradient de la perte en sortie et se baser sur un facteur de vitesse pour déterminer la rapidité de mise en œuvre de cette rétropropagation. Une vitesse trop grande ne va pas permettre d’obtenir un optimum ; et une vitesse trop basse va engendrer un temps de calcul prohibitif.

  • Utilisation d’un programme dit de fit, qui va calculer, à chaque époque, la perte et la précision.


Il existe d’autres techniques pour organiser l’apprentissage, comme le mode non supervisé, où le programme n’est pas alimenté par des données avec étiquettes de sortie. C’est le programme qui se fabrique ses exemples, avec un objectif général à atteindre. Exemple du jeu de Go, où le programme non supervisé, se fabrique des millions d’exemples, jusqu’à atteindre l’objectif de maximiser le nombre de territoires, C’est ainsi que le programme de Go non supervisé a battu le programme de Go supervisé, lequel travaille avec des schémas préétablis par l’expérience humaine. Et ce programme a battu le champion du monde humain de Go, un jeune coréen.



  1. Les écueils du biais cognitif et du temps de calcul prohibitif


2 écueils importants doivent être surmontés lors de l’élaboration d’un réseau neuronal à base d’apprentissage profond.


L’écueil du biais cognitif


Il faut éviter toute forme d’homogénéité dans les données d’entraînement et de validation qui pourrait rendre inopérante la généralisation du modèle à d’autres exemples. C’est l’hétérogénéité et la diversité qui peuvent garantir la robustesse du modèle, sa capacité à généraliser à toute forme de nouvelle donnée, donc de fournir une réponse pertinente et valide aux nouveaux exemples. C’est cela qui permet de de gagner des concours de reconnaissance de forme en Intelligence Artificielle.


Les 2 formes de biais cognitif sont les suivantes :


  • Le surapprentissage (overfitting), qui intervient lorsque les données d’entraînement et de test (ou de validation) sont trop bien apprises, ce qui ne permet pas une généralisation à de nouvelles données. L’apprentissage est trop bon, circonscrit à des données trop particulières. C’est ce qui se passe lorsque les données de test sont trop voisines des données d’apprentissage

  • La fuite qui, tout comme le surapprentissage, intervient lorsqu’existe une connexion entre les données d’apprentissage et les données de test. C’est équivalent au délit d’initié en matière financière.


Pour assurer cette déconnexion entre données d’apprentissage et données de test, il existe différentes techniques, comme l’introduction aléatoire de réinitialisations dans les données de test ou l’annulation de certaines données (pooling). Il en va de la robustesse du modèle de prédiction, pour bien prédire le résultat de nouvelles données.


L’écueil du temps de calcul prohibitif


C’est en se noyant dans les détails que le modèle perd du temps à rechercher une solution.


Il faut donc regrouper les couches (layers) de manière à éliminer une bonne partie de leurs spécificités, mais pas trop, au risque de perdre les informations pertinentes permettant de retrouver, in fine, la forme générale recherchée.


C’est ce que fait très bien la convolution, qui lui a permis de supplanter les autres techniques de reconnaissance en Intelligence Artificielle. Par différents moyens, elle regroupe les données des premières couches, pour simplifier le calcul sans trop le dégrader.


  1. Les perspectives de développement


Elles visent toutes à accélérer les résolutions des modèles, à trouver le meilleur compromis entre le temps de calcul à réduire, et la qualité de la solution à fournir.


Elles s’appuient sur une qualité de matériel de plus en plus performant et sur des procédures logicielles de plus en plus efficaces.


Elles visent à étendre la diversité des applications qui peuvent être traitées en Intelligence Artificielle.


Par exemple, il est possible d’aller au-delà de la rétropropagation du gradient, qui est une fonction puissante pour résoudre efficacement des applications dérivables. Car le domaine des applications non dérivables est bien plus vaste.


Les nouveaux développements visent aussi à rendre réutilisables des modèles déjà réalisés sur des applications existantes, de manière à traiter de nouvelles applications, sans avoir à tout reprendre à zéro.


L’amélioration des techniques existantes passe aussi par l’extension le plus loin possible de ces techniques, donc de la meilleure manière de les utiliser déjà :


  • Pousser le plus loin possible l’apparition du surajustement, de manière à trouver le meilleur compromis entre la qualité de la prédiction et le biais cognitif dû à des données trop homogènes.

  • Développer la forme et la profondeur du réseau, de l’assemblage de couches, pour optimiser la prédictibilité donc l’efficacité du modèle. Ajustement du nombre de couches dans une pile, de leur ordre, du nombre d’unités par couche, des filtres dans chacune de ces couches.

  • Automatiser cette recherche de réseau optimal.

  • Introduire de nouvelles formes non linéaires dans les éléments de base du réseau, optimisant la convergence du modèle, sans perdre d’information pertinente.

  • Spécialiser les couches du réseau pour des tâches bien définies, comme cela est fait pour la couche de sortie qui calcule la perte du réseau. Acquisition d’automatismes facilitant la prise de décision.

  • Utiliser des primitives pour accélérer la convergence, tout en évitant de reprogrammer des tâches déjà identifiées et résolues

  • Faire un traitement préalable des données, pour faciliter le travail de programmation de l’architecture du réseau, par la connaissance de spécificités dans le modèle à réaliser. Avoir une claire compréhension des données, afin de régler l’architecture neuronale de manière optimisée, ainsi que les paramètres initiaux.

  • Optimiser la navigation entre objectifs contradictoires.

  • Marier le besoin d’homogénéité pour identifier l’objectif, et l’hétérogénéité pour rendre le modèle robuste et généralisable, capable de repérer l’objectif, quel que soit l’exemple présenté. Car, comme cela a déjà été dit, la généralisation aux exemples les plus divers est contradictoire avec l’objectif commun que doit atteindre l’application.

  • Élaboration de fonctions de pertes complexes reflétant les objectifs opérationnels.

  • Chevauchement d’informations entre des tâches apparemment déconnectées, de manière à réutiliser des sous-programmes modulaires (comme les classes de la programmation objet).

  • Apprentissage par renforcement

  • Algorithmes génétiques

  • Rendre automatisables de plus en plus de cas, sans se noyer dans de trop nombreux cas. Il restera toujours des cas non automatisés insolubles, conformément au principe d’indécidabilité de Kurt Gödel.

  • De manière générale, la bonne recette est d’introduire de la modularité et de la hiérarchie.

  • Avoir des modules d’entraînement découplés avec un mécanisme de synchronisation entre eux.

  • Travaux récents de Deep Mind sur les gradients synthétiques

  • Vers des modèles hybrides algorithmique-géométrique.


  1. Conclusion


L’apprentissage profond, qui a montré sa supériorité sur les autres techniques de l’Intelligence Artificielle, est encore en pleine évolution, pour, à la fois accélérer le calcul et aussi pour explorer de nouveaux domaines.


L’apprentissage profond possède de nombreuses qualités que n’avaient pas les précédents outils de développement de l’Intelligence Artificielle :

  • Simplicité. Des modèles simples peuvent être entraînés de bout en bout à l’aide de 5 ou 6 opérations différentes sur les tenseurs.

  • Scalabilité. Parallélisation sur des processeurs graphiques, permettant d’entraîner par des itérations sur de petits lots de données, pour ensuite entraîner sur des ensembles de données de taille quelconque.

  • Polyvalence et capacité de réutilisation. Entraînement sur des données supplémentaires sans redémarrer à zéro, ce qui les rend viable pour l’apprentissage incrémental continu. Les modèles sont adaptables à d’autres objectifs, et sont donc réutilisables, ce qui permet de réinvestir des travaux antérieurs dans des modèles de plus en plus complexes et puissants.


Toutes les révolutions technologiques suivent une courbe appelée sigmoïde : Démarrage rapide, Stabilisation, Plafonnement. L’apprentissage profond en est au stade du début de la sigmoïde.



28 vues0 commentaire

Posts récents

Voir tout

Comments


Post: Blog2_Post
bottom of page