Sobes.tech
Middle — Senior

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.