Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 10136|Répondre: 0

L’évolution de l’architecture des réseaux neuronaux : une revue complète de plus de dix architectures de LeNet5 à ENet

[Copié le lien]
Publié sur 24/04/2018 13:08:47 | | | |
LeNet5
LeNet5 est né en 1994 et est l’un des premiers réseaux neuronaux convolutionnels, ayant fait progresser le domaine de l’apprentissage profond. Depuis 1988, après de nombreuses itérations réussies, ce travail pionnier de Yann LeCun porte le nom de LeNet5 (voir : Apprentissage basé sur le gradient appliqué à la reconnaissance de documents).


L’architecture de LeNet5 repose sur l’idée que (en particulier) les caractéristiques d’une image sont réparties sur toute l’image, et que la convolution avec des paramètres apprenables est un moyen efficace d’extraire des caractéristiques similaires à plusieurs emplacements avec un petit nombre de paramètres. À cette époque, il n’y avait pas de carte graphique pour aider à l’entraînement, et même le processeur était lent. Par conséquent, la capacité à sauvegarder des paramètres ainsi que le processus de calcul est un développement clé. C’est l’opposé d’utiliser chaque pixel comme entrée séparée pour un grand réseau de neurones multicouches. LeNet5 explique que ces pixels ne doivent pas être utilisés dans la première couche car l’image présente de fortes corrélations spatiales qui ne peuvent être exploitées en utilisant des pixels indépendants de l’image comme différentes caractéristiques d’entrée.

Les fonctionnalités de LeNet5 peuvent être résumées comme suit :

Les réseaux de neurones convolutionnels utilisent 3 couches comme une séquence : convolutionnel, groupé, non linéaire, → C’est probablement une caractéristique clé de l’apprentissage profond d’images depuis cet article !
Utilisez des convolutions pour extraire des caractéristiques spatiales
Sous-échantillonnage en utilisant l’application de la moyenne spatiale
La non linéarité sous la forme d’une tangente hyperbolique (tanh) ou en forme de S (sigmoïde).
Les réseaux neuronaux multicouches (MLP) servent de classificateurs finaux
Les matrices de connexion clairsemées entre les couches évitent des coûts de calcul élevés

Dans l’ensemble, ce réseau est le point de départ d’un grand nombre d’architectures récentes et a inspiré de nombreuses personnes dans ce domaine.

Intervalle
De 1998 à 2010, le réseau de neurones était en phase d’incubation. La plupart des gens ignorent leur pouvoir croissant, tandis que d’autres chercheurs tardent à le faire. Grâce à l’avènement des appareils photo de téléphones portables et des appareils photo numériques bon marché, de plus en plus de données sont exploitées. Et la puissance de calcul augmente également, les CPU deviennent plus rapides, et les GPU deviennent des outils informatiques pour de multiples usages. Ces tendances ont permis aux réseaux de neurones de progresser, bien que lentement. Les données et la puissance de calcul rendent les tâches que les réseaux de neurones peuvent accomplir de plus en plus intéressantes. Après cela, tout devint clair......

Dan Ciresan Net
En 2010, Dan Claudiu Ciresan et Jürgen Schmidhuber ont publié une implémentation du tout premier réseau de neurones GPU. Cette implémentation est un réseau neuronal à 9 couches fonctionnant sur un processeur graphique NVIDIA GTX 280, incluant la propagation avant et arrière.

AlexNet
En 2012, Alex Krizhevsky a publié Alexet (voir : ImageNet Classification with Deep Convolutional Neural Networks), une version plus profonde et plus large de LeNet qui a remporté la difficile concurrence ImageNet avec une marge significative.


AlexNet étend les idées de LeNet à des réseaux de neurones plus vastes capables d’apprendre des objets et des niveaux d’objet bien plus complexes. Les contributions de ce travail sont les suivantes :

Utilisez une unité linéaire modifiée (ReLU) comme non-linéarité
Utilisez la technique Dropout pour ignorer sélectivement les neurones individuels pendant l’entraînement afin d’éviter le surajustement du modèle
Contourner un grand pool pour éviter l’effet moyen du pooling moyen
Réduisez le temps d’entraînement avec la carte graphique NVIDIA GTX 580

À ce stade, les GPU peuvent fournir un nombre plus élevé de cœurs que les CPU, et le temps d’entraînement peut être multiplié par 10, ce qui permet à son tour des ensembles de données plus volumineux et des images plus volumineux.

