Member-only story
Optimizadores en redes neuronales profundas: un enfoque práctico
Cuando nos enfrentamos al entrenamiento de una red neuronal, la decisión de que optimizador seleccionar parece estar envuelta en un halo de misterio, ya que en general la literatura alrededor de los optimizadores requiere de bastante bagaje matemático.
De cara a definir un criterio práctico, vamos a realizar una serie de experimentos para ver el comportamiento de diferentes optimizadores en problemas canónicos del aprendizaje automático. Así podremos elegir un optimizador de forma sencilla.
Marco teórico
En esencia, el objetivo del entrenamiento de redes neuronales es minimizar la función de coste encontrando los pesos adecuados para las aristas de la red (asegurando, eso sí, una buena generalización). El descubrimiento de estos pesos se lleva a cabo mediante una algoritmo numérico llamado backpropagation que puede resumirse así:
El elemento en cuestión de este estudio, el optimizador, es el encargado de generar pesos cada vez mejores: su importancia es crucial. Su funcionamiento esencial se basa en calcular el gradiente de la función de coste (derivada parcial) por cada peso (parametro/dimension) de la red. Como queremos minimizar el error, modificaremos cada peso en la dirección (negativa) del gradiente:
De cara a agilizar la convergencia de la función de coste hacia su mínimo, multiplicamos el vector de gradiente por un factor llamado factor de entrenamiento (lr).
El conjunto de métodos iterativos de reducción de la función de error (búsqueda de un mínimo local), son conocidos cómo los método de optimización basados en el gradiente descendente.
Discusión de los principales optimizadores disponibles en keras
A continuacion, presentaremos una vision intuitva de los principales optimizadores.
Stochastic Gradient Descent (SGD)
El cálculo de la derivada parcial de la función de coste respecto a cada uno de los pesos de la red para cada observación es, dado el número de diferentes pesos y observaciones, inviable. Por lo tanto, una primera optimización consiste en la introducción de un comportamiento estocástico (aleatorio). SGD hace algo tan…