Réseaux de neurones convolutifs: les neurones centraux ne sont-ils pas surreprésentés en sortie?


30

[Cette question a également été posée au débordement de la pile]

La question en bref

J'étudie les réseaux de neurones convolutifs, et je crois que ces réseaux ne traitent pas chaque neurone d'entrée (pixel / paramètre) de manière équivalente. Imaginez que nous ayons un réseau profond (plusieurs couches) qui applique une convolution sur une image d'entrée. Les neurones au "milieu" de l'image ont de nombreuses voies uniques vers de nombreux neurones de couche plus profonde, ce qui signifie qu'une petite variation dans les neurones du milieu a un fort effet sur la sortie. Cependant, les neurones au niveau du bord de l'image ont seulement voie (ou, en fonction de la mise en œuvre exacte, de l'ordre de 1 ) voies dans lesquelles leur flux d' information à travers le graphe. Il semble que ceux-ci soient "sous-représentés".11

Cela m'inquiète, car cette discrimination des neurones de périphérie évolue de façon exponentielle avec la profondeur (nombre de couches) du réseau. Même l'ajout d'une couche de regroupement maximal n'arrêtera pas l'augmentation exponentielle, seule une connexion complète met tous les neurones sur un pied d'égalité. Je ne suis pas convaincu que mon raisonnement soit correct, cependant, mes questions sont les suivantes:

  • Ai-je raison de dire que cet effet se produit dans les réseaux convolutionnels profonds?
  • Y a-t-il une théorie à ce sujet, a-t-elle déjà été mentionnée dans la littérature?
  • Existe-t-il des moyens de surmonter cet effet?

Parce que je ne suis pas sûr que cela donne suffisamment d'informations, je vais développer un peu plus sur l'énoncé du problème, et pourquoi je crois que c'est une préoccupation.

Explication plus détaillée

64×64416×16=26522652652

1

3

https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0

Pourquoi c'est un problème?

Cet effet ne semble pas être un problème à première vue: en principe, les poids devraient s'ajuster automatiquement de manière à ce que le réseau fasse son travail. De plus, les bords d'une image ne sont de toute façon pas si importants dans la reconnaissance d'image. Cet effet n'est peut-être pas perceptible dans les tests de reconnaissance d'image quotidiens, mais il m'inquiète toujours pour deux raisons: 1. généralisation à d'autres applications, et 2. problèmes survenant dans le cas de réseaux très profonds.

1. Il pourrait y avoir d'autres applications, comme la reconnaissance vocale ou sonore, où il n'est pas vrai que les neurones les plus centraux soient les plus importants. L'application de la convolution se fait souvent dans ce domaine, mais je n'ai pu trouver aucun article mentionnant l'effet qui me préoccupe.

1026510

Imaginez maintenant que nous perturbons tous les neurones d'une petite quantité. Les neurones centraux entraîneront un changement plus important de la sortie de plusieurs ordres de grandeur, par rapport aux neurones périphériques. Je pense que pour les applications générales et pour les réseaux très profonds, il faudrait trouver des solutions à mon problème?


8
Je ne peux pas répondre entièrement à votre question, mais j'ai trouvé cet article: cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf qui résout votre problème. Ils parlent de différentes solutions, 1) remplissant les bords des entrées avec des zéros, 2) ajoutant des composants connectés globalement de manière aléatoire, ou 3) fixant et propageant vers l'avant les bords afin qu'aucune information de bord ne soit perdue. J'étais récemment curieux de connaître le même problème et j'ai trouvé votre question. Je continue de parcourir les détails de ce document. J'espère que ça aide.
nfmcclure

Merci, c'est exactement ce que je cherchais! Impressionnant que cela se remarque avec aussi peu que 2 couches. Pour ces TL; DR'tout le document: l'utilisation d'une combinaison de 1) (remplissage nul) et 2) (connexions globales aléatoires) s'est avérée être le meilleur remède.
Koen


Je suis curieux, n'est-ce pas suffisant d'utiliser un offset non superposé? Donc, dans votre exemple, vous avez des correctifs 64x64 et vous déplacez votre entrée de 64 pixels à chaque fois tout en appliquant la convolution. (votre «décalage» est mon «décalage»). Qui est, je suppose, la même chose que de faire un remplissage nul?
Renthal

1
Désolé de ne pas avoir répondu depuis un moment, je ne travaille plus sur NN. Cependant, je pense que je pourrais répondre aux questions, bien que je réalise que mon plus grand objectif était de mieux comprendre ce qui se passe (ce que je n'ai toujours pas). 1) Cet effet semble effectivement se produire. 2) Le document lié ci-dessus le décrit et 3) explore également les moyens de le surmonter. Pour Renthal: les correctifs sans chevauchement (en choisissant offset = taille conv.) Devraient en effet surmonter mon problème, mais les gens trouvent souvent que les correctifs qui se chevauchent fonctionnent mieux. Pour EngrStudent, Désolé, je ne suis pas familier avec le rééchantillonnage Bootstrap.
Koen

Réponses:


4

Des représentations éparses sont attendues dans les modèles hiérarchiques. Peut-être que ce que vous découvrez est un problème intrinsèque à la structure hiérarchique des modèles d'apprentissage profond. Vous trouverez de nombreux articles scientifiques sur les «représentations clairsemées», en particulier dans la recherche sur la mémoire.

Je pense que vous auriez avantage à lire sur les "champs récepteurs" dans le cortex visuel. Il y a non seulement des cellules ON et OFF dans le cerveau des mammifères, mais aussi des cellules RF qui se déclenchent à la fois pendant ON et OFF. Peut-être que le problème des bords / rareté pourrait être contourné en mettant à jour le modèle pour refléter les neurosciences actuelles sur la vision, en particulier dans les modèles animaux.


3

Vous avez raison de dire que c'est un problème si la convolution ne fonctionne que sur les pixels de l'image, mais le problème disparaît si vous mettez les images à zéro (comme cela est généralement recommandé). Cela garantit que la convolution appliquera le filtre le même nombre de fois à chaque pixel.


1
Je ne suis pas encore convaincu. Le remplissage nul ne créera que plus de pixels de sortie autour des pixels "centraux" que l'on trouve sans remplissage. Les valeurs des pixels "centraux" sont exactement les mêmes, quel que soit le remplissage nul utilisé.
Koen

1
n×nn1

La visualisation de convolution à mi-chemin de cette page peut aider à transmettre l'intuition: cs231n.github.io/convolutional-networks
jon_simon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.