Réponse courte
AlexNet était un réseau de neurones convolutif profond conçu par Alex Krizhevsky, Ilya Sutskever et Geoffrey Hinton à l’Université de Toronto, qui a remporté le défi de reconnaissance d’images ImageNet 2012 avec une erreur top-5 de 15,3 %, loin devant les 26,2 % du deuxième. L’ampleur de sa victoire a convaincu une grande partie du domaine que les réseaux de neurones profonds entraînés sur des cartes graphiques étaient la voie de l’avenir.
Question de suivi Pourquoi les cartes graphiques se sont-elles révélées si efficaces pour entraîner des réseaux de neurones?
À l’automne 2012, une petite équipe de l’Université de Toronto s’est inscrite à un concours visant à apprendre aux ordinateurs à reconnaître des objets dans des photos. Sa candidature, sous le nom d’équipe SuperVision, n’a pas seulement gagné. Elle a devancé la meilleure des autres de plus de dix points de pourcentage. Le réseau qui la portait a vite été connu sous le nom d’AlexNet, d’après son premier auteur, Alex Krizhevsky.
Le résultat comptait à cause de la façon dont il avait été obtenu. Toutes les autres équipes de tête utilisaient des caractéristiques d’image soigneusement conçues à la main. AlexNet apprenait ses caractéristiques directement à partir des pixels bruts, et l’équipe a rendu cela possible en s’entraînant sur deux cartes graphiques grand public.
Le concours et le résultat
Le concours était l’ImageNet Large Scale Visual Recognition Challenge 2012, habituellement abrégé en ILSVRC. ImageNet est une immense collection de photos étiquetées; pour le défi, les participants s’entraînaient sur environ 1,2 million d’images réparties en 1 000 catégories. Leurs systèmes devaient ensuite étiqueter des images qu’ils n’avaient jamais vues.
La notation utilisait l’« erreur top-5 » : un système peut proposer cinq réponses par image, et il n’est compté comme fautif que si la bonne étiquette ne figure pas parmi elles. Selon la source encyclopédique, la candidature d’AlexNet a été soumise le 30 septembre 2012. Les résultats officiels placent SuperVision en tête avec une erreur de 0,153, soit 15,3 %. Le deuxième, une équipe de l’Université de Tokyo appelée ISI, a obtenu 26,2 %, et des équipes d’Oxford (VGG) et de XRCE/INRIA sont arrivées autour de 27 %; les trois s’appuyaient sur des caractéristiques conçues à la main, transmises à des classificateurs plus simples. SuperVision a aussi remporté la tâche plus difficile de localisation, qui demande où se trouve l’objet dans l’image.
Les trois auteurs, Krizhevsky, Ilya Sutskever et Geoffrey Hinton, tous de l’Université de Toronto, ont décrit leurs travaux dans un article présenté à la conférence NIPS 2012, « ImageNet Classification with Deep Convolutional Neural Networks ».
Comment AlexNet fonctionnait
AlexNet est un réseau de neurones convolutif, ou CNN. Un réseau de neurones est une pile d’unités de calcul simples dont les connexions sont ajustées pendant l’entraînement. Un réseau convolutif ajoute une idée bien adaptée aux images : au lieu que chaque unité regarde l’image entière, de petits filtres glissent dessus, chacun cherchant un motif comme un contour ou une tache de couleur. Les couches supérieures combinent ces motifs en textures, en parties et finalement en objets entiers.
Voici un parcours simplifié de ce qui se passe quand AlexNet regarde la photo d’un chat :
| Groupe de couches | Ce qu’il détecte (en gros) | Exemple du chat |
|---|---|---|
| Premières couches convolutives | Contours, lignes, taches de couleur | Forme des oreilles, rayures |
| Couches convolutives du milieu | Textures et parties simples | Fourrure, un œil, la forme d’un nez |
| Dernières couches convolutives | Parties d’objet plus grandes | Un visage qui ressemble à celui d’un chat |
| Trois couches entièrement connectées | Combinent tout en une décision | Scores pour les 1 000 classes |
| Sortie finale | Choisit les meilleures réponses | « chat tigré », « chat-tigre », ... |
Le réseau comptait 60 millions de paramètres ajustables et 650 000 unités. Ses huit couches apprises se divisaient en cinq couches convolutives suivies de trois couches entièrement connectées. Trois choix pratiques l’ont fait fonctionner. Il utilisait des unités ReLU (unités linéaires rectifiées, qui laissent simplement passer les nombres positifs et ramènent les négatifs à zéro), qui, selon les auteurs, s’entraînaient plusieurs fois plus vite que les unités plus anciennes. Il utilisait le « dropout » (abandon), qui désactive des unités au hasard pendant l’entraînement pour que le réseau ne puisse pas trop s’appuyer sur l’une d’elles. Et il était réparti sur deux cartes graphiques NVIDIA GTX 580 de 3 Go de mémoire chacune, où il s’est entraîné pendant cinq à six jours.
À essayer : prenez une photo et écrivez les cinq étiquettes que vous proposeriez pour elle, comme le ferait un système top-5. Demandez ensuite à un ami d’en faire autant. Si aucune des deux listes ne contient la « bonne » réponse, demandez-vous pourquoi : la catégorie est-elle ambiguë, ou l’objet est-il partiellement caché?
Pourquoi c’était important
AlexNet n’était ni le premier réseau de neurones sur une carte graphique, ni le premier à gagner un concours d’images. Dan Cireșan et ses collègues du laboratoire suisse IDSIA en avaient gagné plusieurs en 2011 et en 2012 avec des réseaux semblables sur GPU, et toute la conception descend des réseaux convolutifs que Yann LeCun a présentés en 1989. Ce qu’AlexNet a fait, c’est gagner le banc d’essai phare du domaine avec une avance que personne ne pouvait ignorer.
Les auteurs en ont eux-mêmes tiré la leçon : leur article prédit de meilleurs résultats simplement grâce à des jeux de données plus grands et à des cartes graphiques plus rapides. Les chercheurs ont saisi le message, et une vague d’articles a suivi, utilisant des réseaux convolutifs entraînés sur GPU. La recette (beaucoup de données, de grands réseaux et l’entraînement sur GPU) s’est depuis répandue bien au-delà des images. En 2020, l’article avait été cité plus de 70 000 fois. Les grands modèles d’aujourd’hui, de GPT-3 aux nouveaux modèles d’images d’OpenAI, DALL-E et CLIP, annoncés le mois dernier, reposent sur cette recette.
Pourquoi les cartes graphiques se sont-elles révélées si efficaces pour entraîner des réseaux de neurones?
Les cartes graphiques, ou GPU, ont été conçues pour afficher des jeux vidéo. Dessiner une image demande de faire le même petit calcul pour des millions de pixels à la fois; un GPU contient donc des milliers de processeurs simples qui travaillent en parallèle. Un processeur ordinaire (CPU) n’a que quelques cœurs, plus puissants, conçus pour faire une chose après l’autre.
Entraîner un réseau de neurones s’avère être le même genre de travail. Chaque couche multiplie entre elles de grandes grilles de nombres, et presque toutes ces multiplications peuvent se faire en même temps. Une convolution, en particulier, applique le même filtre à chaque position d’une image : c’est exactement le travail répétitif et parallèle pour lequel un GPU est conçu.
L’équipe d’AlexNet a écrit son propre code, très optimisé, pour ces opérations. Malgré cela, la mémoire était la contrainte la plus serrée : les 3 Go d’une seule carte ne pouvaient pas contenir tout le réseau, et c’est pourquoi l’équipe l’a réparti sur deux cartes qui ne communiquent entre elles qu’à certaines couches. C’est aussi pourquoi elle voyait le matériel comme le principal frein : elle a écrit que la taille du réseau était limitée surtout par la mémoire des GPU et par le temps qu’elle était prête à attendre.
Sources
- ImageNet Classification with Deep Convolutional Neural Networks — Advances in Neural Information Processing Systems 25 (NIPS 2012), 3 décembre 2012
- Large Scale Visual Recognition Challenge 2012 (ILSVRC2012) results — ImageNet
- AlexNet — Wikipedia (archived January 2021), 15 janvier 2021