PyTorch'ta key padding mask ile attention mask arasındaki fark nedir?
sobes.tech AI
AIден жооп
PyTorch'ta, transformerler men nazar (attention) menen иштегенде, туура иштеши учун ар түрдүү узундуктагы тизмектерди жана керексиз орундарга көңүл бурбоо үчүн маскалар колдонулат.
-
Key Padding Mask: бул маска, тизмектеги кайсы орундар padding (толтуруу) экенин көрсөтөт; модел аларды көңүлгө албашы үчүн. Адатта, бул True болсо padding орунду билдирет. Бул маска назар (attention) механизминде ачкычтарга (keys) жана маанилерге (values) колдонулат, padding токендерин көздөн кыюу үчүн.
-
Attention Mask: бул кеңири маска, ал кайсы орундар азыркы орунга таасир эте алат же албашы керек экенин көзөмөлдөйт. Мисалы, автоматтык текст түзүүдө, ал алдыга карап турууну (future tokens) тыюу үчүн колдонулат, маалыматтын агып кетишин алдын алуу үчүн. Бул маска үч бурчтуу матрица болушу мүмкүн, анда белгилүү байланыштар тыюу салынган.
Мисал:
import torch
from torch.nn import MultiheadAttention
# Бизде padding менен тизмек бар деп эсептейли
key_padding_mask = torch.tensor([[False, False, True, True]]) # True padding үчүн
# Алдын ала карап турууну тыюу үчүн назар маскасы
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool() # Жогорку үч бурчтуу маска
mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8) # (тизмек узундугу, батча, embed өлчөмү)
key = value = query
output, attn_weights = mha(query, key, value, attn_mask=attn_mask, key_padding_mask=key_padding_mask)
Ушул жол менен, key padding mask padding токендерин көздөн кыюу үчүн колдонулат, ал эми attention mask назар түзүмүн көзөмөлдөө үчүн (мисалы, келечек позицияларына көңүл бурбоо үчүн) колдонулат.