Question sur les biais dans les réseaux convolutifs

11

J'essaie de comprendre combien de poids et de biais sont nécessaires pour CNN.

Disons que j'ai une image (3, 32, 32) et que je souhaite appliquer un filtre (32, 5, 5). Pour chaque carte d'entités, j'ai des poids 5x5, donc je devrais avoir 3 paramètres (5x5) x 32. Maintenant, je dois ajouter le biais. Je crois que je n'ai que (3 x (5x5) + 1) x 32 paramètres, donc le biais est-il le même pour toutes les couleurs (RVB)?

Est-ce correct? Dois-je conserver le même biais pour chaque image sur toute sa profondeur (dans ce cas 3) lorsque j'utilise des poids différents? Pourquoi donc?

utilisateur
la source

Réponses:

6

Le biais fonctionne par neurone virtuel, il n'y a donc aucune valeur à avoir plusieurs entrées de polarisation où il y a une seule sortie - ce qui équivaudrait à simplement additionner les différents poids de biais en un seul biais.

Dans les cartes d'entités qui sont la sortie de la première couche masquée, les couleurs ne sont plus séparées *. En effet, chaque carte d'entités est un "canal" dans la couche suivante, bien qu'elles soient généralement visualisées séparément où l'entrée est visualisée avec des canaux combinés. Une autre façon de penser à cela est que les canaux RVB séparés dans l'image originale sont 3 "cartes de caractéristiques" en entrée.

Peu importe le nombre de canaux ou d'entités dans une couche précédente, la sortie vers chaque carte d'entités dans la couche suivante est une valeur unique dans cette carte. Une valeur de sortie correspond à un seul neurone virtuel, nécessitant un poids de polarisation.

Dans un CNN, comme vous l'expliquez dans la question, les mêmes poids (y compris le poids de biais) sont partagés à chaque point de la carte des entités en sortie. Ainsi, chaque carte d'entités a son propre poids de biais ainsi que previous_layer_num_features x kernel_width x kernel_heightdes poids de connexion.

Donc, oui, votre exemple résultant en un (3 x (5x5) + 1) x 32poids total pour la première couche est correct pour un CNN avec la première couche cachée traitant l'entrée RVB dans 32 cartes d'entités distinctes.


* Vous pouvez être confus en voyant la visualisation des poids CNN qui peuvent être séparés en canaux de couleur sur lesquels ils opèrent.

Neil Slater
la source
Je pensais qu'il y avait un biais par filtre ... avons-nous des définitions différentes des neurones virtuels?
Charlie Parker
@CharlieParker En termes de nombre de paramètres, un biais par filtre équivaut à un biais par neurone. Il existe plusieurs façons équivalentes de visualiser l'architecture d'une carte d'entités CNN. L'une serait la couche "entièrement développée" avec un grand nombre de neurones partageant tous les mêmes paramètres. Un autre serait de considérer chaque filtre convolutionnel comme décrivant les connexions locales d'un seul neurone, et la couche utilise à plusieurs reprises ce même neurone. Je pense donc que nous avons probablement la même définition d'un neurone, mais la réponse décrit les choses sous un seul angle.
Neil Slater
Intéressant, je pense que vous pensez à chaque neurone pour chaque filtre, je pensais pour une raison quelconque à chaque activation pour chaque neurone, mais le filtre s'active à de nombreux endroits de l'image, alors bien sûr, j'avais beaucoup plus de neurones en tête.
Charlie Parker
1

C'est la propriété des CNN qu'ils utilisent des poids et des biais partagés (mêmes poids et biais pour tous les neurones cachés dans une couche) afin de détecter la même caractéristique. Cela conduit à un apprentissage plus approfondi par rapport aux réseaux neuronaux simples. Vous pouvez lire ceci comme référence:

http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introducing_convolutional_networks

enterML
la source
Je pose une autre question. Ma question concerne le biais. D'après la formule, il semble que pour chaque carte d'entités, il existe des poids différents, mais le même biais est utilisé dans toutes les cartes d'entités.
utilisateur