En este artículo, aprenderá qué son los espacios latentes y cómo cumplen tres funciones distintas (descriptivas, generativas y predictivas) en una amplia gama de aplicaciones de aprendizaje automático.
Los temas que cubriremos incluyen:
Cómo los espacios latentes comprimen datos de alta dimensión en representaciones numéricas estructuradas utilizando técnicas como el Análisis de Componentes Principales. Cómo el papel generativo de los espacios latentes permite la creación de puntos de datos completamente nuevos mediante la interpolación. Cómo el papel predictivo de los espacios latentes impulsa aplicaciones basadas en similitudes, como los sistemas de recomendación y los canales RAG.
Introducción
Piense en un mapa “secreto” multidimensional en el que los modelos de aprendizaje automático atesoran la “esencia” de datos complejos del mundo real. Ese es el propósito principal de los espacios latentes: representaciones de datos numéricos comprimidos que contienen las características abstractas y las relaciones ocultas de los datos originales sin procesar de los que provienen, ya sean píxeles de imágenes sin procesar, audio, texto o simplemente datos estructurados de alta dimensión, como el historial de comportamiento del cliente.
Este artículo analiza, ilustra y clasifica las funciones centrales y el papel de los espacios latentes en los modelos de aprendizaje automático. En particular, distinguimos entre tres roles: descriptivo, generativo y predictivo. Revelemos cómo funcionan los espacios latentes bajo cada uno de estos sombreros a través de algunos ejemplos de código concisos y ejecutables que puede probar fácilmente en un cuaderno de Python.
1. El rol descriptivo: estructurar y representar datos
Normalmente, los datos complejos deben resumirse y estructurarse en una forma más digerible antes de alimentarlos a los modelos de aprendizaje automático posteriores, extrayendo información significativa en características relevantes y descartando las irrelevantes o redundantes. Ese es el propósito del rol descriptivo en espacios latentes: un extractor de características comprime entradas de alta dimensión en rasgos clave, codificándolos numéricamente. Por ejemplo, en un conjunto de datos de imágenes de retratos sin procesar y de alta calidad, factores como la pose del sujeto o la iluminación mantienen a un lado el ruido de fondo mientras se preserva la información semántica central.
Una técnica particular que se usa ampliamente para comprimir datos de alta dimensión en un espacio de menor dimensión (un número menor de características, en términos más simples) es el Análisis de Componentes Principales, o PCA para abreviar. Si bien PCA no extrae características tangibles como iluminación o pose, sigue siendo una técnica muy popular para comprimir drásticamente las características de los datos originales (basándose en proyecciones algebraicas) mientras se minimiza la pérdida de información importante que describe los datos originales; esta información importante subyacente a los datos originales se conoce comúnmente como varianza en el contexto de PCA y las técnicas de reducción de dimensionalidad en su conjunto.
Este ejemplo muestra cómo aplicar PCA para comprimir datos 3D en un espacio latente 2D que mantiene las propiedades y relaciones descriptivas de los datos 3D originales tanto como sea posible:
de sklearn.decomposition importar PCA importar numpy como np # Datos sin procesar de alta dimensión: 3 elementos, 3 características por elemento raw_data = np.array([[1.1, 2.2, 3.3],
[1.0, 2.1, 3.1],
[8.1, 9.2, 9.9]]) # Comprimir en un mapa de espacio latente 2D pca = PCA(n_components=2) latent_space_map = pca.fit_transform(raw_data) print(“Espacio latente descriptivo (datos comprimidos):\n”, latent_space_map)
de aprender.descomposición importar PCA
importar engordado como notario público
# Datos brutos de alta dimensión: 3 elementos, 3 características por elemento
datos_brutos = notario público.formación([[1.1, 2.2, 3.3],
[1.0, 2.1, 3.1],
[8.1, 9.2, 9.9]])
# Comprimir en un mapa de espacio latente 2D
pca = PCA(n_componentes=2)
mapa_espacio_latente = pca.ajuste_transformación(datos_brutos)
imprimir(“Espacio latente descriptivo (datos comprimidos):\n”, mapa_espacio_latente)
Producción:
Espacio latente descriptivo (datos comprimidos):
[[-3.88962445e+00 4.39634517e-02]
[-4.11856576e+00 -4.31334646e-02]
[ 8.00819021e+00 -8.29987064e-04]]
Descriptivo Latente Espacio (Comprimido Datos):
[[–3.88962445e+00 4.39634517e–02]
[–4.11856576e+00 –4.31334646e–02]
[ 8.00819021e+00 –8.29987064e–04]]
El ejemplo es extremadamente simple para ilustrar el concepto, pero en la práctica, puede aplicar PCA para comprimir miles de funciones en, digamos, un par de cientos como máximo.
2. El rol generativo: creación de nuevos datos
La obtención de representaciones de espacio latente a partir de datos también se puede aprovechar como lienzo para crear instancias de datos completamente nuevas. La función generativa consiste en crear nuevos puntos de datos muestreando aleatoriamente valores de características que “tengan sentido” para dichos puntos, o interpolando entre los existentes. El aspecto clave a comprender aquí es: ¿qué valores tienen sentido para cada característica? En otras palabras, ¿cómo se distribuyen los valores en cada característica del espacio latente? Piense en ello, en su forma más simple, como dar un paseo matemático entre dos puntos existentes diferentes y combinar sus respectivos valores de características en infinitas maneras para crear resultados completamente nuevos: nuevos puntos, como imágenes.
Esta es la idea central detrás de los modernos generadores de imágenes de IA, sintetizadores de voz, etc. Estos sistemas se basan en modelos generativos de aprendizaje profundo, como codificadores automáticos, modelos adversarios o incluso transformadores. Si bien estos son modelos notablemente complejos y sofisticados, sus ideas centrales se basan en la interpolación de puntos en un espacio latente, como se muestra en el siguiente código:
# Seleccionando dos puntos distintos en nuestro mapa de espacio latente point_a = latent_space_map[0]punto_b = mapa_espacio_latente[2]# Interpolación: generar un nuevo punto latente a medio camino entre ellos generate_latent_point = 0.5 * point_a + 0.5 * point_b # Decodificar el nuevo punto nuevamente en el espacio de datos sin procesar 3D original generate_raw_data = pca.inverse_transform(generated_latent_point) print(“Punto de datos recién generado:\n”, generate_raw_data)
# Seleccionar dos puntos distintos en nuestro mapa del espacio latente
punto_a = mapa_espacio_latente[0]
punto_b = mapa_espacio_latente[2]
# Interpolación: Generando un nuevo punto latente a medio camino entre ellos
punto_latente_generado = 0,5 * punto_a + 0,5 * punto_b
# Decodificar el nuevo punto nuevamente en el espacio de datos sin procesar 3D original
datos_raw_generados = pca.transformación_inversa(punto_latente_generado)
imprimir(“Punto de datos recién generado:\n”, datos_raw_generados)
Producción:
Punto de datos recién generado:
[4.6 5.7 6.6]
Recién Generado Datos Punto:
[4.6 5.7 6.6]
Lleve este concepto matemático al extremo y obtendrá algo así como una IA que puede modificar el color de ojos de una persona en una imagen proporcionada para hacerlo más oscuro o más brillante, por ejemplo.
3. El papel predictivo: similitud y previsión
¿Cómo adivina la IA detrás de los motores de recomendación qué vídeo quieres ver a continuación? ¿O cómo identifica de manera eficiente y confiable sus rasgos faciales a través de las puertas de inmigración al llegar al aeropuerto de destino después de un vuelo de larga distancia? Los espacios latentes vuelven a entrar en escena. La historia es en parte familiar: datos complejos y de alta dimensión, como el historial de comportamiento del usuario o imágenes de alta resolución, se comprimen en una representación latente para una gestión más eficiente y eficaz, manteniendo al mismo tiempo las características clave. Además de eso, la función predictiva utiliza coordenadas espaciales latentes para calcular similitudes entre puntos de datos, trazar límites de decisión y pronosticar resultados como el siguiente video más probable para ver o la cara más parecida a la que está frente a la cámara de seguridad.
En un sistema de recomendación de videos, por ejemplo, los videos agrupados uno cerca del otro comparten características clave, lo que facilita clasificarlos, segregarlos en categorías o generar recomendaciones precisas y relevantes.
Este código de ejemplo muestra cómo utilizar la similitud del coseno para predecir el punto de datos más estrechamente relacionado con una nueva entrada del usuario:
from sklearn.metrics.pairwise import cosine_similarity # Un elemento nuevo y desconocido asignado al espacio latente new_item_latent = np.array([[0.0, 1.0]]) # Medir la similitud entre el nuevo elemento y nuestro mapa latente existente similarity_scores = cosine_similarity(new_item_latent, latent_space_map) # Una puntuación más alta equivale a una relación geométrica más cercana en el espacio latente print(“Puntuaciones predictivas de similitud:\n”, similitud_scores)
de aprender.métrica.por pares importar coseno_semejanza
# Un elemento nuevo y desconocido asignado al espacio latente
nuevo_elemento_latente = notario público.formación([[0.0, 1.0]])
# Medir la similitud entre el nuevo elemento y nuestro mapa latente existente
puntuaciones_de_similitud = coseno_similitud(nuevo_elemento_latente, mapa_espacio_latente)
# Una puntuación más alta equivale a una relación geométrica más cercana en el espacio latente
imprimir(“Puntuaciones de similitud predictivas:\n”, puntuaciones_de_similitud)
Producción:
Puntuaciones de similitud predictivas:
[[ 0.01130203 -0.01047236 -0.00010364]]
Profético Semejanza Montones:
[[ 0.01130203 –0.01047236 –0.00010364]]
Este principio predictivo y basado en similitudes también se aprovecha en aplicaciones modernas basadas en LLM, como los sistemas RAG, en las que una consulta de usuario se traduce en una representación numérica latente llamada incrustación, y su similitud con las incrustaciones de documentos existentes en una gran base de datos se calcula para recuperar los textos semánticamente más relevantes para la consulta original.
Concluyendo
Ya sea que su objetivo sea describir las características principales de un conjunto de datos, generar arte novedoso o predecir el próximo video favorito para ver, los espacios latentes son un concepto valioso y fundamental en todo el panorama del aprendizaje automático. Mapear datos confusos del mundo real en representaciones numéricas estructuradas es la receta maestra para comprimir, construir y conectar ideas en una amplia variedad de aplicaciones.