Le succès d’AlexNet a conduit à une petite révolution. Les réseaux de neurones convolutionnels sont désormais la colonne vertébrale de l’apprentissage profond, et ils sont devenus synonymes de « grands réseaux neuronaux capables désormais de résoudre des tâches utiles ».

Exploit
En décembre 2013, le laboratoire Yann LeCun de l’Université de New York a proposé une dérivée d’AlexNet, Overfeat (voir : OverFeat : Integrated Recognition, Localization and Detection using Convolutional Networks). Cet article proposait également une boîte englobante d’apprentissage, ce qui a conduit à de nombreux articles sur ce même sujet. Je pense qu’il vaut mieux apprendre à séparer les objets que d’apprendre à utiliser des boîtes englobantes artificielles.

VGG
Le réseau VGG de l’Université d’Oxford (voir : Very Deep Convolutional Networks for Large-Scale Image Recognition) est le premier réseau à utiliser des filtres 3×3 plus petits à chaque couche convolutionnelle et à les combiner pour les traiter en une séquence convolutionnelle.

Cela semble être l’opposé du principe de LeNet, où de grandes convolutions sont utilisées pour obtenir des caractéristiques similaires dans une image. Contrairement aux filtres 9×9 ou 11×11 d’AlexNet, les filtres commencent à devenir plus petits, se rapprochant de la fameuse anomalie de convolution 1×1 que LeNet tente d’éviter — du moins sur la première couche du réseau. Cependant, VGG a fait de grands progrès en utilisant plusieurs convolutions 3×3 successivement pour imiter les effets de champs réceptifs plus importants, tels que 5×5 et 7×7. Ces idées ont également été utilisées dans des architectures réseau plus récentes, telles qu’Inception et ResNet.


Les réseaux VGG utilisent plusieurs couches convolutionnelles 3×3 pour caractériser des caractéristiques complexes. Notez que les 3e, 4e, 5e blocs de VGG-E : 256×256 et 512×512 3×3 sont utilisés plusieurs fois successivement pour extraire des caractéristiques plus complexes et des combinaisons de ces caractéristiques. L’effet est équivalent à un grand classificateur 512×512 avec 3 couches convolutionnelles. Cela signifie évidemment qu’il y a beaucoup de paramètres et de capacités d’apprentissage. Mais ces réseaux sont difficiles à entraîner et doivent être divisés en réseaux plus petits et accumulés couche par couche. Cela est dû à l’absence d’un moyen robuste de régulariser le modèle ou de contraindre plus ou moins une grande partie de l’espace de recherche en raison du grand nombre de paramètres.

VGG utilise de grandes tailles de caractéristiques dans de nombreuses couches car l’inférence est chronophage à l’exécution. Comme pour le goulot d’étranglement d’Inception, réduire le nombre de fonctionnalités permettra d’économiser certains coûts de calcul.

Réseau dans le réseau
L’idée de Network in Network (NiN, voir article : Network In Network) est simple et excellente : l’utilisation de la convolution 1×1 pour offrir plus de capacités composables aux fonctionnalités de la couche convolutionnelle.

L’architecture NiN utilise des couches MLP spatiales après des convolutions individuelles pour mieux combiner les caractéristiques avant les autres couches. Encore une fois, on peut penser que les convolutions 1×1 vont à l’encontre du principe original de LeNet, mais en réalité, elles peuvent combiner des caractéristiques convolutionnelles mieux qu’il n’est impossible simplement d’empiler plus de caractéristiques convolutives. C’est différent d’utiliser le pixel original comme entrée de couche suivante. Les convolutions 1×1 sont souvent utilisées pour combiner de façon spatioque des caractéristiques sur les cartes de caractéristiques après la convolution, de sorte qu’elles peuvent en réalité utiliser très peu de paramètres et les partager entre tous les pixels de ces caractéristiques !


La capacité de MLP à augmenter considérablement l’efficacité des caractéristiques convolutionnelles individuelles en les combinant en groupes plus complexes. Cette idée a depuis été utilisée dans certaines architectures récentes, telles que ResNet, Inception et ses dérivés.

NiN utilise également une couche de pooling moyenne comme partie du classificateur final, une autre pratique qui deviendra courante. Cela se fait en moyennant les réponses du réseau à plusieurs images d’entrée avant la classification.

GoogLeNet et Inception
Christian Szegedy de Google a commencé sa quête pour réduire la surcharge computationnelle des réseaux neuronaux profonds et a conçu GoogLeNet, la première architecture Inception (voir : Aller plus loin avec des convolutions).

C’était à l’automne 2014, et les modèles d’apprentissage profond devenaient utiles pour classer les images par rapport aux images vidéo. La plupart des sceptiques ne doutent plus que l’apprentissage profond et les réseaux de neurones sont vraiment de retour cette fois-ci, et continueront d’évoluer. Compte tenu de l’utilité de ces technologies, des géants d’Internet comme Google sont très intéressés par le déploiement efficace et à grande échelle de ces architectures sur leurs serveurs.

Christian a beaucoup réfléchi à la façon dont les réseaux de neurones profonds peuvent atteindre des niveaux élevés de performance, comme sur ImageNet, tout en réduisant leur surcharge de calcul. Ou des améliorations de performance peuvent être apportées tout en assurant la même surcharge de calcul.

Lui et son équipe ont conçu le module Inception :


À première vue, il s’agit essentiellement d’une combinaison parallèle de filtres convolutifs 1×1, 3×3, 5×5. Mais la grande idée d’Inception est de réduire le nombre de caractéristiques avant les modules parallèles coûteux avec 1×1 blocs convolutionnels (NiN). On parle couramment de « goulot d’étranglement ». Cette section sera expliquée dans la section « couche goulot d’étranglement » ci-dessous.

GoogLeNet utilise une colonne vertébrale sans module d’inception comme couche initiale, suivie d’une couche de pooling moyenne plus un classificateur softmax similaire à NiN. Ce classificateur dispose d’un nombre d’opérations beaucoup plus faible que les classificateurs d’AlexNet et VGG. Cela a également conduit à une conception de réseau très efficace, voir l’article : An Analysis of Deep Neural Network Models for Practical Applications.

Couche goulot d’étranglement
Inspiré par NiN, la couche goulot d’étranglement d’Inception réduit le nombre de caractéristiques dans chaque couche, et donc le nombre d’opérations ; Ainsi, le temps d’inférence peut être maintenu bas. Le nombre de fonctionnalités est réduit de 4 fois avant que les données ne passent par des modules convolutionnels coûteux. C’est une économie significative en termes de coûts de calcul et un succès de l’architecture.

Vérifions précisément. Maintenant que vous avez 256 entrées de fonctionnalités et 256 sorties de fonctionnalités, supposons que la couche Inception ne puisse effectuer que 3×3 convolutions, ce qui signifie un total de 256×256×3×3 convolutions (près de 589 000 opérations de multiplication et d’accumulation (MAC)). Cela peut dépasser notre budget de calcul, par exemple, d’exécuter la couche en 0,5 milliseconde sur les serveurs Google. Nous avons donc décidé de réduire le nombre de fonctionnalités à confondre, qui était de 64 (c’est-à-dire 256/4). Dans ce cas, on commence par une convolution de 256 -> 64 1×1, puis 64 convolutions sur toutes les branches de l’Inception, suivies d’une convolution 1×1 à partir d’une caractéristique de 64 -> 256, et maintenant l’opération est la suivante :

256×64 × 1×1 = 16 000 s
64×64 × 3×3 = 36 000 s
64×256 × 1×1 = 16 000 s

Comparé aux 600 000 précédents, il y a désormais un total de 70 000 volumes de calcul, soit près de 10 fois moins.

Et même si nous avons mieux opéré, nous n’avons pas perdu sa généralité à ce niveau. La couche goulot d’étranglement s’est avérée excellente sur des ensembles de données comme ImageNet, et elle est également utilisée dans des architectures comme ResNet, que nous allons introduire prochainement.

Il réussit parce que les caractéristiques d’entrée sont liées, ce qui permet de réduire la redondance en les combinant correctement avec une convolution 1×1. Ensuite, après qu’un petit nombre de caractéristiques soient alambiquées, elles peuvent être développées à nouveau en combinaisons significatives à la couche suivante.

Inception V3 (et V2)
Christian et son équipe sont des chercheurs très prolifiques. En février 2015, Inception normalisée par lots a été introduite sous le nom d’Inception V2 (voir l’article : Batch Normalization : Accélérer la formation en réseau profond en réduisant le décalage interne des covariables). La normalisation par lots calcule la moyenne et l’écart-type de toutes les cartes de caractéristiques sur la sortie d’une couche, et utilise ces valeurs pour normaliser leurs réponses. Cela équivaut à « blanchir » les données, de sorte que toutes les cartes neuronales répondent dans la même plage et ont une moyenne nulle. Cela aide à l’entraînement lorsque la couche suivante n’a pas besoin d’apprendre le décalage à partir des données d’entrée, et met aussi l’accent sur la meilleure combinaison de ces fonctionnalités.

