Un embedding es una representación vectorial de datos en un espacio de embedding. En general, un modelo encuentra posibles embeddings proyectando el espacio de alta dimensión vectorial de datos iniciales en un espacio de menor dimensión. Para ver un análisis de los datos de alta dimensión comparados con los de baja dimensión, consulta el módulo Datos categóricos.
Los embeddings facilitan el aprendizaje automático con vectores de atributos grandes, como los vectores dispersos que representan los ingredientes de las comidas que se analizaron en la sección anterior. A veces, las posiciones relativas de los elementos en el espacio de embedding tienen una posible relación semántica, pero a menudo el proceso de encontrar un espacio de menor dimensión, y las posiciones relativas en ese espacio, no es interpretable para los humanos, y los embeddings resultantes son difíciles de entender.
Aun así, en aras de la comprensión humana, para dar una idea de cómo los vectores de embedding representan información, ten en cuenta la siguiente representación de unidimensional de los platos perro caliente, pizza, ensalada, shawarma y borscht, en una escala de "lo menos parecido a un sándwich" a "lo más parecido a un sándwich". La única dimensión es una medida imaginaria de "sandwicheidad".

En esta línea, ¿dónde quedaría un strudel de manzana? Es discutible, pero podría colocarse entre hot dog
y shawarma
. Sin embargo, el strudel de manzana también parece tener una dimensión adicional de dulzor o postreidad que lo diferencia mucho de las otras opciones.
La siguiente figura muestra este caso agregando una dimensión de "postreidad":

Un embedding representa cada elemento en un espacio de n dimensiones con n números de puntos flotantes (en general, entre –1 y 1, o 0 y 1). El embedding de la figura 3 representa cada comida en un espacio de una dimensión con una única coordenada, mientras que la figura 4 representa cada comida en un espacio de dos dimensiones con dos coordenadas. En la figura 4, "strudel de manzana" está en el cuadrante superior derecho del gráfico y se podría asignar al punto (0.5, 0.3), mientras que "perro caliente" está en el cuadrante inferior derecho del gráfico y se podría asignar al punto (0.2, –0.5).
En un embedding, la distancia entre dos elementos cualquiera se puede calcular matemáticamente y se puede interpretar como una medida de similitud relativa entre esos dos elementos. Dos elementos que están cerca entre ellos, como shawarma
y hot dog
en la figura 4, están más relacionados en la representación del modelo de datos que dos elementos más distantes entre ellos, como apple strudel
y borscht
.
Ten en cuenta también que, en el espacio de 2 dimensiones de la figura 4, apple strudel
está mucho más lejos de shawarma
y hot dog
de lo que estaría en el espacio de 1 dimensión, lo cual concuerda con la intuición: apple strudel
no es tan similar a un perro caliente ni a un shawarma como los perros calientes y los shawarmas lo son entre sí.
Ahora considera el borscht, que es mucho más líquido que los otros elementos. Esto sugiere una tercera dimensión, liquiditud o qué tan líquido puede ser una comida. Al agregar esa dimensión, los elementos podrían visualizarse en 3 dimensiones de la siguiente forma:

En este espacio de 3 dimensiones, ¿dónde iría el tangyuan? Tiene consistencia de sopa, como el borscht, y es dulce como un postre, como el strudel de manzana, pero definitivamente no es un sándwich. Esta es una posible posición:

Observa cuánta información se expresa en estas tres dimensiones. Podrías imaginar agregar dimensiones adicionales, como cuánto horneado o cuánta carne podría tener una comida, aunque los espacios de 4, 5 o más dimensiones son difíciles de visualizar.
Espacios de embedding reales
En el mundo real, los espacios de embedding tienen d dimensiones, en donde d es mucho más que 3, aunque menos que la dimensionalidad de los datos, y las relaciones entre los datos no son necesariamente tan intuitivas como en la ilustración artificial de arriba (en el caso de embeddings de palabras, d suele ser 256, 512 o 10241).
En la práctica, el profesional de AA suele configurar la tarea específica y la cantidad de dimensiones de embedding. Posteriormente, el modelo intenta organizar los ejemplos de entrenamiento para que estén cerca en un espacio de embedding con una cantidad especificada de dimensiones, o ajustes para la cantidad de dimensiones, si d no es fijo. Las dimensiones individuales casi nunca son entendibles como "postreidad" o "liquiditud". En ocasiones, lo que "significan" se puede inferir, pero no siempre sucede.
Los embeddings, en general, serán específicos de la tarea y diferirán entre ellas cuando difiera la tarea. Por ejemplo, los embeddings generados por un modelo de clasificación vegetariano en comparación con uno no vegetariano serán diferentes a los embeddings generados por un modelo que sugiera platos basados en el momento del día o la estación del año. Por ejemplo, es probable que "cereal" y "salchicha de desayuno" estén cerca en el espacio de embedding de un modelo de momento del día, pero lejos en el espacio de embedding de un modelo vegetariano en comparación con un modelo no vegetariano.
Embeddings estáticos
Si bien los embeddings difieren según la tarea, una tarea tiene una aplicabilidad general: predecir el contexto de una palabra. Los modelos entrenados para predecir el contexto de una palabra asumen que las palabras que aparecen en contextos similares están relacionadas semánticamente. Por ejemplo, los datos de entrenamiento que incluyen las oraciones "Anduvieron en burro por el Gran Cañón" y "Anduvieron a caballo por el cañón" sugieren que "caballo" aparece en un contexto similar a "burro". Resulta que los embeddings basados en la similitud semántica funcionan bien para muchas tareas de idiomas generales.
Aunque es un ejemplo más antiguo y fue sustituido en gran parte por otros modelos, el modelo word2vec sigue siendo útil a modo de ilustración. word2vec
se entrena con un corpus de documentos para obtener un único embedding global por palabra. Cuando cada palabra o dato tiene un único vector de embedding, se denomina embedding estático. El siguiente video explica una ilustración simplificada de entrenamiento de word2vec
.
Las investigaciones sugieren que estos embeddings estáticos, una vez entrenados, codifican cierto grado de información semántica, en especial en relaciones entre palabras. Es decir, las palabras que se usan en contextos similares estarán más cerca en un espacio de embedding. Los vectores de embeddings específicos que se generen dependerán del corpus que se utilice para el entrenamiento. Para obtener detalles, consulta T. Mikolov et al (2013), "Efficient estimation of word representations in vector space".
-
François Chollet, Deep Learning with Python (Shelter Island, NY: Manning, 2017), 6.1.2. ↩