2019-08-29
Un projet Deep Learning peut-il passer du statut de réussite mondiale à celui d'échec magistral ? Qualifier qu'un projet IA "fonctionne" est en réalité beaucoup plus difficile qu'il ne le semble, et un projet peut souvent l'apparence d'une réussite à tord. Le maître mot est l'overfit, et si vous croyez qu'il suffit de séparer sa data entre test set, validation set et training set pour se protéger, vous êtes probablement en danger...
L'objet de ce post est de présenter un exemple passionnant d'une telle erreur. En 2016, Spampinato et al publient un travail qui fera date, "Deep Learning Human Mind for Automated Visual Classification" [https://arxiv.org/abs/1609.00344], dans lequel ils présentent une solution à base de réseaux de neurones pour interpréter des signaux EEG (électroencéphalogrammes). Les résultats présentés sont révolutionnaires et entraînent dans leurs sillages de nombreux autres projets de recherche. La fête dure jusqu'en décembre 2018 où un large panel de chercheurs publient un travail au nom éloquent, "Training on the test set? An analysis of Spampinato et al" [https://arxiv.org/abs/1812.07697], où ils démontrent que malgré les précautions usuelles prises par le Dr Spampinato, son travail est une forme d'overfit aggravé et ses résultats sont nuls.
Pour rappel, on parle d'overfit quand un réseau de neurones n'apprend pas des règles "haut niveau" sur la donnée permettant de trouver la réponse à un problème, mais apprend "par cœur" des éléments de la donnée. Un réseau frappé d'overfit ne marche donc QUE pour la donnée sur laquelle il a été entraîné. Il correspond au mieux à une mauvaise base de données, et ne présente strictement aucun intérêt en tant qu'outil.
Nous vous proposons aujourd'hui de parcourir successivement les travaux initiaux du Dr Spampinato, pour ensuite parcourir la réfutation point à point. L'objet est double : d'une part, se souvenir que l'overfit est un problème constant que l'on ne peut écarter d'une main en séparant simplement la data, d'autre part, parcourir une méthodologie admirable d'analyse et de critique d'une solution IA, à une époque où ces outils se multiplient sans que les précautions nécessaires à leur manipulation ne soient toujours suivies...
Ces travaux sortent en septembre 2016 et sont accueillis comme une révolution dans le domaine. L'idée fondamentale n'est pas très originale : utiliser des réseaux de neurones afin de mettre en place un apprentissage destiné à transformer des EEGs en une donnée exploitable pour une tâche de classification.
Le protocole est le suivant : on présente à des humains des séries d'images particulières, appartenant à des catégories bien distinctes (chat, avion, etc.). Pendant qu'ils visualisent ces images, des électrodes capturent leurs EEG, de manière à stocker dans un dataset à chaque fois l'EEG d'un côté et l'image qui était en cours de visionnage de l'autre. L'idée est ensuite, par un réseau de neurone, de directement classifier un EEG pour retrouver la catégorie d'image qui lui correspondait, selon un apprentissage supervisé classique.
Dans le schéma ci-dessus :
Quoi qu'il en soit, nous sommes donc dans une démarche supervisée : à partir d'un segment d'EEG, retrouver la catégorie d'image que regardait la personne ayant émis l'EEG.
Rappelons-le, la gestion du dataset est souvent la source de tous les problèmes. Là se cachent les biais potentiels ou autres erreurs de "data leakage" pouvant ruiner un projet IA. Ici, le processus est bien documenté : 7 sujets différents sont soumis à l'expérience d'avoir leurs EEGs capturés pendant qu'ils regardent les images. Ces images correspondent à 40 catégories d'ImageNet facilement différentiables. Pendant l'expérimentation, un total de 2000 images est présenté à chaque sujet. Les images sont présentées catégorie après catégorie, par groupe de 50 : un sujet regarde par exemple 50 images de chien à la suite, puis 50 images d'avion à la suite, etc. Chaque image est présentée pendant 0,5 secondes.
Point d'intérêt : 32 électrodes sont exploitées, dont 3 servant de référence. Deux filtres passe-bande sont appliqués au signal : Notch 49-51Hz et 2nd Butterworth 14-71Hz.
On obtient à l'issue du processus 7 sujets * 2000 images = 14000 séquences EEG. Ces séquences sont ensuite aléatoirement distribuées entre les sacro-saints test set, validation set et training set supposés protéger contre l'overfit. À ce stade, insistons sur le fait qu'aucun élément n'est présent en même temps dans deux sets. On pourrait donc se croire protéger contre tout overfit...
Concernant le modèle utilisé pour ensuite faire l'apprentissage, trois approches sont étudiées : (a) un réseau de couches LSTM (Long Short Term Memory, architecture canonique pour l'apprentissage sur séquences), chaque couche transmettant son état caché à la couche suivante, (b) une décomposition avec un LSTM par électrode et ensuite un LSTM global, et (c) l'adjonction d'un LSTM et d'une couche totalement connectée.
Les résultats présentés en 2016 sont déjà largement au-dessus de ce qui s'obtenait précédemment. Suivant les bonnes pratiques, un modèle est sélectionné comme maximisant le score sur le validation set, pour ensuite étudier son score sur le test set, dont les éléments n'ont jamais été vus pendant l'apprentissage :
Le Dr Spampinato et son équipe ont à l'occasion regardé comment évoluaient les résultats en fonction de la durée du signal EEG utilisée en entrée. A-t-on de meilleurs résultats en prenant tout le signal pour une image (de 40ms à 480ms), ou en se contentant d'une durée plus courte. Surprise : de meilleurs résultats apparaissent si l'on utilise pour la classification le signal de 320ms à 480ms. À ce moment, l'hypothèse était que ce segment était celui contenant le plus d'information pertinente pour la classification.
C'est en 2017, pour la conférence CVPR 2017, qu'une nouvelle version de ces travaux est présentée par Spampinato et al. Dans cette version, les résultats sont devenus excellents, avec une précision allant jusqu'à 83% !
À ce stade, la foule est en liesse, l'intelligence artificielle se voit attribué un nouveau triomphe à son tableau et pas des moindres : mettre en place un outil capable d'extraire depuis un signal extrêmement complexe une information exploitable, et ainsi donner de nouvelles clés de compréhension de ce qui se passe dans l'esprit humain ! De nombreux travaux de recherche vont se lancer à sa suite, avec entre autres :
Fun fact : aujourd'hui, la version de 2017 avec ces résultats incroyables n'est plus disponible que sur la plateforme da la conférence. Sur arxiv ne se trouve plus que la version 2016...
Ayant lu l'introduction de ce post, vous savez déjà que la gloire sera de courte durée.
En décembre 2018 sort une publication qui aura un énorme retentissement. Li et al reprennent l’intégralité des travaux de Spampinato et poussent le modèle expérimental dans ses limites par le biais d’un grand nombre de tests visant à étudier les (nombreuses) limites de l’étude originale. Ce travail est passionnant en ceci qu’il nous donne un exemple clair et très détaillé d’analyse poussée d’un travail de type Machine Learning. Il présente ainsi un modèle exemplaire de questionnement de travaux et de recherche de biais ou de défauts de méthodologie.
Le bilan sera sans appel. Les travaux de Spampinato et al sont vides de sens et d’intérêt. La méthode trop précipitée correspond à une forme aggravée d’overfit et les affirmations produites sont très éloignées des réalités observées. Une leçon à conserver est que quel que soit son niveau d’expertise, on n’est jamais à l’abris d’une mauvaise modélisation qui, sans un contrôle approfondi et rigoureux, restera cachée derrière des résultats fantaisistes. Au crédit de Spampinato, la diffusion du dataset et du code a été une forme de transparence qui a permis la critique des travaux et donc un avancement réel de compréhension scientifique.
Suivons le processus d'analyse pas à pas proposé dans la publication :
Un premier réflexe face à un projet Deep Learning est toujours de se méfier d'une trop grande complexité. Si les réseaux de neurones sont des outils très puissants, ils présentent un énorme nombre de défauts dont une très faible interprétabilité ou une forte lourdeur. Aussi faut-il que l'usage d'une architecture soit réellement justifié face à la complexité d'un problème. Quand on travaille un nouveau sujet, on n'utilise des réseaux de neurones que si les approches plus simples et plus fiables n'ont pas donné de résultat probant. Ici, les auteurs veulent donc vérifier que l'architecture de LSTMs utilisée par le Dr Spampinato est réellement indispensable. Et il n'y a pas de meilleur moyen que de tester la même approche avec des modèles plus simples. Si les modèles plus simples donnent des résultats bien moins intéressant, ok, le modèle complexe est justifié...
Ici, les auteurs ont donc testé une approche par plus proches voisins (k-NN, une approche simpliste très classique), par Support Vector Machine (approche Machine learning usuelle plus simple que les réseaux de neurones et interprétable), par MLP (forme la plus simple de réseau de neurones) et un réseau convolutif à une dimension (solution moins lourde que le LSTM). La donnée de test était celle publiée par Spampinato avec ses travaux.
Première observation : les MLP et k-NN ont des résultats bien moindres mais largement supérieurs à la chance et aux résultats antérieurs à Spampinato et al. Le SVM, lui, obtient des scores comparables au LSTM. Nous avons déjà un problème fondamental : les SVM étant une solution largement antérieure aux réseaux de neurones, pourquoi aurions-nous du attendre la popularisation de l'IA pour extraire une information d'EEG là où les SVMs étaient déjà très présents et utilisés dans le domaine scientifique ? À minima, il serait donc possible de remplacer les LSTM complexe par des outils plus simples avec les mêmes résultats ?
Rappelons-le : l'apprentissage d'un réseau de neurone suppose un grand nombre d'aveuglements sur le processus utilisé. Dès lors, une pratique saine est de questionner/tester chaque paramètre d'entrée pour essayer de cartographier au mieux le modèle IA analysé, et ainsi se protéger de toute mauvaise compréhension.
La première étude est faîte sur la largeur de la fenêtre temporelle d'EEG étudiée en entrée, comme l'avait fait lui-même le Dr Spampinato. Que se passe-t-il si on ne conserve que 200ms, 100ms, 50ms ou même 1ms de signal ? Arrive-t-on malgré cela à classifier correctement le signal EEG ?
Deuxième surprise de taille ! Quand bien même on ne garde qu'une milliseconde de signal en entrée, on arrive encore à classifier correctement le signal avec des scores incroyables, y compris avec un SVM. À ce stade, de deux choses l'une : soit une milliseconde de signal EEG est suffisante pour savoir ce que regarde quelqu'un, soit il y a un loup. D'autres tests sont effectués par les auteurs (sur le nombre de canaux par exemple), que nous vous épargnons ici pour nous concentrer sur l'essential.
À ce stade, les auteurs commencent à sentir le problème. Ils décident donc de créer eux-mêmes leur dataset, en reproduisant l'expérience du Dr Spampinato, en exposant des humains à des images tout en capturant le signal EEG. Néanmoins, deux modes de capture de la donnée sont mis en place :
Le premier mode correspond exactement à ce qu'a fait le Dr Spampinato, que l'on appellera BLOCK DESIGN : les images d'une même catégorie sont montrées en bloc, l'une à la suite de l'autre, avant de passer à la catégorie suivante.
Le second mode est de type RAPID-EVENT DESIGN : les mêmes images sont montrées aux sujets, mais avec un ordre totalement aléatoire. Deux images l'une à la suite de l'autre pourront parfaitement correspondre à deux classes totalement différentes (chats et avions, par exemple).
Les résultats obtenus relèvent tous totalement de la chance (comprendre, comme si l'on tirait le résultat au hasard), quel que soit le mode :
Mais pourquoi cette différence ? À la limite, que le mode Rapid-event Design ne donne aucun résultat n'est pas forcément surprenant (et permettrait d'envisager la source du problème dans les travaux de Spampinato et al), mais on s'attendait à ce que les résultats en Block Design soient au même niveau que les résultats exposés par le Dr Spampinato. Les auteurs contactent donc ce dernier, et apprennent que contrairement à ce qui est écrit, aucun filtre passe-bande n'a été utilisé !
À ce stade, un point d'explication est nécessaire pour ceux qui ne suivent pas ces questions de filtre et leurs enjeux. Le signal EEG, comme tout signal, peut être décomposé en différentes composantes, à des fréquences différentes. L'information de haute fréquence peut être vue comme très rapide, totalement capturée sur un temps très court. L'information de basse fréquence, elle, est beaucoup plus lente, et peut donc être vue comme une information constante sur une certaine durée. En faisant un filtre passe bandes, on veut supprimer au moins les données basses fréquence afin d'éviter qu'une information constante soit partagée entre plusieurs blocs successifs d'une certaine durée...
Les auteurs reproduisent donc l'expérience du Dr Spampinato avec leur propre donnée, mais sans filtrage, et retrouvent alors des résultats "incroyables" :
Nous commençons à toucher du doigt le problème originel, mais attention ! Dans le domaine du Deep Learning, où la validation se fait statistiquement et les processus ne sont toujours pas compris fondamentalement sur le plan mathématique, l'instinct est notre pire ennemi, et tout soupçon doit être confirmé par l'expérience. Deux essais sont donc mis en place :
Spampinato et al pensaient se protéger en répartissant leur dataset aléatoirement entre un train set, un validation set et un test set. Mais dans la mesure où ils n'avaient pas effectué de filtrage passe bande sur leur signal, chaque élément d'EEG contenait une information très stable au regard de la temporalité. Deux éléments proches dans le temps partageaient donc cette information entre eux, indépendamment de la catégorie d'image que le sujet était en train de regarder. Le modèle apprenait donc à identifier cette information constante et à l'utiliser pour donner la réponse, sans s'intéresser une seconde au reste de l'EEG...
En apparence, le modèle interprétait l'EEG et réussissait à trouver à l'intérieur une information précieuse. En réalité, ce modèle n'interprétait rien et avait juste découvert un lien simple entre la donnée d'entrée et le résultat de sortie satisfaisant l'optimisation de son apprentissage. Il s'agit réellement d'overfit, en ceci qu'un apprentissage par cœur sur la donnée d'entrée a donné l'illusion d'un outil réussi à la fin. À partir de là, rien ne servait de séparer la donnée dans des sets différents comme le veulent les fondamentaux d'un apprentissage Machine Learning.
Soyons clairs : ce type de problème peut arriver très facilement, et il nous arrive régulièrement de croiser des acteurs peu scrupuleux qui jouent sur l'overfit pour vendre une solution ayant toute l'apparence du bon fonctionnement, mais qui s'avère à terme être une coquille vide.
Au-delà de la question de filtrage du signal, il s'agit ici de faire très attention à ce que la donnée soit totalement décorrélée. Une liste clairement non exhaustive d'exemples serait :
À minima, le processus de validation doit reproduire au mieux le problème que l'on veut adresser. Un réflexe salutaire fut été pour le Dr Spampinato d'entraîner son modèle sur seulement 6 sujets et de classifier sur le 7ème, de même qu'en prédiction de séries temporelles, on garde toujours les événements les plus récents pour la validation du modèle... En procédant ainsi, il aurait évité cet aveuglement sur la valeur de son modèle et ce qui s'est ensuivi.
J'aimerais déjà défendre un peu le Dr Spampinato, qui a l'époque a été beaucoup critiqué. S'il a effectivement fait des erreurs fondamentales dans sa démarche, il a eu l'honnêteté de publier son code source et le dataset correspondant, ce qui a permis à d'autres d'analyser son travail et de pouvoir le critiquer.
Si vous en avez le courage, allez lire la critique en entier. J'ai laissé de côté la partie "regression" de l'approche de Spampinato et al qui est elle-même décortiquée à l'extrême. Et cette critique présente une méthodologie admirable face à un domaine où les discours commerciaux sont parfois totalement déconnectés de la réalité scientifique.