single
Challenge: Huomioheatmapien Piirtäminen
Pyyhkäise näyttääksesi valikon
Huomioarvojen visualisointi lämpökartalla auttaa tulkitsemaan, miten transformer-malli jakaa huomionsa lauseen eri osiin. Käytät matplotlib-kirjastoa piirtääksesi lämpökartan, jossa sekä x- että y-akseli esittävät lauseen tokenit. Jokainen lämpökartan solu näyttää huomioarvon kahden tokenin välillä: rivi vastaa kyselytokenia (query token) ja sarake avaintokenia (key token).
Aloita jakamalla lauseesi tokeneihin:
sentence = "Transformers help models focus on important words."
tokens = sentence.split()
Seuraavaksi määrittele huomioarvomatriisi NumPy-taulukkona. Jokainen arvo kuvaa huomioarvoa tokenilta toiselle:
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],
])
Lämpökartan piirtämiseen käytä seuraavaa koodia:
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()
Kirkkaammat tai tummemmat värit ilmaisevat korkeampia tai matalampia huomioarvoja riippuen käytetystä värikartasta. Lämpökarttaa tarkastelemalla näet, mihin sanoihin malli kiinnittää eniten huomiota käsitellessään kutakin tokenia. Esimerkiksi, jos solussa rivillä focus ja sarakkeessa important on kirkas väri, malli yhdistää vahvasti focus- ja important-tokenit sisäisessä esityksessään. Tämä visualisointi auttaa ymmärtämään, mitkä osat syötelauseesta vaikuttavat toisiinsa, ja on hyödyllinen mallin toiminnan diagnosoinnissa tai tulkinnassa luonnollisen kielen käsittelyn tehtävissä.
Suorita nyt koodi nähdäksesi tuloksena olevan lämpökartan ja kirjoita sitten ensimmäinen visualisointikuvaajasi.
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()
Pyyhkäise aloittaaksesi koodauksen
Piirrä huomioheatmap lauseelle "Attention helps models understand context." käyttäen seuraavaa huomio-matriisia:
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],
]
- Käytä
matplotlib-kirjastoa heatmapin luomiseen; - Merkitse molemmat akselit lauseen tokenien nimillä;
- Lisää väripalkki, jonka otsikkona on "Attention Weight;"
- Anna kuvaajalle otsikko "Attention Heatmap."
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme