François Chollet est chercheur en IA et en apprentissage profond, auteur de Keras, l’un des principaux frameworks de deep learning pour Python, et vient de publier un nouveau livre, Deep Learning with Python. À l’occasion de cette sortie, j’ai eu le plaisir d’interviewer François par e-mail. N’hésitez pas à nous écrire sur @fchollet et @hugobowne.
François, vous êtes ingénieur logiciel et chercheur en intelligence artificielle chez Google. J’aimerais en savoir plus sur votre travail. Mais d’abord, il y a souvent un décalage entre ce que les gens font vraiment et l’image qu’on s’en fait. Que pense-t-on que vous faites ?
C’est très juste : il existe généralement un écart entre ce pour quoi on est connu, ce pour quoi on aimerait l’être, et ce sur quoi on travaille réellement. En ce qui me concerne, je suis probablement surtout connu pour avoir créé Keras, le framework de deep learning.
Et concrètement, que faites-vous au quotidien ?
Je travaille au sein de l’équipe Brain de Google à Mountain View, où je passe l’essentiel de mon temps à développer Keras. Il y a donc une bonne cohérence entre ce que je fais et ce que l’on pense que je fais.
Je contribue également à TensorFlow, le framework d’apprentissage automatique de Google, avec lequel Keras s’intègre. En parallèle, je fais de la recherche sur différents sujets. Récemment, j’ai travaillé sur des articles portant sur la traduction automatique, la vision par ordinateur, et l’application du deep learning à la démonstration de théorèmes. Mon intérêt principal est de comprendre l’abstraction et le raisonnement en IA : comment passer de la perception à des modèles abstraits, très généralisables.
Vous êtes connu pour être l’auteur de Keras, un réseau de neurones open source pour le deep learning en Python : qu’est-ce que le deep learning ?
Le deep learning est une approche spécifique de l’apprentissage automatique, qui s’est révélée bien plus puissante et flexible que les approches précédentes. Dans la plupart des cas, ce que l’on appelle « deep learning » revient à transformer de grandes quantités de données annotées par des humains en un logiciel capable d’annoter automatiquement de nouvelles données d’une manière similaire à celle des humains. On peut ainsi automatiser de nombreuses tâches. Le deep learning excelle tout particulièrement sur les données dites « perceptives » comme les images, les vidéos ou le son.
Un exemple concret : considérez une grande collection de photos, chacune associée à des étiquettes (« chien », « chat », etc.). Le deep learning permet de transformer automatiquement ces données en un système qui « comprend » comment associer les images à leurs étiquettes, en apprenant uniquement par l’exemple, sans réglages manuels ni ingénierie spécifique. Un tel système peut ensuite être appliqué à de nouvelles données, automatisant de fait l’étiquetage d’images.
De la même manière, on peut appliquer le deep learning à un large éventail de problèmes : traduction automatique, reconnaissance vocale, synthèse vocale, reconnaissance optique de caractères, etc.
Félicitations pour votre nouveau livre, Deep Learning with Python. Pourquoi l’avoir écrit ?
Ce livre est ma tentative de proposer un programme de formation pour enseigner le deep learning à quelqu’un qui sait coder en Python mais n’a pas d’expérience préalable en apprentissage automatique. J’essaie de rendre le deep learning aussi accessible que possible, sans rien simplifier à l’excès. Et c’est possible, car pour l’essentiel, le deep learning ne repose pas sur des idées difficiles.
Python est sans doute le langage qui croît le plus vite, au moins dans les pays à haut revenu. Pourquoi Python, pour vous comme pour la communauté en général ?
J’adore Python. Il est facile à prendre en main et il devient de plus en plus productif à mesure qu’on l’utilise, quel que soit votre niveau. Il paraît très intuitif et élégant comparé à la plupart des autres langages que j’ai utilisés. Mais la vraie « killer feature » de Python ne tient pas au langage lui-même, elle réside dans l’écosystème et la communauté qui l’entourent. Quoi que vous ayez à faire — parser un format de fichier spécifique, interfacer un système particulier — il y a presque s&ucrave;rement une bibliothèque Python qui le fait, évitant d’y passer du temps. C’est particulièrement vrai en data science et en apprentissage automatique, avec d’excellents outils — numpy, pandas, scikit-learn, des bibliothèques de visualisation, etc. Tout cela rend Python très productif.
J’aime aussi le fait que Python ne soit pas un langage spécifique à un domaine, mais qu’il soit à l’intersection de multiples univers, du développement web à la data science en passant par l’administration système. Vous n’avez donc pas à changer de langage pour déployer vos modèles Keras en API web, par exemple. Quel que soit votre besoin — lancer une webapp, interroger une API REST, parser des fichiers, entraîner des modèles de deep learning à l’état de l’art — Python est généralement un excellent choix.
On perçoit souvent une barrière à l’entrée pour celles et ceux qui veulent se lancer en apprentissage automatique et en développement d’intelligence artificielle. Que pensez-vous de la démocratisation des compétences et techniques nécessaires ?
Je ne pense pas que ce soit le cas. S’initier à l’apprentissage automatique est devenu extrêmement facile ces cinq dernières années. Il y a 5 à 7 ans, c’était effectivement difficile. Il fallait sans doute un diplôme avancé. Il fallait écrire soi-même beaucoup d’algorithmes bas niveau, généralement en C++ ou en Matlab. Je suis passé par là. Aujourd’hui, c’est différent. Il vous suffit de Python, bien plus simple à appréhender, et vous disposez d’outils de haut niveau, faciles à utiliser, comme Keras. En plus, on peut apprendre grâce à d’excellentes ressources en ligne, et s’exercer sur des problèmes réels sur Kaggle. Apprendre n’a jamais été aussi simple.
À ce stade, vous pouvez tout à fait prendre mon livre, installer Keras, faire quelques compétitions Kaggle et, au bout de quelques mois, devenir vraiment opérationnel en apprentissage automatique et en deep learning sur des problèmes concrets.
Comment Keras et votre nouveau livre s’inscrivent-ils dans cette philosophie ?
Quand j’ai publié Keras au départ, je ne cherchais pas particulièrement à démocratiser le deep learning. Mais avec le temps, j’ai vu d’innombrables personnes s’initier au deep learning via Keras et l’utiliser pour résoudre une grande variété de problèmes de façons auxquelles je ne m’attendais pas — ce qui m’a fasciné. J’ai compris que le deep learning pouvait être déployé, de manière transformatrice, dans bien plus de domaines qu’on ne l’imagine à Silicon Valley. Tant de personnes pourraient en tirer parti dans leur travail. En conséquence, je tiens beaucoup à rendre ces technologies accessibles au plus grand nombre, et c’est devenu l’objectif de conception numéro un de Keras. C’est la seule manière de déployer l’IA à la pleine mesure de son potentiel : en la rendant largement disponible.
Mon livre vise à franchir une nouvelle étape dans la même direction : j’essaie d’embarquer correctement autant de personnes que possible dans le deep learning, pour qu’elles puissent commencer à l’appliquer aux problèmes qu’elles connaissent — y compris ceux dont je n’ai m&ecrave;me pas conscience. Il ne suffit pas de proposer des outils faciles à utiliser, il faut aussi fournir des supports pédagogiques pour apprendre à s’en servir.
Quelles sont les choses essentielles à apprendre pour les débutants ? Et comment s’y prendre ?
Le plus important est sans doute de comprendre ce que le deep learning peut faire — et ne pas faire. Il faut aussi acquérir des réflexes clés, comme évaluer correctement les modèles et lutter contre le surapprentissage. Cela requiert un mélange d’explications formelles et de pratique intensive sur des problèmes réels.
Pour beaucoup, le terme intelligence artificielle évoque des robots conscients. On voit des titres comme « L’IA de Google crée son propre ‘enfant’ IA, plus avancé que les systèmes conçus par l’homme ». Aidez-moi à démystifier ce qu’est vraiment l’IA. De quoi l’intelligence artificielle est-elle capable ?
Il y a sans aucun doute beaucoup de battage. La plupart des articles sur l’IA et le deep learning sont très éloignés de la réalité — aussi bien les récits alarmistes que ceux qui prétendent que l’IA va tout rendre merveilleux.
Quant à ce que l’IA peut faire aujourd’hui, c’est une question difficile. Je dirais qu’il y a trois catégories :
- Accomplir des tâches pour lesquelles on peut spécifier complètement et explicitement les règles que l’IA doit suivre. C’est ce qu’on appelle l’« IA symbolique », ou plus prosaïquement, le « développement logiciel ». Comme toute personne ayant déjà programmé le sait, cette approche est fragile et ne fonctionne que dans des environnements parfaitement maîtrisés — ce qui est rare dans les problèmes réels.
- Réaliser des tâches de perception et d’« intuition » simples, pour lesquelles on ne sait pas énoncer des règles explicites, mais pour lesquelles on peut fournir de nombreux exemples. C’est tout le champ du deep learning : classifier des images, transcrire la parole, etc. Une limite importante est que nos modèles ne savent gérer que des entrées très proches de ce qu’ils ont déjà vu — on ne peut pas trop s’éloigner des données d’entraînement. En substance, nous faisons un ajustement de courbe glorifié en haute dimension.
- Des combinaisons assez naïves des deux. Par exemple, on peut imaginer un robot doté d’un module de deep learning qui extrait le type et la position d’objets dans son environnement, entraîné sur de nombreux exemples, couplé à un module qui encode en dur des règles de haut niveau pour les manipuler. Autre exemple : AlphaGo/AlphaZero, qui combine de la recherche en force brute (programmation explicite) avec un module de deep learning entraîné sur de nombreuses parties et capable d’évaluer « intuitivement » la valeur d’une position.
En exploitant les techniques actuelles au maximum, on peut atteindre des performances surhumaines sur de nombreuses tâches importantes, et des résultats honorables sur bien d’autres. Mais cela reste cantonné à des contextes très étroits. Et, de manière peut-être contre-intuitive, il n’existe aucun chemin naturel qui mène d’une très grande compétence sur différentes tâches verticales à l’intelligence générale et au bon sens d’un enfant — sans parler de ses capacités d’apprentissage et d’adaptation.
Cela dit, exceller sur beaucoup de tâches très spécifiques transforme déjà la plupart des secteurs. On peut donc s’attendre à un impact économique considérable de l’IA sur les 20 prochaines années. Voyez l’IA comme la machine à vapeur de notre époque : un outil très puissant au service des humains, qui va remodeler le paysage économique en quelques décennies. Mais aucun robot conscient à l’horizon.
De quoi l’intelligence artificielle n’est-elle pas capable ?
Parmi tout ce que nous aimerions automatiser, l’IA actuelle ne couvre qu’un très petit sous-ensemble. Il y a bien plus de choses que nous ne savons pas faire que l’inverse.
De façon générale, nous sommes particulièrement mauvais pour :
- Toute tâche qui requiert un « ancrage » ou une « compréhension ». Par exemple, l’IA ne comprend pas le sens du langage naturel : elle traite le langage via des dépendances statistiques ou des règles de traitement codées en dur. Le « sens », tel qu’il existe dans l’esprit humain, découle d’une expérience incarnée à laquelle nos modèles d’IA n’ont pas accès — du moins pour l’instant. Aucun système d’IA ne « comprend » aujourd’hui sa tâche d’une manière intelligible pour un humain. Les modèles ne font que cartographier la variété statistique de leurs données d’entraînement.
- Toute tâche qui implique de traiter des données différentes de ce que l’IA a vu auparavant. L’IA ne peut qu’appliquer des règles que vous avez codées explicitement, ou reconnaître des choses très proches de son entraînement. Nos performances chutent de façon exponentielle à mesure que l’on introduit de l’incertitude ou de la variabilité.
- Toute tâche impliquant raisonnement et abstraction. Soit on code explicitement des règles de raisonnement, soit on ne raisonne pas du tout. L’IA actuelle ne sait pas dégager par elle-même des modèles abstraits d’une situation. C’est sans doute le principal goulot d’étranglement aujourd’hui. Si on le résolvait, on surmonterait rapidement les deux points précédents.
J’ai écrit un article de blog intitulé The limitations of deep learning sur ces questions et d’autres sujets liés.
Quels sont les grands défis auxquels fait face la communauté du deep learning ?
Combattre le battage médiatique, développer une conscience éthique et gagner en rigueur scientifique.
Le battage : c’est un véritable fléau. Certaines personnes extrapolent de façon absurde les progrès récents, surestimant largement nos capacités actuelles, et annonçant souvent une IA au niveau humain comme étant imminente — ce qui est faux. Si nous créons des attentes démesurées et que nous ne les tenons pas, nous braquons le public contre nous. Et c’est intellectuellement malhonnête, toxique pour le débat.
L’éthique : la plupart des personnes qui déploient des systèmes d’IA aujourd’hui ne viennent pas d’horizons particulièrement divers et sont souvent inconscientes des implications éthiques et des effets néfastes potentiels des systèmes qu’elles conçoivent. C’est un problème majeur, car ces personnes auront un pouvoir croissant sur les autres. Il faut davantage en discuter et sensibiliser aux usages potentiellement non éthiques de l’IA, qu’il s’agisse de modèles prédictifs biaisés ayant un impact sur des vies, d’applications très discutables, ou de l’utilisation de l’IA pour manipuler nos comportements et nos opinions de manière dangereuse.
La science : il paraît chaque jour une foule d’articles en deep learning, et la plupart n’apportent pas de connaissances nouvelles significatives car ils ne suivent pas la méthode scientifique. Ils « évaluent » les modèles de manière floue, testent des modèles surajustés sur leurs données d’entraînement (c’est particulièrement vrai pour les modèles génératifs et l’apprentissage par renforcement, deux thèmes en forte croissance), pratiquent le cherry-picking, utilisent des bases de comparaison artificiellement faibles, réglent des hyperparamètres d’une façon qui conduit à du surapprentissage sur une tâche spécifique, évaluent sur MNIST uniquement, etc. Le deep learning est un champ sinistré du point de vue scientifique. L’évaluation par les pairs ne corrige guère ces problèmes, peut-être parce que beaucoup de relecteurs n’ont qu’un ou deux ans d’expérience (le domaine croissant très vite). Pour progresser plus rapidement, il faut relever nos exigences en matière de rigueur : reproductibilité des travaux, baselines, évaluation des modèles, significativité statistique. Malheureusement, nos incitations actuelles sont défavorables à la science : on incite à publier, et il est plus facile de publier en donnant à sa recherche un vernis complexe et mystérieux tout en la rendant impossible à évaluer correctement.
À quoi ressemble l’avenir du deep learning, selon vous ?
J’ai justement écrit un article de blog à ce sujet. En résumé, je m’attends à ce que l’IA mêle de plus en plus des modules de reconnaissance de motifs « intuitifs » à des modules de raisonnement formel. Je pense aussi que l’IA évoluera vers une forme de développement logiciel automatisé, en s’inspirant fortement des pratiques et des schémas de l’ingénierie logicielle actuelle.
Vous n’êtes pas seulement développeur. Sur le blog Keras, dans des essais, dans votre livre et sur Twitter, vous abordez avec franchise les questions éthiques autour du deep learning, de l’IA et de la tech en général. Les développeurs ont-ils, selon vous, l’obligation de se saisir de ces enjeux ?
Absolument. Cela a manqué dans le paysage tech ces dernières années. Regardez Facebook, par exemple. Ou la plupart des jeux mobiles. La technologie n’est jamais neutre — parce qu’elle est puissante, parce qu’elle influence nos vies. La façon de concevoir des produits et des technologies y injecte activement des valeurs, que vous en soyez conscient ou non. Autant le faire délibérément. Si vous construisez une plateforme sociale et que vous cherchez à maximiser « l’engagement », c’est un choix lourd d’enjeux éthiques. Soit nous nous en soucions et faisons de l’éthique un objectif explicite de conception des technologies et des structures de pouvoir que nous bâtissons, soit nous abandonnons nos valeurs. Dans la tech, vous ne pouvez pas prétendre être « en dehors du jeu », c’est une illusion.