Sobes.tech
Middle — Senior

Šta je key padding mask u odnosu na attention mask u PyTorch?

sobes.tech АИ

Одговор од АИ

U PyTorch-u, prilikom rada sa transformatorima i pažnjom (attention), često se koriste maske za pravilnu obradu sekvenci različitih dužina i za sprečavanje pažnje na neželjene pozicije.

  • Key Padding Mask: je maska koja ukazuje koje pozicije u sekvenci su padding (popuna), tako da model ne uzima u obzir te pozicije prilikom računanja pažnje. Obično je to booleanska tenzora gde True označava padding poziciju. Ova maska se primenjuje na ključeve (keys) i vrednosti (values) u mehanizmu pažnje da ignoriše padding tokenove.

  • Attention Mask: je opštija maska koja kontroliše koje pozicije mogu uticati na trenutnu poziciju prilikom računanja pažnje. Na primer, u zadacima automatskog generisanja teksta, koristi se maska koja zabranjuje gledanje unapred (futurs tokens) kako bi se sprečilo curenje informacija. Ova maska može biti trouglasta matrica gde su određene veze zabranjene.

Primer:

import torch
from torch.nn import MultiheadAttention

# Pretpostavimo da imamo sekvencu sa paddingom
key_padding_mask = torch.tensor([[False, False, True, True]])  # True za padding

# Maska pažnje koja zabranjuje gledanje unapred
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool()  # Gornja trouglasta maska

mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8)  # (dužina sekvence, batch, dimenzija ugrađivanja)
key = value = query

output, attn_weights = mha(query, key, value, attn_mask=attn_mask, key_padding_mask=key_padding_mask)

Na ovaj način, key padding mask se koristi za ignorisanje padding tokenova, a attention mask za kontrolu strukture pažnje (npr. sprečavanje pažnje na buduće pozicije).