Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Imaginons que vous développez une application destinée à recommander des aliments. Les utilisateurs y indiquent leurs plats préférés et l'application leur suggère des plats similaires qui pourraient leur plaire. Vous souhaitez créer un modèle de machine learning (ML) capable de prédire les similarités entre différents aliments afin que l'application puisse faire des recommandations de haute qualité (par exemple, "puisque vous aimez les pancakes, nous vous recommandons des crêpes").
Pour entraîner votre modèle, vous préparez un ensemble de données sur 5 000 plats populaires, dont le bortsch, le hot dog, la salade, la pizza et le shawarma.
Figure 1. Exemples de plats inclus dans l'ensemble de données d'aliments.
Vous créez une caractéristique meal qui contient une représentation avec un encodage one-hot de chacun des plats dans l'ensemble de données.
L'encodage désigne le processus visant à choisir une représentation numérique initiale des données sur laquelle entraîner le modèle.
Figure 2. Encodages one-hot pour le bortsch, le hot dog et le shawarma.
La longueur de chaque vecteur d'encodage one-hot est de 5 000 (une entrée pour chaque plat dans l'ensemble de données). Les points de suspension sur le diagramme représentent les 4 995 entrées non affichées.
Problèmes liés aux représentations de données creuses
En examinant ces encodages one-hot, vous pouvez remarquer plusieurs problèmes concernant cette représentation des données.
Nombre de pondérations : plus il y a de vecteurs d'entrée, plus le nombre de pondérations est considérable pour un réseau de neurones.
Avec M entrées dans votre encodage one-hot et N nœuds dans la première couche du réseau après l'entrée, le modèle doit entraîner MxN pondérations pour cette couche.
Nombre de points de données : plus il y a de pondérations dans votre modèle, plus vous avez besoin de données pour un entraînement efficace.
Nombre de calculs : plus il y a de pondérations, plus vous devez effectuer de calculs pour entraîner et utiliser le modèle. Vous pouvez facilement dépasser les capacités de votre matériel.
Quantité de mémoire : plus votre modèle contient de pondérations, plus la mémoire nécessaire sur les accélérateurs qui l'entraînent et le servent est importante. Il est donc très difficile de le faire évoluer efficacement.
Difficulté de prendre en charge le machine learning sur l'appareil :
si vous voulez exécuter votre modèle de machine learning sur des appareils locaux (plutôt que de le servir), vous devrez veiller à réduire sa taille ainsi que le nombre de pondérations.
Dans ce module, vous apprendrez à créer des embeddings, des représentations de données creuses de dimension inférieure, qui répondent à ces problématiques.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/05/29 (UTC).
[null,null,["Dernière mise à jour le 2025/05/29 (UTC)."],[[["\u003cp\u003eThis module explains how to create embeddings, which are lower-dimensional representations of sparse data that address the problems of large input vectors and lack of meaningful relations between vectors in one-hot encoding.\u003c/p\u003e\n"],["\u003cp\u003eOne-hot encoding creates large input vectors, leading to a huge number of weights in a neural network, requiring more data, computation, and memory.\u003c/p\u003e\n"],["\u003cp\u003eOne-hot encoding vectors lack meaningful relationships, failing to capture semantic similarities between items, like the example of hot dogs and shawarmas being more similar than hot dogs and salads.\u003c/p\u003e\n"],["\u003cp\u003eEmbeddings offer a solution by providing dense vector representations that capture semantic relationships and reduce the dimensionality of data, improving efficiency and performance in machine learning models.\u003c/p\u003e\n"],["\u003cp\u003eThis module assumes familiarity with introductory machine learning concepts like linear regression, categorical data, and neural networks.\u003c/p\u003e\n"]]],[],null,["# Embeddings\n\n| **Estimated module length:** 45 minutes\n| **Learning objectives**\n|\n| - Visualize vector representations of word embeddings, such as [word2vec](https://wikipedia.org/wiki/Word2vec).\n| - Distinguish encoding from embedding.\n| - Describe contextual embedding.\n| **Prerequisites:**\n|\n| This module assumes you are familiar with the concepts covered in the\n| following modules:\n|\n| - [Introduction to Machine Learning](/machine-learning/intro-to-ml)\n| - [Linear regression](/machine-learning/crash-course/linear-regression)\n| - [Working with categorical data](/machine-learning/crash-course/categorical-data)\n| - [Neural networks](/machine-learning/crash-course/neural-networks)\n\nImagine you're developing a food-recommendation application, where\nusers input their favorite meals, and the app suggests similar meals\nthat they might like. You want to develop a machine learning (ML) model\nthat can predict food similarity, so your app can make high quality\nrecommendations (\"Since you like pancakes, we recommend crepes\").\n\nTo train your model, you curate a dataset of 5,000 popular\nmeal items, including ,\n,\n,\n,\nand .\n**Figure 1.** Sampling of meal items included in the food dataset.\n\nYou create a `meal` feature that contains a\n[**one-hot encoded**](/machine-learning/glossary#one-hot-encoding)\nrepresentation of each of the meal items in the dataset.\n[**Encoding**](/machine-learning/glossary#encoder) refers to the process of\nchoosing an initial numerical representation of data to train the model on.\n**Figure 2.** One-hot encodings of borscht, hot dog, and shawarma. Each one-hot encoding vector has a length of 5,000 (one entry for each menu item in the dataset). The ellipsis in the diagram represents the 4,995 entries not shown.\n\nPitfalls of sparse data representations\n---------------------------------------\n\nReviewing these one-hot encodings, you notice several problems with this\nrepresentation of the data.\n\n- **Number of weights.** Large input vectors mean a huge number of [**weights**](/machine-learning/glossary#weight) for a [**neural network**](/machine-learning/glossary#neural-network). With M entries in your one-hot encoding, and N nodes in the first layer of the network after the input, the model has to train MxN weights for that layer.\n- **Number of datapoints.** The more weights in your model, the more data you need to train effectively.\n- **Amount of computation.** The more weights, the more computation required to train and use the model. It's easy to exceed the capabilities of your hardware.\n- **Amount of memory.** The more weights in your model, the more memory that is needed on the accelerators that train and serve it. Scaling this up efficiently is very difficult.\n- **Difficulty of supporting on-device machine learning (ODML).** If you're hoping to run your ML model on local devices (as opposed to serving them), you'll need to be focused on making your model smaller, and will want to decrease the number of weights.\n\nIn this module, you'll learn how to create **embeddings**, lower-dimensional\nrepresentations of sparse data, that address these issues.\n| **Key terms:**\n|\n| - [One-hot encoding](/machine-learning/glossary#one-hot-encoding)\n| - [Neural network](/machine-learning/glossary#neural-network)\n- [Weight](/machine-learning/glossary#weight) \n[Help Center](https://support.google.com/machinelearningeducation)"]]