Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Tracciamento delle Heatmap di Attenzione | Applicare i Transformers ai Compiti NLP
Transformer per l'elaborazione del linguaggio naturale
Sezione 3. Capitolo 4
single

single

bookSfida: 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.

123456789101112131415161718192021222324252627282930313233
import 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()
copy
Compito

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 matplotlib per 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

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt