Descripción general: extrae y entrega las incorporaciones de atributos para el aprendizaje automático

Este artículo forma parte de una serie en que se explora el proceso de extracción y entrega de incorporaciones de atributos para el aprendizaje automático (AA). En este artículo, se describe el concepto de las incorporaciones de atributos y su importancia. También se analizan los dominios y casos de uso para los que son relevantes las incorporaciones de atributos, con un enfoque en la similitud semántica de las imágenes y el texto. Además, el artículo aborda arquitecturas y tecnologías como TensorFlow Hub (tf.Hub) que pueden permitir la extracción y entrega de incorporaciones de atributos en Google Cloud a gran escala.

En el segundo artículo de esta serie (Analiza la similitud semántica de texto con TensorFlow Hub y Dataflow), se describe cómo generar similitud semántica de documentos mediante incorporaciones de texto.

Introducción

El objetivo del AA es extraer patrones de los datos y usarlos para realizar predicciones. Estos patrones predictivos representan las relaciones entre las características de datos de entrada y el objetivo de salida que se predecirá. En general, se espera que las instancias con valores de atributos similares predigan resultados similares. Por lo tanto, la representación de estos atributos de entrada afecta de manera directa a la naturaleza y la calidad de los patrones aprendidos.

Por ejemplo, supón que quieres compilar un estimador de precios para alquileres de viviendas basado en datos de anuncios de viviendas. Necesitas representar cada vivienda con un vector de atributos de valores reales (numéricos), en el que cada elemento de ese vector represente el valor de una característica de la vivienda. Algunas características útiles en este caso incluyen datos como el tamaño de la propiedad, la antigüedad, el número de habitaciones, la ubicación y la orientación (la dirección hacia donde mira la vivienda). Las viviendas con características similares deberían tener precios similares.

Los valores asignados a las características en el ejemplo de fijación de precios de viviendas ya son numéricos o se pueden convertir en atributos numéricos a través de la codificación one-hot. Sin embargo, la representación de características en otros casos es más complicada. Considera los siguientes casos:

  • Identificar el tema de un artículo, a partir de su título o contenido
  • Buscar revistas similares basadas en una portada de revista específica
  • Comprender la opinión del cliente respecto a un producto, de acuerdo con una revisión basada en texto
  • Generar una lista de canciones nuevas para usuarios, de acuerdo con las que escucharon la última semana
  • Sugerir artículos de moda similares o algunas obras de arte, de acuerdo con los que el usuario ve en la actualidad.
  • Recuperar la respuesta más relevante de una lista de Preguntas frecuentes, de acuerdo con una consulta en lenguaje natural

Como puedes ver, en estos ejemplos, los datos de entrada no están estructurados ni incluyen características que poseen contenido no estructurado. Estos tipos de características incluyen texto como títulos y contenido de artículos o, quizás, opiniones sobre productos de clientes, imágenes como portadas de revistas, artículos de moda y obras de arte y audio, como canciones. Para usar este tipo de datos en tareas de AA, necesitas representaciones de vector de atributos de valores reales compactas de este tipo de datos. Estos vectores se llaman incorporaciones.

¿Qué es una incorporación?

Una incorporación es una traducción de un vector de alta dimensión en un espacio de baja dimensión. En una situación ideal, una incorporación captura parte de la semántica de la entrada mediante la colocación de entradas con similitudes semánticas más cerca entre sí en el espacio de incorporaciones.

Incorporaciones de texto

Considera el ejemplo de la representación de texto. Puedes representar las palabras de una oración en inglés, como el título de un artículo, en cualquiera de las siguientes formas:

  • Como un vector disperso muy grande (alta dimensión) en el que cada celda representa una palabra en inglés diferente, quizás con un millón de elementos para representar un millón de palabras discretas. El valor de una celda representa la cantidad de apariciones de una palabra en una oración. Debido a que es improbable que una sola oración en inglés tenga más de 50 palabras, casi todas las celdas del vector contendrán un 0.

  • Como un vector pequeño en comparación, pero denso (quizás solo cientos de elementos). Cada elemento representa una característica diferente de la palabra y cada una contiene un valor entre 0 y 1 que indica la extensión en la que la palabra representa esa característica. De hecho, la palabra está codificada de manera semántica mediante la misma cantidad de atributos que tiene el vector. Este vector es una incorporación que trata de capturar la semántica del título del artículo.

La incorporación de un título en particular está cerca en el espacio del vector de incorporación a la incorporación de un título similar, incluso si las palabras de los títulos son diferentes. Por ejemplo, “The squad is ready to win the football match” (“Los jugadores están listos para ganar el partido de fútbol”) y “The team is prepared to achieve victory in the soccer game” (“El equipo está preparado para lograr la victoria en el juego de balompié”) tienen el mismo significado, pero casi ningunas de las palabras son las mismas. En esta representación de incorporaciones, deben estar cerca uno de otro en el espacio de incorporaciones debido a que su codificación semántica es muy similar.

Varios modelos, incluidos los modelos de lenguaje de redes neuronales (NNLM), los vectores globales para la representación de palabras (GloVe), las representaciones de palabras contextualizadas de manera profunda (ELMo), y Word2vec, están diseñados con el fin de aprender las incorporaciones de palabras, que son vectores de atributos con valores reales para cada palabra.

Por ejemplo, entrenar un modelo Word2vec mediante un corpus grande de texto, como el corpus de Wikipedia en inglés, produce incorporaciones que capturan direcciones y distancias significativas entre palabras con relaciones semánticas, como masculino-femenino, tiempos verbales y hasta relaciones de capitales y países. En la Figura 1, se ilustra el espacio de incorporaciones para algunos vectores de ejemplo (para obtener más información, consulta el artículo Regularidades lingüísticas en representaciones de palabras en espacio continuo).

Relaciones semánticas entre palabras
Figura 1. Relaciones semánticas entre palabras

El codificador de oraciones universal codifica texto mayor que una sola palabra en un vector de atributos de valores reales, como oraciones, frases o párrafos cortos. Las oraciones con semántica similar se codifican como vectores de distancia corta en el espacio de incorporaciones.

Incorporaciones de imagen

A diferencia de los sistemas de texto, los sistemas de procesamiento de imágenes funcionan con conjuntos de datos ricos y de alta dimensión que tienen intensidades individuales de píxel sin formato. Sin embargo, una imagen en su forma densa sin formato no es útil para algunas tareas. Por ejemplo, considera la tarea de buscar revistas similares de acuerdo con sus portadas o buscar fotos similares a una fotografía de referencia. No es eficiente ni efectivo comparar los píxeles sin formato de la imagen de entrada (2,048 ✕ 2,048) con otra imagen para buscar similitudes. Sin embargo, la extracción de vectores de atributos de baja dimensión (incorporaciones) para la imagen proporciona alguna indicación de lo que incluye la imagen y puede facilitar una comparación mejor.

La idea es entrenar un modelo de clasificación de imagen, como Inception, el Aprendizaje residual profundo (ResNet), o la Búsqueda de arquitectura de red (NASNet), en un conjunto de datos de imagen grande (por ejemplo, ImageNet). Luego, se usa el modelo sin la última parte del clasificador softmax para extraer un vector de atributos en particular en una prueba de entrada. Este tipo de vector de atributos puede representar de manera efectiva la imagen en una búsqueda o en tareas de coincidencia de similitud. Los vectores de atributos pueden funcionar como un atributo de entrada adicional (vector) junto con otros atributos para una tarea del AA. Por ejemplo, en un sistema que recomienda artículos de moda a alguien que está comprando indumentaria, puedes tener atributos que describan artículos individuales, que incluyen color, tamaño, precio, tipo y subtipo. Todos estos atributos se pueden usar en tu modelo de recomendación, junto con las características extraídas de las imágenes de artículos de moda.

El experimento t-SNE Map ilustrado en la Figura 2 es uno de los ejemplos que usa las incorporaciones para buscar obras de arte similares. Estas imágenes se extrajeron del contenido de algunas de las colecciones de Google Arts & Culture.

Imágenes asignadas por similitud mediante t-SNE, basado en el AA de Google
Figura 2. Imágenes asignadas por similitud mediante t-SNE, basado en el AA de Google

De manera similar, para los datos de audio, los vectores de atributos de baja dimensión se pueden extraer de coeficientes de densidad espectral de potencia de alta dimensión. Los vectores de atributos se pueden usar de manera efectiva en varias tareas, apps de recomendaciones y otras aplicaciones basadas en AA.

Incorporaciones y filtrado colaborativo

La incorporación partió de la tarea del filtrado colaborativo (CF). El CF es una técnica que usan los sistemas de recomendación, en la que la tarea es realizar predicciones sobre los intereses de un usuario según los intereses de muchos otros. Como ejemplo, imagina la tarea de recomendar películas. Supón que tienes 1,000,000 de usuarios, un catálogo de 500,000 películas y registros de qué películas miró cada usuario. Para cumplir con el fin de este ejemplo, no tienes (ni usarás) otra información sobre las películas y los usuarios, solo el ID del usuario, el ID de la película y una marca watched. En conjunto, con esta información se crea un conjunto de datos muy disperso.

Supón que quieres determinar qué películas son similares entre sí según el historial de reproducciones de los usuarios. Puedes hacerlo si incorporas las películas en un espacio de baja dimensión en el que las películas que miró cierto usuario están cerca en el espacio “preferencia de película” (incorporaciones). También puedes crear incorporaciones para usuarios en el mismo espacio basadas en las películas que miraron. En el espacio resultante, las incorporaciones de usuario están cerca de las incorporaciones de las películas que miraron. Este método te permite recomendar otras películas basadas en la proximidad de esas películas a una incorporación de usuario debido a que los usuarios y las películas cercanos comparten preferencias.

Las incorporaciones como las anteriores para usuarios y películas se pueden aprender con técnicas como la factorización de matrices, la descomposición de valor único, el filtrado colaborativo neuronal y las máquinas de factorización neural. En la Figura 3, se muestra un ejemplo de incorporación de película en un espacio bidimensional. En la primera dimensión, se describe si la película es para niños (valores negativos) o adultos (valores positivos), mientras que la segunda dimensión representa el grado en el que cada película puede ser un éxito de taquilla (valores positivos) o una película de cine de autor (valores negativos) (en esta discusión, la asignación de valores positivos y negativos es arbitraria y se usa solo para determinar coordenadas). En este ejemplo, las películas como “Los increíbles” y “Shrek” están cerca en el espacio de incorporaciones debido a que ambas se consideran películas para niños y a que ambas son películas con éxito de taquilla.

El algoritmo del AA aprende estos valores de dimensión para cada película sin saber que son factores relevantes a la hora de comparar las de adultos con las de niños o al éxito de taquilla con el cine de autor. Para obtener más información sobre cómo se compila un sistema como este, consulta Compila un sistema de recomendación con TensorFlow.

Un ejemplo de incorporación de películas en un espacio bidimensional
Figura 3. Un ejemplo de incorporación de películas en un espacio bidimensional

Otros tipos de incorporaciones

El aprendizaje basado en incorporaciones también se puede usar para representar estructuras de datos complejas, como un nodo en un grafo o una estructura de grafo completa con respecto a la conectividad del grafo. Esto es útil para dominios de vinculación intensiva, como el diseño de medicamentos, la recomendación de amistad en redes sociales y la detección de interacción entre proteínas. Las técnicas para estos tipos de tareas incluyen redes neuronales convolucionales de grafos y finalización de matriz gráfica.

Otra aplicación de incorporación es el aprendizaje multimodal, en el que el objetivo es traducir la información de una modalidad a otra. Por ejemplo, en el subtitulado de imágenes automático (ilustrado en la figura 4), los subtítulos se pueden generar de manera automática para una imagen (como se muestra en la imagen, la traducción puede no ser perfecta; por ejemplo, uno de los subtítulos se generó como “ensalada de frutas” en vez de “ensalada de trufas”). Además, los usuarios pueden buscar imágenes que coincidan con la descripción en lenguaje natural. También pueden crear música para un video en particular. Para habilitar este tipo de coincidencia, puedes codificar estas entidades multimodales en el mismo espacio de incorporaciones.

Un flujo de proceso que muestra subtitulado de imágenes automáticos.
Figura 4. Subtitulado de imágenes automático: genera un subtítulo desde las incorporaciones de un modelo de Vision

La idea del aprendizaje basado en incorporaciones para representar a las entidades de dominio de un contexto dado (por ejemplo, mediante Word2vec desde palabras) se puede aplicar en otros dominios para que esas entidades con contexto similar tengan incorporaciones similares. Esto puede incluir la creación de incorporaciones desde documentos (Doc2vec), datos de cliente (Customer2vec), archivos de video (Movie2vec), grafos (Graph2vec), asignaciones genéticas (Gene2vec), estructuras de proteínas (Protein2vec), y otros.

En resumen, las incorporaciones se pueden extraer para representar lo que se indica a continuación:

  • Datos no estructurados, como texto (palabras, oraciones y documentos enteros), imágenes, audio, etcétera
  • Entidades que no tienen atributos de entrada, solo contexto de interacción, como un ID de usuario y la lista de películas vistas por el usuario.
  • Datos de estructura compleja, como grafos y redes. Los ejemplos incluyen redes sociales y compuestos bioquímicos.
  • Traducción multimodal, como subtitulado de imágenes y búsqueda de imágenes mediante una descripción de texto.
  • Características dispersas (a través de su conversión en característica densas), como la ubicación y ocupación.
  • Entidades con dimensión alta (a través de su conversión en una representación más compacta), como registros de clientes con 300 o más atributos de comportamiento financiero, social y demográfico

Casos de uso para incorporaciones

La representación de entidades como los artículos de moda, películas, propiedades para vacacionar y artículos de noticias como vectores de atributos compactos de valor real (incorporaciones) que codifican rasgos de clave habilita un conjunto de situaciones de uso interesantes. En esta sección, se analizan algunos casos prácticos para estas incorporaciones de entidades.

Análisis de similitud

Después de codificar tus entidades en vectores de atributos de valor real en baja dimensión, puedes obtener estadísticas y visualización exploratorias para descubrir información y patrones interesantes. Esto puede incluir lo siguiente:

  • Buscar los elementos más cercanos a uno en particular Por ejemplo, como se mencionó antes, si tienes un repositorio de artículos de noticias o trabajos de investigación, puedes buscar documentos que sean más parecidos a uno en particular. Esta técnica también te permite etiquetar el elemento con los temas de sus elementos adyacentes.
  • Identificar grupos de elementos similares en el espacio de incorporaciones, como productos de prueba, películas o listas de propiedades. Luego, puedes estudiar las características comunes de los clientes de cada grupo para ajustar la campaña de marketing.
  • Buscar la densidad de los elementos en el entorno de un elemento particular. Esto te ayuda a identificar temas de actualidad o del momento, tipos de artículos de moda, géneros musicales y más.
  • Identificar elementos de intergrupos o de límites y elementos con valores atípicos o excepcionales. Esto puede ser útil para la detección de fraudes.

Búsqueda y recuperación

La búsqueda de elementos similares o relevantes es una de las situaciones más importantes y usadas para las incorporaciones. Esta aplicación se puede implementar en dos variantes diferentes: reactiva y proactiva.

En la recuperación reactiva, el usuario proporciona un elemento que se debe buscar y se recuperan los que son similares a él desde tus almacenes de datos. Por ejemplo, puedes buscar fotos de mascotas que sean similares a la foto de la mascota del usuario o puedes buscar artículos de investigación similares a un artículo que proporcione el usuario. En este caso, tu sistema extrae las incorporaciones del elemento del usuario en línea. Luego, el sistema recupera los elementos de tu almacén de datos cuyas incorporaciones son las más parecidas a las incorporaciones de entrada, basadas en una métrica de proximidad.

En la recuperación proactiva, tu sistema identifica de manera automática el contexto y lo convierte en una búsqueda para recuperar los elementos más parecidos entre sí. Por ejemplo, puedes tener una biblioteca de videos documentales y una aplicación que permite a los usuarios buscar y subir videos. Cuando el usuario accede, el contexto allí es solo el ID del usuario (quizás con otros atributos opcionales, como fecha, hora y ubicación). Esta información se usa como una búsqueda a fin de recuperar los videos más relevantes para ese usuario, basados en la similitud entre las incorporaciones del usuario y las del video.

En las recuperaciones reactivas y proactivas, el sistema debe ser capaz de convertir la consulta explícita o implícita en una incorporación, comparar esa incorporación con la incorporación de los elementos almacenados y recuperar los más parecidos.

Los ejemplos adicionales de cómo las incorporaciones se pueden usar para buscar y recuperar incluyen los siguientes:

  • Recuperar los artículos de noticias más relevantes para una búsqueda dada
  • Recuperar las imágenes que son más similares a la imagen que proporciona el usuario
  • Buscar la pista de música más similar a la proporciona el usuario
  • Buscar una lista de los juegos o apps más relevantes, de acuerdo con una que el usuario acaba de instalar
  • Recuperar la respuesta más relevante de una lista de Preguntas frecuentes, de acuerdo con una consulta de lenguaje natural
  • Descubrir películas o canciones interesantes y nuevas para un usuario dado

Aprendizaje automático por transferencia

Varios casos prácticos incluyen la codificación dispersa y datos no estructurados, complejos o de alta dimensión en incorporaciones para entrenar modelos del AA.

El uso de incorporaciones previamente entrenadas para codificar texto, imágenes o algún otro tipo de datos de entrada en vectores de atributos se conoce como aprendizaje por transferencia En esencia, el aprendizaje por transferencia transfiere información de una tarea del AA a otra. Un caso práctico típico es usar un modelo entrenado con cantidades grandes de datos para una tarea en la que tienes menos datos. Por ejemplo, puedes usar incorporaciones de texto previamente entrenadas que se entrenaron en un corpus de texto grande de cientos de millones de palabras y oraciones a fin de entrenar un modelo de clasificación de opinión en el que tienes solo 10,000 opiniones de clientes sobre un producto.

Con el aprendizaje por transferencia, se vuelve a usar la información (incorporaciones) extraída de grandes cantidades de datos y, también, se ahorran miles de horas de procesamiento de GPU y CPU que serían necesarias para entrenar esas incorporaciones.

Puedes usar las incorporaciones de atributos junto con otras funciones para entrenar tus modelos de AA. Un ejemplo de caso de uso que mencionamos antes es realizar una estimación del precio de alquiler de una propiedad para vacacionar, de acuerdo con lo siguiente:

  • Las características básicas de la propiedad, como el tamaño, la cantidad de habitaciones, la orientación (por ejemplo, si tiene orientación hacia la playa), la ubicación, los precios promedio en el área, las fechas de alquiler, la temporada, etcétera
  • Las características incorporadas, como las descripciones de lenguaje natural y las imágenes de la propiedad

Las incorporaciones se pueden incorporar en el modelo de dos maneras. La primera es mediante la extracción de las incorporaciones y su uso como vectores de atributos de entrada. Se concatenan las características de entrada básicas en las incorporaciones previamente entrenadas (que extrajiste antes en un paso de preprocesamiento sin conexión) para crear un vector de atributos de entrada. El punto clave es que estas incorporaciones no se pueden entrenar; no son parte del entrenamiento de este modelo, por lo que se las trata como entradas. Este método se ilustra en la figura 5.

Usa incorporaciones previamente entrenadas como entrada
Figura 5. Usa incorporaciones previamente entrenadas como entrada

De manera alternativa, puedes incluir las incorporaciones como una capa entrenable en el modelo. En este método, se incluyen capas de incorporaciones previamente entrenadas para las modalidades respectivas en tu arquitectura modelo. Esto te permite ajustar el peso de las incorporaciones durante el proceso de entrenamiento para la tarea del modelo. Como se muestra en la figura 6, las características de imagen y texto se integran en el modelo es su forma original, sin incorporarse. Antes de unirse a los atributos de entrada básicos para crear un vector de atributos de entrada en la arquitectura interna del modelo, las incorporaciones previamente entrenadas se conectan como capas entrenables.

Usa incorporaciones previamente entrenadas como capas entrenables
Figura 6. Usa incorporaciones previamente entrenadas como capas entrenables

El segundo método te permite ajustar las incorporaciones de acuerdo con la tarea modelo para generar modelos más efectivos. Sin embargo, el tamaño del modelo suele ser mucho más grande que en el primer método, ya que contiene los pesos de las incorporaciones.

