Ceci n’est pas de l’intelligence artificielle #1 : Introduction au Machine Learning

Dans cette série d’articles nous parlerons d’un sujet qui fait pourlécher les babines de nombreuses personnes : « L’intelligence artificielle ». Aujourd’hui nous verrons ce que recouvre ce terme actuellement  et comment cela marche.

Quand on me demande ce que je fais, je réponds souvent « je travaille dans, entre guillemets, l’intelligence artificielle ». Car tout impressionnantes que soient les prouesses récentes, il est légèrement trompeur de dire qu’il s’agit de systèmes intelligents. Le terme le plus approprié est en fait « apprentissage automatique », ou en Anglais, Machine Learning qui se traduit littéralement par « Machine apprenante ». Et tout comme le cloud n’est pas un joli nuage où les applications tournent en suspension légère dans le ciel mais bien dans  des serveurs gérés par des prestataires, l’Intelligence Artificielle n’est pas de la magie : de nombreuses personnes se grattent la tête pour faire tourner ces algorithmes ayant le vent en poupe. Alors comment font-elles ?

Pour le comprendre revenons d’abord à ce qu’est un algorithme. Nous verrons ensuite qu’il en existe deux familles : ceux de Machine Learning et les autres.

Imaginez-vous devoir expliquer à votre grand mère ce qu’est un algorithme… comment vous prendriez-vous ? Une méthode simple consiste à faire l’analogie avec une recette de cuisine. Qu’est ce qu’une recette ? C’est tout simplement une suite d’instructions pour cuisiniers. Pour faire un gâteau, mettre d’abord du sucre dans un bol, puis mélanger 3 œufs, etc. etc. et au bout du compte, sortir le beau gâteau du four. Un algorithme, c’est pareil : une série d’instructions mais à destination des ordinateurs. Sauf que les instructions que l’ordinateur devra exécuter sont des calculs, un ordinateur n’étant au fond qu’une surpuissante calculatrice programmable.

En guise d’exemple considérons un algorithme calculant le prix total d’un panier contenant plusieurs produits. Nous donnons une version écrite en français mais pour qu’il soit compréhensible par un ordinateur il devra être traduit dans un langage de programmation par un développeur.

Voici ce que l’ordinateur devra exécuter :

  1. Réserver dans la mémoire une zone qui contiendra la valeur totale du panier et lui affecter la valeur 0.
  2. Pour chaque produit contenu dans le panier :
    1. Récupérer le prix HT du produit et la TVA.
    2. Calculer le prix TTC en multipliant le Prix HT par (1 + TVA).
    3. Ajouter le prix TTC du produit à la valeur totale du panier.

Une fois la valeur du panier calculée, elle pourra alors être utilisée par une autre partie du logiciel, par exemple celle responsable de l’affichage à l’écran ou l’édition de facture.

Cet algorithme n’est pas du Machine Learning : le programme n’a rien appris, les instructions pour résoudre le problème ont été totalement définies par le développeur. Ces règles sont en quelque sorte gravée dans le marbre pour l’ordinateur. À moins que le programme ne soit réécrit, elles ne changent pas.

Imaginons maintenant que vous souhaitiez développer un programme d’aide au diagnostique pour les tumeurs : à partir de l’image de l’une d’elle vous voulez dire si elle est bénigne ou cancéreuse. Afin de mieux comprendre ce qui les distingue, vous allez voir un oncologue. Celui-ci vous fournit une base de donnée de tumeurs des deux types. Mais à votre grand dam, à chaque fois que vous essayez d’ajouter un critère visant à distinguer ces tumeurs, vous tombez toujours sur un contre-exemple et votre logiciel ne marche pas convenablement. Alors plutôt que de chercher à formuler vous même les règles, pourquoi ne pas laisser un algorithme de Machine Learning apprendre lui même ce qui différencie la tumeur cancéreuse de la tumeur bénigne ?

Car un algorithme de Machine Learning est un algorithme permettant à l’ordinateur d’apprendre à résoudre un problème à partir des données qui lui sont fournies. Contrairement à l’exemple du panier, on ne lui donne pas la solution explicite du problème. Comme à un élève à l’école, un professeur montre à l’algorithme des exemples appartenant à une certaine famille (tumeur cancéreuse) et des exemples appartenant à une autre (tumeur bénigne). L’algorithme doit alors dire ce qu’il en pense et le professeur lui indique la bonne réponse en cas d’erreur. Par un procédé d’essai-erreur, l’algorithme apprend progressivement ce qui distingue les éléments des différentes familles. Il apprend ainsi une règle générale à partir d’exemples: il fait de l’induction.

Cette métaphore de l’élève peut être filée. D’une part comme il est souvent répété aux élèves, les erreurs font partie du processus d’apprentissage et vouloir les éviter c’est limiter ses progrès. De plus, l’élève-algorithme doit lui aussi éviter deux écueils commis par l’étudiant : le sous apprentissage (un élève n’apprenant pas ou mal sa leçon) et le sur-apprentissage qui correspond à un l’élève  qui aurait appris sa leçon par cœur. Dans ce cas, l’algorithme est bien capable de distinguer toutes les tumeurs bénignes ou malignes qu’il a vu pendant la leçon mais est incapable de généraliser à des exemples qu’il n’a pas vus « en cours ». Cela pose généralement problème puisque ces algorithmes ont pour but d’être utilisés sur des exemples qui n’ont pas été vus pendant l’entraînement.

En résumé, un programme basé sur du Machine Learning apprend à résoudre un problème par essai-erreur à partir de données sans avoir été explicitement programmé pour résoudre un problème particulier. On comprend mieux l’appétit des entreprises du digital pour nos données : Pas de donnée, pas de chocolat pas de Machine Learning. Et c’est ce qui fait que les données sont devenues le nouvel or noir du 21ème siècle.

Aussi impressionnant que cela puisse paraître, ceci n’est pas (encore) de l’intelligence artificielle.

A bientôt pour le prochain épisode !

Laurent Cetinsoy

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *