Apprentissage automatique — aperçu I

“Prédire n’est pas expliquer”
— René Thom, 1993

scikit-learn (source)

Aujourd’hui, focus sur l’apprentissage automatique, version française du machine learning.

Vous en avez déjà entendu parler si vous suivez un peu ce qui se passe du coté de l’intelligence artificielle, dont le machine learning (ML) est un sous-domaine. Les exemples qui intéressent d’habitude le grand public sont les batailles entre les ordinateurs et les champions d’échecs [w] et de go [w], ou les prouesses des robots de Google qui apprennent tout seul à détecter les chats [w]. On pourrait citer bien d’autres exemples de la vie courante, comme la conduite automatique de véhicules, la pub ciblée sur le net, le filtrage des spams, et bientôt les contenus multimédias que nous proposeront nos écrans.

Qu’est-ce que le ML ? C’est, pour paraphraser WP, des techniques numériques permettant à un système d’évoluer et, par un processus systématique, d’effectuer des tâches difficiles ou impossibles à traiter par des moyens algorithmiques plus classiques. Il y a derrière ce processus une notion de recherche et de découverte de structures, de motifs.

“The field of machine learning is concerned with the question of how to construct computer programs that automatically improve with experience.” 
Tom M. Mitchell, computer scientist, Carnegie Mellon University

Le mathématicien dirait que “a computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E. Ce qui est loin d’être bête.

Le poète dirait que c’est un moyen de réduire la complexité du monde pour proposer des actions adaptées à des entrées potentiellement floues.

Le philosophe dirait que le ML, c’est une façon de faire émerger des structures en faisant l’économie des préjugés de l’observateur.

Le consultant en transformation digitale dirait, lui, que ces concepts innovants sont à même de disrupter l’économie dans son ensemble, alliant l’intelligence de l’homme à la vitesse des machines, le tout dans un souci permanent de valorisation intrinsèque des données.

Il est clair que ce dernier se fera beaucoup plus de maille avec ce genre de saillies que les deux premiers. Les mathématiciens sont d’habitude intéressés par des choses beaucoup moins vulgaires, comme leur nombre d’Erdős ou leur impact factor. Bref.

Comment ça marche? Je vais peut-être vous décevoir, mais on est quand même assez proche de la définition du matheux.

Coté #data, il faut disposer d’un jeu de données d’entrées, si possible couvrant tous les cas envisagés, et d’un moyen de qualifier les prédictions des algorithmes : souvent, un jeu de données de sorties, c’est à dire des résultats similaires à ceux qu’on souhaite obtenir. Si on ne dispose pas de données de sortie, il faut évidemment trouver un moyen d’évaluer les réponses fournies par la machine.

En pratique, il faut mettre les mains dans le code … puis injecter des données préalablement préparées dans différents algorithmes d’apprentissage (ici par exemple) et en comparer les résultats. Les plus téméraires lanceront des routines de paramétrage automatique des algorithmes.

Puisqu’on joue quand même principalement en nocturne et que les maths derrière sont plutôt hostiles (cf ce papier de ’95 présentant le concept de support vector network, [w]), il faut vérifier les prédictions de ces algorithmes de ML. La démarche est souvent de séparer les données pour lesquelles on connaît les résultats en deux sets : des données d’entraînement, sur lesquelles l’algorithme sera entraîné (notez l’habilité dans le choix du nom), et des données tests, qui serviront à tester les prédictions. Puisque l’algorithme ne connaîtra pas les résultats des données tests, le test sera pertinent.

Deux remarques.

Il n’est pas nécessaire de comprendre pourquoi ces méthodes marchent : on peut s’en servir comme de pures boites noires. C’est certes intellectuellement frustrant et commercialement suicidaire, mais tant que ça fonctionne … Il est évidemment préférable de comprendre, au moins schématiquement, le fonctionnement de ces outils. Ne serait-ce que pour éviter de perdre du temps à essayer de coller un algorithme qui ne saura pas analyser ce set de données.

Second point : la difficulté est évidemment de créer une outil qui est capable d’extrapoler les prédictions basées sur les données d’apprentissage sur des données qu’il ne connaît pas. D’où la nécessité des phases de tests.

Troisième point : le lecteur rusé aura remarqué qu’il n’est pas vraiment question d’intelligence. Plutôt d’apprentissage. Un réseau de neurones ou un classeur bayésien permettent des prédictions, mais sans fournir d’explications. Et accessoirement, que je ne sais pas compter jusqu’à 3.

Ces technos sortiront un jour du cadre hyper-spécialisé des labos et des applications métiers, ce n’est qu’une question de temps.

Les liens de la semaine sont ici.

Bonne semaine !

T

-> FB, LI, ou s’abonner à la mailing-list.