¿Qué suele hacer que una red neuronal deje de mejorar temprano?

Teóricamente, probablemente sea la tasa de aprendizaje o la capacidad del modelo. Pero en la realidad; casi cualquier cosa. Quizás un error en tu código. Quizás su muestreo de datos no sea aleatorio. Quizás los datos no estén alineados con las etiquetas correctamente. Quizás los gradientes no se actualizan correctamente.

La capacidad del modelo se refiere a la complejidad de la función que se puede modelar con la red neuronal. No conozco ninguna medida cuantitativa de esto, pero es un factor importante a considerar. ¿Puede su modelo aprender NUNCA lo que quiere?

Para ver los efectos de las malas tasas de aprendizaje, debe consultar CS231n Redes neuronales convolucionales para el reconocimiento visual, la sección llamada ” Cuidado del proceso de aprendizaje “.

Básicamente, una tasa de aprendizaje realmente alta significa que la pérdida aumentará, una tasa de aprendizaje un poco alta (que podría ser lo que estás viendo) simplemente convergerá muy rápidamente a un mínimo local pobre.

En general, las personas harán un horario de tasa de aprendizaje porque al principio quieres una tasa de aprendizaje más alta, pero más tarde, quieres una más pequeña.

Muchas posibilidades:

  • Ha alcanzado un mínimo local de su función de costo. Dado que el gradiente se calcula estocásticamente, todavía rebotará un poco, pero si la cuenca de atracción de los mínimos locales es lo suficientemente grande, quedará atrapado allí.
  • Su red no es lo suficientemente compleja como para obtener una mejor aproximación de la función que está modelando. En teoría, puede modelar cualquier función con precisión arbitraria con una red lo suficientemente grande. Cada red tiene una precisión máxima a la que puede aproximarse a cualquier función dada. Para una red pequeña y una función complicada, esa precisión máxima puede estar lejos de lo que desea.
  • Tu tasa de aprendizaje es demasiado grande. El modelo va demasiado lejos en la dirección del gradiente y sigue superando el objetivo.
  • Inestabilidad numérica. Calcular gradientes y actualizar pesos es complicado y a veces puede conducir a una cancelación catastrófica. Eso puede arruinar totalmente la convergencia, a veces incluso manteniendo su modelo fuera del rango óptimo de parámetros sin divergir.
  • Un error en el código. Calcular casi CUALQUIER COSA incorrecta aún puede permitir que su modelo converja, pero con los parámetros incorrectos.
  • El algoritmo equivocado. Las redes neuronales son excelentes para muchas cosas, pero no son adecuadas para cada tarea. Algunas funciones son muy difíciles de aproximar con redes neuronales.

¡Y hay toneladas de otras cosas que podrían salir mal! Si desea saber qué está sucediendo mal en su caso, debe analizar exactamente qué está haciendo su modelo.

Según tengo entendido, una posible razón es que la función de costo para una red neuronal generalmente no es convexa: no solo hay un mínimo global, sino posiblemente también mínimos locales. Si su elección inicial de parámetros resulta en que el proceso iterativo de descenso / minimización de gradiente caiga en el valle de un mínimo local, la minimización se detendrá allí, ya que los gradientes serán cero, la matriz de ponderación (ces) dejará de actualizarse, lo que significa que el ciclo de propagación hacia adelante / hacia atrás dejará de actualizarse, básicamente, convergerás al mínimo local y permanecerás allí.
https://upload.wikimedia.org/wik