Los dos parámetros más importantes que afectan la convergencia del modelo, Batchsize y learn_rate

Desde la perspectiva de la optimización en sí , BatchSize y la tasa de aprendizaje (y el impacto de la estrategia de reducción de la tasa de aprendizaje) en la capacitación de aprendizaje profundo son los
parámetros más importantes que afectan la convergencia del rendimiento del modelo.
La tasa de aprendizaje afecta directamente el estado de convergencia del modelo, y el tamaño de lote afecta el rendimiento de generalización del modelo. Los dos están directamente relacionados con el numerador y el denominador, y también pueden afectarse entre sí.

Directorio de artículos

1 El efecto de Batchsize en los resultados del entrenamiento (mismo número de rondas de época)

Aquí usamos GHIM-20, 20 imágenes de cada tipo en 20 categorías, un total de 10000 (train9000) (val1000) y
un total de 100 épocas (equivalente a recorrer 9000 imágenes 100 veces, de las cuales acc (el recorrido se imprime 10 veces por iteración) Un total de 1000 val_list)
Inserte la descripción de la imagen aquí
Alexnet usó aquí (train_batchsize = 32 y train_batchsize = 64 respectivamente)

Comparación de resultados

1. Alexnet 2080s train_batchsize = 32, val_batchsize = 64。lr = 0.01 GHIMyousan

  1. Entrenamiento de la década de 2080 s 4.68h, casi 28k iteraciones == 100epoch x 9000/32, cada lote de trenes registra una pérdida azul oscuro
  2. val-batch registra un azul claro con pérdida de val
    Pregunta: ¿La pérdida es convergente?
    acc-loss siempre es mayor que train-loss para ver que es un problema de sobreajuste
    Comprueba algunas respuestas
    1. Teóricamente, no converge , es decir, hay un problema con la red que diseñó, que también es el primer factor que debe considerarse: si existe el gradiente, es decir, si la propagación inversa se ha roto,
    2. Teóricamente, es convergente :
    1. La configuración de la tasa de aprendizaje no es razonable (en la mayoría de los casos). Si la configuración de la tasa de aprendizaje es demasiado grande, causará no convergencia. Si es demasiado pequeña, la tasa de convergencia será muy lenta;

    2. El tamaño de lote es demasiado grande, cae en el óptimo local y no puede alcanzar el óptimo global, por lo que no puede continuar convergiendo;

    3. La capacidad de la red, es cierto que la pérdida de la red superficial para completar tareas complejas no disminuye. El diseño de la red es demasiado simple. En general, cuanto mayor es el número de capas y nodos de la red, mayor es la capacidad de ajuste. Incapaz de adaptarse a situaciones complejas, también provocará la no convergencia.
      La base de la disminución del paso de la tasa de aprendizaje no es demasiado grande, y el tamaño de lote = 32 no es grande, por lo que es convergente. ? (Después de todo, la pérdida = 0.0008 no es demasiado grande.) La
      Inserte la descripción de la imagen aquí
      Inserte la descripción de la imagen aquí
      Inserte la descripción de la imagen aquí
      curva acc es la siguiente: básicamente se ajusta después de mirar la imagen después de 15k iteraciones (es decir, época = 15000 * 32/9000 = 53 rondas). Lo interesante es que corresponde al aprendizaje La tasa disminuyó de 0.01 a 0.001
      Pregunta: ¿Por qué acc84% de val no sube?
      El conjunto de entrenamiento funciona bien y la diferencia del conjunto de prueba
      es demasiado adecuada , lo que indica que las características aprendidas aún no están lo suficientemente generalizadas. ¿Qué capa de características de aprendizaje no es lo suficientemente buena?
      Solución de sobreajuste
      1. Motivo:

      • La razón del sobreajuste es que la magnitud del conjunto de entrenamiento no coincide con la complejidad del modelo,
      • La magnitud del conjunto de entrenamiento es menor que la complejidad del modelo;
      • La distribución de características del conjunto de entrenamiento y el conjunto de prueba es inconsistente;
      • Los datos de ruido en la muestra ...

      2. Solución
      (estructura de modelo más simple, aumento de datos, regularización, abandono, detención temprana, conjunto, limpieza de datos)

2. Alexnet 2080 train_batchsize = 64, val_batchsize = 64, lr = 0.01 GHIM-me 14k itera

2080 train_batchsize = 64, la iteración de 4.5k se ajusta básicamente (4500 * 64/9000 = 32 rondas), y tanto train como val son mejores. Y el ajuste es bueno
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Como se muestra en la figura a continuación

