Что такое causal mask и как он реализуется на уровне attention scores?

Causal mask (каузальная маска) используется в трансформерах для предотвращения утечки информации из будущих позиций при генерации последовательности.

Короткий ответ

Что ответить на собеседовании

Causal mask (каузальная маска) используется в трансформерах для предотвращения утечки информации из будущих позиций при генерации последовательности. Это важно в задачах автогенерации текста, где модель не должна видеть будущие токены при предсказании текущего.

Подробный разбор

Ответ с пояснениями

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)

Таким образом, модель может учитывать только текущий и предыдущие токены, исключая будущие.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее