Entretien avec Andrej Karpathy : De ImageNet à l'AGI
8 août 2017
Deep Learning
Introduction
Bienvenue, Andrej. Je suis vraiment ravi que tu puisses te joindre à moi aujourd'hui.
Merci de m'avoir invité.
Parcours personnel dans l'apprentissage profond
Beaucoup de gens connaissent déjà ton travail dans l'apprentissage profond, mais tout le monde ne connaît pas ton histoire personnelle. J'aimerais commencer par te demander : comment en es-tu arrivé à faire tout ce travail dans l'apprentissage profond ?
Mon premier contact avec l'apprentissage profond remonte à l'époque où j'étais étudiant de premier cycle à l'Université de Toronto. Geoff Hinton y enseignait un cours sur l'apprentissage profond. À l'époque, il s'agissait de machines de Boltzmann restreintes entraînées sur les chiffres MNIST. J'ai beaucoup aimé la façon dont Geoff parlait de l'entraînement du réseau, comme de l'esprit du réseau, en utilisant ces termes. J'ai pensé qu'il y avait une sorte de magie à l'œuvre lorsque l'entraînement se faisait sur ces chiffres. C'est mon premier contact avec le sujet, même si je ne m'y suis pas plongé en détail à ce moment-là. Pendant ma maîtrise à l'Université de Colombie-Britannique, j'ai suivi un cours de Nando de Freitas sur l'apprentissage automatique. C'est la première fois que j'ai approfondi ces réseaux. J'étais très intéressé par l'intelligence artificielle, j'ai donc suivi des cours dans ce domaine. Mais beaucoup de ce que j'y voyais ne me satisfaisait pas. C'était beaucoup de recherche en profondeur, de recherche en largeur, d'élagage alpha-bêta, et je n'étais pas satisfait. Quand j'ai vu les réseaux de neurones pour la première fois en apprentissage automatique — un terme que je trouve plus technique et moins connu — j'ai senti que c'était l'IA sur laquelle je voulais passer du temps. C'est ce qui est vraiment intéressant. Cela m'a poussé dans ces directions ; c'est presque un nouveau paradigme informatique. Normalement, les humains écrivent du code, mais ici, l'optimisation écrit le code. Vous créez la spécification d'entrée-sortie, fournissez de nombreux exemples, puis l'optimisation écrit le code, parfois mieux que vous. J'ai pensé qu'était une façon très nouvelle de concevoir la programmation, et c'est ce qui m'a intrigué.
L'expérience ImageNet et la référence humaine
Grâce à ton travail, tu es devenu connu comme la référence humaine pour la compétition de classification d'images ImageNet. Comment cela est-il arrivé ?
Le défi ImageNet est parfois comparé à la Coupe du Monde de la vision par ordinateur. Beaucoup de gens s'intéressent à ce benchmark, et notre taux d'erreur diminue avec le temps. Il n'était pas évident pour moi de savoir où se situerait un humain sur cette échelle. J'avais déjà réalisé une expérience similaire à plus petite échelle sur l'ensemble de données CIFAR-10 auparavant. Dans CIFAR-10, je regardais des images de 32x32 et j'essayais de les classer moi-même. À l'époque, il n'y avait que 10 catégories, il était donc assez simple de créer une interface pour cela. Je crois que j'avais un taux d'erreur d'environ 6 % sur cet ensemble. Sur la base de ce que je voyais et de la difficulté de la tâche, j'avais prédit que le taux d'erreur le plus bas que nous atteindrions serait de 10 %, et nous en sommes maintenant à 3 ou 2 %. C'était ma première expérience amusante de référence humaine. Je pensais que c'était important pour les mêmes raisons que tu soulignes dans tes cours. Tu veux ce chiffre pour comprendre comment les humains réussissent afin de pouvoir y comparer les algorithmes d'apprentissage automatique. Pour ImageNet, il y avait un décalage entre l'importance du benchmark et l'accent mis sur l'obtention d'un chiffre plus bas sans comprendre comment les humains performent. J'ai créé une interface JavaScript et je me suis montré les images. Le problème avec ImageNet est qu'il n'y a pas que 10 catégories ; il y en a mille. C'était un défi d'interface utilisateur parce que je ne peux pas me souvenir de mille catégories, donc j'ai dû rendre cela équitable. J'ai listé toutes les catégories et je me suis donné des exemples. Pour chaque image, je parcourais mille catégories pour voir ce que l'image pourrait être d'après les exemples. J'ai trouvé que c'était un exercice extrêmement instructif. Je n'avais pas compris qu'un tiers d'ImageNet est constitué d'espèces de chiens, il était donc intéressant de voir que le réseau consacre énormément de temps aux chiens ; un tiers de sa performance en dépend. C'est quelque chose que j'ai fait pendant une semaine ou deux, en mettant tout le reste en suspens. J'ai trouvé que c'était un exercice très amusant. J'ai fini par obtenir un chiffre. J'ai pensé qu'une seule personne ne suffisait pas et j'ai voulu impliquer d'autres personnes. J'ai essayé d'organiser d'autres personnes au sein d'un laboratoire pour faire la même chose. Les gens n'étaient pas aussi disposés à consacrer une semaine ou deux à un travail fastidieux, comme rester assis pendant cinq heures pour identifier des races de chiens. Je n'ai pas pu obtenir assez de données, mais nous avons obtenu au moins une performance approximative, ce qui était amusant. Cela a été remarqué ; je voulais juste connaître le chiffre, mais c'est devenu un truc. Les gens aiment le fait que cela se soit produit, et on m'appelle par dérision 'l'humain de référence', ce qui est hilarant pour moi.
Performance surhumaine des réseaux profonds
As-tu été surpris quand les logiciels et les réseaux profonds ont fini par surpasser tes performances ?
Absolument. Parfois, il est vraiment difficile de voir ce qu'il y a dans l'image — c'est juste une minuscule tache où se trouve un chien noir — et j'hésite entre 20 catégories, mais le réseau trouve juste. Je ne comprends pas comment cela arrive. Il y a une certaine qualité surhumaine. Le réseau est extrêmement doué pour les statistiques des types de pelage et des textures, je n'ai donc pas été surpris que le réseau puisse mieux mesurer ces statistiques fines sur de nombreuses images. Dans de nombreux cas, j'ai été surpris parce que certaines images exigeaient de savoir lire ; par exemple, une bouteille où l'on ne voit pas ce que c'est, mais où le texte vous le dit. En tant qu'humain, je peux le lire, mais le réseau devrait apprendre à lire pour identifier l'objet car ce n'était pas évident autrement.
Enseignement et le cours CS231n
L'une des choses pour lesquelles tu es devenu célèbre est l'enseignement du cours de Stanford et sa mise en ligne. Raconte-moi un peu comment cela s'est passé.
Je sentais fermement que cette technologie était transformatrice et que beaucoup de gens voulaient l'utiliser ; c'est presque comme un marteau. J'étais en mesure de distribuer ce marteau à beaucoup de gens, et j'ai trouvé cela très convaincant. Ce n'est pas forcément conseillé pour un doctorant car on met ses recherches en suspens. C'est devenu 120 % de mon temps. J'ai mis toutes mes recherches en pause pendant environ quatre mois à chaque fois que j'enseignais le cours. Bien que ce ne soit pas recommandé de ce point de vue, ce fut le point fort de mon doctorat, même si ce n'était pas lié à la recherche. Les étudiants étaient vraiment enthousiastes. C'était un cours très différent. Normalement, on vous enseigne des choses découvertes dans les années 1800, mais nous pouvions venir en classe et discuter d'un article datant d'une semaine ou même d'un jour. Les étudiants ont vraiment apprécié cet aspect et le fait qu'ils comprenaient vraiment. Ce n'est pas de la physique nucléaire ou de l'aérospatiale. Il faut connaître le calcul et l'algèbre linéaire, et on peut comprendre tout ce qui se passe sous le capot. Parce que c'est si puissant et que cela change quotidiennement, les gens sentaient qu'ils étaient à l'avant-garde de quelque chose de grand. C'est pourquoi ils ont tant aimé le cours.
Évolution de la vision du domaine
Tu as vraiment aidé beaucoup de gens et distribué beaucoup de marteaux. En tant que personne pratiquant l'apprentissage profond depuis longtemps, comment ta propre réflexion et ta compréhension du domaine ont-elles évolué au fil des ans ?
Quand j'ai vu pour la première fois les machines de Boltzmann restreintes sur les chiffres, il n'était pas évident de voir comment cette technologie allait être utilisée ou à quel point elle serait importante. Quand j'ai commencé à travailler sur la vision par ordinateur, les réseaux convolutifs existaient, mais la communauté ne prévoyait pas de les utiliser de sitôt. La perception était que cela fonctionnait pour de petits cas mais ne passerait jamais à l'échelle pour de grandes images, ce qui était incorrect. Je suis surpris par la généralité de la technologie et par la qualité des résultats. Ce fut ma plus grande surprise. Cela a bien fonctionné sur ImageNet, mais une autre chose que personne n'a vu venir est que l'on peut prendre des réseaux pré-entraînés et les ajuster sur des tâches arbitraires. On ne résout pas seulement ImageNet avec des millions d'exemples ; c'est un extracteur de caractéristiques très général. C'est une deuxième intuition que peu de gens ont vue venir. Il y avait des articles montrant que des gens écrasaient des tâches comme la classification de scènes, la reconnaissance d'actions ou la reconnaissance d'objets simplement en ajustant le réseau. C'était très surprenant pour moi.
L'apprentissage supervisé fait l'objet de la plupart des articles de presse, mais même si l'apprentissage par transfert fonctionne très bien, on dirait que les gens en parlent moins pour une raison quelconque.
Exactement. Ce qui n'a pas aussi bien fonctionné, c'est l'apprentissage non supervisé, ce qui explique pourquoi de nombreux chercheurs sont entrés dans le domaine vers 2007. La promesse de cela n'a toujours pas été tenue. Je trouve surprenant que l'apprentissage supervisé ait si bien fonctionné alors que l'utilisation de l'apprentissage non supervisé n'est toujours pas évidente, même si beaucoup de gens y croient encore profondément.
L'avenir de l'IA et l'AGI
Je sais que tu es l'une des personnes qui réfléchit beaucoup à l'avenir à long terme de l'IA. Veux-tu partager tes réflexions à ce sujet ?
J'ai passé l'année et demie dernière à OpenAI à réfléchir beaucoup à ces sujets. Il me semble que le domaine va se scinder en deux trajectoires. L'une sera l'IA appliquée, l'entraînement de réseaux de neurones avec un apprentissage supervisé ou non supervisé pour obtenir de meilleurs systèmes de reconnaissance d'images. L'autre sera les directions vers l'intelligence artificielle générale : comment obtenir des réseaux de neurones qui sont des systèmes dynamiques complets qui pensent, parlent et agissent aussi intelligemment qu'un humain. En vision par ordinateur, la façon dont nous l'avons abordée initialement était mauvaise car nous avons essayé de la décomposer en parties. Nous pensions : les humains reconnaissent les gens, les scènes et les objets. Nous avions prévu de faire tout ce que font les humains, puis de trouver comment les assembler. C'était la mauvaise approche, comme nous l'avons vu historiquement. Quelque chose de similaire se produit à un niveau supérieur avec l'IA. Les gens se demandent : puisque les humains planifient, expérimentent et parlent, nous avons besoin du langage. Ils essaient de décomposer par fonction, d'accomplir chaque pièce, puis de les assembler dans un cerveau. Je pense que c'est une approche incorrecte. Je suis partisan de ne pas décomposer mais d'avoir un seul réseau de neurones qui est un système dynamique complet — un agent complet. La question est de savoir comment créer des objectifs tels que, lorsque vous optimisez les poids qui composent ce cerveau, vous obteniez un comportement intelligent. C'est ce à quoi j'ai réfléchi à OpenAI. Les gens ont différentes façons d'aborder ce problème. Concernant l'apprentissage supervisé, j'ai écrit une courte histoire en ligne qui explore un monde hypothétique où nous abordons l'AGI en augmentant l'échelle de l'apprentissage supervisé. Cela implique quelque chose comme Amazon Mechanical Turk où les gens contrôlent des corps de robots pour effectuer des tâches, créant un ensemble de données pour imiter les humains. D'autres directions incluent l'apprentissage non supervisé issu de la théorie algorithmique de l'information, comme AIXI, ou de la vie artificielle, qui ressemble à l'évolution artificielle. C'est ce à quoi je passe mon temps à réfléchir. Je pense avoir la réponse, mais je ne suis pas disposé à la révéler ici.
Conseils pour les futurs praticiens
Nous pouvons au moins en apprendre plus en lisant ton article de blog en ligne. Tu as distribué beaucoup de marteaux, et beaucoup de gens veulent encore entrer dans le domaine de l'IA et de l'apprentissage profond. Quels conseils as-tu pour eux ?
Les gens me disent qu'ils apprécient le fait que CS231n entre dans les détails de bas niveau. Ils ne travaillaient pas avec une bibliothèque ; ils voyaient le code brut et en implémentaient eux-mêmes des parties. Il est important de comprendre toute la pile et de ne pas abstraire les choses. L'implémentation à partir de zéro m'a donné la meilleure compréhension lorsque j'apprenais. J'ai écrit ma propre bibliothèque appelée ConvNetJS en JavaScript qui implémente des réseaux de neurones convolutifs. C'était ma façon d'apprendre la rétropropagation. Je conseille aux gens de ne pas travailler avec TensorFlow tant qu'ils n'ont pas écrit quelque chose eux-mêmes dans le plus petit détail. Une fois que vous comprenez ce qu'il y a sous le capot, vous pouvez utiliser des frameworks qui en font l'abstraction. C'est ce qui m'a le plus aidé et ce que les gens apprécient dans le 231n.
Plutôt que de faire tourner un réseau de neurones et que cela arrive par magie.
Si vous le traitez comme une séquence de couches et que vous ajoutez du dropout pour que cela fonctionne mieux, vous ne pourrez pas déboguer ou améliorer les modèles efficacement.
Je suis vraiment ravi que le cours de deeplearning.ai commence par de nombreuses semaines de programmation Python avant de passer aux frameworks.
Bien.
Conclusion
Merci de partager tes réflexions et tes conseils. Tu es un héros pour beaucoup dans le monde de l'apprentissage profond, donc je suis reconnaissant que tu aies pu te joindre à nous aujourd'hui.
Merci de m'avoir invité.