Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Miten Itsehuomio Lasketaan | Transformer-Perusteiden Ymmärtäminen
Transformerit Luonnollisen Kielen Käsittelyssä

bookMiten Itsehuomio Lasketaan

Pyyhkäise näyttääksesi valikon

Jotta ymmärtäisit, miten itsehuomio (self-attention) lasketaan transformereissa, tulee noudattaa tarkkaa matemaattisten operaatioiden järjestystä. Itsehuomiomekanismi mahdollistaa sen, että jokainen sana lauseessa voi kiinnittää huomiota muihin sanoihin tuottaessaan ulostuloesitystä. Tämä saavutetaan laskemalla kaikkien syötevektorien painotettu summa, jossa painot kuvaavat kunkin sanan merkitystä käsiteltävälle sanalle.

Oletetaan, että sinulla on lyhyt lause, joka on esitetty matriisina, jossa jokainen rivi on sanan upotus (embedding). Ensin projisoit nämä upotukset kyselyiksi (queries), avaimiksi (keys) ja arvoiksi (values) opittujen painomatriisien avulla. Itsehuomion ydin on sitten huomioarvojen laskeminen ja arvovektorien yhdistäminen näiden arvojen perusteella.

Note
Määritelmä

Kyselyt (queries), avaimet (keys) ja arvot (values) ovat syötteen eri esitysmuotoja, joilla kullakin on oma roolinsa huomion laskennassa.

Itsehuomion laskenta

Itsehuomio voidaan jakaa selkeisiin matemaattisiin vaiheisiin jokaiselle sanalle sekvenssissä:

Syötteiden projektointi kyselyiksi, avaimiksi ja arvoiksi: projektoi syötematriisi opittujen painomatriisien avulla saadaksesi kyselyt, avaimet ja arvot.

123456789101112131415161718192021222324252627282930313233
import numpy as np # Example input: 3 words, embedding size 4 X = np.array([ [1.0, 0.0, 1.0, 0.0], # word 1 [0.0, 2.0, 0.0, 2.0], # word 2 [1.0, 1.0, 1.0, 1.0] # word 3 ]) # Weight matrices for queries, keys, values (embedding size 4 -> 4) W_q = np.array([ [0.1, 0.2, 0.0, 0.0], [0.0, 0.1, 0.3, 0.0], [0.1, 0.0, 0.0, 0.2], [0.0, 0.0, 0.2, 0.3] ]) W_k = np.array([ [0.2, 0.0, 0.1, 0.0], [0.0, 0.1, 0.0, 0.3], [0.1, 0.0, 0.2, 0.0], [0.0, 0.2, 0.0, 0.1] ]) W_v = np.array([ [0.0, 0.1, 0.0, 0.2], [0.2, 0.0, 0.2, 0.0], [0.0, 0.3, 0.1, 0.0], [0.1, 0.0, 0.0, 0.3] ]) # Compute queries, keys, values Q = X @ W_q K = X @ W_k V = X @ W_v
copy

Laske huomioarvot:

  • Laske jokaisen kyselyn ja kaikkien avainten välinen samankaltaisuus;
  • Nämä arvot osoittavat, kuinka paljon huomiota kukin sana kohdistaa muihin.
1
scores = Q @ K.T
copy

Skaalaa pisteet: jaa huomioarvot avaimen ulottuvuuden neliöjuurella. Tämä skaalaus auttaa vakauttamaan gradientit koulutuksen aikana.

12
d_k = Q.shape[1] scaled_scores = scores / np.sqrt(d_k)
copy

Sovella softmax-funktio: skaalaamalla saadut pisteet muunnetaan huomioarvoiksi softmax-funktion avulla. Tämä varmistaa, että painot ovat positiivisia ja niiden summa on 1 jokaiselle sanalle.

123456
# Softmax to get attention weights def softmax(x): e_x = np.exp(x - np.max(x, axis=-1, keepdims=True)) return e_x / np.sum(e_x, axis=-1, keepdims=True) attention_weights = softmax(scaled_scores)
copy

Laske arvojen painotettu summa: käytä huomioarvoja arvektoreiden painotetun summan laskemiseen. Tämä tuottaa lopullisen self-attention-tuloksen jokaiselle sanalle.

12345
# Weighted sum of values output = attention_weights @ V print("Attention weights:\n", attention_weights) print("Self-attention output:\n", output)
copy

Nämä vaiheet kuvaavat olennaiset laskutoimitukset, jotka liittyvät self-attention-mekanismin toimintaan transformer-malleissa.

1. Mikä on oikea toimintojen järjestys self-attentionissa yhdelle syötesanalle?

2. Miksi skaalaamme huomioarvot avainulottuvuuden neliöjuurella?

3. Mitkä vektorit käytetään huomioarvojen laskemiseen

question mark

Mikä on oikea toimintojen järjestys self-attentionissa yhdelle syötesanalle?

Valitse oikea vastaus

question mark

Miksi skaalaamme huomioarvot avainulottuvuuden neliöjuurella?

Valitse oikea vastaus

question mark

Mitkä vektorit käytetään huomioarvojen laskemiseen

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 5
some-alt