Développeurs

Introduction à l’apprentissage automatique

Share this post:

Introduction

L’apprentissage automatique est une discipline qui consiste à appliquer des algorithmes à des jeux de données afin d’en extraire des modèles. Ceux-ci peuvent à leur tour être appliquées sur des données similaires à des fins de prédiction. Avec suffisamment de données, il est possible de formuler une approximation de la relation entre toutes les variables d’entrée et les valeurs particulières dites « cible ». On peut alors appliquer cette formule sur de nouvelles données d’entrée pour prévoir la valeur cible associée. Cette approche diffère de la programmation conventionnelle où une application est développée à partir de règles préalablement définies. Même si les concepts fondamentaux de l’apprentissage automatique existent depuis un certain temps, le domaine a récemment pris de l’ampleur en raison d’une part de l’amélioration de la performance des processeurs (en particulier graphiques), et d’autre part grâce à la disponibilité de grandes quantités d’information. Ces deux composantes qui sont essentielles à l’obtention de prévisions précises. Étant donné qu’il existe déjà suffisamment de littérature sur l’histoire de l’apprentissage automatique, nous ne couvrirons pas ici ce sujet.

Nous allons par contre couvrir les concepts suivants :

  • Les fondements de l’apprentissage automatique
  • L’apprentissage supervisé ou non supervisé
  • La construction de modèles
  • Les pipelines dans l’apprentissage automatique

Fondements de l’apprentissage automatique

Dans cette section, nous rappelons les briques de base utilisées en apprentissage automatique.

Algèbre linéaire

L’algèbre linéaire est le domaine des mathématiques qui traite des relations entre variables s’exprimant sous forme de sommes pondérées de ces variables. Les relations autorisées sont donc les fonctions linéaires réelles, dans un espace multidimensionnel. L’algèbre linéaire est très utilisée en apprentissage automatique. Par conséquent, comprendre les bases de la première aide beaucoup à comprendre certains aspects de la seconde. Dans cette section, nous définissons quelques termes clés fréquemment utilisés.

Que sont les tenseurs ?

Commençons par la notion de scalaire. Une représentation scalaire est essentiellement un nombre tel que 1, 5, 23,5 ou 42. Si vous regroupez plusieurs scalaires, en donnant de l’importance à l’ordre dans lequel ils sont groupés, vous obtenez des vecteurs. Par exemple, (1, 5, 23, 2) est un vecteur de longueur quatre. Dans un vecteur, tous les éléments doivent appartenir au même type de données, tandis que dans un tuple, les types peuvent être mélangés (nombres et chaînes de caractères par exemple). Une matrice est une liste de vecteurs de taille égale. On peut également voir une matrice comme un tableau de nombres, ou encore comme la représentation d’une fonction linéaire sur des vecteurs. Dans une matrice, le nombre de lignes peut être différent du nombre de colonnes, mais chaque élément doit avoir le même type. Une matrice avec m lignes et n colonnes est appelée matrices m x n.

Les tenseurs sont des données représentées dans un espace multidimensionnel. « Tenseur » est un terme générique qui exprime ces représentations. Par exemple, un tenseur à zéro dimension est un scalaire, un tenseur à une dimension est un vecteur et un tenseur à deux dimensions est une matrice. L’image suivante montre un exemple d’un tenseur 3D, qui est essentiellement une extension de matrice, mais en trois dimensions.

Les tenseurs peuvent être utiles pour certains traitements, comme celui des images par exemple : on peut représenter une image par un tenseur dont une dimension est la hauteur d’un pixel, une autre représente la largeur et enfin la troisième exprime la couleur.

Espaces vectoriels de grande dimension

Les espaces vectoriels de haute dimension jouent un rôle crucial dans les algorithmes d’apprentissage automatique. L’image suivante montre une table de données qui comporte trois colonnes. Ces colonnes sont appelées dimensions ou « features ». Le tableau lui-même est donc vu comme un jeu de données à trois dimensions. Lorsque les points correspondant à chaque ligne (ou tuple) sont tracés dans un espace 3D, nous observons, dans l’exemple qui nous occupe, trois nuages ​​de points.

Dans le cas présent, ces nuages de points peuvent être séparés par des plans. S’il l’on passe dans un espace de dimension strictement supérieur à trois, on parle d’hyperplan.

Être capable d’identifier et de calculer de telles séparations est essentiel car une fois les établies, elles permettent de qualifier de nouvelles données, à des fins de prévision en particulier.

Apprentissage automatique supervisé ou non supervisé

Apprentissage automatique supervisé

« L’apprentissage automatique » supervisé est un terme réservé aux types de problèmes dans lesquels chaque enregistrement de l’ensemble de données contient une étiquette ou « cible ».

Considérons le tableau suivant qui contient des informations sur la température maximale, la température minimale et la vibration maximale, d’un certain nombre de pièces mécaniques.

Si l’on souhaite établir une formule empirique (ou plus généralement un « modèle ») permettant de calculer (avec une certaine précision) l’aspérité en fonction de toutes les autres variables, on dira que l’aspérité est l’étiquette, et que le jeu de données est étiqueté.

Une fois le modèle établi, si l’on donne la température minimale, la température minimale et la vibration maximale d’une nouvelle pièce, on pourra calculer une prévision de son aspérité.

En apprentissage automatique, la construction du modèle (au sens précédemment défini) se fait grâce à un algorithme (dit « d’apprentissage », ou de « modélisation »). Celui-ci prend toutes les données de la table initiale en entrée, et produit en sortie un modèle, qui va à son tour permettre de calculer les prédictions de la « cible » sur de nouvelles données. Il existe bien sûr de nombreux tels algorithmes, dits d’apprentissage supervisé. La régression et la classification sont deux types d’apprentissage supervisé.

Régression

Dans le cas où la cible de prédiction a une valeur continue, on parle de régression. C’est le cas de notre exemple précédent : si nous transmettons à au modèle les valeurs 35, 35 et 12 (pour respectivement la température minimale, la température minimale et la vibration maximale), il va être capable de prédire une valeur d’aspérité (de préférence proche de 0,32).

Classification

Dans le cas d’usage où la sortie (cible) est une valeur discrète finie (par exemple binaire) au lieu d’une valeur continue, on parle de « classification ». En d’autres termes, l’algorithme prédit plutôt une variable de classe (même si celle-ci peut être codée par un nombre).

Dans l’exemple ci-dessus, si nous transmettons à l’algorithme les valeurs 35, 35 et 12, il prédira une valeur 0 pour la cible « cassé » (si c’est un bon modèle, capable de reproduire la plupart des valeurs apprises. A noter que s’il est trop parfait sur ce point, on pourra douter de sa capacité à généraliser. C’est ce qu’on appelle l’apprentissage par cœur, ou sur-apprentissage).

Si l’on a que deux classes, on parle de « classification binaire ». Lorsqu’on a plus de deux classes, on parle de « classification multi-classe ».

Apprentissage non supervisé

« L’apprentissage automatique non supervisé » est le terme réservé aux types de problèmes dans lesquels aucun enregistrement dans l’ensemble de données ne contient d’étiquette (ou cible). La segmentation (clustering en anglais) est un type d’apprentissage automatique non supervisé. Nous allons voir de quoi il s’agit.

Regroupement

Dans le graphique en trois dimensions, montré précédemment, on peut noter les 3 clusters ou nuages ​​de données. Ici, la simple visualisation des données permet d’identifier trois grappes. De façon général, on commence effectivement l’analyse de données par une approche graphique. Toutefois cette approche ne permet pas toujours d’exhiber des segments, et il faut faire appel à des algorithmes dits de segmentation (ou clustering).

Construire un modèle

Comme évoqué plus haut, un modèle d’apprentissage automatique est une formule mathématique empirique construite à partir de données (dites « historiques »). Un modèle doit être capable de faire des prédictions à partir de nouvelles données avec un certain degré de précision. Cette « formule mathématique » peut prendre différentes formes, comme un arbre de décision, un réseau de neurones, un réseau bayésien etc…

Voici les étapes de construction d’un modèle :

  • Exploration des données
  • Prétraitement des données
  • Séparation en données d’apprentissage et données de test
  • Choisir un algorithme d’apprentissage
  • Assemblage de toutes ces étapes à l’aide d’un « pipeline »
  • Lancement de l’algorithme d’apprentissage, qui produit un le modèle
  • Production de prédictions sur de nouvelles données (de test ou de production)
  • Évaluation et visualisation des performances du modèle

