Sobes.tech
Middle — Senior

Ի՞նչ է 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-ը՝ ուշադրության կառուցվածքը վերահսկելու համար (օրինակ, կանխելու համար ուշադրություն դարձնել ապագա դիրքերին):