Sobes.tech
Middle — Senior

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.