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: