2.21 - Otros algoritmos de optimización: el gradiente descendente estocástico y mini-batch gradient descent
Lección 21 de la sección “Redes Neuronales” del curso Fundamentos de Deep Learning con Python.
Tabla de contenido
Introducción
En la lección anterior hablamos de las principales técnicas de regularización usadas en el Deep Learning: el decaimiento de pesos y el Drop out.
En esta lección seguiremos profundizando en las diferentes técnicas muy útiles en el entrenamiento de las Redes Neuronales. En particular nos enfocaremos en dos variantes del algoritmo del gradiente descendente visto anteriormente: el algoritmo del gradiente descendente estocástico y el mini-batch gradient descent.
![Contenido exclusivo suscriptores](/img/contenido_exclusivo_suscriptores.png)
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
Limitaciones del algoritmo del Gradiente Descendente
El algoritmo del Gradiente Descendente convencional (también conocido como batch gradient descent o Gradiente Descendente por lotes) usa la totalidad de los ejemplos de entrenamiento en cada iteración del entrenamiento.
La principal desventaja de este enfoque es que si tenemos demasiados ejemplos de entrenamiento (como ocurre usualmente en el Deep Learning), cada iteración de entrenamiento requerirá demasiado tiempo y además se amplían los requisitos de memoria RAM del equipo usado en esta fase de desarrollo.
El algoritmo del Gradiente Descendente Estocástico es precisamente una alternativa a este inconveniente.
El algoritmo del Gradiente Descendente Estocástico
Es el extremo opuesto al Gradiente Descendente convencional: en lugar de tomar todo el set de entrenamiento en cada iteración, el Gradiente Descendente Estocástico toma tan sólo un ejemplo de entrenamiento de forma totalmente aleatoria (de allí el término “estocástico”).
La ventaja de esto es que se requieren menos recursos de memoria y el entrenamiento es mucho más rápido. Sin embargo, la desventaja es que al usar tan sólo un ejemplo de entrenamiento en cada iteración el algoritmo se puede quedar estancado en un mínimo local.
El algoritmo del Gradiente Descendente Estocástico con mini-batch (o mini-lotes), es un punto intermedio entre estos dos extremos.
Mini-batch gradient descent
En este caso en cada iteración no se toma ni todo el set de entrenamiento ni tan sólo un ejemplo, sino que se toman bloques de datos provenientes de dicho set. Cada uno de estos bloques se conoce como “lote” (o batch en Inglés) y usualmente puede tener entre unas cuantas decenas y unos cuantos miles de ejemplos (todo depende del tamaño del set de entrenamiento).
Así, en cada iteración de entrenamiento se presentan al modelo n lotes a partir de los cuales se actualizan sus parámetros.
La ventaja de esto es que se disminuye la probabilidad de estancamiento en un mínimo local (como ocurría con el Gradiente Descendente Estocástico) y además el entrenamiento se realiza más rápido y requiere menos recursos de memoria (en comparación con el Gradiente Descendente convencional).
![Contenido exclusivo suscriptores](/img/contenido_exclusivo_suscriptores.png)
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
Muy bien, acabamos de ver las dos primeras variantes del algoritmo del Gradiente Descendente convencional.
En la próxima lección veremos en detalle otra de estas variantes: el algoritmo del Gradiente Descendente con momentum.