Attention – hur sammanhang formar representationer
Följ banken från startembedding till kontextberoende representation. Ett litet räkneexempel visar frågor, nycklar, softmax och blandade värdevektorer.
Kort sagt
”Jag sitter på banken.” ”Jag sätter in pengar på banken.” I den första meningen kan banken vara en sittplats; i den andra pekar pengarna mot en finansiell institution. Sammanhanget ger ledtrådar. Det här är en illustration, inte ett test som visar hur en viss modell faktiskt tolkar meningarna.
Attention blandar information från tillgängliga positioner till nya, kontextberoende representationer. Samma inlärda parametrar kan därför ge olika beräknade resultat för olika text.
Detta är del 3 efter Tokens – så blir text modellens byggbitar och Embeddings och vikter. Här är frågan inte hur text delas eller hur vikter tränas, utan hur information blandas under en beräkning.
När är detta användbart?
När du vill kunna följa ett attentiondiagram och skilja mellan vad modellen har lärt sig och vad den räknar fram för just din text. Mekanismen hjälper dig förstå informationsflödet, men säger inte ensam om ett svar är korrekt.
Från samma start till olika sammanhang
En token är en textbit i modellens ordlista, inte nödvändigtvis ett helt ord. Ordbrickorna i bankexemplet är bara läshjälp, inte en verifierad tokenisering.
För samma token-ID ger samma embeddingtabell samma uppslagna startvektor. Positionsinformation och lagrens bearbetning av tillgänglig kontext kan sedan ge olika interna representationer. Starttabellen behöver inte skrivas om för varje mening.
Gör så här: följ en enda positions information
- Utgå från positionernas aktuella representationer. I första lagret bygger de på embeddings och positionsinformation; senare lager arbetar med tidigare lagers resultat.
- Skapa frågor, nycklar och värden. Representationerna multipliceras med inlärda matriser:
Q = XW_Q,K = XW_K,V = XW_V. Matriserna är lagrade parametrar. Q, K och V är beräknade aktiveringar. - Matcha en fråga mot tillgängliga nycklar. Skalärprodukterna ger poäng. De skalas med roten ur nyckeldimensionen. En fråga är här en talvektor, inte en fråga skriven med ord.
- Maskera och gör poängen till andelar. Otillåtna positioner blockeras före softmax. Softmax exponentierar de tillåtna poängen och normaliserar dem till andelar som summerar till ett.
- Blanda värdevektorerna. Multiplicera varje värdevektor med dess andel och summera komponentvis. Det är attentionresultatet för positionen i detta huvud, inte automatiskt hela lagrets slutrepresentation.
Kompakt: Attention(Q,K,V) = softmax(QKᵀ / √d_k + mask) V. Här avses beräkningen utan dropout. För en tillåten position är den additiva masken noll; en blockerad position får minus oändlighet.
Räkna själv: två positioner, inte två hela meningar
Detta är en separat, Pythonverifierad leksaksmodell, inte riktiga banktokens eller uppmätta modellvikter. Vi visar ett huvud, radvektorer, ingen bias, ingen dropout och två tillåtna positioner A och B. Vi följer B:s fråga.
| Del | Värde |
|---|---|
| Representation A | [0, 1] |
| Representation B | [1, 0] |
| W_Q, två rader och en kolumn | [1; 0] |
| W_K, två rader och en kolumn | [0; ln(3)] |
| W_V | [[2, 0], [0, 2]] |
ln(3) är naturliga logaritmen av tre, ungefär 1,099. Med dessa påhittade parametrar blir:
- B:s fråga:
q_B = [1,0] W_Q = 1. - Nycklar:
k_A = ln(3)ochk_B = 0. - Poäng:
[1 × ln(3), 1 × 0] = [ln(3), 0]. Nyckeldimensionen är 1, så division med √1 ändrar inget. - Softmax: exponentiera →
[3, 1]; dela med summan 4 →[0.75, 0.25]. - Värden:
v_A = [0,2],v_B = [2,0].
Blanda nu, en komponent i taget:
z₁ = 0.75 × 0 + 0.25 × 2 = 0.5
z₂ = 0.75 × 2 + 0.25 × 0 = 1.5
z_B = [0.5, 1.5]
B:s indata var [1,0]. Attentionresultatet blev [0.5,1.5]. Det visar en informationsblandning, inte att en modell har identifierat en bankbetydelse. I en full transformer kombineras flera huvuden och deras resultat projiceras vidare; residualkopplingar, normalisering och andra lager ingår också.
Varför får modellen inte titta framåt?
I en kausal decoder får en position använda tidigare positioner och sig själv, men inte framtida positioner. Masken gör framtida poäng otillåtna före softmax; deras andel blir noll. Detta förhindrar att träningen smygläser det kommande token som ska förutsägas.
I bankmeningarna står ”sitter” och ”pengar” före ”banken”. De är därför tillgängliga även med en kausal mask. Icke-kausal attention har andra tillåtna beroenden; alla transformers är inte kausala decoders.
Viktigaste fallgropen
Attentionandelar är inte samma sak som modellvikter. W_Q, W_K och W_V är inlärda parametrar. Q, K, V och softmaxandelarna beror på indata. Under vanlig inferens kan de senare ändras utan något optimerarsteg som uppdaterar parametrarna.
En stark attentionlinje är inte heller en garanti för sanning, mänsklig förståelse eller en fullständig orsaksförklaring till slutsvaret. Flera huvuden och lager samverkar; ett huvud behöver inte motsvara en enkel mänsklig kategori.
Kontrollera att du har förstått
- Jag kan skilja W_Q/W_K/W_V från Q/K/V.
- Jag kan visa varför softmax av
[ln(3),0]blir[0.75,0.25]. - Jag blandar värdevektorer, inte token-ID eller bokstäver.
- Jag vet varför framtida positioner får andelen noll i en kausal decoder.
- Jag använder inte en attentionbild som bevis för att ett svar är korrekt.
Vad du kan göra nu
Byt leksaksmodellens poäng till [0,0], men behåll värdevektorerna. Räkna först andelarna, sedan båda utkomponenterna. Kontroll: lika poäng ger [0.5,0.5] och blandningen [1,1]. Skriv därefter en mening om vad som ändrades: blandningen, inte de valda värdevektorerna.