AlexNet est une architecture de réseau neuronal convolutif conçue pour la classification d'images, développée en 2012 par Alex Krizhevsky, Ilya Sutskever et Geoffrey Hinton à l'Université de Toronto. Elle classe les images en 1 000 catégories d'objets distinctes et est largement reconnue comme la première démonstration à grande échelle de réseaux convolutifs profonds en reconnaissance visuelle. Le modèle contient 60 millions de paramètres et 650 000 neurones, et sa profondeur était essentielle à ses performances élevées, rendue possible par l'utilisation de processeurs graphiques (GPU) pendant l'entraînement.
Les trois chercheurs ont formé l'équipe SuperVision et ont soumis AlexNet au défi de reconnaissance visuelle à grande échelle ImageNet (ILSVRC) le 30 septembre 2012. Le réseau a atteint un taux d'erreur top-5 de 15,3 %, remportant le concours avec une marge de plus de 10,8 % sur le finaliste. Ce résultat a été un tournant pour le apprentissage profond, influençant un grand nombre de travaux ultérieurs en vision par ordinateur et en intelligence artificielle.
Architecture
AlexNet contient huit couches : les cinq premières sont des couches convolutives, certaines suivies de couches de max-pooling, et les trois dernières sont des couches entièrement connectées. Le réseau, à l'exception de la dernière couche, est divisé en deux copies, chacune fonctionnant sur un GPU, car il ne tenait pas dans les 3 Go de mémoire VRAM d'une seule Nvidia GTX 580. La structure peut être écrite comme (CONV → RN → MP)2 → (CONV3 → MP) → (FC → DO)2 → Linear → softmax, où CONV est une couche convolutive avec activation ReLU, RN est une normalisation de réponse locale, MP est un max-pooling, FC est une couche entièrement connectée avec ReLU, Linear est une couche entièrement connectée sans activation, et DO est un dropout.
Notamment, les couches convolutives 3, 4 et 5 sont connectées sans pooling ni normalisation. AlexNet a utilisé la fonction d'activation ReLU non saturante, qui s'entraînait mieux que tanh et sigmoïde. Ce choix a été un facteur clé de son efficacité d'entraînement.
Entraînement
L'ensemble d'entraînement ImageNet contenait 1,2 million d'images. Le modèle a été entraîné pendant 90 époques sur cinq à six jours en utilisant deux GPU Nvidia GTX 580 (3 Go chacun), qui ont une performance théorique de 1,581 TFLOPS en float32 et étaient vendus à 500 $ US à leur sortie. Chaque passage avant nécessitait environ 1,43 GFLOPs, donc les deux GPU ensemble pouvaient théoriquement effectuer plus de 2 200 passages avant par seconde dans des conditions idéales.
Les images de l'ensemble de données étaient stockées au format JPEG, occupant 27 Go de disque. Le réseau neuronal utilisait 2 Go de RAM sur chaque GPU et environ 5 Go de RAM système pendant l'entraînement. Les GPU géraient l'entraînement, tandis que les CPU chargeaient les images depuis le disque et effectuaient la augmentation de données.
AlexNet a été entraîné avec une descente de gradient par momentum avec une taille de lot de 128 exemples, un momentum de 0,9 et un décroissance de poids de 0,0005. Le taux d'apprentissage a commencé à 10−2 et a été manuellement réduit de 10 fois chaque fois que l'erreur de validation semblait cesser de diminuer, étant réduit trois fois pour finir à 10−5. Deux formes d'augmentation de données ont été calculées à la volée sur le CPU, les rendant « gratuites en calcul » : premièrement, chaque image était mise à l'échelle pour que son côté le plus court soit de 256 pixels, puis le patch central de 256×256 était recadré et normalisé ; deuxièmement, des patches aléatoires de 224×224 (et leurs réflexions horizontales) étaient extraits, augmentant la taille de l'ensemble d'entraînement de 2048 fois. De plus, les valeurs RVB étaient décalées aléatoirement le long des directions principales des valeurs de pixels.
La résolution de 224×224 a été choisie car 256 - 16 - 16 = 224, ce qui signifie que cadrer 16 pixels de chaque côté d'une image de 256×256 donne une image de 224×224. AlexNet a utilisé une normalisation de réponse locale et une régularisation par dropout avec une probabilité d'abandon de 0,5. Tous les poids ont été initialisés comme des gaussiennes avec une moyenne de 0 et un écart type de 0,01, et les biais des couches convolutives 2, 4, 5 et de toutes les couches entièrement connectées ont été initialisés à la constante 1 pour éviter le problème de ReLU mourante.
Au moment du test, une image est mise à l'échelle pour que son côté le plus court soit de 256, le patch central de 256×256 est recadré, puis cinq patches de 224×224 (quatre coins et le centre) plus leurs réflexions horizontales sont calculés, donnant 10 patches. Les probabilités prédites du réseau sur les 10 patches sont moyennées pour produire la prédiction finale.
Concours ImageNet
La version utilisée pour le concours ImageNet 2012 était un ensemble de sept AlexNets. Cinq AlexNets de l'architecture standard ont été entraînés sur l'ensemble d'entraînement ILSVRC-2012. Deux AlexNets variantes ont également été entraînés, chacun avec une couche convolutive supplémentaire au-dessus de la dernière couche de pooling, d'abord sur l'ensemble de la version ImageNet Fall 2011 (15 millions d'images dans 22 000 catégories) puis affinés sur l'ensemble d'entraînement ILSVRC-2012. Le système final a moyenné les probabilités prédites des sept réseaux.
Histoire
Travaux antérieurs
En 1980, Kunihiko Fukushima a proposé un CNN précoce appelé néocognitron, entraîné par apprentissage non supervisé. LeNet-5, développé par Yann LeCun et al. en 1989, utilisait l'apprentissage supervisé avec rétropropagation et avait une architecture essentiellement identique à AlexNet à petite échelle. Le max-pooling a été utilisé en 1990 pour le traitement de la parole et pour la première fois pour le traitement d'images dans le Cresceptron de 1992.
Au cours des années 2000, à mesure que le matériel GPU s'améliorait, les chercheurs ont adapté les GPU pour le calcul généraliste, y compris l'entraînement de réseaux neuronaux. En 2006, K. Chellapilla et al. ont entraîné un CNN sur GPU qui était 4 fois plus rapide qu'une implémentation CPU équivalente. En 2009, Raina et al. ont entraîné un réseau de croyances profondes avec 100 millions de paramètres sur une Nvidia GeForce GTX 280 avec une accélération allant jusqu'à 70 fois par rapport aux CPU. Un CNN profond de Dan Cireșan et al. à l'IDSIA en 2011 était 60 fois plus rapide qu'une implémentation CPU équivalente, et entre le 15 mai 2011 et le 10 septembre 2012, leur CNN a remporté quatre concours d'images et atteint des résultats de pointe sur plusieurs bases de données. Selon l'article d'AlexNet, le réseau antérieur de Cireșan est « quelque peu similaire » à AlexNet, et les deux ont été écrits avec CUDA pour fonctionner sur GPU.
Vision par ordinateur
Pendant la période 1990-2010, les réseaux neuronaux n'étaient pas meilleurs que d'autres méthodes d'apprentissage automatique comme la régression par noyau et les machines à vecteurs de support. Le succès d'AlexNet en 2012 a démontré la puissance de l'apprentissage profond pour la vision par ordinateur, conduisant à l'adoption généralisée des CNN et au développement d'architectures ultérieures telles que les réseaux résiduels. Il a également suscité un intérêt pour le calcul basé sur GPU pour le apprentissage automatique et a contribué à l'essor de l'apprentissage profond comme approche dominante en IA.