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 np

    Attributs :

    Paramètre Type Description Valeur par défaut
    input_dim int Nombre total de mots (taille du vocabulaire).
    output_dim int Dimension des vecteurs de sortie (taille de l’embedding).
    input_length int Longueur des séquences d'entrée (nombre de mots par séquence). None
    mask_zero bool Si True, ignore l’index 0 dans les séquences (utile pour le padding). False
    embeddings_initializer str / 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()
    Résultat du code

    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é.

⚠️ Ce contenu est réservé aux membres Premium

Abonnez-vous pour débloquer cette page et accéder à tous nos contenus exclusifs.

Souscrire maintenant