Что такое causal mask и как он реализуется на уровне attention scores?
Answer from AI
sobes.tech AI
Causal mask (каузальная маска) используется в трансформерах для предотвращения утечки информации из будущих позиций при генерации последовательности. Это важно в задачах автогенерации текста, где модель не должна видеть будущие токены при предсказании текущего.
На уровне attention scores каузальная маска реализуется как верхнетреугольная матрица с элементами, которые запрещают внимание на будущие позиции. Обычно это делается путем добавления большого отрицательного числа (например, -∞ или очень маленького значения) к attention scores для тех позиций, которые находятся правее текущей, перед применением softmax. Это обнуляет вероятность внимания на будущие токены.
Пример (псевдокод):
import torch
seq_len = 5
# Создаем маску: 1 для разрешенных позиций, 0 для запрещенных
causal_mask = torch.tril(torch.ones(seq_len, seq_len))
# attention_scores - матрица (seq_len x seq_len)
# Добавляем маску: запрещенные позиции получают -inf
masked_scores = attention_scores.masked_fill(causal_mask == 0, float('-inf'))
# Затем softmax по последнему измерению
attention_weights = torch.softmax(masked_scores, dim=-1)
Таким образом, модель может учитывать только текущий и предыдущие токены, исключая будущие.