He visto tramas de error de prueba / entrenamiento que caen repentinamente en ciertas épocas varias veces durante el entrenamiento de la red neuronal, y me pregunto qué causa estos saltos de rendimiento:
Esta imagen está tomada de Kaiming He Github, pero en muchos periódicos aparecen tramas similares.
conv-neural-network
libphy
fuente
fuente
Respuestas:
Cambiaron la tasa de aprendizaje. Tenga en cuenta que la caída es exactamente en 30 y 60 épocas, obviamente establecida por alguien.
fuente
Piense en el "panorama de optimización". Por ejemplo, si tuviera una red con solo dos pesos, podría trazar todas las combinaciones de estos dos pesos en una superficie, donde la altura en cada punto representa la cantidad de error que devuelve su función de costo si usa eso (x, y ) coordine como sus dos pesas. Está intentando moverse al punto más bajo de esta superficie para obtener el nivel más bajo de error.
El problema a veces es que la superficie puede volverse bastante loca, especialmente en redes con millones de parámetros en lugar de solo dos. Puede atascarse en puntos de silla de montar donde el progreso se ralentiza, y luego de repente se tira de la honda de regreso a una colina hacia abajo.
Aquí hay una animación para ayudar a visualizar esto. Como puede ver, los algoritmos de descenso de gradiente más básicos se atascan en estas posiciones mucho más fácilmente.
Puede haber otras causas para esto también, pero esta es la que escucha con más frecuencia. Es posible que una red pueda tener un montón de unidades que obtienen activaciones saturadas (o en el caso de relu, una unidad que solo se activa mediante un número muy pequeño de entradas de entrenamiento), y cuando una unidad se sale de la saturación ¿desencadena una reacción en cadena que mueve el resto fuera de la saturación y los pesos de repente reciben un impulso del flujo de gradiente? No he investigado algo así, pero me interesaría si alguien tiene otras razones para agregar.
fuente