Réseau de neurones avec connexions à couche sautée

26

Je m'intéresse à la régression avec les réseaux de neurones.

Les réseaux de neurones avec zéro nœud caché + connexions à couche sautée sont des modèles linéaires.

Qu'en est-il des mêmes réseaux neuronaux mais avec des nœuds cachés? Je me demande quel serait le rôle des connexions de saut de couche?

Intuitivement, je dirais que si vous incluez les connexions de saut de couche, le modèle final sera la somme d'un modèle linéaire + quelques parties non linéaires.

Y a-t-il un avantage ou un inconvénient à ajouter des connexions à saut de couche aux réseaux neuronaux?

Souhaib Ben Taieb
la source

Réponses:

38

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: entrez la description de l'image ici

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?

Indie AI
la source
Qu'entendez-vous par condition préalable? (aussi votre réponse est bien meilleure que celle de sashkello par beaucoup d'imho). De plus, le problème est que l'ajout de couches supplémentaires sans les connexions de saut rend difficile pour le réseau le plus profond de trouver le mappage d'identité? (pour une raison quelconque?)
Charlie Parker
20

En théorie, les connexions à saut de couche ne devraient pas améliorer les performances du réseau. Mais, comme les réseaux complexes sont difficiles à former et faciles à équiper, il peut être très utile d'ajouter explicitement ceci comme terme de régression linéaire, lorsque vous savez que vos données ont une forte composante linéaire. Cela indique le modèle dans la bonne direction ... De plus, cela est plus interprétable car il présente votre modèle comme des perturbations linéaires +, démêlant un peu une structure derrière le réseau, qui est généralement considéré simplement comme une boîte noire.

sashkello
la source
@sashkello pouvez-vous élaborer sur «les connexions de couche de saut ne devraient pas améliorer les performances du réseau», de manière théorique. Ce serait formidable à comprendre.
intuition
@hunch C'est parce que vous pouvez modéliser cela sans avoir besoin de sauter la couche. Skip-layer n'est qu'un terme linéaire. La fonction sigmoïde est ~ linéaire autour de 0. Ainsi, une connexion à saut de couche se comportera comme un nœud caché avec de très petits poids d'entrée.
sashkello
5

Mon ancienne boîte à outils de réseau de neurones (j'utilise principalement des machines à noyau ces jours-ci) utilisait la régularisation L1 pour éliminer les poids redondants et les unités cachées, et avait également des connexions de saut de couche. Cela a l'avantage que si le problème est essentiellement linéaire, les unités cachées ont tendance à être élaguées et vous vous retrouvez avec un modèle linéaire, qui vous indique clairement que le problème est linéaire.

Comme le suggère sashkello (+1), les MLP sont des approximateurs universels, donc les connexions de couches ignorées n'amélioreront pas les résultats dans la limite de données infinies et un nombre infini d'unités cachées (mais quand approchons-nous jamais de cette limite?). Le véritable avantage est qu'il facilite l'estimation de bonnes valeurs pour les poids si l'architecture du réseau est bien adaptée au problème, et vous pouvez être en mesure d'utiliser un réseau plus petit et d'obtenir de meilleures performances de généralisation.

Cependant, comme pour la plupart des questions sur les réseaux de neurones, généralement la seule façon de savoir s'il sera utile ou nuisible pour un ensemble de données particulier est de l'essayer et de le voir (en utilisant une procédure d'évaluation des performances fiable).

Dikran Marsupial
la source
3
"essayez-le et voyez" - mots d'or :)
sashkello
0

Basé sur Bishop 5.1. Fonctions de réseau à action directe: Un moyen de généraliser l'architecture du réseau consiste à inclure des connexions de saut de couche, chacune étant associée à un paramètre adaptatif correspondant. Par exemple, dans un réseau à deux couches (deux couches cachées), celles-ci passeraient directement des entrées aux sorties. En principe, un réseau avec des unités cachées sigmoïdales peut toujours imiter les connexions de couche de saut (pour les valeurs d'entrée bornées) en utilisant un poids de première couche suffisamment petit pour que, sur sa plage de fonctionnement, l'unité cachée soit effectivement linéaire, puis compense avec une grande valeur de poids de l'unité cachée à la sortie.

Dans la pratique, cependant, il peut être avantageux d'inclure explicitement les connexions de saut de couche.entrez la description de l'image ici

payam jome yazdian
la source