En décembre 2015, l’équipe a publié une nouvelle version du module Inception et une architecture similaire (voir article : Rethinking the Inception Architecture for Computer Vision). L’article explique mieux l’architecture originale de GoogLeNet, en donnant plus de détails sur les choix de conception. L’idée originale est la suivante :

En construisant soigneusement le réseau, la profondeur et la largeur sont équilibrées, afin de maximiser le flux d’informations vers le réseau. Avant chaque pooling, ajoutez la mappage des fonctionnalités.
À mesure que la profondeur augmente, la profondeur ou le nombre de caractéristiques de la couche réseau augmente également de manière systématique.
Utilisez chaque augmentation de profondeur de couche pour augmenter la liaison des éléments avant la couche suivante.
En utilisant seulement 3×3 convolutions, un filtre 5×5 et 7×7 donné peut être divisé en plusieurs 3×3 lorsque cela est possible. Regardez l’image ci-dessous


En conséquence, la nouvelle Inception est devenue :


Vous pouvez aussi diviser le filtre en aplatissant la convolution en modules plus complexes :


Lors des calculs d’inception, le module Inception peut également réduire la taille des données en fournissant un pooling. C’est essentiellement similaire à l’exécution d’une simple couche de pooling en parallèle lors d’une convolution :


Inception utilise également une couche de pooling et softmax comme classeur final.

ResNet
Décembre 2015 a vu un nouveau changement, coïncidant avec Inception V3. ResNet a une idée simple : alimenter la sortie de deux couches convolutionnelles consécutives et contourner l’entrée vers la couche suivante (voir l’article : Deep Residual Learning for Image Recognition).


C’est similaire à certaines anciennes idées précédentes. Mais dans ResNet, ils séparent les deux couches et sont appliqués à une plus grande échelle. Le triage après deux couches est une intuition clé car diviser une couche ne donne pas plus d’amélioration. Le passage à travers la couche 2 peut être considéré comme un petit classificateur ou un réseau dans le réseau.

C’est la première fois que le nombre de couches réseau dépasse 100, et même 1000 couches peuvent être entraînées.

ResNet, qui possède un grand nombre de couches réseau, commence à utiliser une couche réseau similaire à la couche goulot d’étranglement Inception :


Cette couche traite un plus petit nombre de caractéristiques en compliquant d’abord un plus petit nombre de caractéristiques par un 1×1 avec une sortie plus petite (généralement 1/4 de l’entrée), puis en utilisant une couche de 3×3 puis une couche de 1×1. Similaire au module Inception, cela garantit une faible intensité de calcul tout en offrant des combinaisons de fonctionnalités riches.

ResNet utilise une couche initiale relativement simple sur les entrées : une couche de base de 7×7 volumes avec deux pools. Comparez cela avec les plus complexes et moins intuitifs Inception V3 et V4.

ResNet utilise également une couche de pooling plus softmax comme classeur final.

D’autres informations sur ResNet se produisent chaque jour :

ResNet peut être considéré à la fois parallèle et contigu, traitant les entrées et sorties (entrées) comme parallèles dans de nombreux modules, tandis que les sorties de chaque module sont connectées en continu.
ResNet peut également être considéré comme une combinaison de modules parallèles ou continus (voir l’article : Les réseaux résiduels sont des ensembles exponentiels de réseaux relativement peu profonds).
Il a été constaté que ResNet fonctionne généralement en parallèle sur des blocs réseau aux couches 20 à 30. Au lieu de circuler continuellement sur toute la longueur du réseau.
Lorsque ResNet renvoie la sortie à l’entrée comme un RNN, le réseau peut être considéré comme un modèle cortical biologiquement mieux fiable (voir article : Pont entre l’apprentissage résiduel, les réseaux neuronaux récurrents et le cortex visuel).

Inception V4
Voici une autre version d’Inception par Christian et son équipe, qui est similaire à Inception V3 :


Inception V4 combine également le module Inception et le module ResNet :


Je pense que l’architecture n’est pas très concise, mais elle est aussi pleine d’heuristiques moins transparentes. Il est difficile de comprendre les choix qu’il contient, et il est difficile pour les auteurs de les expliquer.

