Redes neuronales: métodos de optimización del aprendizaje profundo

1. ¿Qué métodos pueden mejorar la capacidad de generalización de los modelos CNN?

  1. Recopile más datos: los datos determinan el límite superior del algoritmo.

  2. Optimizar la distribución de datos: equilibrio de categorías de datos.

  3. Elija una función objetivo apropiada.

  4. Diseñar una estructura de red adecuada.

  5. Aumento de datos.

  6. Regularización de peso.

  7. Utilice optimizadores adecuados, etc.

2. Resumen de preguntas de alta frecuencia en entrevistas de nivel BN

¿Qué problema resuelve la capa BN?

Una suposición clásica en el aprendizaje automático estadístico es que "la distribución de datos (distribución) del espacio de origen (dominio de origen) y el espacio de destino (dominio de destino) es consistente". Si son inconsistentes, entonces surgen nuevos problemas de aprendizaje automático, como transferencia de aprendizaje/adaptación de dominio, etc. El cambio de covariables es un problema de rama bajo el supuesto de distribución inconsistente, lo que significa que las probabilidades condicionales del espacio de origen y el espacio de destino son consistentes, pero sus probabilidades marginales son diferentes. Para la salida de cada capa de la red neuronal, debido a que se han sometido a operaciones de convolución dentro de la capa, su distribución es obviamente diferente de la distribución de la señal de entrada correspondiente de cada capa, y la diferencia aumentará a medida que aumente la profundidad de la red, pero pueden representar La etiqueta permanece sin cambios, lo que cumple con la definición de cambio de covariable.

Debido a que el valor de entrada de activación de la red neuronal antes de la transformación no lineal se vuelve más profundo a medida que se profundiza la profundidad de la red, su distribución se desplaza o cambia gradualmente (es decir, el cambio de covariable mencionado anteriormente). La razón por la cual el entrenamiento converge lentamente es generalmente porque la distribución general se acerca gradualmente a los límites superior e inferior del rango de valores de la función no lineal (como sigmoidea), por lo que esto hace que el gradiente de la red neuronal de bajo nivel desaparezca durante la retropropagación. Ésta es la razón para entrenar una red neuronal profunda, la razón esencial de la convergencia cada vez más lenta. BN utiliza un determinado método de regularización para forzar la distribución del valor de entrada de cualquier neurona en cada capa de la red neuronal a la distribución normal estándar con una media de 0 y una varianza de 1, para evitar el problema de dispersión de gradiente causado por la función de activación. Entonces, en lugar de decir que el papel de BN es aliviar el cambio de covariables, también se puede decir que BN puede aliviar el problema de dispersión de gradiente.

fórmula BN

Entre ellos, la escala y el desplazamiento son dos parámetros que se pueden aprender, porque restar la media y dividir la varianza puede no ser la mejor distribución. Por ejemplo, los datos en sí son muy asimétricos o es posible que la función de activación no tenga el mejor efecto en datos con una varianza de 1. Por lo tanto, se deben agregar variables de escala y traducción para mejorar la distribución de datos y lograr mejores resultados.

La diferencia entre entrenamiento y prueba de capa BN.

En la fase de entrenamiento, la capa BN estandariza los datos de entrenamiento de cada lote, es decir, utiliza la media y la varianza de cada lote de datos. (La varianza y la desviación estándar de cada lote de datos son diferentes)

En la fase de prueba, generalmente solo ingresamos una muestra de prueba y no existe el concepto de lote. Por lo tanto, la media y la varianza utilizadas en este momento son la media y la varianza de todo el conjunto de datos después del entrenamiento, que se pueden obtener mediante el método de promedio móvil:

La comprensión simple de la fórmula anterior es: para la media, todos los lotes uu se calculan directamentela media de los valores de u ; luego, para cada loteσ B σ_BpagBuna estimación insesgada de.

Al realizar las pruebas, la fórmula utilizada por BN es:

¿Por qué no utilizar la media y la varianza de todo el conjunto de entrenamiento al entrenar BN?

Debido a que es fácil sobreajustar el uso de la media y la varianza de todo el conjunto de entrenamiento, para BN, cada lote de datos en realidad está estandarizado con la misma distribución, y la media y la varianza de diferentes lotes de datos tendrán ciertas diferencias, en lugar de valores fijos. ., esta diferencia puede aumentar la robustez del modelo y reducir el sobreajuste hasta cierto punto.

¿Dónde se utiliza la capa BN?

En CNN, la capa BN debe usarse delante de la función de activación no lineal. Dado que la entrada de la capa oculta de la red neuronal es la salida de la función de activación no lineal de la capa anterior, su distribución aún está cambiando drásticamente en las primeras etapas del entrenamiento, en este momento, restringiendo su momento de primer orden y segundo orden. el momento de orden no puede aliviar bien el cambio de covariable, y la distribución de BN está más cerca de la distribución normal, y limitar su primer y segundo momento puede hacer que la distribución de los valores ingresados ​​a la función de activación sea más estable.

