← Вернуться к списку

Когда мы применяем маску к нашим заполненным значениям в механизмах внимания?

Краткое содержание

Когда мы накладываем маску на заполненные значения в входной последовательности, это обычно делается путем установки заполненных значений как отрицательной бесконечности. Например, тензор значений [1,2,3,0,0] должен привести к маске заполнения pad_mask = [True, True, True, False, False] (или наоборот в зависимости от вашего стиля). Однако если мы применяем маску, например attention_scores = attention_scores.masked_fill_(pad_mask.T == False, float('-inf')), перед применением softmax, не получим ли мы 'nan' для 4-й и 5-й строки attention_scores при попытке softmax вычислить распределение вероятностей по каждой строке? Значит ли это, что шаг применения маски неправильный, и нам следует применять нулевое заполнение строк токенов заполнения в матрице attention_score после применения функции softmax? Или я упускаю какую-то ключевую концепцию/шаг здесь?

Полный текст статьи пока не загружен.