Couches d’attention (AdditiveAttention)

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)

    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.