Parámetros e hiperparámetros en el Machine Learning

En este artículo veremos qué son los parámetros y los hiperparámetros de un modelo, dos conceptos que resultan fundamentales en el Machine Learning.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción

Cuando desarrollamos un modelo de Machine Learning es común que nos encontremos con los términos “parámetros” e “hiperparámetros” que aunque tienen nombres similares significan dos cosas totalmente diferentes.

Así que en este artículo vamos a entender el significado de cada uno de estos conceptos fundamentales en el Machine Learning.

El problema a resolver

Partamos de un ejemplo hipotético para entender las diferencias entre parámetros e hiperparámetros.

Y para ello usaremos el mismo ejemplo que analizamos en un artículo anterior cuando hablamos de las diferencias entre algoritmos y modelos de Machine Learning.

Supondremos que una entidad bancaria ha recolectado información de muchos clientes y que usaremos el nivel de endeudamiento y el nivel de ingreso para determinar, para cada cliente, su perfil, que puede ser una de dos categorías: “inversionista” o “consumidor”.

Los clientes con perfil “inversionista” serán aquellos con ingresos relativamente altos y niveles de deuda relativamente bajos, mientras que los clientes con un perfil “consumidor” tendrán niveles intermedios tanto de ingreso como de deuda.

El algoritmo y el modelo

Como lo vimos en el artículo sobre algoritmos y modelos, una forma de resolver este problema es encontrar una frontera que separe correctamente unos clientes de otros con base en sus niveles de ingreso y de deuda.

Y en este caso la frontera puede ser simplemente una línea recta que deberá tener una orientación adecuada para que la separación sea correcta.

Así, si tenemos esta recta con la orientación ideal podremos clasificar a un cliente como “inversor” si sus niveles de ingreso y deuda hacen que esté de un lado de la recta o como “consumidor” si dichos niveles hacen que esté del otro lado de la recta.

Y esta línea recta se caracteriza por tener unos coeficientes que determinarán precisamente la orientación de esta recta.

Y la forma de calcular estos coeficientes de forma automática es usando un algoritmo que en primer lugar define una recta con una orientación arbitraria (es decir con unos coeficientes aleatorios).

Luego, de forma iterativa, el algoritmo repite una serie de pasos con el fin de refinar la orientación de esta recta.

En cada iteración se toma la recta construida y se generan las predicciones, es decir que se clasifica a cada cliente de nuestro set de datos como “consumidor” o “inversor” dependiendo de si sus características hacen que esté de uno u otro lado de la recta.

Luego se evalúa el error existente entre las predicciones y las categorías reales a las que pertenece cada cliente y finalmente se modifican los coeficientes de la recta dependiendo de la magnitud de este error, buscando que este ajuste de la recta permita mejorar progresivamente dichas predicciones.

Al final de todo esto lo que buscamos obtener es el error más pequeño posible (es decir que las predicciones se parezcan al máximo a las categorías reales a las que pertenecen los clientes).

Y tras ejecutar el algoritmo obtendremos el modelo, el producto final que nos permitirá predecir, idealmente de forma correcta, a qué categoría pertenece un cliente dados sus niveles de ingreso y de deuda.

Pues resulta que implícitamente en este proceso de construcción del modelo a partir del algoritmo encontramos precisamente los conceptos de parámetro e hiperparámetro.

Así que entendamos a partir de este sencillo ejemplo cada uno de estos conceptos, comenzando con los parámetros.

Los parámetros

En el ejemplo anterior vimos que la orientación de la recta depende de unos coeficientes, que inicialmente son escogidos aleatoriamente pero que a medida que ejecutamos cada paso del algoritmo una y otra vez iremos refinando hasta obtener estos valores ideales.

Pues resulta que estos coeficientes se conocen precisamente como los parámetros del modelo: son variables propias del modelo y que se obtienen de forma automática usando el algoritmo de entrenamiento.

Al decir que estos parámetros se obtienen de forma automática nos referimos a que estos valores se estiman a partir de los datos (en nuestro caso por ejemplo la información que el banco ha recolectado de nuestros clientes) y que nosotros no podemos controlar directamente el valor que tendrán en cada iteración.

