Esta é uma pequena questão conceitual que me incomoda há um tempo: como podemos retropropagar através de uma camada de pool máximo em uma rede neural?
Me deparei com camadas de pool máximo durante o tutorial da biblioteca nn do Torch 7. A biblioteca abstrai o cálculo do gradiente e as passagens para frente para cada camada de uma rede profunda. Não entendo como o cálculo do gradiente é feito para uma camada de pool máximo.
Eu sei que se você tem uma entrada entrando no neurônio i da camada l , então δ i l (definido como δ i l = ∂ E ) é dado por: δil=θ
Portanto, uma camada de pool máximo receberá os 's da próxima camada, como de costume; mas como a função de ativação para os neurônios de pool máximo recebe um vetor de valores (sobre o qual ele atinge o máximo) como entrada, δ i l não é mais um número único, mas um vetor ( θteria que ser substituído por∇θ( { z j l } )). Além disso,θ, sendo a função max, não é diferenciável em relação às entradas.
Então .... como deve funcionar exatamente?