Imaginez que vous développiez une application de recommandation d'aliments, les utilisateurs saisissent leurs repas préférés, et l'application leur suggère des repas similaires. qui pourraient leur plaire. Vous souhaitez développer un modèle de machine learning (ML) capable de prédire la similarité alimentaire, ce qui permet à votre application recommandations ("Étant donné que vous aimez les crêpes, nous vous recommandons les crêpes).
Pour entraîner votre modèle, vous sélectionnez un ensemble de données composé de 5 000 les plats de repas, y compris le bortsch hot dog, salade, pizza et shawarma.
![Figure 1. Ensemble d'illustrations de cinq aliments. Dans le sens des aiguilles d'une montre, à partir de
en haut à gauche: bortsch, hot dog, salade, pizza, shawarma.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=0&hl=fr)
Vous créez une caractéristique meal
qui contient un
encodage one-hot
de chaque plat du jeu de données.
![Figure 2. Top: visualisation de l'encodage one-hot du bortsch.
Le vecteur [1, 0, 0, 0, ..., 0] est affiché au-dessus de six cadres,
chacun aligné à partir de la gauche
à droite par l'un des nombres vectoriels. Les cases, de gauche à droite
contenir les images suivantes: bortsch, hot dog, salade, pizza, [vide],
Shawarma. Milieu: visualisation de l'encodage one-hot pour les hot-dogs.
Le vecteur [0, 1, 0, 0, ..., 0] est affiché au-dessus de six cadres, chacun
aligné de gauche à droite sur l'un des nombres vectoriels. Les boîtes ont
les mêmes images de gauche à droite que pour la visualisation du bortsch
ci-dessus. En bas: une visualisation de l'encodage one-hot du shawarma. La
Le vecteur [0, 0, 0, 0, ..., 1] est affiché au-dessus de six cadres, chacun aligné
de gauche à droite par l'un
des nombres vectoriels. Les boîtes ont
les mêmes images de gauche à droite que pour le bortsch et le hot-dog
des visualisations.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=0&hl=fr)
Pièges liés aux représentations de données creuses
En examinant ces encodages one-hot, vous remarquez deux problèmes principaux la représentation des données.
- Nombre de pondérations. Les grands vecteurs d'entrée signifient un très grand nombre
pondérations
pour un réseau de neurones.
Avec M entrées dans votre encodage one-hot et N
dans la première couche du réseau après l'entrée, le modèle doit être entraîné
les pondérations MxN pour cette couche. Un grand nombre de pondérations entraîne d'autres problèmes:
- Nombre de points de données. Plus il y a de pondérations dans votre modèle, plus vous obtenez de données pour s'entraîner efficacement.
- La quantité de calcul. Plus il y a de pondérations, plus il faut de calculs pour entraîner et utiliser le modèle. Il est facile de dépasser les capacités de votre matériel.
- Quantité de mémoire. Plus il y a de pondérations dans le modèle, plus il y a de mémoire sur les accélérateurs qui l'entraînent et la diffusent. Scaling à la hausse efficacement est très difficile.
- Difficultés d'assistance machine learning sur l'appareil (ODML). Si vous souhaitez exécuter votre modèle de ML sur des appareils locaux (plutôt que de diffuser vous devez vous concentrer sur la réduction de la taille de votre modèle. pour diminuer le nombre de pondérations.
- Manque de relations significatives entre les vecteurs. Les valeurs vectorielles dans les encodages one-hot des aliments ne fournissent aucune information pertinente la similitude des aliments. Mathématiquement, l'indice 1 ("hot dog") correspond à plus proche de l'indice 2 ("salade") qu'avec l'indice 4999 ("shawarma"), même si une chien est plus similaire au shawarma (tous deux contiennent de la viande et du pain) qu'une salade.
Dans ce module, vous apprendrez à créer des représentations vectorielles continues, de dimensions inférieures de données creuses, qui répondent à ces deux problèmes.