Couches d’embedding (Embedding)
Les couches Embedding sont utilisées dans les réseaux de neurones pour transformer des données discrètes ou catégorielles, comme des mots ou des identifiants, en vecteurs continus de dimension fixe. L’objectif est de représenter chaque élément de manière dense et significative pour faciliter l’apprentissage par le réseau.
Le principe consiste à associer à chaque valeur discrète un vecteur appris pendant l’entraînement. Ces vecteurs capturent les relations et similarités entre les différentes valeurs : des éléments similaires auront des vecteurs proches dans l’espace latent. Les embeddings réduisent la dimensionnalité des données catégorielles tout en conservant les informations sémantiques importantes.
Les couches Embedding sont utilisées principalement dans le traitement du langage naturel (NLP), mais aussi pour tout type de données catégorielles dans des tâches de classification, recommandation ou séquence.
En résumé, les couches Embedding permettent de transformer des données discrètes en représentations vectorielles continues, capturant les relations entre les éléments et facilitant l’apprentissage du réseau.
Fonctions :
-
Embedding()
La couche Embedding sert à transformer des entiers représentant des mots (ou autres indices catégoriels) en vecteurs denses à dimension fixe. Elle est très utilisée en traitement du langage naturel pour représenter des mots sous forme de vecteurs numériques appris, facilitant ainsi la compréhension par les modèles de deep learning.
Importation :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, Flatten, Dense import numpy as npAttributs :
Paramètre Type Description Valeur par défaut input_dimint Nombre total de mots (taille du vocabulaire). — output_dimint Dimension des vecteurs de sortie (taille de l’embedding). — input_lengthint Longueur des séquences d'entrée (nombre de mots par séquence). Nonemask_zerobool Si True, ignore l’index 0 dans les séquences (utile pour le padding).Falseembeddings_initializerstr / callable Initialiseur des poids de l’embedding. 'uniform'Exemple de code :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, Flatten, Dense import numpy as np # Données simulées : 4 séquences de 5 mots, mots encodés par des entiers entre 0 et 99 X = np.array([ [1, 5, 10, 4, 2], [3, 7, 8, 1, 9], [5, 6, 7, 8, 9], [1, 3, 2, 4, 5] ]) y = np.array([0, 1, 0, 1]) # Modèle avec couche Embedding model = Sequential() model.add(Embedding(input_dim=100, output_dim=8, input_length=5)) model.add(Flatten()) # Aplatit la sortie 2D en vecteur 1D model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary()
Explication du code :
Importation des bibliothèques
On importe les couches nécessaires depuis Keras pour construire un modèle séquentiel simple.Création des données
Les données d’entrée sont 4 séquences contenant chacune 5 entiers, représentant des mots encodés.Définition du modèle
La couche `Embedding` convertit chaque entier en un vecteur dense de dimension 8. La sortie (matrice 5×8 par séquence) est aplatie en un vecteur 1D avant d’être passée à une couche dense pour la classification binaire.Compilation
Le modèle est compilé avec l’optimiseur Adam et la perte binaire, prêt à être entraîné.