Rétropropagation à travers les couches de regroupement maximales

14

J'ai une petite sous-question à cette question .

Je comprends que lors d'une rétropropagation à travers une couche de mise en commun maximale, le gradient est réacheminé de manière à ce que le neurone de la couche précédente qui a été sélectionné comme max reçoive tout le gradient. Ce dont je ne suis pas sûr à 100%, c'est de savoir comment le dégradé de la couche suivante est renvoyé vers la couche de regroupement.

La première question est donc de savoir si j'ai une couche de mise en commun connectée à une couche entièrement connectée - comme l'image ci-dessous.

Exemple 1

Lors du calcul du gradient du "neurone" cyan de la couche de regroupement, dois-je additionner tous les gradients des neurones de la couche FC? Si c'est correct, alors chaque "neurone" de la couche de regroupement a le même gradient?

Par exemple, si le premier neurone de la couche FC a un gradient de 2, le second un gradient de 3 et le troisième un gradient de 6. Quels sont les gradients des "neurones" bleus et violets dans la couche de regroupement et pourquoi?

Et la deuxième question est de savoir quand la couche de mise en commun est connectée à une autre couche de convolution. Comment puis-je calculer le gradient? Voir l'exemple ci-dessous.

exemple2

Pour le "neurone" le plus à droite de la couche de mise en commun (le vert décrit), je prends juste le gradient du neurone violet dans la couche conv suivante et le redirige, non?

Que diriez-vous du vert rempli? J'ai besoin de multiplier ensemble la première colonne de neurones dans la couche suivante à cause de la règle de chaîne? Ou dois-je les ajouter?

S'il vous plaît ne postez pas un tas d'équations et dites-moi que ma réponse est juste là parce que j'ai essayé d'envelopper ma tête autour des équations et je ne le comprends toujours pas parfaitement c'est pourquoi je pose cette question dans un simple façon.

Majster
la source
En ce qui concerne votre première question, la rétropropagation consiste à voir de quelle manière les poids et les intrants influencent votre perte. En cas de mise en commun max, seul le max des neurones influence la sortie (sauf en cas d'égalité). Ne propagez donc l'erreur qu'au neurone qui avait la valeur d'activation maximale.
Jan van der Vegt
Oui, je comprends cela et je l'ai également dit dans un récapitulatif au début de mon message. Mais je ne comprends pas comment «combiner» le gradient des neurones de la couche suivante pour se propager. J'espère que vous savez ce que je veux dire.
Majster

Réponses:

5

Si c'est correct, alors chaque "neurone" de la couche de regroupement a le même gradient?

Non. Cela dépend des poids et de la fonction d'activation. Et le plus généralement, les poids sont différents du premier neurone de la couche de regroupement à la couche FC comme de la deuxième couche de la couche de regroupement à la couche FC.

Donc, généralement, vous aurez une situation comme:

FCje=F(jWjejPj)

FCjePjFW

Cela signifie que le gradient par rapport à P_j est

grune(Pj)=jegrune(FCje)FWjej

Ce qui est différent pour j = 0 ou j = 1 car le W est différent.

Et la deuxième question est de savoir quand la couche de mise en commun est connectée à une autre couche de convolution. Comment puis-je calculer le gradient?

Peu importe le type de couche auquel il est connecté. C'est toujours la même équation. Somme de tous les gradients de la couche suivante multipliée par la façon dont la sortie de ces neurones est affectée par le neurone de la couche précédente. La différence entre FC et Convolution est que dans FC tous les neurones de la couche suivante apporteront une contribution (même si peut-être petite) mais en convolution la plupart des neurones de la couche suivante ne sont pas du tout affectés par le neurone de la couche précédente, donc leur contribution est exactement nul.

Pour le "neurone" le plus à droite de la couche de mise en commun (le vert décrit), je prends juste le gradient du neurone violet dans la couche conv suivante et le redirige, non?

Droite. De plus, le gradient de tout autre neurone sur cette couche de convolution qui prend en entrée le neurone le plus à droite de la couche de regroupement.

Que diriez-vous du vert rempli? J'ai besoin de multiplier ensemble la première colonne de neurones dans la couche suivante à cause de la règle de chaîne? Ou dois-je les ajouter?

Ajoutez-les. En raison de la règle de la chaîne.

muneXgrune(PRj)

grune(PRj)=jegrune(Pje)FWjej

F=jeF=0F=1F=0

grune(PRmuneXneuron)=jegrune(Pje)Wje muneX neuron

grune(PRothers)=0.

patapouf_ai
la source