En el campo del Machine Learning (ML), se busca aprender de los datos para identificar patrones o aspectos relevantes. Técnicamente, los algoritmos de ML son modelos probabilísticos o heurísticos que permiten encontrar una combinación de variables necesarias para capturar los atributos deseados de los datos. El objetivo es alcanzar la esencia de los datos y descubrir la característica de la cual depende directamente la variable objetivo. Matemáticamente, esta característica se conoce como variable latente. En esta entrada de blog, profundizaremos en el concepto de variable latente, cómo puede ayudar a entrenar mejores modelos y cómo refleja la cognición humana.
La variable latente se define como una variable que no se observa directamente, pero de la cual depende la distribución de probabilidad de los datos o la variable objetivo (Cai, 2012). Esta variable es un vector que puede tener múltiples dimensiones y que pertenece al espacio latente. Por ejemplo, en los modelos de regresión lineal se asume que la variable objetivo sigue una distribución normal cuya media es una combinación lineal de los datos (Figura 1). En este ejemplo, la variable latente es la media ya que esta no se observa directamente. Si se desea estimar la variable objetivo en base a los datos mediante ML, la mejor estimación posible es reconstruir la variable latente (inferencia), ya que es la parte no aleatoria del modelo. Debido a esto, en la práctica no es posible estimar de forma exacta la variable objetivo sin sobre ajustar el modelo (aprenderse los datos de memoria), lo que implica capturar el ruido aleatorio de los datos.
Figura 1: A la izquierda el modelo general de variable latente (Karagiannakos, 2021). A la derecha un ejemplo de variable latente y variable observada.
Al entrenar modelos de ML se busca extraer esta parte no aleatoria de los datos. Es decir, se intenta extraer la información más simple posible que permita generar los datos o la variable objetivo. Como ejemplo, si se cuenta con un set de datos de clientes y se busca predecir cuales no continuarán en la plataforma, se debe encontrar la característica real que produce que los clientes abandonen o se mantengan en la plataforma, probablemente relacionada con su experiencia de usuario. Así, la variable latente, en el concepto amplio, corresponde a la variable “experiencia de usuario”, que se representa con 1 sólo valor del que depende la probabilidad de abandono. De esta forma, al obtener la variable latente se está realizando una reducción de dimensionalidad donde se descarta el ruido, en caso de que el modelo no esté sobreajustado.
Figura 2: Ejemplos de imágenes semánticamente similares.
Pero, ¿de qué forma la variable latente es “la esencia de los datos”? Para entablar la relación propuesta entre ambos conceptos es útil revisar cómo el ser humano procesa formas de datos más complejas como texto o imagen. Los humanos somos capaces de entender, almacenar y hasta cierto punto reconstruir este tipo de datos porque podemos “comprimir” esta información en datos semánticos. Una imagen puede tener millones de pixeles, pero la información esencial para reconstruirla es mucho más simple. Por ejemplo, la imagen de la izquierda de la Figura 2 puede ser representada por el concepto “Perro café feliz en el pasto jugando con una pelota”, que contiene muy poca información comparada con el total de información que puede almacenar esa cantidad de pixeles. La imagen de la derecha, a su vez, puede ser representada por el concepto “Perro blanco feliz revolcándose en el pasto”. Si la variable latente es un vector, entonces sus vectores deberían ser muy similares ya que las imágenes son semánticamente parecidas. Esto, a pesar de que al comparar las imágenes píxel a píxel estas podrían ser muy distintas.
De esta forma, al reconstruir la variable latente de los datos, no sólo se está representando la información esencial necesaria para realizar una predicción, sino que además se está homologando de cierta forma el proceso de comprensión humana y el conocimiento de expertos en el área. Concorde a esto, se ha encontrado evidencia de que la variable latente de modelos generativos de imágenes es un reflejo de la información semántica que procesa el cerebro humano. Concretamente, existe una correlación entre la capacidad de personas de distinguir 2 caras y la distancia entre sus variables latentes obtenidas mediante GANs. Esto es, que mientras más distintas son las variables latentes de 2 caras, más fácil es para el humano distinguirlas (Kasahara et. al., 2022). Así, en el espacio latente, diferentes sectores representan diferentes semánticas, lo cual puede observarse al visualizar el espacio latente (Figura 3 y 4).
Los modelos de Deep Learning como autoencoders y modelos generativos modernos (para más información ver el blog de IA aplicada, capítulo 4) son capaces de extraer esta información esencial de los datos (Maren, 2023). Esto es posible porque este tipo de datos complejos presenta estructura de forma tal que la cantidad de imágenes o texto reales observados son muy inferiores a la cantidad total de posibilidades de texto o imagen. Esto se debe a que los textos presentes en internet no están compuestos por secuencias de palabras aleatorias, y las imágenes no son ruido estático. De ser así, sería imposible para la IA generativa capturar la información esencial de los datos, ya que su información no se podría comprimir. Este tipo de modelos puede “comprender” la estructura de los datos, y esta comprensión se traduce en un vector que pertenece al espacio latente.
El funcionamiento de estos modelos involucra 2 redes neuronales. El encoder toma los datos de input y tiene como salida un vector de dimensión mucho menor que el input, denominado embedding. Un embedding es una representación vectorial de datos de mayor dimensión que posee propiedades similares a la variable latente, con la excepción de que no necesariamente involucra una relación generativa con los datos. El decoder toma el embedding como input y tiene como salida la misma dimensión de los datos. El autoencoder (Michelucci, 2022) está constituido por un encoder y un decoder (Figura 3, superior izquierda), de forma tal que es una red neuronal con una salida y entrada de igual dimensión que se entrena forzando a que la salida sea lo más similar posible a la entrada. Al poseer un cuello de botella de información en la capa de embedding, se fuerza a realizar una compresión de información. El tamaño del embedding se define en la arquitectura del modelo, donde dimensiones más pequeñas comprimen mejor la información, pero podrían no capturar todas las posibilidades.
Sin embargo, en el autoencoder el embedding sigue siendo en esencia una capa oculta de una red neuronal, y por lo tanto presenta baja interpretabilidad. Si bien se cumple que embeddings similares deberían producir outputs similares, el espacio del embedding podría ser irregular, y no se asegura que todas las combinaciones de valores den outputs con sentido. En cambio, en los modelos generativos profundos como el variational autoencoder (en adelante VAE) a la dimensión comprimida se le dan propiedades de variable aleatoria donde el encoder codifica la media y varianza en este espacio (Figura 3, inferior izquierda), transformándolo en un espacio latente efectivo (Doersch, 2016, Viscardi & Hollis, 2019). De esta manera, el espacio latente es regular, muestreable y cumple con propiedades aritméticas de la semántica, de forma tal que características individuales pueden aislarse al restar las variables latentes de datos con diferentes semánticas. Por ejemplo, en un modelo generador de caras, si se le resta la variable latente de un hombre serio a la de un hombre sonriendo, se aísla el vector de la característica “sonrisa”, que al sumarlo a la variable de una mujer seria se obtiene la variable latente de una mujer sonriendo (Radford et. al., 2015). El VAE fue una de las primeras arquitecturas de modelos generativos profundos, seguida de redes más avanzada como las GANs, modelos de difusión y GPT (Feuerriegel et. al., 2024).
Figura 3: Izquierda: arquitectura de autoencoder y variational autoencoder (Huang, n.d.). Derecha: visualización del espacio latente de un modelo VAE entrenado con el dataset de dígitos MNIST (Viscardi & Hollis, 2019).
En la parte derecha de la Figura 3 se puede observar que al usar VAE sobre el dataset de dígitos con un espacio latente de dimensión 2, los dígitos “similares” usan espacios contiguos, y la forma del dígito cambia paulatinamente al moverse en el espacio latente. De esta manera, el “aspecto” del dígito queda codificado en la variable latente, con dígitos más “redondeados” en la esquina superior derecha y dígitos más “agudos” en la esquina inferior izquierda.
Hasta el momento se han revisado formas de obtener la variable latente y sus implicancias semánticas, pero esta también tiene aplicaciones fuera de las arquitecturas de donde proviene. Por ejemplo, si se desea implementar un algoritmo de búsqueda de artículos en base a texto, o de agrupar perfiles similares en base a sus descripciones de texto, es posible realizarlo a través del uso de la variable latente. Utilizando algún modelo generativo preentrenado como GPT se pueden vectorizar las descripciones, artículos o la query y comparar sus vectores mediante distancia euclidiana o similitud coseno (Kumawat, 2023). Como estos vectores son representaciones semánticas, aquellos textos con vectores más similares probablemente poseen significados similares. De esta manera, se está implementando un algoritmo de match sin la necesidad de entrenar un modelo, por lo que esto corresponde a un enfoque no supervisado en el contexto de los datos. Cabe destacar que a esta vectorización también se le denomina embedding, a pesar que ambos conceptos no son totalmente equivalentes.
Sin embargo, se debe tener la precaución que podría darse que no todas las dimensiones del embedding contengan información relevante para el match, ya que algunas podrían estar relacionadas con el estilo, estructura u otros aspectos del texto. Por esto, si se tienen datos de interacción, es recomendable realizar algún entrenamiento simple para afinar la forma en que se obtiene el score entre 2 embeddings. Una opción sencilla es entrenar pesos que le den más o menos relevancia a las distintas dimensiones de este.
Los algoritmos de recomendación buscan determinar, dadas las características y/o patrón de consumo de un usuario, qué nuevo contenido es más probable que consuma para recomendárselo (Casalegno, 2022). Esto se puede lograr con algoritmos de ML y heurísticas de diversos tipos y familias. Algunos de ellos involucran recomendar lo que consumieron otros usuarios similares, según sus atributos. En otros se recomienda contenido similar al ya consumido, también según los atributos del contenido. Otros involucran analizar las interacciones entre usuarios y contenido, que pertenecen a la categoría de filtro colaborativo de la cual también existen numerosos subtipos.
Considerando ahora el enfoque semántico, si se tiene por ejemplo un set de datos de usuarios y canciones, la preferencia musical de una persona probablemente está determinada por características relacionadas al género y/o estilo musical, que podría ser obtenido mediante tags. Sin embargo, el “género” (o, mejor dicho, la característica de la canción de la que depende la preferencia de los usuarios) puede obtenerse también de forma continua con filtro colaborativo mediante embeddings. Esto es, representarla por un vector de forma tal que las canciones con vectores similares tienden a ser elegidas por los mismos usuarios. De esta forma, cada “sector” de este espacio vectorial correspondería a un género o subgénero diferente (Figura 4). Asimismo, las preferencias de los usuarios se codifican con un embedding que puede pertenecer al mismo espacio que los embeddings de contenido.
Figura 4: Representación bidimensional de los embeddings de canciones entrenados en función de un sistema de recomendación (Chen et. al., 2012).
Existen múltiples métodos para obtener estos embeddings en sistemas de recomendación. Primero, es necesario notar que en filtro colaborativo al tener interacciones entre usuarios y contenido los datos pueden ser estructurados como una matriz donde cada usuario representa una fila y cada contenido representa una columna, con la intersección siendo alguna medida de interacción entre ambos. La técnica matrix factorization (Bokde et. al., 2015) permite descomponer esta matriz en 2, una matriz de usuarios por factores y otra de contenido por factores, de forma que al multiplicarse se obtiene la matriz original de interacciones. Cada fila de las matrices descompuestas corresponde al embedding del usuario o contenido, donde mediante producto punto se obtiene la medida de interacción. Así, se proyectan tanto usuarios como contenido al mismo espacio y la interacción entre ellos es función de la similitud entre sus vectores.
Esto también se puede realizar mediante técnicas mixtas que consideran tanto los atributos de usuarios y contenido como las interacciones entre ambos. Este es el caso del filtro colaborativo neural basado en atributos (Chen et. al., 2021). En esta arquitectura, a usuarios y contenido se les asignan embeddings que pertenecen a espacios distintos donde la métrica de interacción se obtiene con una red neuronal que toma como input el vector concatenado de ambos embeddings, permitiendo capturar relaciones no lineales entre los usuarios y contenido.
El blog aborda de forma conceptual y con algunos ejemplos de aplicaciones qué son la variable latente y los embeddings, y de cómo estos pueden representar de forma vectorial y útil la información esencial de los datos necesaria para diferentes tareas. Esta representación vectorial es una compresión de la información de los datos similar a la que realiza el ser humano al entender una tarea, por lo que puede adquirir propiedades semánticas, lo cual se produce en mayor medida en modelos generativos.
Los ejemplos de aplicaciones expuestos en este blog son sólo algunas de las formas en las que se pueden utilizar los embeddings para otras tareas. Si se cuenta con datos no estructurados para los que ya existen modelos generativos preentrenados, se pueden utilizar los embeddings obtenidos con estos modelos como input para entrenar clasificadores, regresores, recomendación, para perfilamiento, visualización, etc. También, como se vio en sistemas de recomendación, el concepto de reducción de dimensionalidad en función de una tarea puede constituir un enfoque más semántico que técnico de enfrentar una tarea, y es posible extender esto a otras tareas. Los embeddings obtenidos mediante algoritmos de recomendación luego pueden a su vez utilizarse en otras tareas, ya que en sí constituyen un perfilamiento del usuario o contenido.
La extensión de lo realizable mediante el entrenamiento de embeddings o el uso de modelos preentrenados para obtener embeddings depende en gran medida de la creatividad usada, siempre que la complejidad del problema lo amerite y los recursos computacionales estén disponibles.