C'est une petite question conceptuelle qui me hante depuis un moment: comment pouvons-nous propager en arrière à travers une couche de regroupement maximal dans un réseau de neurones?
Je suis tombé sur des couches de max-pooling en parcourant ce tutoriel pour la bibliothèque nn de Torch 7. La bibliothèque résume le calcul du gradient et les passes directes pour chaque couche d'un réseau profond. Je ne comprends pas comment le calcul du gradient est effectué pour une couche de regroupement maximal.
Je sais que si vous avez une entrée allant dans le neurone i de la couche l , alors δ i l (défini comme δ i l = ∂ E ) est donné par: δil=θ
Ainsi, une couche de regroupement maximal recevrait les de la couche suivante comme d'habitude; mais comme la fonction d’activation pour les neurones de regroupement maximal prend en entrée un vecteur de valeurs (sur lequel elle est maximale), n’est plus un nombre unique, mais un vecteur ( devrait être remplacé par ). De plus, θδ i l θ∇& thetav( { z j l } ) , étant la fonction max, n'est pas différentiable en ce qui concerne ses entrées.
Alors .... comment cela devrait-il fonctionner exactement?