Cómo obtener embeddings

En esta sección, se explican varios métodos para obtener embeddings, además de cómo transformar embeddings estáticos en contextuales.

Técnicas de reducción de dimensiones

Existen muchas técnicas matemáticas que capturan las estructuras importantes de un espacio de dimensionalidad alta en uno de dimensionalidad baja. En teoría, cualquiera de estas técnicas puede usarse para crear un embedding para un sistema de aprendizaje automático.

Por ejemplo, el análisis de componentes principales (ACP) se utiliza para crear embeddings de palabras. Dado un conjunto de instancias, como vectores de bolsa de palabras, el ACP intenta encontrar dimensiones altamente correlacionadas que se puedan contraer en una sola dimensión.

Entrenamiento de embeddings como parte de una red neuronal

Puedes crear un embedding mientras entrenas una red neuronal para tu tarea objetivo. Este enfoque te proporciona un embedding personalizado para tu sistema particular, pero es posible que lleve más tiempo que entrenar el embedding por separado.

En general, puedes crear una capa oculta de tamaño d en tu red neuronal que actúe como capa de embedding, donde d representa tanto la cantidad de nodos en la capa oculta como la cantidad de dimensiones en el espacio de embedding. Esta capa de embedding se puede combinar con otros atributos y capas ocultas. Como en cualquier red neuronal profunda, los parámetros se optimizarán durante el entrenamiento para minimizar la pérdida en los nodos de la capa de salida de la red.

Volviendo a nuestro ejemplo de recomendación de comida, el objetivo es predecir nuevas comidas que podrían gustarle a un usuario en función de sus comidas favoritas actuales. En primer lugar, podemos compilar datos adicionales sobre las cinco comidas favoritas de los usuarios. A continuación, podemos modelar esta tarea como un problema de aprendizaje supervisado. Establecemos cuatro de las cinco comidas favoritas como datos del atributo y, luego, establecemos de manera aleatoria la quinta comida como etiqueta positiva que nuestro modelo espera predecir, optimizando las predicciones con una pérdida softmax.

Durante el entrenamiento, el modelo de red neuronal aprenderá los pesos óptimos para los nodos de la primera capa oculta, que funciona como capa de embedding. Por ejemplo, si el modelo contiene tres nodos en la primera capa oculta, puede determinar que las tres dimensiones más pertinentes de los alimentos son condición de sándwich, condición de postre y condición de líquido. La Figura 12 muestra el valor de entrada de codificación one-hot para "perro caliente" transformado en un vector tridimensional.

Figura 12. Red neuronal para la codificación one-hot de perro caliente. La primera capa es una
    capa de entrada con 5 nodos, cada uno anotado con el ícono de la comida que
    representa (borscht, perro caliente, ensalada, … y shawarma). Estos nodos tienen
    los valores [0, 1, 0, …, 0] que, respectivamente, representan la codificación
one-hot de "perro caliente". La capa de entrada está conectada a una capa de embedding de 3 nodos,
    cuyos nodos tienen los valores 2.98, -0.75 y 0, respectivamente. La
    capa de embedding está conectada a una capa oculta de 5 nodos, que luego
    se conecta a una capa de salida de 5 nodos.
Figura 12. Codificación one-hot de hot dog que se proporciona como entrada para una red neuronal profunda. Una capa de embedding traduce la codificación one-hot en el vector de embedding tridimensional [2.98, -0.75, 0].

Durante el entrenamiento, los pesos de la capa de embedding se optimizarán para que los vectores de embedding de ejemplos similares estén más próximos entre sí. Como se mencionó previamente, las dimensiones que un modelo real elige para sus embeddings tienen pocas probabilidades de ser tan intuitivas o comprensibles como la de este ejemplo.

Embeddings contextuales

Una limitación de los vectores de embedding estáticos word2vec es que las palabras pueden tener diferentes significados según el contexto. "Ya" puede tener un valor temporal, o de afirmación en "Ya, claro." "Mano" puede hacer referencia a la parte del cuerpo, a ayudar a una persona ("echar una mano"), a la persona que juega en primer lugar en un juego o incluso a una dirección o sentido ("por la mano derecha"), entre otras posibilidades.

Sin embargo, con los embeddings estáticos, cada palabra está representada por un punto único en el espacio vectorial, incluso aunque pueda tener una gran variedad de significados. En el último ejercicio, descubriste las limitaciones de los embeddings estáticos para la palabra naranja, que puede hacer referencia a un color o una fruta. Con solo un embedding estático, naranja siempre será más próxima a otros colores que a jugo cuando se entrene con el conjunto de datos word2vec.

Los embeddings contextuales se desarrollaron para resolver esta limitación. Los embeddings contextuales permiten que una palabra se represente con varios embeddings que incorporan información sobre las palabras circundantes, así como sobre la propia palabra. Por lo tanto, naranja tendría un embedding distinto para cada oración única que la contenga en el conjunto de datos.

Algunos métodos de creación de embeddings contextuales, como ELMo, toman el embedding estático de un ejemplo, como el vector word2vec para una palabra en una oración, y lo transforman en una función que incorpora información de las palabras circundantes. De este modo, se obtiene un embedding contextual.

Haz clic aquí para obtener más detalles sobre los embeddings contextuales

  • En el caso específico de los modelos ELMo, el embedding estático se agrega con los embeddings obtenidos de otras capas, que codifican lecturas de adelante hacia atrás y de atrás hacia adelante de la oración.
  • Los modelos BERT enmascaran parte de la secuencia que el modelo toma como entrada.
  • Los modelos Transformer usan una capa de autoatención para medir la relevancia de las demás palabras de una secuencia para cada palabra individual. También agregan la columna pertinente de una matriz de embedding posicional (consulta codificación posicional) para cada embedding de token aprendido previamente, elemento por elemento, para producir el embedding de entrada que se inserta en el resto del modelo como inferencia. Este embedding de entrada, único para cada secuencia textual, es un embedding contextual.

Aunque los modelos descritos anteriormente son modelos de lenguaje, los embeddings contextuales son útiles en otras tareas generativas, como la generación de imágenes. Un embedding de valores RGB de los píxeles de una foto de un caballo brinda más información al modelo cuando se combina con una matriz posicional que representa cada píxel y algo de codificación de los píxeles vecinos (lo que crea embeddings contextuales), que los embeddings estáticos originales de los valores RGB solos.