AlexNet a largement remporté le défi 2012 ImageNet LSVRC-2012 par un énorme avantage (15,3 % contre 26,2 % (deuxième place) de taux d’erreur). Nous examinons ici les subtilités de l’ingénierie des neurones à partir de l’article connexe intitulé “ImageNet Characterization with Profound Convolutional Neural Systems”.

Les caractéristiques du document

Utilisez Relu plutôt que Tanh pour inclure la non-linéarité. Elle accélère la vitesse de plusieurs fois avec une précision similaire.

Utilisez l’abandon plutôt que la régularisation pour gérer le suréquipement. De toute façon, le temps de préparation est multiplié par le rythme d’abandon de 0,5.

La mise en commun des couvertures pour diminuer la taille du système. Elle permet de réduire les taux d’erreur de 0,4 % pour le premier et de 0,3 % pour les cinq premiers.

L’ingénierie

Il contient 5 couches convolutives et 3 couches complètement associées. La Relu est appliquée après une couche très convolutive et complètement associée. Dropout est appliqué avant la première et la deuxième année complètement associées. La taille de l’image dans le graphique d’architecture qui l’accompagne devrait être de 227 * 227 plutôt que 224 * 224, comme l’a souligné Andrei Karpathy dans son célèbre cours CS231n. Il est d’autant plus intéressant de noter que la taille de l’information est de 224 * 224 avec un amortissement de 2 dans la vision des brûlures de la torche. La largeur et la hauteur du rendement devraient être de (224-11+4)/4 + 1=55,25 ! La clarification ici est que pytorch Conv2d applique l’administrateur d’étage au résultat ci-dessus, et dans ce sens, le dernier amortissement n’est pas pris en compte.

Le système compte 62,3 millions de paramètres et nécessite 1,1 milliard d’unités de calcul en un seul passage. On peut également observer que les couches de convolution, qui représentent 6 % du nombre considérable de paramètres, dépensent 95 % du calcul. Cela nous amène à l’autre article d’Alex, qui utilise cette composante pour améliorer l’exécution. La pensée essentielle de ce document est la suivante, au cas où vous seriez intrigué :

Dupliquer les couches de convolution dans divers GPU ; Transporter les couches complètement associées dans divers GPU.

Alimenter un groupe de préparation d’informations en couches convolutionnelles pour chaque GPU (Information Parallel).

Alimenter les conséquences des couches convolutionnelles dans les couches disséminées complètement associées, agrégat par agrégat (Model Parallel) Lorsque la dernière avance est accomplie pour chaque GPU. Rétroproduire les inclinaisons par groupe et synchroniser les charges des couches convolutionnelles.

Il exploite clairement les points forts dont nous avons parlé plus haut : les couches convolutionnelles ont quelques paramètres et grappes de calcul, les couches complètement associées sont l’inverse exact.

Préparer

Il faut 90 ans en cinq ou six jours pour préparer le système sur deux GPU GTX 580. SGD avec un taux d’apprentissage de 0,01, une énergie de 0,9 et une pourriture de poids de 0,0005 est utilisé. Le taux d’apprentissage est divisé par 10 une fois les niveaux d’exactitude atteints. Le taux d’inclinaison est diminué plusieurs fois pendant la procédure de préparation.