2.6 - Gradiente Descendente estocástico con "mini-batch"

Lección 6 de la sección “Redes Neuronales” del curso Fundamentos de Deep Learning con Python.

Introducción

En la lección anterior vimos el funcionamiento de la Regresión Lineal Múltiple, que nos permite entrenar modelos para casos en los cuales el vector de entrada contiene múltiples características.

En esta lección nos enfocaremos en una variante del algoritmo del Gradiente Descendente convencional, que en la práctica es la que se usa para entrenar diferentes modelos de Deep Learning.

Esta variante es necesaria pues en la práctica usamos sets de datos gigantescos (con miles, cientos de miles o incluso millones de datos). En estos casos el algoritmo del Gradiente Descendente convencional no resulta adecuado pues requiere el procesamiento de la totalidad del set de datos en cada iteración, haciendo el proceso de entrenamiento más lento e imponiendo requisitos adicionales a las capacidades computacionales del equipo que se esté usando para dicho entrenamiento.

Hablemos entonces en detalle del Gradiente Descendente estocástico con “mini-batch”.

Contenido exclusivo suscriptores

Suscríbete para tener acceso al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Ejemplo numérico

Hagamos un sencillo ejemplo numérico para entender el funcionamiento del algoritmo. Si el set de entrenamiento contiene, por ejemplo, un total de 100.000 datos no presentaremos todos estos datos simultáneamente al modelo en cada iteración. En su lugar vamos a subdividir aleatoriamente el dataset en pequeños lotes, llamados mini-batches, de digamos 20.000 datos cada uno. Así que en total presentaremos al modelo 5 mini-batches en cada iteración. Con lo anterior se reducen los requerimientos de capacidad de cómputo pues en cada actualización se debe procesar sólo una parte (el mini-batch) de los datos.

El nombre de Gradiente Descendente estocástico hace referencia precisamente a la selección aleatoria de los datos que pertenecerán a cada mini-batch.

Entrenamiento con mini-batches

Así que podemos resumir el algoritmo del Gradiente Descendente estocástico con mini-batch de la siguiente manera:

  1. Crear los lotes (BATCHES) a partir del set de datos original y definir el número de iteraciones del algoritmo (EPOCHS)
  2. Para cada epoch en EPOCHS:
    • Para cada batch en BATCHES:
      • Actualizar los parámetros del modelo aplicando el algoritmo del Gradiente Descendente al batch

Y con esto ya tendremos entrenado el modelo. En esencia este entrenamiento consiste en aplicar el algoritmo del Gradiente Descendente convencional a cada lote hasta completar la totalidad de datos y la totalidad de las iteraciones definidas para el entrenamiento.

Contenido exclusivo suscriptores

Recuerda suscribirte para acceder al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

Bien, hasta este punto ya hemos visto en detalle varios conceptos relacionados con el proceso de entrenamiento y con los algoritmos de optimización involucrados en el aprendizaje de los parámetros del modelo. Así que con estos conceptos ya estamos listos para la segunda práctica de esta sección del curso, en donde resolveremos un problema de Regresión Lineal en Keras, la librería que usaremos para implementar los diferentes modelos de Deep Learning que veremos a lo largo del curso.

Ver todas las lecciones de este curso