30 de mayo de 2020

Sobreentrenamiento de una red neuronal

Hola,
en la última entrada repasé como aprende una red neuronal y cómo se calcula el coste en un conjunto de entrenamiento. Hoy me detengo en el problema del sobreentrenamiento (overfitting en la literatura), para lo cual necesitamos un conjunto de datos independiente, que llamamos conjunto de validación.

Primero definiré el sobreentrenamiento con las palabras de J Krohn: "es la situación en la que el coste de entrenamiento desciende a la vez que aumenta en el conjunto de validación". El objetivo del entrenamiento debe ser obtener un modelo general, y el sobreentrenamiento es por tanto un obstáculo, porque al sobreentrenar lo que ocurre es que el modelo se particulariza para tu conjunto de entrenamiento.

Figura 9.5 de Krohn J (2019) Deep Learning Illustrated

En la figura se ilustran 4 modelos ajustados a los mismos datos. Arriba a la izquierda un modelo como un solo parámetro, con un ajuste muy pobre. A su derecha un modelo parabólico con con dos parámetros se ajusta bastante bien. Abajo se muestran un modelo multiparamétrico que sobreajustan los datos y que no generaliza bien cuando se agregan nuevos datos (abajo derecho). El sobreentrenamiento es un problema de sobreajuste.

En su libro, J Krohn presenta ideas para limitar el sobreentrenamiento. En primer lugar, habla del número de épocas que debemos entrenar una red:
  • Si el coste de entrenamiento en un conjunto de datos de validación alcanza el mínimo en la última época es buena idea agregar más épocas al entrenamiento.
  • Si el coste empieza a aumentar a partir de una época de entrenamiento, es normalmente un indicio de sobreentrenamiento
En segundo lugar, describe la técnica de eliminación neuronas (dropout) al azar en capas ocultas durante el proceso de entrenamiento:

Figura 9.6 de Krohn J (2019) Deep Learning Illustrated

El próximo día programaremos las primeras redes,
Bruno

No hay comentarios:

Publicar un comentario