Mi az a kauzális maszk és hogyan valósul meg az attention scores szintjén?
sobes.tech MI
Válasz az MI-től
Kauzális maszk (kauzális maszk) a transzformátorokban arra szolgál, hogy megakadályozza az információ szivárgását a jövőbeli pozíciókból a szekvencia generálásakor. Ez fontos az automatikus szövegalkotási feladatokban, ahol a modellnek nem szabad látnia a jövőbeli tokeneket a jelenlegi előrejelzésekor.
Az attention pontszinteken a kauzális maszkot felső háromszögmátrixként valósítják meg, amely elemekkel tiltja a figyelmet a jövőbeli pozíciókra. Ez általában úgy történik, hogy nagy negatív számot (pl. -∞ vagy nagyon kicsi értéket) adnak hozzá az attention pontszámokhoz azokhoz a pozíciókhoz, amelyek a jelenitől jobbra vannak, mielőtt softmax-ot alkalmaznánk. Ez nullára csökkenti a figyelem valószínűségét a jövőbeli tokenekre.
Példa (pszeudokód):
import torch
seq_len = 5
# Maszk létrehozása: 1 engedélyezett pozíciókhoz, 0 tiltottakhoz
causal_mask = torch.tril(torch.ones(seq_len, seq_len))
# attention_scores - mátrix (seq_len x seq_len)
# Maszk hozzáadása: tiltott pozíciók -inf-et kapnak
masked_scores = attention_scores.masked_fill(causal_mask == 0, float('-inf'))
# Ezután softmax az utolsó dimenzió szerint
attention_weights = torch.softmax(masked_scores, dim=-1)
Így a modell csak a jelenlegi és a korábbi tokeneket veheti figyelembe, kizárva a jövőbeli tokeneket.