Je suis très en retard dans le jeu, mais je voulais poster pour refléter certains développements actuels dans les réseaux de neurones convolutifs en ce qui concerne les connexions de saut .
Une équipe Microsoft Research a récemment remporté le concours ImageNet 2015 et a publié un rapport technique Deep Residual Learning for Image Recognition décrivant certaines de leurs principales idées.
L'une de leurs principales contributions est ce concept de couches résiduelles profondes . Ces couches résiduelles profondes utilisent des connexions de saut . En utilisant ces couches résiduelles profondes, ils ont pu former un filet de convection de 152 couches pour ImageNet 2015. Ils ont même formé un filet de convection de plus de 1000 couches pour le CIFAR-10.
Le problème qui les a motivés est le suivant:
Lorsque des réseaux plus profonds peuvent commencer à converger, un problème de dégradation a été exposé: avec l'augmentation de la profondeur du réseau, la précision est saturée (ce qui n'est peut-être pas surprenant) puis se dégrade rapidement. De manière inattendue, une telle dégradation n'est pas causée par un sur-ajustement , et l'ajout de couches à un modèle suffisamment profond conduit à une erreur d'entraînement plus élevée ...
L'idée est que si vous prenez un réseau "peu profond" et que vous empilez simplement sur plusieurs couches pour créer un réseau plus profond, les performances du réseau plus profond devraient être au moins aussi bonnes que le réseau peu profond car le réseau plus profond pourrait apprendre exactement le peu profond réseau en définissant les nouvelles couches empilées sur des couches d'identité (en réalité, nous savons que cela est probablement très improbable de se produire en utilisant aucun préalable architectural ou méthodes d'optimisation actuelles). Ils ont observé que ce n'était pas le cas et que les erreurs de formation se sont parfois aggravées en empilant plus de couches sur un modèle moins profond.
Cela les a donc motivés à utiliser des connexions de saut et à utiliser des couches dites résiduelles profondes pour permettre à leur réseau d'apprendre les écarts par rapport à la couche d'identité, d'où le terme résiduel , résiduel faisant référence ici à la différence par rapport à l'identité.
Ils implémentent les connexions de saut de la manière suivante:
F( x ) : = H ( x ) - xF( x ) + x = H ( x )F( x )H (x)
De cette manière, l'utilisation de couches résiduelles profondes via des connexions de saut permet à leurs réseaux profonds d'apprendre des couches d'identité approximatives, si c'est effectivement ce qui est optimal ou localement optimal. En effet, ils affirment que leurs couches résiduelles:
Nous montrons par des expériences (Fig.7) que les fonctions résiduelles apprises ont en général de petites réponses
Quant à savoir pourquoi cela fonctionne exactement, ils n'ont pas de réponse exacte. Il est très peu probable que les couches d'identité soient optimales, mais ils pensent que l'utilisation de ces couches résiduelles aide à préconditionner le problème et qu'il est plus facile d'apprendre une nouvelle fonction étant donné une référence / ligne de base de comparaison avec la cartographie d'identité que d'en apprendre une "à partir de zéro" sans utiliser la ligne de base d'identité. Qui sait. Mais je pensais que ce serait une bonne réponse à votre question.
Soit dit en passant, avec le recul: la réponse de sashkello est encore meilleure, n'est-ce pas?