Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Challenge: Plottning av Uppmärksamhetsvärmekartor | Applying Transformers to NLP Tasks
Transformers för Naturlig Språkbehandling
Avsnitt 3. Kapitel 4
single

single

bookChallenge: Plottning av Uppmärksamhetsvärmekartor

Svep för att visa menyn

Att visualisera uppmärksamhetsvikter med ett värmekarta hjälper dig att tolka hur en transformer-modell fördelar sitt fokus över en mening. Du använder matplotlib för att rita en värmekarta där både x-axeln och y-axeln representerar token från meningen. Varje ruta i värmekartan visar uppmärksamhetsvikten mellan ett tokenpar: raden motsvarar frågetoken och kolumnen motsvarar nyckeltoken.

Börja med att dela upp din mening i token:

sentence = "Transformers help models focus on important words."
tokens = sentence.split()

Definiera sedan din uppmärksamhetsmatris som en NumPy-array. Varje värde representerar uppmärksamhetsvikten från ett token till ett annat:

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],
])

För att rita värmekartan, använd följande kod:

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()

Ljusa eller mörka färger indikerar högre eller lägre uppmärksamhetsvärden, beroende på färgskalan. När du tittar på värmekartan kan du se vilka ord modellen lägger mest uppmärksamhet på vid bearbetning av varje token. Om till exempel rutan vid rad focus och kolumn important är ljus, kopplar modellen starkt focus till important i sin interna representation. Denna visualisering hjälper dig att förstå vilka delar av inmatningsmeningen som påverkar varandra och är användbar för att diagnostisera eller tolka modellbeteende i uppgifter inom naturlig språkbehandling.

Kör nu koden för att se den resulterande värmekartan och skriv sedan din första visualiserande graf.

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
Uppgift

Svep för att börja koda

Plotta en uppmärksamhets-heatmap för meningen "Attention helps models understand context." med följande uppmärksamhetsmatris:

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],
]
  • Använd matplotlib för att skapa en heatmap;
  • Märk båda axlarna med meningens token;
  • Lägg till en färgskala med etiketten "Attention Weight;"
  • Ge diagrammet titeln "Attention Heatmap."

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt