Quand on parle de créer une intelligence artificielle, plusieurs approches ont été tentées pour parvenir à créer un algorithme « intelligent ». Cependant, si on regarde récemment, tous les modèles que l’on trouve sont dérivés d’un paradigme principal : le Machine Learning (souvent abrégé en ML). Que ce soient les LLM, les réseaux de neurones, ou même des modèles plus simples, tous suivent les principes du Machine Learning (ou l’apprentissage automatique en bon français).
Mais quels sont ces principes ? Comment fonctionne un modèle de Machine Learning ? C’est ce que cet article veut mettre en avant.
Petit point sur le vocabulaire
Avant de rentrer dans le sujet, je souhaite simplement mettre au clair certains concepts.
- Modèle : c’est le nom usuel d’un programme de Machine Learning. Il est aussi bien utilisé pour désigner le produit final qui va prédire les valeurs que le programme avant son apprentissage.
- Cible : la valeur que l’on veut que l’algorithme de Machine Learning prédise. On retrouve aussi le nom « Target » ou « y » dans la littérature.
- Jeu de données : c’est le corpus de données que l’on rassemble pour entraîner le modèle de Machine Learning. Les données peuvent être de nature différente (tableau de données, fichiers PDF, images, etc.). On l’appelle aussi « dataset«
- Fonction d’erreur : c’est une mesure qui permet de définir à quel point un modèle se trompe par rapport à la réalité. On parle aussi de fonction de perte ou de loss-function
- Fonction de score : c’est une mesure qui permet de déterminer à quel point un modèle est proche de la réalité. Les fonctions de score et d’erreur évoluent généralement dans des sens contraires.
Une machine qui apprend ?
Avant d’aborder ce qu’est un algorithme de Machine Learning, et ses particularités, voici un bref rappel de ce qu’on attend généralement d’un algorithme de Machine Learning. On veut que ce programme, en lui fournissant des données en entrées, qu’e l’algorithme qu’il nous prédise une valeur, la cible de manière correcte. Et donc on veut que notre modèle généralise des règles applicables à toutes les données qu’il est susceptible de rencontrer pour prédire correctement la cible. Tous les problèmes de ML sont des variations de ce problème. Ce qui changera souvent est ce que désignent la valeur et le format de celle-ci (nombre, texte, image, etc.)
Un algorithme de Machine Learning, c’est quelque chose d’un peu particulier dans le monde des algorithmes. En effet, quand on parle d’algorithme, la comparaison la plus commune pour expliquer ce que c’est, c’est la recette de cuisine. On a des ingrédients, qui représentent nos entrées de l’algorithme et des étapes à suivre qui représente les règles de notre algorithme. Avec ces deux éléments, on arrive à constituer notre plat final, qui représente le résultat de l’algorithme, et qui est ce qu’on cherche à automatiser dans le cas d’un programme informatique.
Et bien un programme d’apprentissage automatique fonctionne à rebours d’un programme classique, à lui on va donner des données en entrées, éventuellement les résultats qu’on attend de lui, et il va se débrouiller pour savoir quelles règles permettent de transformer les données en sortie, ou dans le cas où on n’a pas de données d’essayer de trouver des points communs entre les données.
Ce mécanisme de trouver des règles en fonction des entrées, c’est ce qu’on appelle l’apprentissage, ou l’entraînement et c’est le point commun de chaque algorithme de Machine Learning.
À partir de là, un des prérequis de ce domaine va être de constituer un jeu de données qu’on pourra passer à l’algorithme afin de générer ces règles et faire en sorte que le modèle de Machine Learning qu’on va créer sera suffisamment performant pour la tache que nous souhaitons réaliser.
Comment faire apprendre une machine ?
Maintenant, qu’on a vu le principe général du Machine Learning, la question est quelles sont les stratégies pour faire apprendre une machine. Il en existe plusieurs, et je vais en présenter 3 ici parmi les plus communes :
- L’apprentissage supervisé : c’est la méthode d’apprentissage qui est la plus classique, quand on parle de ML. Le principe est de constituer un jeu de données qui contient la cible que le modèle doit prédire. On dit que les données sont labellisées. On passe ensuite à l’algorithme de Machine Learning, les données et les cibles associées, et le modèle de ML s’adapte et minimise les erreurs qu’il fait en s’appuyant sur la fonction d’erreur ou de score.
- L’apprentissage non-supervisé : ici, les données ne sont pas labellisées, et l’algorithme essaie de trouver des points communs entre les données et de regrouper les données.
- L’apprentissage renforcé : l’objectif ici est de faire en sorte de pénaliser et récompenser l’algorithme pendant son entraînement en fonction des erreurs et des progrès qu’il fait. Il y a plusieurs manières de faire ainsi, le processus peut être manuel, on peut créer une fonction qui fournit ces récompenses/pénalités, etc.
Il existe d’autres types d’apprentissages, mais voici ceux que je trouve les plus marquants et les plus simples à retenir.
Quels sont les principaux obstacles ?
Maintenant qu’on a vu les principaux mécanismes du ML, de manière assez générique, on va voir quels sont les principaux obstacles qu’on rencontre quand on fait du Machine Learning. Si je dois résumer la majorité des obstacles qu’on rencontre en un mot, ce serait le mot « biais« . Les algorithmes de ML peuvent tomber dans des biais qui peuvent être liés à divers facteurs.
Mauvaise mesure du score du modèle
Un premier biais que l’on peut avoir, arrive quand on mesure les performances de son modèle. Pour s’assurer que le modèle ait bien généralisé les règles qu’il devait apprendre, on va mesurer le score du modèle sur des données qu’il n’a pas encore vues, des données de test. Le risque de mesurer la performance sur les données que le modèle a vues en entraînement est que le modèle a mémorisé les données et donc qu’il n’arrive pas à généraliser. C’est pour ça que le jeu de données est séparé en données d’entraînement et de test (avec généralement 70-80% des données pour l’entrainement, et 20-30% pour le jeu de test).
Ce problème est lié à la méthode que l’on utilise pour mesurer la performance du modèle.
Sur-apprentissage et sous-apprentissage
Le sur-apprentissage et le sous-apprentissage sont des problèmes liés à la compatibilité entre l’algorithme de ML choisi et le jeu de données.
Le sur-apprentissage ou overfitting est un problème où le modèle n’arrive pas à généraliser et mémorise les données. L’indicateur principal du sur-apprentissage est que le score du modèle mesuré sur les données d’entraînement est largement supérieur au score mesuré sur les données de test. Cela signifie que le modèle est trop complexe pour le problème qu’il faut résoudre et qu’il faut le simplifier. Cela peut être aussi la conséquence d’un jeu de données trop petit.
Le sous-apprentissage ou underfitting, en revanche est un problème où le modèle n’arrive pas à capter et à s’adapter à la complexité du jeu de données. Un indicateur qui permet de détecter cela est que le score du modèle mesuré sur les données d’entraînement et de test est très faible. Il faut donc adapter l’algorithme pour qu’il capte mieux la complexité des données. Cela peut aussi être une conséquence d’un jeu des données trop petit, comme pour l’overfitting.
Biais liés aux données
Un autre aspect pour lequel il faut faire attention, la composition du jeu de données. Il y a tout un tas de biais liés à la représentativité des différents types de données dans le jeu initial. Par exemple, quand on fait un modèle de reconnaissance faciale, il faut que l’algorithme reconnaisse tous les types de visages, peu importe l’ethnicité de la personne, si la personne porte des lunettes, la couleur des cheveux, etc… Et pour ça, il faut que le jeu d’entraînement de cet algorithme contienne des images de personnes avec des caractéristiques variées et qu’aucune population ne soit sur-représentée.
Ici, j’ai pris l’exemple de la reconnaissance faciale, mais ce problème peut survenir sur d’autres types de données.
Conclusion
Les modèles de ML sont des programmes informatiques particuliers, qui essaient de deviner des règles à partir des données qu’on lui passe en entrée. Il y a plusieurs manières de faire apprendre un modèle, en fonction de si nos données sont labellisées ou non. Il y a aussi plusieurs obstacles, plusieurs biais à éviter. Dans de futurs articles, on reviendra compléter ces approches et voir comment, concrètement, on créé un modèle, et on opère à travers ces différents biais.