tutorial ejemplos machine-learning neural-network computer-vision conv-neural-network batch-normalization

machine-learning - tutorial - tensorflow ejemplos



Normalización de instancia vs normalización por lotes (3)

Entiendo que la Normalización de lotes ayuda a un entrenamiento más rápido al girar la activación hacia la distribución gaussiana de la unidad y, por lo tanto, abordar el problema de los gradientes de fuga. Los actos de la norma de lote se aplican de manera diferente en el entrenamiento (use la media / var de cada lote) y el tiempo de prueba (use la media / var de carrera finalizada de la fase de entrenamiento).

La normalización de instancias, por otro lado, actúa como una normalización de contraste como se menciona en este documento https://arxiv.org/abs/1607.08022 . Los autores mencionan que las imágenes estilizadas de salida no deben depender del contraste de la imagen del contenido de entrada y, por lo tanto, la normalización de la instancia ayuda.

Pero tampoco deberíamos usar la normalización de instancia para la clasificación de imágenes donde la etiqueta de clase no debe depender del contraste de la imagen de entrada. No he visto ningún documento que utilice la normalización de instancias en lugar de la normalización de lotes para la clasificación. ¿Cuál es la razón para eso? Además, se puede y se debe usar la normalización de lotes e instancias juntas. Estoy ansioso por obtener una comprensión intuitiva y teórica de cuándo usar qué normalización.


Definición

Comencemos con la definición estricta de ambos:

Normalización de lotes

Normalización de instancias

Como puede observar, están haciendo lo mismo, excepto por el número de tensores de entrada que se normalizan conjuntamente. La versión de lote normaliza todas las imágenes a través del lote y las ubicaciones espaciales (en el caso ordinario, en CNN es diferente ); la versión de instancia normaliza cada lote de forma independiente, es decir, solo en ubicaciones espaciales .

En otras palabras, cuando la norma de lote calcula una media y una desviación estándar (lo que hace que la distribución de toda la capa sea gaussiana), la norma de instancia calcula la T de ellas, haciendo que cada distribución de imagen individual se vea gaussiana, pero no conjuntamente.

Una analogía simple: durante el paso de preprocesamiento de datos, es posible normalizar los datos por imagen o normalizar todo el conjunto de datos.

Crédito: las fórmulas son de here .

¿Qué normalización es mejor?

La respuesta depende de la arquitectura de la red, en particular de lo que se hace después de la capa de normalización. Las redes de clasificación de imágenes generalmente apilan los mapas de características y los conectan a la capa FC, que comparte pesos en el lote (la forma moderna es usar la capa CONV en lugar de FC, pero el argumento sigue siendo válido).

Aquí es donde los matices de distribución comienzan a importar: la misma neurona recibirá la información de todas las imágenes. Si la varianza a través del lote es alta, el gradiente de las activaciones pequeñas será suprimido por completo por las activaciones altas, que es exactamente el problema que la norma del lote intenta resolver. Es por eso que es bastante posible que la normalización por instancia no mejore la convergencia de la red.

Por otro lado, la normalización por lotes agrega ruido adicional a la capacitación, porque el resultado para una instancia particular depende de las instancias vecinas. Como resultado, este tipo de ruido puede ser bueno o malo para la red. Esto está bien explicado en el documento "Normalización de peso" de Tim Salimans at al, que nombra redes neuronales recurrentes y DQN de aprendizaje por refuerzo como aplicaciones sensibles al ruido . No estoy del todo seguro, pero creo que la misma sensibilidad al ruido era el problema principal en la tarea de estilización, con la que la norma intentaba luchar. Sería interesante verificar si la norma de peso funciona mejor para esta tarea en particular.

¿Se puede combinar la normalización de lotes e instancias?

Aunque tiene una red neuronal válida, no tiene ningún uso práctico. El ruido de la normalización de lotes es ayudar al proceso de aprendizaje (en este caso es preferible) o dañarlo (en este caso es mejor omitirlo). En ambos casos, dejar la red con un tipo de normalización es probable que mejore el rendimiento.



Quería agregar más información a esta pregunta, ya que hay algunos trabajos más recientes en esta área. Tu intuicion

use la normalización de instancia para la clasificación de imágenes donde la etiqueta de clase no debe depender del contraste de la imagen de entrada

es en parte correcto. Yo diría que un cerdo a plena luz del día sigue siendo un cerdo cuando la imagen se toma por la noche o al amanecer. Sin embargo, esto no significa que el uso de la normalización de la instancia en la red le dará un mejor resultado. Aquí hay algunas razones:

  1. La distribución del color todavía juega un papel. Es más probable que sea una manzana que una naranja si tiene mucho rojo.
  2. En capas posteriores, ya no se puede imaginar que la normalización de instancia actúe como normalización de contraste. Los detalles específicos de la clase surgirán en capas más profundas y la normalización por instancia afectará en gran medida el rendimiento del modelo.

IBN-Net utiliza tanto la normalización por lotes como la normalización de instancias en su modelo. Solo colocan la normalización de instancias en las capas iniciales y han logrado mejorar tanto la precisión como la capacidad de generalizar. Tienen código abierto here .