Los parámetros de la capa BN.

Sabemos γ γc bbbβ es un parámetro que debe aprenderse, y la esencia de BN es utilizar el aprendizaje de optimización para cambiar el tamaño de la varianza y la media. En CNN, debido a que las características de la red corresponden a un mapa de características completo, cuando se realiza BN, el mapa de características también se utiliza como unidad en lugar de en cada dimensión. Por ejemplo, en una determinada capa, el número de mapas de características esccc , entonces el número de parámetros para BN esc ∗ 2 c * 2C2 .

Ventajas y desventajas de BN

ventaja:

  1. Se puede elegir una tasa de aprendizaje inicial mayor. Porque este algoritmo converge rápidamente.

  2. No es necesario el abandono ni la regularización de L2.

  3. No es necesario utilizar la normalización de respuesta local.

  4. El conjunto de datos puede verse completamente alterado.

  5. El modelo es más robusto.

defecto:

  1. La normalización del lote depende en gran medida del tamaño del lote. Cuando el valor del lote es pequeño, la media y la varianza calculadas son inestables.

  2. Por lo tanto, BN no es adecuado para los siguientes escenarios: lotes pequeños, RNN, etc.

3.El papel de la normalización de instancias.

La normalización de instancias (IN), al igual que la normalización por lotes (BN), también es un método de normalización, excepto que IN actúa sobre una sola imagen, mientras que BN actúa sobre un lote .

BN realiza una operación de normalización en el mismo canal de cada imagen del lote en conjunto, mientras que IN se refiere a un solo canal de una sola imagen que realiza una operación de normalización separada. Como se muestra en la siguiente figura, C representa la cantidad de canales y N representa la cantidad de imágenes (por lotes).

IN es adecuado para modelos generativos, como la transferencia de estilos de imágenes. Debido a que el resultado de la generación de imágenes depende principalmente de una determinada instancia de la imagen, la operación de normalización en todo el lote no es adecuada para la tarea de estilizar la imagen. El uso de IN en la transferencia de estilo no solo puede acelerar la convergencia del modelo, sino también mantener la relación entre cada uno. imagen instancia de independencia.

Aquí está la fórmula para IN:

Entre ellos, t representa el índice de la imagen e i representa el índice del mapa de características.

4. ¿Cuáles son los trucos para mejorar la estabilidad del entrenamiento GAN?

1. Ingrese Normalizar

  1. Normalice la imagen de entrada a [-1, 1] [-1, 1]entre [ -1,1 ] _ _ _
  2. La salida de la última capa del generador utiliza la función de activación Tanh.

Normalizar es muy importante: las imágenes que no han sido procesadas no pueden converger. Una forma sencilla de normalizar imágenes es (images-127.5)/127.5 y luego enviarlas al discriminador para su entrenamiento. De la misma manera, las imágenes generadas también deben pasar por el discriminador, es decir, la salida del generador también está entre -1 y 1, por lo que es más apropiado utilizar la función de activación de Tanh.

2. Reemplace la función de pérdida de GAN original y la inversión de etiquetas

  1. La función de pérdida de GAN original sufrirá la desaparición del gradiente y el colapso del modo en el período de entrenamiento inicial. Puede utilizar la distancia de Earth Mover para optimizar.

  2. En proyectos reales, es más conveniente utilizar etiquetas invertidas para entrenar el generador, es decir, entrenar las imágenes generadas como etiquetas reales y entrenar las imágenes reales como falsas.

3. Utilice ruido aleatorio $Z$ con estructura esférica como entrada

  1. No utilice una distribución uniforme para el muestreo.

  1. Muestreo utilizando una distribución gaussiana

4. Utilice la norma por lotes

  1. Solo debe haber datos reales o datos falsos en un mini lote, no los mezcle para el entrenamiento.
  2. Si se puede utilizar BatchNorm, utilice BatchNorm; si no, utilice la normalización de instancias.

5. Evite el uso de operaciones como ReLU y MaxPool para introducir gradientes dispersos.

  1. La estabilidad de GAN se verá muy afectada por la introducción de gradientes dispersos.
  2. Es mejor utilizar una función de activación como LeakyReLU. (usado tanto en D como en G)
  3. Para reducir la resolución, es mejor utilizar: agrupación promedio o convolución + zancada.
  4. Para el muestreo superior, es mejor utilizar: PixelShuffle o convolución transpuesta + zancada.

Es mejor eliminar toda la lógica de Pooling, porque el uso de Pooling perderá información, lo que no es beneficioso para el entrenamiento de GAN.

6. Utilice etiquetas suaves y ruidosas

  1. Etiqueta suave, es decir, use [0.7 − 1.2] [0.7-1.2][ 0,71.2 ] y[ 0 − 0.3 ] [0-0.3][ 00.3 ] Se utilizan valores aleatorios en dos intervalos para reemplazar la etiqueta rígida de muestras positivas y muestras negativas.
  2. Puede agregar algo de ruido a las etiquetas durante el entrenamiento, como voltear aleatoriamente las etiquetas de algunas muestras.

7. Utilice el optimizador Adam

  1. El optimizador Adam es muy útil para GAN.
  2. Utilice Adam en el generador y SGD en el discriminador.

8. Realice un seguimiento de las señales de fracaso en el entrenamiento

  1. La pérdida del discriminador = 0 indica que el entrenamiento del modelo falló.
  2. Si la pérdida del generador disminuye constantemente, el discriminador no está funcionando.

9. Agregue el ruido apropiado al extremo de entrada.

  1. Agregue algo de ruido artificial a la entrada del discriminador.
  2. Se agrega ruido gaussiano a cada capa del generador.

10. Entrenamiento diferencial de generador y discriminador.

  1. Entrene más al discriminador, especialmente al agregar ruido.

11.Regla de actualización de dos escalas de tiempo (TTUR)

Utilice diferentes tasas de aprendizaje para el discriminador y el generador. El generador se actualiza con una tasa de aprendizaje más baja y el discriminador se actualiza con una tasa de aprendizaje más alta.

12.Penalización de gradiente

El uso del mecanismo de penalización de gradiente puede mejorar en gran medida la estabilidad de GAN y minimizar la aparición de problemas de colapso de modo.

13.Normalización espectral

La normalización espectral se puede utilizar en la técnica de normalización de peso del discriminador para garantizar que el discriminador sea continuo K-Lipschitz.

14. Utilice múltiples estructuras GAN

Se pueden utilizar múltiples estructuras GAN/multigenerador/multidiscriminador para hacer que el entrenamiento GAN sea más estable, mejorar el efecto general y resolver problemas más difíciles.

5. Algunos hiperparámetros que se pueden ajustar en la alquimia del aprendizaje profundo

  1. Preprocesamiento (tamaño de datos, normalización de datos)
  2. Tamaño del lote
  3. tasa de aprendizaje
  4. optimizador
  5. función de pérdida
  6. función de activación
  7. Época
  8. Inicialización de peso
  9. Búsqueda de arquitectura de red NAS

6.Conocimientos relacionados con la Normalización Espectral.

La normalización espectral es una tecnología de normalización de peso. Al igual que el recorte de peso y la penalización de gradiente, también es una de las formas de hacer que el modelo cumpla con la condición de 1-Lipschitz.

La condición de Lipschitz limita la gravedad del cambio de la función, es decir, el gradiente de la función, para garantizar la acotación de las estadísticas. Por lo tanto, la función es más fluida y durante el proceso de optimización de la red neuronal, los cambios de parámetros serán más estables y la explosión de gradiente no ocurrirá fácilmente .

Las restricciones de la condición de Lipschitz son las siguientes:

Captura de pantalla 2023-11-13 20 35 07

Entre ellos kkK representa una constante, la constante de Lipschitz. SiK = 1 K = 1k=1 , entonces es 1-Lipschitz.

En el campo de GAN, la normalización espectral tiene muchas aplicaciones. En WGAN, solo cuando se cumple la restricción de 1-Lipschitz, la distancia W se puede convertir en un problema dual mejor resuelto, lo que hace que WGAN sea más fácil de entrenar.

Si desea que la matriz A se asigne: R n → R m R^{n}\to R^{m}RnorteRm satisface la continuidad K-Lipschitz, y el valor mínimo de K esλ 1 \sqrt{\lambda_{1}}yo1 ( λ 1 \lambda_ {1}yo1ATA A_TAAtEl valor propio máximo de A ), entonces si desea que la matriz A satisfaga la continuidad 1-Lipschitz, solo necesita dividir todos los elementos de A por λ 1 al mismo tiempo \sqrt{\lambda_{1}}yo1 (Norma espectral)。

Lo que realmente hace la normalización espectral es dividir la matriz de parámetros de cada capa por su propio valor singular más grande. Es esencialmente un proceso SVD capa por capa, pero lleva demasiado tiempo realizar SVD, por lo que se utiliza la iteración de potencia. .método para resolver . El proceso se muestra en la siguiente figura:

Proceso del método de iteración de energía.

Obtener la norma espectral σ l ( W ) \sigma_l(W)pagyo( W ) , los parámetros en cada matriz de parámetros se dividen por ella para lograr el propósito de normalización.

Supongo que te gusta

Origin blog.csdn.net/weixin_51390582/article/details/135124638
Recomendado
Clasificación