PyTorch'ta anahtar doldurma maskesi ile dikkat maskesi arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
PyTorch'ta, dönüştürücüler ve dikkat (attention) ile çalışırken, sıklıkla farklı uzunluklardaki dizilerin doğru işlenmesi ve istenmeyen pozisyonlara dikkat edilmemesi için maskeler kullanılır.
-
Key Padding Mask: bu, dizideki hangi pozisyonların doldurma (padding) olduğunu gösteren bir maskedir; böylece model, dikkat hesaplaması sırasında bunları dikkate almaz. Genellikle, True olan pozisyonlar padding'dir. Bu maske, dikkat mekanizmasında anahtarlar (keys) ve değerler (values) üzerinde uygulanır ve padding token'larının göz ardı edilmesini sağlar.
-
Attention Mask: daha genel bir maskedir ve hangi pozisyonların, dikkat hesaplaması sırasında şu anki pozisyona etkide bulunabileceğini kontrol eder. Örneğin, otomatik metin üretimi görevlerinde, gelecekteki token'lara bakmayı engelleyen bir maske kullanılır; böylece bilgi sızıntısı önlenir. Bu maske, belirli bağlantıların engellendiği üçgen bir matris olabilir.
Örnek:
import torch
from torch.nn import MultiheadAttention
# Diyelim ki, bir dizimiz padding ile birlikte
key_padding_mask = torch.tensor([[False, False, True, True]]) # True padding için
# Gelecekteki token'lara dikkat etmeyi engelleyen attention maskesi
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool() # Üst üçgen maske
mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8) # (dizi uzunluğu, batch, gömme boyutu)
key = value = query
output, attn_weights = mha(query, key, value, attn_mask=attn_mask, key_padding_mask=key_padding_mask)
Bu şekilde, key padding mask, padding token'larının göz ardı edilmesi için kullanılırken, attention mask, dikkat yapısının kontrolü (örneğin, gelecekteki pozisyonlara dikkat edilmemesi) için kullanılır.