Ի՞նչ է key padding mask-ը և attention mask-ը PyTorch-ում։
sobes.tech AI
Պատասխան AI-ից
PyTorch-ում, երբ աշխատում եք փոխակերպիչների և ուշադրության (attention) հետ, հաճախ օգտագործվում են դիմակներ՝ ճիշտ կերպով մշակելու տարբեր երկարության հաջորդականությունները և կանխելու անպատշաճ դիրքերին ուշադրություն դարձնելը:
-
Key Padding Mask: սա այն դիմակն է, որը ցույց է տալիս, թե որ դիրքերը հաջորդականության մեջ լրացուցիչ (padding) են, որպեսզի մոդելը դրանք հաշվի չառնվի ուշադրության հաշվարկի ժամանակ: Հաճախ, դա բուլյան տենզոր է, որտեղ True նշանակում է լրացուցիչ դիրք: Այս դիմակը կիրառվում է ուշադրության մեխանիզմում բանալիների (keys) և արժեքների (values) վրա՝ անտեսելու լրացուցիչ տեքստերը:
-
Attention Mask: ավելի ընդհանուր դիմակ է, որը վերահսկում է, թե որ դիրքերը կարող են ազդել ընթացիկ դիրքի վրա ուշադրության հաշվարկի ժամանակ: Օրինակ, ավտոմատ տեքստի սերնդի խնդիրներում օգտագործվում է mask, որը արգելում է նայել առաջ (futures tokens), որպեսզի կանխվի տեղեկատվության արտահոսքը: Այս mask-ը կարող է լինել եռանկյունային մաթրից, որտեղ որոշ կապեր արգելված են:
Օրինակ:
import torch
from torch.nn import MultiheadAttention
# Ենթադրենք, որ ունենք հաջորդականություն, որը լրացվել է
key_padding_mask = torch.tensor([[False, False, True, True]]) # True լրացուցիչի համար
# Attention mask, որը արգելում է նայել առաջ
attn_mask = torch.triu(torch.ones(4, 4), diagonal=1).bool() # վերին եռանկյունային mask
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-ը օգտագործվում է լրացուցիչ տեքստերը անտեսելու համար, իսկ attention mask-ը՝ ուշադրության կառուցվածքը վերահսկելու համար (օրինակ, կանխելու համար ուշադրություն դարձնել ապագա դիրքերին):