Cuando una red neuronal procesa un lote, todos los valores de activación para cada capa se calculan para cada ejemplo (tal vez en paralelo, por ejemplo, si la biblioteca y el hardware lo admiten). Esos valores se almacenan para un posible uso posterior, es decir, un valor por activación por ejemplo en el lote, no se agregan de ninguna manera
Durante la propagación hacia atrás, esos valores de activación se utilizan como una de las fuentes numéricas para calcular los gradientes, junto con los gradientes calculados hasta ahora trabajando hacia atrás y los pesos de conexión. Al igual que la propagación hacia adelante, la propagación hacia atrás se aplica por ejemplo, no funciona con valores promediados o sumados. Solo cuando se hayan procesado todos los ejemplos, trabajará con los gradientes sumados o promediados para el lote.
Esto se aplica igualmente a las capas de grupo máximo. No solo sabe cuál fue el resultado de la capa de agrupación para cada ejemplo en el lote, sino que puede ver la capa anterior y determinar qué entrada al grupo fue la máxima.
Matemáticamente, y evitando la necesidad de definir índices para capas NN y neuronas, la regla se puede expresar así
La función de avance es m=max(a,b)
Sabemos ∂J∂m para alguna función objetivo J (en la red neuronal que será la función de pérdida que queremos minimizar, y estamos asumiendo que ya nos hemos propagado hacia atrás a este punto)
Queremos saber ∂J∂a y ∂J∂b
Si a>b
Localmente , *m=a. Entonces∂J∂a=∂J∂m
Localmente , *m no depende de b. Entonces∂J∂b=0
Por lo tanto ∂J∂a=∂J∂m Si a>bde lo contrario ∂J∂a=0
y ∂J∂b=∂J∂m Si b>ade lo contrario ∂J∂b=0
Cuando la propagación inversa atraviesa una capa de agrupación máxima, el gradiente se procesa por ejemplo y se asigna solo a la entrada de la capa anterior que era la máxima. Otras entradas obtienen gradiente cero. Cuando este lote no es diferente, solo se procesa por ejemplo, tal vez en paralelo. En todo un lote, esto puede significar que más de una, tal vez todas, las activaciones de entrada al grupo máximo obtienen una parte del gradiente, cada una de un subconjunto diferente de ejemplos en el lote.
* Localmente -> cuando se realizan solo cambios infinitesimales a m.
** Técnicamente, si a=b exactamente entonces tenemos una discontinuidad, pero en la práctica podemos ignorar eso sin problemas al entrenar una red neuronal.