Questa è una piccola domanda concettuale che mi assilla da un po 'di tempo: come possiamo propagare indietro attraverso uno strato di max pooling in una rete neurale?
Mi sono imbattuto nei livelli di max pooling durante questa esercitazione per la libreria nn di Torch 7. La libreria estrae il calcolo del gradiente e passa in avanti per ogni livello di una rete profonda. Non capisco come viene fatto il calcolo del gradiente per un livello di pool massimo.
So che se hai un input nel neurone del livello , allora (definito come ) è dato da: il δ i l δ i l= ∂ E δil=θ
Quindi, un livello di pool massimo riceverebbe i del livello successivo come al solito; ma poiché la funzione di attivazione per i neuroni del max pooling accetta un vettore di valori (oltre il quale raggiunge il massimo) come input, non è più un singolo numero, ma un vettore ( dovrebbe essere sostituito da ). Inoltre, , essendo la funzione max, non è differenziabile rispetto ai suoi input.δ i l θ
Quindi .... come dovrebbe funzionare esattamente?