Comprender la deserción y el descenso de gradiente

9

Estoy viendo cómo implementar el abandono en la red neuronal profunda, y encontré algo contradictorio. En la fase de avance, las activaciones de máscara de abandono con un tensor aleatorio de 1s y 0s obligan a net a aprender el promedio de los pesos. Esto ayuda a la red a generalizar mejor. Pero durante la fase de actualización del descenso del gradiente, las activaciones no están enmascaradas. Esto para mí parece contrario a la intuición. Si enmascaro las activaciones de conexiones con desconexión, ¿por qué no debería enmascarar la fase de descenso del gradiente?

emanuele
fuente
¿No estoy seguro de dónde encontró una referencia que muestra el abandono utilizado para enmascarar pesas ? Creo que eso es incorrecto.
Neil Slater
tienes razón, usé el concepto equivocado.
emanuele

Respuestas:

6

En la deserción como se describe en http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf , los pesos no están enmascarados. En cambio, las activaciones de las neuronas se enmascaran, por ejemplo, tal como se presentan para el entrenamiento (es decir, la máscara se aleatoriza para cada carrera hacia adelante y gradiente hacia atrás, nunca se repite).

Las activaciones se enmascaran durante el avance, y los cálculos de gradiente usan la misma máscara durante la propagación hacia atrás de ese ejemplo. Esto se puede implementar como un modificador dentro de una descripción de capa, o como una capa de abandono separada.

Durante la fase de actualización de peso, típicamente aplicada en un mini lote (donde cada ejemplo habría tenido una máscara diferente aplicada) no se usan más las máscaras de abandono. Los valores de gradiente utilizados para la actualización ya se han visto afectados por las máscaras aplicadas durante la propagación inversa.

Encontré una referencia útil para aprender cómo funciona el abandono, para quizás implementarse usted mismo, es Deep Learn Toolbox para Matlab / Octave.

Neil Slater
fuente