Por Eduardo Cesar Garrido Merchán
Profesor de Métodos Cuantitativos, Universidad Pontificia Comillas.
Pincha aquí para ver el vídeo sobre este post
En la anterior entrada se ha ilustrado la diferencia entre un parámetro y un hiperparámetro. De forma concisa, un parámetro es obtenido en tiempo de entrenamiento y depende del modelo. Sin embargo, un hiperparámetro se debe configurar previamente al entrenamiento y es lo que define, dentro de una familia de modelos, que modelo se debe utilizar en específico.
En esta entrada se detalla la importancia existente en descubrir, dado un problema de regresión o clasificación, cuáles son los mejores valores de los hiperparámetros que debo utilizar con el objetivo, por ejemplo, de minimizar el error de generalización estimado por un modelo en concreto. Y este se trata sin duda de uno de los aspectos mas problemáticos del aprendizaje automático. Según el “no free lunch theorem” (no pienso traducirlo…), no existe un conjunto de valores de hiperparámetros que mejor solucione cada problema. De hecho, ¡no existe un modelo que funcione mejor para todos los problemas que se pueden presentar! Piénsalo, si la función desconocida que necesito descubrir fuera simplemente y = 2x, entonces, con una simple regresión lineal voy a obtener el mejor resultado posible, en términos de sesgo, varianza y consistencia, ya que lo único que habría que hacer es obtener el coeficiente beta=2 por el método de los mínimos cuadrados ordinarios ¡y sería la mejor solución posible! Recuerda que por el principio de parsimonia o la navaja de Ockham, si dos explicaciones son igualmente válidas para un fenómeno, entonces es mejor quedarse con la mas simple. Y es que un modelo de aprendizaje automático debe intentar ajustarse lo mejor posible a la complejidad de los datos. Si la capacidad del modelo de aprendizaje automático es inferior a la complejidad de los datos, entonces, el modelo pecará de infrajuste. Si por el contrario, la capacidad del modelo de aprendizaje automático es superior a la complejidad de los datos, entonces, el modelo pecará de sobreajuste. Únicamente una capacidad igual a la complejidad de los datos proporcionará un modelo óptimo para la predicción de la variable objetivo. Por ejemplo, si en el problema de valoración del piso empleo una red neuronal de un millón de parámetros con 8 capas, es muy probable que incurra en sobreajuste. La red neuronal va a codificar patrones espúreos además de la tendencia, y estos patrones actuarán como ruido en nuevas predicciones, ya que no generalizan de la muestra a la población. Si por el contrario uso una red neuronal de 2 neuronas, es posible que la clase de funciones en la que la red neuronal explorará la solución no incluya la explicación de la valoración del piso y únicamente codifiquemos un patrón simple que no explica la totalidad de la variabilidad de nuestra variable objetivo, ¡valga la redundancia! Si por el contrario usamos una red neuronal intermedia, de 3 capas con 200 neuronas, es probable que se codifiquen solo los patrones que mejor explican el precio y que la predicción generalice. ¡Pero estos valores de hiperparámetros son diferentes cada vez y no se pueden usar gradientes para obtenerlos? ¿Cómo los busco entonces? Son muchísimos, y ningún experto va a poder conocer el valor óptimo ya que depende de cada problema…