Data Science и Machine LearningNLPAttention
Готовим следующую карточку…
С подвохомСредняя
Вопрос

В батче последовательности дополнены до общей длины. Найдите ошибку в реализации attention: почему она меняет масштаб выхода для коротких последовательностей и как исправить её так, чтобы padded-позиции не влияли на нормировку весов?

import torch

q = torch.randn(2, 4, 8)
k = torch.randn(2, 4, 8)
v = torch.randn(2, 4, 8)
key_valid = torch.tensor([[1, 1, 1, 1], [1, 1, 0, 0]], dtype=torch.bool)

scores = q @ k.transpose(-2, -1)
weights = torch.softmax(scores, dim=-1)
weights = weights * key_valid[:, None, :]
out = weights @ v

Смахните карточку влево, чтобы повысить рейтинг, или вправо, чтобы понизить.

Восстановление доступа