Sobes.tech
Middle — Senior

PyTorch-də açar padding maskası ilə diqqət maskası arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

PyTorch-da, transformatorlar və diqqət (attention) ilə işləyərkən, düzgün işlənməsi üçün müxtəlif uzunluqlu ardıcıllıqların və istənməyən mövqelərə diqqətin qarşısını almaq üçün maskalar istifadə olunur.

  • Key Padding Mask: bu, ardıcıllıqda hansı mövqelərin doldurma (padding) olduğunu göstərən maskadır; model bu mövqeləri diqqət hesablamasında nəzərə almır. Adətən, True padding mövqeyini göstərir. Bu maska diqqət mexanizmində açarların (keys) və dəyərlərin (values) üzərində tətbiq olunur və padding tokenlərinin nəzərə alınmamasını təmin edir.

  • Attention Mask: daha ümumi maskadır və hansı mövqelərin diqqət hesablamasında təsir edə biləcəyini idarə edir. Məsələn, avtomatik mətn yaradılması tapşırıqlarında, gələcək tokenlərə baxmağı qadağan edən maska istifadə olunur; bu, məlumat sızıntısının qarşısını alır. Bu maska, bəzi əlaqələrin qadağan olunduğu üçbucaq matrisi ola bilər.

Nümunə:

import torch
from torch.nn import MultiheadAttention

# Tutaq ki, ardıcıllıqda padding var
key_padding_mask = torch.tensor([[False, False, True, True]])  # True padding üçün

# Gələcək tokenlərə diqqəti qadağan edən attention maskası
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool()  # Üst üçbucaq maskası

mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8)  # (ardıcıllıq uzunluğu, partiya, embed ölçüsü)
key = value = query

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

Bu şəkildə, key padding mask padding tokenlərini nəzərə almamaq üçün istifadə olunur, attention mask isə diqqət strukturunu idarə etmək üçün (məsələn, gələcək mövqelərə diqqət etməmək) istifadə edilir.