Compte tenu de la simplicité du réseau, qui peut être facilement comprise et corrigée, ResNet pourrait être meilleur.

SqueezeNet
SqueezeNet (voir article : SqueezeNet : précision au niveau AlexNet avec 50 fois moins de paramètres et une taille de modèle <0,5 Mo) est une architecture récemment publiée qui retraite les concepts de ResNet et Inception. Un modèle réseau de meilleure architecture est plus petit, et les paramètres ne nécessitent pas encore d’algorithmes de compression complexes.

ENet
Notre équipe prévoit de combiner toutes les fonctionnalités de l’architecture récemment dévoilée pour créer un réseau très efficace et de faible poids, utilisant moins de paramètres et de calculs pour obtenir des résultats de premier ordre. Cette architecture réseau s’appelle ENet et a été conçue par Adam Paszke. Nous l’avons déjà utilisé pour le balisage à pixel unique et la résolution de scène.

Pour plus d’informations sur ENet, voir l’article ENet : A Deep Neural Network Architecture for Real-Time Semantic Segmentation. ENet est un réseau d’encodage, d’addition et de décodage. L’encodeur est une conception CNN classique pour classifier. Le décodeur est un réseau d’upsampling qui propage la classification à rebours vers l’image originale pour la segmentation. Cela n’utilise que des réseaux de neurones et aucun autre algorithme pour la segmentation d’images.

ENet est conçu pour utiliser le minimum de ressources possible au départ. C’est pourquoi il a un script si petit, avec un réseau combiné d’encodeurs et de décodeurs occupant 0,7 Mo avec une précision de 16 fp. Même avec un modèle aussi petit, ENet est similaire ou supérieur à d’autres solutions de réseaux de neurones en termes de précision de segmentation.

Analyse des modules
L’analyse du module CNN, réalisée dans l’article (Systematic evaluation of CNN advances on the ImageNet), est très utile :

Utilisez la non-linéarité ELU sans batchnorm ou ReLU avec batchnorm.
Utilisez une transformation d’espace colorimétrique RVB apprise.
Utilisez une stratégie linéaire de baisse du taux d’apprentissage.
Utilisez la somme des couches moyennes et des couches plus grandes en groupe.
Utilisez une taille en mini-lot d’environ 128 à 256. Si c’est trop gros pour votre GPU, réduisez simplement le taux d’apprentissage à cette taille.
Utilisez la couche entièrement connectée comme convolution et faites la moyenne de toutes les prédictions pour faire la prédiction finale.
Lorsque l’étude augmente la taille de l’ensemble d’entraînement, elle détecte s’il y a un plateau non atteint
La propreté des données est plus importante que leur taille.
Si vous ne pouvez pas augmenter la taille de l’image d’entrée, réduisez la foulée sur les calques suivants, cela a le même effet.
Si votre réseau possède une architecture complexe et hautement optimisée, comme GoogLeNet, vous devez faire attention à la modifier.

D’autres architectures qui méritent d’être observées
FractalNet (voir article : FractalNet : Ultra-Deep Neural Networks without Residuals) utilise une architecture récursive, qui n’est pas testée sur ImageNet. Cette architecture est une dérivée de ResNet ou, plus généralement, de ResNet.

futur
Nous pensons que la création d’une architecture de réseau neuronal est une priorité majeure pour le développement de l’apprentissage profond. Notre équipe recommande vivement de lire attentivement et de comprendre les articles mentionnés dans l’article.

Mais on pourrait se demander pourquoi nous passons autant de temps à créer des architectures ? Pourquoi ne pas nous dire quoi utiliser avec les données ? Comment combinez-vous les modules ? Ces questions sont bonnes, mais encore en cours de recherche, et il existe un article auquel il faut se référer : Réseaux de neurones à structure différentiable.

Notez que la plupart des architectures dont nous avons parlé dans cet article concernent la vision par ordinateur. Des architectures de réseaux de neurones similaires ont été développées dans d’autres domaines, et il est très intéressant d’apprendre les évolutions architecturales dans toutes les autres tâches.

Si vous souhaitez comparer l’architecture des réseaux neuronaux et la performance computationnelle, consultez l’article : An Analysis of Deep Neural Network Models for Practical Applications.







Précédent:Plusieurs méthodes de calcul du temps d’exécution en Python
Prochain:Antminer B3 vous indique quoi creuser !
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com