Une approche plus détaillée et pratique de la construction d’un modèle est décrite dans Créer et tester votre premier modèle d’apprentissage automatique à l’aide de Python et de scikit-learn .

Pipelines

Les « pipelines » permettent l’automatisation des différentes phases de traitements nécessaires à la recherche de modèles.

En particulier, le prétraitement des données est une étape fastidieuse qui doit être effectuée à chaque fois avant l’apprentissage lui-même, quel que soit l’algorithme utilisé. L’image suivante montre une séquence typique d’étapes de prétraitement. Cette séquence est appliquée systématiquement avant chaque lancement d’un algorithme d’apprentissage (dit également algorithme de modélisation, puisqu’il produit un modèle).

L’idée est de conserver le prétraitement et de changer ensuite seulement :

  • soit l’algorithme d’apprentissage lui-même
  • soit les différents paramètres de l’algorithme de modélisation.

On regroupe donc l’intégralité des étapes du flux de traitement en un unique pipeline qui sera être ensuite appliqué de façon récurrente.

 

Dans de nombreuses bibliothèques, comme scikit-learn par exemple, les pipelines ont des méthodes similaires aux algorithmes d’apprentissage, à savoir

  • fit() : construire le modèle
  • evaluate() : évaluer la qualité du modèle, selon différentes métriques
  • score() : appliquer le modèle pour renvoyer une valeur prédite à partir de nouvelles valeurs d’entrée

La validation croisée est une méthode d’amélioration de la fiabilité des modèles par multi-échantillonnage des données d’apprentissage et des données de test/validation.

Un hyper-paramètre (pour un algorithme d’apprentissage) est un paramètre contrôlant le processus d’apprentissage. L’optimisation des hyper-paramètres impacte directement la qualité des modèles produits.

Validation croisée et optimisation d’hyper-paramètres nécessitent toutes deux le lancement récurrent du flot d’apprentissage, et donc bénéficient avantageusement de l’utilisation de pipelines.

Les détails liés à ces sujets seront traités dans un article ultérieur.

Résumé

Cet article décrit quelques concepts de base d’apprentissage automatique. Il fait partie du parcours d’apprentissage Machine learning pour les développeurs . Pour continuer, consultez le didacticiel suivant : Construisez et testez votre premier modèle d’apprentissage automatique à l’aide de Python et de scikit-learn .

Pour débuter avec l’apprentissage automatique, vous pouvez également télécharger gratuitement le livre Machine Learning for Dummies.

Retrouvez toute l’actualité IBM Developer France ici, et les offres d’IBM Machine Learning

 

Article écrit par Samaya Madhavan, Mark Sturdevant, Romeo Kienzler, traduit de l’anglais par Georges-Henri Moll, Developer Advocate et Datascientist

More Développeurs stories
4 mai 2020

Relevez le défi du Call for Code Global Challenge 2020

Le Call for Code en bref En partenariat avec le Haut-Commissariat des Nations unies aux droits de l’homme et la Fondation Linux, IBM a lancé la troisième édition du challenge Call for Code , un appel aux développeurs, data scientists et à toutes personnes ayant des idées innovantes à apporter leur contribution pour lutter contre […]

Continue reading

2 avril 2020

Des jeux de données utiles pour le « Call for Code »

Article original de Susan Malaika  https://community.ibm.com/community/user/datascience/blogs/susan-malaika/2020/02/21/call-for-code-useful-datasets Traduit de l’anglais par Georges-Henri Moll Introduction aux données ouvertes et au rôle majeur des métadonnées De plus en plus de données deviennent disponibles gratuitement par le biais d’ institutions publiques et privées, ainsi qu’au travers de publications de recherche. Par exemple, le magazine Nature a instauré une politique qui incite les auteurs à déclarer […]

Continue reading

2 avril 2020

AI Explainability 360: Une boîte à outils logicielle open source pour comprendre comment les modèles d’apprentissage automatique produisent leurs prédictions

Par ANIMESH SINGH https://developer.ibm.com/open/projects/ai-explainability/ Traduit de l’anglais par Georges-Henri Moll AI Explainability 360 (notée plus loin AIX 360) est une boîte à outils complète qui propose une API cohérente rassemblant: des algorithmes à la pointe de la recherche pour aider à comprendre comment les algorithme d’apprentissage automatique produisent leurs prédictions, des manuels, didacticiels et démonstrations, le […]

Continue reading