single
Sfida: Tracciamento delle Heatmap di Attenzione
Scorri per mostrare il menu
La visualizzazione dei pesi di attenzione tramite una heatmap aiuta a interpretare come un modello transformer distribuisce la propria attenzione all'interno di una frase. Si utilizza matplotlib per tracciare una heatmap in cui sia l'asse x che l'asse y rappresentano i token della frase. Ogni cella della heatmap mostra il peso di attenzione tra una coppia di token: la riga corrisponde al token query, mentre la colonna corrisponde al token key.
Inizia suddividendo la frase in token:
sentence = "Transformers help models focus on important words."
tokens = sentence.split()
Successivamente, definisci la matrice di attenzione come un array NumPy. Ogni valore rappresenta il peso di attenzione da un token all'altro:
import numpy as np
attention = np.array([
[0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20],
[0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10],
[0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10],
[0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15],
[0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15],
[0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10],
[0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25],
])
Per tracciare la heatmap, utilizza il seguente codice:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
im = ax.imshow(attention, cmap="viridis")
ax.set_xticks(np.arange(len(tokens)))
ax.set_yticks(np.arange(len(tokens)))
ax.set_xticklabels(tokens, rotation=45, ha="right")
ax.set_yticklabels(tokens)
cbar = plt.colorbar(im, ax=ax)
cbar.set_label("Attention Weight")
ax.set_title("Attention Heatmap")
ax.set_xlabel("Key Tokens")
ax.set_ylabel("Query Tokens")
plt.tight_layout()
plt.show()
Colori più chiari o più scuri indicano valori di attenzione più alti o più bassi, a seconda della mappa dei colori utilizzata. Osservando la heatmap, è possibile vedere a quali parole il modello presta maggiore attenzione durante l'elaborazione di ciascun token. Ad esempio, se la cella alla riga focus e colonna important è luminosa, il modello collega fortemente focus a important nella sua rappresentazione interna. Questa visualizzazione aiuta a comprendere quali parti della frase di input si influenzano a vicenda ed è utile per diagnosticare o interpretare il comportamento del modello nei compiti di elaborazione del linguaggio naturale.
Ora, esegui il codice per visualizzare la heatmap risultante e poi crea il tuo primo grafico di visualizzazione.
123456789101112131415161718192021222324252627282930313233import numpy as np import matplotlib.pyplot as plt sentence = "Transformers help models focus on important words." tokens = sentence.split() attention = np.array([ [0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20], [0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10], [0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10], [0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15], [0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15], [0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10], [0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25], ]) fig, ax = plt.subplots(figsize=(8, 6)) im = ax.imshow(attention, cmap="viridis") ax.set_xticks(np.arange(len(tokens))) ax.set_yticks(np.arange(len(tokens))) ax.set_xticklabels(tokens, rotation=45, ha="right") ax.set_yticklabels(tokens) cbar = plt.colorbar(im, ax=ax) cbar.set_label("Attention Weight") ax.set_title("Attention Heatmap") ax.set_xlabel("Key Tokens") ax.set_ylabel("Query Tokens") plt.tight_layout() plt.show()
Scorri per iniziare a programmare
Traccia una heatmap dell'attenzione per la frase "Attention helps models understand context." utilizzando la seguente matrice di attenzione:
attention = [
[0.25, 0.15, 0.20, 0.20, 0.20],
[0.10, 0.40, 0.15, 0.20, 0.15],
[0.15, 0.10, 0.35, 0.20, 0.20],
[0.20, 0.15, 0.20, 0.25, 0.20],
[0.15, 0.20, 0.20, 0.20, 0.25],
]
- Utilizzare
matplotlibper creare una heatmap; - Etichettare entrambi gli assi con i token della frase;
- Aggiungere una barra dei colori etichettata "Attention Weight;"
- Intitolare il grafico "Attention Heatmap."
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione