Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Plotning af Opmærksomhedsvarmekort | Anvendelse af Transformers til NLP-opgaver
Transformers til Naturlig Sprogbehandling
Sektion 3. Kapitel 4
single

single

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

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
Opgave

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

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt