Couches d’attention (AdditiveAttention)

Les couches AdditiveAttention sont utilisées dans les réseaux de neurones pour pondérer les éléments d’une séquence en fonction de leur importance relative. L’objectif est de permettre au modèle de se concentrer sur les parties les plus pertinentes de la séquence pour améliorer la qualité des prédictions.

Le principe consiste à calculer un score pour chaque élément de la séquence en combinant les vecteurs de requête (query) et de clé (key) via une fonction additive suivie d’une activation (souvent tanh), puis à appliquer une normalisation softmax pour obtenir des poids d’attention. Ces poids sont utilisés pour produire une combinaison pondérée des valeurs (value), générant une représentation contextuelle de la séquence.

Les couches AdditiveAttention sont utilisées dans les architectures sequence-to-sequence, la traduction automatique, le résumé de texte, la reconnaissance vocale et toute tâche nécessitant de mettre l’accent sur les éléments les plus importants d’une séquence.

En résumé, les couches AdditiveAttention permettent de calculer des représentations contextuelles pondérées des séquences en mettant en avant les éléments les plus pertinents, améliorant ainsi la compréhension et la performance du modèle.

Fonctions :

  • AdditiveAttention()

    La couche AdditiveAttention implémente un mécanisme d’attention additive (aussi appelé attention de Bahdanau). Contrairement à l’attention multiplicative (dot-product), elle calcule l’attention en combinant linéairement les requêtes et clés via un réseau de neurones, ce qui peut mieux modéliser certaines relations complexes entre séquences.

    Importation :

    from tensorflow.keras.layers import AdditiveAttention
    import numpy as np

    Attributs :

    Paramètre Type Description Valeur par défaut
    use_scale bool Applique une mise à l’échelle des scores d’attention pour stabiliser l’apprentissage. False
    dropout float Taux de dropout appliqué sur les poids d’attention. 0.0
    score_bias bool Ajoute un biais lors du calcul des scores d’attention. True

    Exemple de code :

    from tensorflow.keras.layers import AdditiveAttention
    import numpy as np
    
    # Données simulées : batch de 1 séquence de 3 vecteurs de dimension 5
    query = np.random.rand(1, 3, 5).astype(np.float32)
    value = np.random.rand(1, 4, 5).astype(np.float32)
    key = np.random.rand(1, 4, 5).astype(np.float32)
    
    # Couche AdditiveAttention
    attention = AdditiveAttention()
    
    # Calcul de l'attention
    output = attention([query, value, key])
    
    print("Shape sortie :", output.shape)  # (1, 3, 5)
    Résultat du code

    Explication du code :

    Importation de la couche
    On importe la couche `AdditiveAttention` de Keras.
    Préparation des données
    On crée des tenseurs `query` (3 vecteurs), `key` et `value` (4 vecteurs chacun) dans un batch de taille 1.
    Définition de la couche
    On instancie la couche `AdditiveAttention` sans paramètres particuliers.
    Calcul de l’attention
    On applique la couche à la liste `[query, value, key]` (ordre requis par la couche) pour calculer l’attention additive.
    Sortie
    La sortie a la forme de la requête, ici (1, 3, 5), avec les vecteurs recombinés selon les poids d’attention.

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

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

Souscrire maintenant