Teniendo claro este concepto, veamos ahora qué son los hiperparámetros y como se diferencian de los parámetros.

Los hiperparámetros

Volviendo al ejemplo anterior, vimos que en el caso del algoritmo los pasos allí definidos se tienen que repetir un cierto número de veces.

Este número de repeticiones se conoce como el número de iteraciones y es una cantidad numérica que debemos definir manualmente al momento de programar el algoritmo y que debemos escoger cuidadosamente, pues si definimos muy pocas iteraciones no lograremos obtener la frontera de separación ideal al final del algoritmo.

Así que podemos definir un hiperparámetro como una variable que es externa al modelo (es decir que no se obtiene automáticamente a partir de los datos) y que en su lugar debemos definir manualmente al momento de programar el algoritmo de entrenamiento.

Bien, teniendo estas definiciones, veamos ahora algunos ejemplos adicionales que nos permitirán terminar de tener una idea clara de estos dos conceptos.

Ejemplos de parámetros e hiperparámetros

En una Red Neuronal

Por ejemplo, cuando tenemos una Red Neuronal, cada neurona contiene unos coeficientes que permiten transformar los datos que estamos procesando. Estos coeficientes son precisamente los parámetros del modelo, pues se calculan de forma automática a partir de los datos durante el entrenamiento.

Sin embargo, para lograr obtener los parámetros más adecuados debemos definir por ejemplo el número de iteraciones del algoritmo de entrenamiento o el número de capas ocultas de la Red Neuronal, o el número de Neuronas por capa. Estos son los hiperparámetros del modelo, pues se trata de valores que definimos al momento de crear la Red Neuronal.

En una Red Transformer

Las Redes Transformer, que son la base de modelos como BARD, GPT o ChatGPT, son un tipo de Red Neuronal especializada en el procesamiento de secuencias (como lo es por ejemplo el texto).

En este caso los parámetros son los coeficientes de cada neurona que hace parte de la Red, mientras que los hiperparámetros son por ejemplo el número el número de bloques atencionales o el tamaño del embedding.

En una Red Convolucional

Una Red Convolucional es una arquitectura de Deep Learning que permite procesar imágenes.

En este caso los parámetros son por ejemplo los coeficientes de los filtros, encargados de extraer diferentes características de las imágenes, mientras que los hiperparámetros pueden ser el número de filtros, el tamaño de cada filtro o el número de capas convolucionales.

En los algoritmos de optimización

Además, cada una de las redes mencionadas anteriormente es entrenada con un algoritmo de optimización que permite ajustar de forma automática e iterativa los parámetros de cada modelo para progresivamente mejorar las predicciones.

Y usualmente este proceso de optimización se basa en el algoritmo del Gradiente Descendente o en alguna de sus variantes. Y en el fondo estos algoritmos contienen algo que se conoce como la tasa de aprendizaje, que determina qué tan rápido se actualizan los parámetros del modelo en cada iteración de entrenamiento.

Pues esta tasa de aprendizaje es también otro ejemplo de hiperparámetro y que usualmente encontraremos en diferentes modelos de Machine Learning.

Conclusión

Muy bien, a lo largo de este artículo hemos podido entender los conceptos de parámetro e hiperparámetro en el Machine Learning.

En esencia un parámetro es una variable numérica interna del modelo y cuyo valor no podemos controlar pues se calcula de forma automática y a partir de los datos a través de un algoritmo (conocido como algoritmo de entrenamiento).

Y por otra parte tenemos los hiperparámetros, que son también variables numéricas pero que, a diferencia de los parámetros, sí podemos controlar externamente es decir en el momento en el que programamos el algoritmo y realizamos el entrenamiento del modelo.

Y dependiendo de cómo elijamos el valor de estos hiperparámetros podremos mejorar o empeorar el desempeño del modelo.

De hecho, existen técnicas de Machine Learning precisamente enfocadas en la afinación o ajuste de estos hiperparámetros, que buscan encontrar los valores más adecuados de estas variables para generar las mejores predicciones posibles. En un próximo artículo hablaremos precisamente de este ajuste de hiperparámetros.

Si quieres profundizar sobre los temas que acabamos de ver en este post te invito a leer estos artículos relacionados que encontrarás acá en el blog: