single
Challenge: Plotning af Opmærksomhedsvarmekort
Stryg for at vise menuen
Visualisering af attention-vægte med et heatmap hjælper med at fortolke, hvordan en transformer-model fordeler sit fokus på tværs af en sætning. matplotlib anvendes til at plotte et heatmap, hvor både x-aksen og y-aksen repræsenterer tokens fra sætningen. Hver celle i heatmappet viser attention-vægten mellem et par af tokens: rækken svarer til query-tokenet, og kolonnen svarer til key-tokenet.
Start med at opdele din sætning i tokens:
sentence = "Transformers help models focus on important words."
tokens = sentence.split()
Definér derefter din attention-matrix som et NumPy-array. Hver værdi repræsenterer attention-vægten fra ét token til et andet:
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],
])
For at plotte heatmappet bruges følgende kode:
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()
Lysere eller mørkere farver angiver højere eller lavere attention-værdier, afhængigt af farveskalaen. Når heatmappet betragtes, kan det ses, hvilke ord modellen lægger mest vægt på ved behandling af hvert token. For eksempel, hvis cellen ved række focus og kolonne important er lys, forbinder modellen stærkt focus med important i sin interne repræsentation. Denne visualisering hjælper med at forstå, hvilke dele af input-sætningen der påvirker hinanden, og er nyttig til diagnosticering eller fortolkning af modeladfærd i opgaver inden for naturlig sprogbehandling.
Kør nu koden for at se det resulterende heatmap, og skriv derefter din første visualiserings-plot.
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()
Swipe to start coding
Plot et opmærksomheds-heatmap for sætningen "Attention helps models understand context." ved hjælp af følgende opmærksomhedsmatrix:
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],
]
- Brug
matplotlibtil at oprette et heatmap; - Mærk begge akser med sætnings-tokens;
- Tilføj en farvebjælke med etiketten "Attention Weight;"
- Giv plottet titlen "Attention Heatmap."
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat