Sobes.tech
Middle — Senior

რა არის key padding mask და attention mask PyTorch-ში?

sobes.tech AI

პასუხი AI-სგან

PyTorch-те, трансформаторлар мен назар (attention) менен иштегенде, туура иштеши үчүн ар түрдүү узундуктагы тизмектердин жана керексиз орундарга көңүл бурбоо үчүн маскалар колдонулат.

  • Key Padding Mask: бул маска, тизмектеги кайсы орундар padding (толтуруу) экенин көрсөтөт; модел аларды назар эсептөөсүндө эске албашы үчүн. Адатта, True болсо padding орунду билдирет. Бул маска назар механизминин ичинде ачкычтарга (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 назар түзүмүн көзөмөлдөө үчүн (мисалы, келечек позицияларына көңүл бурбоо үчүн) колдонулат.