Sobes.tech
Middle — Senior

PyTorch'da kalit to'ldirish maskasi va diqqat maskasi nima?

sobes.tech AI

AIdan javob

PyTorch'ta, transformatorlar va diqqat (attention) bilan ishlashda, odatda, turli uzunlikdagi ketma-ketliklarni to'g'ri ishlash va keraksiz pozitsiyalarga diqqat qilishni oldini olish uchun maskalar qo'llaniladi.

  • Key Padding Mask: bu, ketma-ketlikdagi qaysi pozitsiyalar padding (to'ldirish) ekanligini ko'rsatadigan maska bo'lib, model ularni diqqat hisoblashida hisobga olmaydi. Odatda, True padding pozitsiyasini bildiradi. Bu maska diqqat mexanizmidagi kalitlar (keys) va qiymatlar (values) ga qo'llaniladi va padding tokenlarini e'tiborsiz qoldiradi.

  • Attention Mask: bu, umumiyroq maska bo'lib, diqqat hisoblashida qaysi pozitsiyalar hozirgi pozitsiyaga ta'sir qilishi mumkinligini nazorat qiladi. Masalan, avtomatik matn yaratish vazifalarida, kelajakdagi tokenlarga qarashni taqiqlovchi maska ishlatiladi; bu ma'lumotlarning oshib ketishini oldini oladi. Bu maska, ba'zan, ba'zi bog'lanishlar taqiqlangan uchburchak matritsa bo'lishi mumkin.

Misol:

import torch
from torch.nn import MultiheadAttention

# Faraz qilaylik, bizda padding bilan ketma-ketlik bor
key_padding_mask = torch.tensor([[False, False, True, True]])  # True padding uchun

# Kelajakdagi tokenlarga diqqat qilishni oldini oladigan attention maskasi
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool()  # Yuqori uchburchak maskasi

mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8)  # (ketma-ketlik uzunligi, partiya, embedding o'lchami)
key = value = query

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

Shu tarzda, key padding mask padding tokenlarini e'tiborsiz qoldirish uchun ishlatiladi, attention mask esa diqqat tuzilishini nazorat qilish uchun (masalan, kelajakdagi pozitsiyalarga diqqat qilishni oldini olish) qo'llaniladi.