8 votos

Referencia para aprender a interpretar las curvas de aprendizaje de las redes neuronales convolucionales profundas

Pregunta

¿Cuáles son los buenos artículos/blogs/tutoriales de referencia para aprender a interpretar las curvas de aprendizaje de las redes neuronales convolucionales profundas?

Antecedentes Estoy intentando aplicar redes neuronales convolucionales (CNN) para la segmentación de vasos (concretamente para determinar si el píxel central de un parche de la imagen está o no en un vaso) utilizando caffe.

Tengo unas 225000 imágenes de entrenamiento (~50% positivas) y 225000 (~50% positivas) imágenes de prueba/validación.

Mis imágenes de entrada son de tamaño 65 x 65. Tengo cuatro capas convolucionales (48x6x6, 48x5x5, 48x4x4, 48x2x2) cada una de ellas, seguidas de capas de agrupación máxima de 2x2, una capa totalmente conectada de 50 neuronas y una capa final de puntuación con 2 neuronas. El tamaño de mi lote de entrenamiento es de 256 y el de las pruebas es de 100.

Estoy utilizando un optimizador de descenso de gradiente estocástico (SGD) y una política de tasa de aprendizaje de decaimiento inverso. A continuación, mis solucionador de caffe parámetros:

  • tipo : "SGD"
  • base_lr : 0.01
  • lr_policy : "inv"
  • gamma : 0.1
  • poder : 0.75
  • impulso : 0.9
  • peso_decadencia : 0.0005

A continuación se muestra la curva de aprendizaje que estoy obteniendo:

enter image description here

Estoy utilizando la pérdida de clasificación de entropía cruzada o la pérdida logística multinomial (véase aquí ).

Me gustaría saber cómo interpreta la gente esta curva de aprendizaje y qué parámetros cambiarían para intentar mejorar la precisión de la prueba.

  • La pérdida de entrenamiento está disminuyendo, pero lo hace muy lentamente. ¿Podría significar que mi tasa de aprendizaje es baja?

  • Por el contrario, veo que la pérdida de la prueba disminuye rápidamente al principio y luego se ralentiza. ¿Podría significar esto que mi tasa de aprendizaje era alta y se quedó atascado en el mínimo local?

  • Además, la precisión de las pruebas se ha estabilizado y ha dejado de aumentar demasiado pronto. ¿Podría significar esto que tengo que intentar aumentar la capacidad de mi modelo o disminuir la regularización?

En general, lo que me ayudaría, y probablemente también a otros, es que alguien pudiera señalar un artículo/libro/blog-post de referencia que profundice en la interpretación de dichas curvas de aprendizaje con muchos casos de ejemplo.

Encontré esto entrada del blog que fue muy útil, pero no hay mucho sobre la interpretación de las curvas de aprendizaje (al menos no para mi satisfacción).

2voto

Lord Zsolt Puntos 106

2 cosas:

  1. Probablemente debería cambiar su reparto 50/50 de entrenamiento/validación a algo como 80% de entrenamiento y 20% de validación. En la mayoría de los casos mejorará el rendimiento del clasificador en general (más datos de entrenamiento = mejor rendimiento)
  2. Si nunca ha oído hablar del "early-stopping" debería buscarlo, es un concepto importante en el ámbito de las redes neuronales: https://en.wikipedia.org/wiki/Early_stopping . Para resumir, la idea detrás de la interrupción temprana es detener el entrenamiento una vez que la pérdida de validación comienza a estancarse. De hecho, cuando esto ocurre, casi siempre significa que se está empezando a sobreajustar el clasificador. El valor de la pérdida de entrenamiento en sí mismo no es algo en lo que deba confiar, porque seguirá disminuyendo incluso cuando esté sobreajustando su clasificador.

Espero haber sido lo suficientemente claro, buena suerte en tu trabajo :)

1voto

user200863 Puntos 21

Sé que es una pregunta antigua pero supongo que si alguien se topa con ella buscando algo similar...

Yo diría que el valor de las pérdidas, que apenas disminuye, sugiere que se utiliza una tasa de aprendizaje más baja Pero supongo que eso se menciona en el enlace que has incluido en tu pregunta, así que probablemente lo hayas considerado.

También intentaría cambiar los filtros que usas en tu modelo. De la mayoría de las cosas que he visto en línea por lo general utilizan filtros de 3x3 para todas las capas, los que utilizan diferentes tamaños de filtro también tiende a ir de 3x3 a 4x4, etc. Supongo que intuitivamente esto te permite extraer más detalles finos en las capas iniciales y construir sobre ellas.

En términos de recursos, esto también parece interesante aunque también relativamente limitado: https://machinelearningmastery.com/diagnose-overfitting-underfitting-lstm-models/

También esperaba que alguien que se encuentre con esto pueda revisar el problema que tengo que es de naturaleza similar. He tratado de cambiar una serie de parámetros, pero hay una gran brecha entre la formación y la pérdida de validación que se cierra de repente después de algunas épocas.

¿Cómo interpreto mi curva de pérdidas de validación y de entrenamiento si hay una gran diferencia entre las dos que se cierra bruscamente?

También me resultaría EXTREMADAMENTE útil si alguien pudiera reunir una referencia que sugiriera sugerencias prácticas sobre cómo diagnosticar y abordar problemas comunes en los modelos/parámetros de los gráficos de pérdidas. Tal vez incluso para estas parcelas

http://lossfunctions.tumblr.com/

0voto

Dan Puntos 78

He aquí algunas sugerencias:

  1. El error de entrenamiento y el error de prueba están demasiado cerca (su sistema no es capaz de sobreajustar los datos de entrenamiento), esto significa que su modelo es demasiado simple. Solución: más capas o más neuronas por capa.

  2. Disminuya la gamma, por ejemplo, 0,01. Si la curva sigue alcanzando la meseta antes de tiempo, puede probar con una tasa de aprendizaje mayor, por ejemplo, 0,1.

  3. Prueba con Adam en lugar de SGD. La convergencia de Adam suele ser más rápida que la de SGD.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X