3. Alexnet 2080s train_batchsize = 64, val_batchsize = 64, lr = 0.02 GHIM-yousan

2080, no hay convergencia o sobreajuste? ? ?
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

4 Squeezenet 2080s train_bs = 64 val-bs = 64 lr 0.01 GHIMyousan

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

4- Experimento de repetibilidad Squeezenet 2080s train_bs = 64 val-bs = 64 lr 0.01 GHIM-me, el resultado sigue siendo demasiado ajustado 87% acc

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

5 5 mobilenetv1 2080s t-bs: 64, v-bs: 64 lr: 0.01, GHIM-meSobreajuste

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

5 5 mobilenetv2 2080s t-bs: 64, v-bs: 64 lr: 0.01, GHIM-meSobreajuste

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

6 mobilenetv1 2080 t-bs: 64 v-bs: 64 lr: 0.01 GHIM-me equipado

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

6 mobilenetv2 2080 t-bs: 64 v-bs: 64 lr: 0.01 GHIM-me equipado

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
lr = 0.01

10 predecesores hablan de lotes

Girar

1 Dentro de un cierto rango, en general, cuanto más grande es el Batch_Size, más precisa es la dirección hacia abajo que determina, lo que resulta en menos choque de entrenamiento.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

  • A medida que aumenta Batch_Size, aumenta el número de épocas necesarias para lograr la misma precisión. Penúltima fila
  • A medida que aumenta Batch_Size, más rápido es el procesamiento de la misma cantidad de datos.
  • Debido a la contradicción entre los dos factores anteriores, Batch_Size aumenta hasta cierto punto, alcanzando el tiempo óptimo.
  • Dado que la precisión de convergencia final caerá en diferentes extremos locales, Batch_Size aumenta algunas veces para alcanzar la precisión de convergencia final óptima.

2 La disminución en el rendimiento del lote grande se debe a que el tiempo de entrenamiento no es lo suficientemente largo, lo cual no es esencialmente un problema con el tamaño del lote.

Inserte la descripción de la imagen aquí
La tasa de error aumenta después de batchsize = 8k

3 El tamaño de lote grande converge al mínimo agudo, mientras que el tamaño de lote pequeño converge al mínimo plano, que tiene una mejor capacidad de generalización.

Inserte la descripción de la imagen aquí
La diferencia entre los dos radica en la tendencia cambiante, una rápida y otra lenta, como se muestra arriba, la razón principal de este fenómeno es que el ruido causado por el pequeño tamaño del lote ayuda a escapar del mínimo agudo.

4 El tamaño del lote aumenta, la tasa de aprendizaje debería aumentar con los demás

Por lo general, cuando aumentamos el tamaño del lote a N veces el original, para asegurarnos de que los pesos actualizados después de la misma muestra sean iguales, de acuerdo con la regla de escala lineal, la tasa de aprendizaje debe aumentarse al N original [5]. Sin embargo, si se quiere mantener la varianza de los pesos, la tasa de aprendizaje debe aumentarse al sqrt original (N) veces [7]. En la actualidad, ambas estrategias se han estudiado y la primera se utiliza principalmente.

5 Aumentar el tamaño de Batchsize es equivalente a agregar atenuación de la tasa de aprendizaje

Inserte la descripción de la imagen aquí
De hecho, se puede ver en la fórmula de actualización de peso de SGD que los dos son de hecho equivalentes, y esto se verifica mediante suficientes experimentos en el artículo

Conclusión

1 Si se aumenta la tasa de aprendizaje, el tamaño del lote también debería aumentar, de modo que la convergencia sea más estable.

2 Intente utilizar una tasa de aprendizaje grande, porque muchos estudios han demostrado que una tasa de aprendizaje mayor es propicia para mejorar la capacidad de generalización. Si realmente desea decaer, puede probar otros métodos, como aumentar el tamaño del lote, la tasa de aprendizaje tiene un gran impacto en la convergencia del modelo y ajustarlo cuidadosamente.

3 La desventaja de usar bn es que no puede usar un tamaño de lote demasiado pequeño, de lo contrario, la media y la varianza estarán sesgadas. Así que ahora es generalmente tanto como la memoria de video puede poner. Además, cuando el modelo se usa realmente, es realmente más importante distribuir y preprocesar los datos. Si los datos no son buenos, es inútil jugar más trucos.

Lectura de referencia
https://zhuanlan.zhihu.com/p/29247151
https://zhuanlan.zhihu.com/p/64864995

Publicado 63 artículos originales · elogiado 7 · vistas 3396

Supongo que te gusta

Origin blog.csdn.net/weixin_44523062/article/details/105457045
Recomendado
Clasificación