Mis on key padding mask vs attention mask PyTorchis?
sobes.tech AI
Vastus AI-lt
PyTorch sageli kasutab transformereid ja tähelepanu (attention) mehhanismi, kasutades maske, et õigesti töödelda erineva pikkusega järjestusi ja vältida tähelepanu ebasoovitavatele positsioonidele.
-
Key Padding Mask — mask, mis näitab, millised positsioonid järjestuses on täiteained (padding), et mudel neid tähelepanu arvutamisel ei arvestaks. Tavaliselt on see loogiline tensor, kus True tähistab täiteaine positsiooni. Seda rakendatakse võtmetele (keys) ja väärtustele (values) tähelepanu mehhanismis, et ignoreerida täiteaine tokenid.
-
Attention Mask — üldisem mask, mis kontrollib, millised positsioonid võivad mõjutada praegust positsiooni tähelepanu arvutamisel. Näiteks teksti automaatgeneraatorite ülesannetes kasutatakse maski, mis keelab vaadata tulevasi tokenid, vältimaks teabe lekkimist. Selline mask võib olla kolmnurkne maatriks, kus on keelatud teatud ühendused.
Näide:
import torch
from torch.nn import MultiheadAttention
# Oletame, et meil on järjestus täiteainetega
key_padding_mask = torch.tensor([[False, False, True, True]]) # True tähistab täiteainet
# Tähelepanu mask, mis väldib tähelepanu tulevastele tokenitele
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool() # Ülalõike mask
mha = MultiheadAttention(embed_dim=8, num_heads=2)
query = torch.rand(4, 1, 8) # (järjestuse pikkus, partii, embed dim)
key = value = query
output, attn_weights = mha(query, key, value, attn_mask=attn_mask, key_padding_mask=key_padding_mask)
Seega kasutatakse key padding maski, et ignoreerida täiteaine tokenid, ning attention maski, et kontrollida tähelepanu struktuuri (näiteks takistada tähelepanu tulevastele positsioonidele).