Módulos de incorporaciones en TensorFlow Hub

TensorFlow Hub(tf.Hub) es una biblioteca de módulos de AA reutilizables. Estos módulos pueden ser modelos previamente entrenados o incorporaciones extraídas de textos, imágenes, etcétera.

En detalle, un módulo es una pieza autónoma de un grafo de TensorFlow, junto con sus pesos y recursos, que se puede volver a usar en tareas diferentes. Si vuelves a usar un módulo, puedes entrenar un modelo mediante un conjunto de datos más pequeño, mejorar la generalización o solo acelerar el entrenamiento. Cada módulo tiene una interfaz que permite usarlo de una manera reemplazable con poco o ningún conocimiento de sus internos. Los módulos se pueden aplicar como una función normal de Python para compilar parte del grafo de TensorFlow, o usarse como una columna de atributos en tu Estimador de TensorFlow.

El fragmento de código siguiente muestra cómo usar el módulo del codificador de oraciones universal (versión 2) como una función que obtenga las incorporaciones de un texto de entrada dado. Puedes usar este código si procesas texto con anterioridad en incorporaciones para análisis de similitud o búsqueda y recuperación, o antes de entrenar un modelo del AA (como se muestra antes en la figura 5).

embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
review_embeddings = embed(["The movie was super interesting!])

En el fragmento de código siguiente, se muestra cómo usar el módulo del codificador de oraciones universal (versión 2) como una text_embedding_column para codificar un atributo de entrada (revisión) y usarlo en el estimador de DNNClassifier. Puedes usar este código para que las incorporaciones sean una capa entrenable de tu modelo de AA (como se muestra en la figura 6).

review_column = hub.text_embedding_column("review",
                "https://tfhub.dev/google/universal-sentence-encoder/2", trainable=True)
estimator = tf.estimator.DNNClassifier(hidden_units, feature_columns=[review_column])

Como puedes ver, la URL del módulo especifica el publicador, el nombre del módulo y la versión. Una vez que los módulos se descargan en el disco, se vuelven independientes y pueden usarlos los desarrolladores que no tienen acceso al código ni a los datos que se usaron para crear y entrenar el módulo. Además, si estableces el parámetro entrenable en True, el peso de las incorporaciones se ajusta a medida que entrenas el modelo.

En la figura 7, se muestra una lista de incorporaciones de texto y módulos de vector de atributos de imagen disponibles en tf.Hub. Google desarrolla, entrena y publica estos módulos.

Incorporación de texto y módulos de vector de atributos de imagen en tf.Hub
Figura 7. Incorporación de texto y módulos vectoriales de atributos de imagen en tf.Hub

Arquitecturas de alto nivel

En esta sección, se ilustran arquitecturas para habilitar de manera eficiente la extracción de incorporaciones a fin de implementar la coincidencia de similitud y usar el AA a gran escala en Google Cloud.

Extrae las incorporaciones de los documentos o imágenes

Si tienes documentos de texto o un conjunto de datos de imágenes y quieres realizar un análisis de similitud o compilar un sistema de búsqueda y recuperación en tiempo real, debes convertir los elementos no estructurados (documentos o imágenes) en vectores de atributos con valores reales. Puedes hacerlo mediante módulos tf.Hub previamente entrenados. El módulo tf.Hub no se usa como una parte entrenable de un modelo de AA. En su lugar, se usa como proceso de carga, transformación y extracción (ETL) para convertir datos de entrada (texto o imagen) en un vector de atributos de salida (incorporaciones).

Si tienes un conjunto de datos de entrada grande (un corpus de millones de imágenes o documentos), necesitas extraer esas incorporaciones a gran escala. Para hacerlo, puedes usar Dataflow, que es un servicio completamente administrado, sin servidores y confiable para las canalizaciones de procesamiento de datos a gran escala en Google Cloud. Debes implementar la canalización con Apache Beam, un modelo de programación unificada de código abierto que ejecuta trabajos de procesamiento de datos por lotes y de transmisión. Para obtener un ejemplo más detallado, consulta Analiza la similitud semántica de texto con TensorFlow Hub y Dataflow.

En la figura 8, se muestra cómo se usa Apache Beam para implementar una canalización en ETL a fin de extraer incorporaciones.

Arquitectura de alto nivel para la extracción de incorporaciones a gran escala
Figura 8. Arquitectura de alto nivel para la extracción de incorporaciones a gran escala

En la figura, se muestra el siguiente flujo:

  1. Lee los datos sin procesar de Cloud Storage.
  2. Procesa cada elemento mediante una llamada a un módulo tf.Hub, que muestra el vector de atributos que representa el elemento. Por ejemplo, si procesas artículos de noticias, puedes usar el codificador de oraciones universal para convertir el título en un vector de atributos de valor real.
  3. Escribe los datos codificados en Cloud Storage.

Los datos se pueden escribir como un archivo .tfrecords si planeas usar las incorporaciones para entrenar un modelo del AA de TensorFlow, como se describió antes en el primer método en Aprendizaje por transferencia. Además, puedes usar las incorporaciones extraídas en BigQuery para realizar un análisis de similitud exploratorio.

Haz coincidir y recupera incorporaciones similares

Si construyes una app de búsqueda de imágenes que acepta una imagen proporcionada por el usuario y recupera imágenes similares en tu repositorio, debes realizar ciertas tareas que se llevan a cabo en partes diferentes de tu arquitectura general, como las siguientes opciones:

  1. Aceptar la imagen proporcionada por el usuario con una app de frontend
  2. Convertir la imagen de entrada en un vector de atributos con una app de backend mediante un módulo de imagen tf.Hub (por ejemplo, con inception_v3/feature_vector).
  3. Haz coincidir y recupera el vector de atributos extraído de las imágenes de entrada en las incorporaciones de imagen de tu base de datos. Esto también se realiza en la app de backend.

Lo difícil es organizar y almacenar los vectores de atributos, de manera que se minimice el tiempo de coincidencia y de recuperación. No necesitas comparar el vector de atributos de consulta de entrada con cada vector de tu repositorio para buscar los más similares. En las aplicaciones en que la recuperación y la clasificación de las mejores coincidencias deben ser rápidas, los vectores de atributos se deben organizar mediante algún tipo de mecanismo de indexación para reducir la cantidad de comparaciones. Las técnicas aproximadas de vecino más cercano, como el hashing sensible a la localidad, árboles kd, árboles panorámicos y agrupamiento en clústeres jerárquico pueden ayudar a mejorar el rendimiento de búsqueda.

El índice de vectores de atributos se conserva en la memoria, mientras que el contenido real (las referencias) se conservan como un almacén de clave-valor en el que la clave es un hash del vector de atributos y el valor es la URL de Cloud Storage de un documento o imagen. Esto proporciona una recuperación de latencia baja. El flujo de este método se muestra en la figura 9.

Arquitectura de alto nivel para almacenar y entregar incorporaciones
Figura 9. Arquitectura de alto nivel para almacenar y entregar incorporaciones

Entrena y entrega modelos de AA

Como se analizó en la sección situaciones de uso de incorporaciones, las incorporaciones previamente entrenadas pueden ser útiles para entrenar modelos de AA y mejorar su generalización, en particular, si tienes conjuntos de datos de entrenamiento pequeños o si quieres acelerar el entrenamiento de conjuntos de datos grandes. Los módulos tf.Hub se entrenaron en conjuntos de datos grandes que consumen miles de horas de GPU. Además, puedes tener el módulo tf.Hub como parte de tu modelo para que sus pesos se entrenen si es necesario.

Para administrar un modelo que incluya módulos tf.Hub a gran escala, puedes usar AI Platform. AI Platform es una plataforma sin servidores que puede entrenar, ajustar (mediante la función de ajuste de hiperparámetros) y entregar modelos de TensorFlow a gran escala con una administración mínima requerida por DevOps. AI Platform admite la implementación de modelos entrenados como las API de REST para predicciones en línea, así como el envío de trabajos de predicción por lotes. El proceso se muestra en la figura 10.

Arquitectura de alto nivel para entrenar y entregar modelos de TensorFlow
Figura 10. Arquitectura de alto nivel para entrenar y entregar modelos de TensorFlow

¿Qué sigue?