Un embedding est une représentation vectorielle de données dans un espace d'embedding. En général, un modèle identifie les embeddings en projetant l'espace de grande dimension des vecteurs de données initiaux dans un espace de dimension inférieure. Pour comparer les données en grande dimension et celles en dimension inférieure, consultez le module Données catégorielles.
Les embeddings facilitent le machine learning sur de grands vecteurs de caractéristiques, comme les vecteurs creux représentant les éléments d'un repas abordés dans la section précédente. Parfois, les positions relatives des éléments dans l'espace d'embedding ont une relation sémantique potentielle, mais souvent, le processus de recherche d'un espace de dimension inférieure et des positions relatives dans cet espace, n'est pas interprétable par des humains, et les embeddings qui en résultent sont difficiles à comprendre.
Néanmoins, pour mieux comprendre et vous donner une idée de la manière dont les vecteurs d'embedding représentent les informations, considérons la représentation unidimensionnelle suivante de plats (comme le hot dog, la pizza, la salade, le shawarma et le bortsch) sur une échelle allant du moins ressemblant au plus ressemblant à un sandwich. Cette dimension unique est une mesure imaginaire de la "sandwichité".

Où se situerait un strudel aux pommes sur cette ligne ? On pourrait sans doute le placer entre le hot dog
et le shawarma
. Toutefois, le strudel aux pommes semble aussi avoir une autre dimension de douceur ou de dessertité qui le rend très différent des autres options.
La figure suivante illustre cela par l'ajout d'une dimension "dessertité" :

Un embedding représente chaque élément dans un espace en n-dimensions avec n nombres à virgule flottante (généralement compris entre -1 et 1 ou 0 et 1). L'embedding sur la figure 3 représente chaque aliment dans un espace unidimensionnel avec une seule coordonnée, tandis que la figure 4 représente chaque aliment dans un espace bidimensionnel avec deux coordonnées. Sur la figure 4, "strudel aux pommes" se trouve dans le quadrant supérieur droit du graphique et pourrait se voir attribuer le point (0,5, 0,3), tandis que "hot dog" se trouve dans le quadrant inférieur droit du graphique et pourrait se voir attribuer le point (0,2, -0,5).
Dans un embedding, la distance entre deux éléments peut être calculée mathématiquement et interprétée comme une mesure de similarité relative entre ces deux éléments. Deux éléments proches, comme le shawarma
et le hot dog
sur la figure 4, sont plus étroitement liés dans la représentation des données du modèle que deux éléments plus éloignés, comme le apple strudel
et le borscht
.
Notez également que dans l'espace bidimensionnel sur la figure 4, apple strudel
est beaucoup plus éloigné du shawarma
et du hot dog
qu'il ne le serait dans l'espace unidimensionnel, ce qui correspond à l'intuition : un apple strudel
n'est pas aussi semblable à un hot dog ou un shawarma que les hot dogs et shawarmas le sont entre eux.
Considérons maintenant le bortsch, qui est beaucoup plus liquide que les autres aliments. Cela suggère une troisième dimension, la liquidité (ou dans quelle mesure un aliment pourrait être liquide). En ajoutant cette dimension, les éléments pourraient être représentés en 3D comme suit :

Où se situerait le tangyuan dans cet espace 3D ? Ce dessert sucré comme le strudel aux pommes et sirupeux comme le bortsch n'est certainement pas un sandwich. Voici un emplacement possible :

Remarquez la quantité d'informations exprimées dans ces trois dimensions. Vous pourriez imaginer ajouter des dimensions supplémentaires concernant, par exemple, la consistance et la cuisson d'un aliment, même si les espaces 4D, 5D et de dimensions supérieures sont difficiles à visualiser.
Espaces d'embedding réels
En réalité, les espaces d'embedding sont d-dimensionnels (d étant bien supérieur à 3) bien qu'inférieurs à la dimensionnalité des données, et les relations entre les points de données ne sont pas nécessairement aussi intuitives que dans l'illustration artificielle ci-dessus. (Pour les embeddings lexicaux, d est souvent égal à 256, 512, ou 1 0241.)
En pratique, le professionnel en ML définit généralement la tâche spécifique et le nombre de dimensions d'embedding. Le modèle essaie ensuite d'organiser les exemples d'entraînement pour qu'ils soient proches dans un espace d'embedding avec le nombre spécifié de dimensions, ou s'adapte au nombre de dimensions, si d n'est pas fixe. Les dimensions individuelles sont rarement aussi compréhensibles que les notions de "dessertité" ou "liquidité". Même s'il est parfois possible d'en déduire leur signification, ce n'est pas toujours le cas.
Les embeddings seront généralement spécifiques à la tâche et différeront les uns des autres quand la tâche différera. Par exemple, les embeddings générés par un modèle de classification végétarien/non végétarien seront différents de ceux générés par un modèle qui suggère des plats en fonction de l'heure du jour ou de la saison. Par exemple, "céréales" et "saucisses du petit-déjeuner" seraient probablement proches dans l'espace d'embedding d'un modèle basé sur l'heure du jour, mais très éloignés dans celui d'un modèle végétarien/non végétarien.
Embeddings statiques
Bien que les embeddings diffèrent d'une tâche à l'autre, une tâche a une certaine applicabilité générale : prédire le contexte d'un mot. Les modèles entraînés à prédire le contexte d'un mot supposent que les mots apparaissant dans des contextes similaires sont sémantiquement liés. Par exemple, les données d'entraînement qui incluent les phrases "Ils sont descendus dans le Grand Canyon sur un âne" et "Ils sont descendus dans le canyon à cheval" suggèrent que le "cheval" apparaît dans des contextes semblables à ceux pour un "âne". Il s'avère que les embeddings basés sur une similarité sémantique fonctionnent bien pour de nombreuses tâches en langage courant.
Même s'il s'agit d'un ancien exemple, largement remplacé par d'autres modèles, le modèle word2vec reste utile à titre d'illustration. word2vec
s'entraîne sur un corpus de documents pour obtenir un embedding global unique par mot. Lorsque chaque mot ou point de données a un seul vecteur d'embedding, on parle d'embedding statique. La vidéo suivante présente une illustration simplifiée d'un entraînement avec word2vec
.
Selon des études, ces embeddings statiques, une fois entraînés, codent un certain niveau d'informations sémantiques, en particulier dans les relations entre les mots. Autrement dit, les mots utilisés dans des contextes similaires seront plus proches les uns des autres dans un espace d'embedding. Les vecteurs d'embeddings spécifiques générés dépendront du corpus utilisé pour l'entraînement. Pour en savoir plus, consultez Efficient estimation of word representations in vector space (en anglais), T. Mikolov et al (2013).
-
François Chollet, Deep Learning with Python (L'apprentissage profond avec Python) (Shelter Island, NY : Manning, 2017), 6.1.2. ↩