Estoy tratando de entrenar una red neuronal profunda para la clasificación, utilizando la propagación inversa. Específicamente, estoy usando una red neuronal convolucional para la clasificación de imágenes, usando la biblioteca Tensor Flow. Durante el entrenamiento, estoy experimentando un comportamiento extraño, y me pregunto si esto es típico o si puedo estar haciendo algo mal.
Entonces, mi red neuronal convolucional tiene 8 capas (5 convolucionales, 3 completamente conectadas). Todos los pesos y sesgos se inicializan en pequeños números aleatorios. Luego establezco un tamaño de paso y continúo con el entrenamiento con mini lotes, usando Adam Optimizer de Tensor Flow.
El comportamiento extraño del que estoy hablando es que durante los primeros 10 bucles a través de mis datos de entrenamiento, la pérdida de entrenamiento, en general, no disminuye. Los pesos se están actualizando, pero la pérdida de entrenamiento se mantiene aproximadamente en el mismo valor, a veces subiendo y bajando entre mini lotes. Permanece así por un tiempo, y siempre tengo la impresión de que la pérdida nunca va a disminuir.
Entonces, de repente, la pérdida de entrenamiento disminuye dramáticamente. Por ejemplo, dentro de aproximadamente 10 bucles a través de los datos de entrenamiento, la precisión del entrenamiento va de aproximadamente 20% a aproximadamente 80%. A partir de entonces, todo termina convergiendo muy bien. Lo mismo sucede cada vez que ejecuto la tubería de entrenamiento desde cero, y a continuación hay un gráfico que ilustra un ejemplo de ejecución.
Entonces, lo que me pregunto es si este es un comportamiento normal con el entrenamiento de redes neuronales profundas, por lo que lleva un tiempo "entrar". ¿O es probable que haya algo que estoy haciendo mal que esté causando este retraso?
¡Muchas gracias!
Respuestas:
El hecho de que el algoritmo tardó un poco en "patear" no es particularmente sorprendente.
En general, la función objetivo que se optimizará detrás de las redes neuronales es altamente multimodal. Como tal, a menos que tenga algún tipo de conjunto inteligente de valores iniciales para su problema, no hay razón para creer que comenzará en un descenso pronunciado. Como tal, su algoritmo de optimización estará deambulando casi al azar hasta que encuentre un valle bastante empinado para comenzar a descender. Una vez que se haya encontrado esto, debe esperar que la mayoría de los algoritmos basados en gradiente comiencen a reducirse de inmediato al modo particular más cercano.
fuente