¿Por lo general, las redes neuronales tardan un poco en "activarse" durante el entrenamiento?

10

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.

ingrese la descripción de la imagen aquí

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!

Karnivaurus
fuente
Supongo que llego un poco tarde a la fiesta. Pero tal vez aún pueda agregar algo de valor a la conversación. Soo ... para mí suena como una función de activación sigmoidea. Dado que la derivada del sigmoide es pequeña para valores muy pequeños o muy grandes, el entrenamiento puede ser lento para "neuronas saturadas". Desafortunadamente, no puedo decir exactamente cómo es su CNN a partir de la descripción que ha dado.
Nima Mousavi

Respuestas:

7

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.

Acantilado
fuente