¿Pedido de normalización de lotes y abandono en TensorFlow?


Cuando se utiliza la normalización por lotes y el abandono en TensorFlow (específicamente utilizando el contrib.capas) ¿tengo que preocuparme por el pedido?

Parece posible que si utilizo dropout seguido inmediatamente por la normalización por lotes podría haber problemas. Por ejemplo, si el cambio en la normalización de lotes entrena a los números de escala más grandes de las salidas de entrenamiento, pero luego ese mismo cambio se aplica a los números de escala más pequeños (debido a la compensación por tener más salidas) sin abandono durante la prueba, entonces ese cambio puede estar apagado. ¿La capa de normalización por lotes de TensorFlow compensa esto automáticamente? ¿O esto no sucede por alguna razón que me estoy perdiendo?

Además, ¿hay otros escollos a tener en cuenta cuando se utilizan estos dos juntos? Por ejemplo, suponiendo que los estoy usando en el orden correcto con respecto a lo anterior (suponiendo que es un orden correcto), podría haber problemas con el uso de normalización por lotes y abandono en múltiples ¿capas sucesivas? No veo inmediatamente un problema con eso, pero podría estar perdiendo algo.

Muchas gracias!

ACTUALIZACIÓN:

Una prueba experimental parece sugerir que ordenar importa. Corrí la misma red dos veces con solo la norma por lotes y la reversión de abandono. Cuando el abandono está antes de la norma de lote, la pérdida de validación parece estar aumentando a medida que la pérdida de entrenamiento está disminuyendo. Ambos van a caer en el otro caso. Pero en mi caso los movimientos son lentos, por lo que las cosas pueden cambiar después de más entrenamiento y es solo una prueba. Se agradecería una respuesta más definitiva e informada.

Author: golmschenk, 2016-09-26

2 answers

En el Ioffe y Szegedy 2015, los autores afirman que "nos gustaría asegurarnos de que para cualquier valor de parámetro, la red siempre produce activaciones con la distribución deseada". Por lo tanto, la Capa de Normalización por lotes se inserta justo después de una Capa Conv/Capa Completamente Conectada, pero antes de alimentar ReLU (o cualquier otro tipo de) activación. Ver este video alrededor del tiempo 53 min para más detalles.

En cuanto a la deserción escolar, creo que se aplica después de la capa de activación. En el papel de abandono figura 3b, la matriz de factor de abandono/probabilidad r(l) para la capa oculta l se aplica a ella en y(l), donde y(l) es el resultado después de aplicar la función de activación f.

Así que en resumen, el orden de uso de normalización por lotes y abandono es:

- > CONV / FC - > BatchNorm - > ReLU (u otra activación) - > Dropout - > CONV / FC - >

 49
Author: Zhongyu Kuang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-27 23:59:30

Como se indica en los comentarios, un recurso increíble para leer sobre el orden de las capas es aquí. He pasado por los comentarios y es el mejor recurso sobre el tema que he encontrado en Internet

Mis 2 centavos:

El abandono está destinado a bloquear la información de ciertas neuronas por completo para asegurarse de que las neuronas no se adapten. Por lo tanto, la normalización por lotes debe ser después de la deserción, de lo contrario, está pasando información a través de las estadísticas de normalización.

Si usted piensa sobre ello, en problemas típicos de ML, esta es la razón por la que no calculamos la media y la desviación estándar sobre datos enteros y luego lo dividimos en conjuntos de tren, prueba y validación. Dividimos y luego calculamos las estadísticas sobre el conjunto de trenes y las usamos para normalizar y centrar los conjuntos de datos de validación y prueba

Así que sugiero el Esquema 1 (Esto toma en consideración el comentario de pseudomarvin sobre la respuesta aceptada)

- > CONV / FC - > ReLU (u otra activación) - > Dropout - > BatchNorm - > CONV / FC

A diferencia del Esquema 2

- > CONV / FC -> BatchNorm -> ReLU(u otra activación) - > Dropout -> CONV/FC - > en la respuesta aceptada

Tenga en cuenta que esto significa que la red bajo el Esquema 2 debe mostrar un ajuste excesivo en comparación con la red bajo el Esquema 1, pero OP realizó algunas pruebas como se mencionó en la pregunta y apoyan el Esquema 2

 7
Author: MiloMinderbinder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-27 21:06:40