Что показывает вектор внимания в трансформерах?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
Вектор внимания показывает, на какие элементы входной последовательности модель обращает больше внимания при вычислении представления текущего токена. По сути, это распределение весов важности по всем позициям. Эти веса помогают модели выбирать, какая информация из контекста будет сильнее влиять на результат.
Определение:
Вектор внимания в трансформере — это набор коэффициентов, который отражает степень связи между текущим токеном и другими токенами последовательности. Обычно эти коэффициенты после нормализации суммируются в 1 и используются для взвешенного суммирования значений (value vectors). Чем больше вес, тем сильнее соответствующий токен влияет на итоговое представление.
Пример использования:
При переводе предложения модель может при обработке слова "он" сильнее учитывать предыдущее слово "инженер", чем более далёкие и менее релевантные слова. Тогда вектор внимания для "он" будет иметь больший вес на позиции с "инженер" и меньшие веса на остальных позициях.
import numpy as np
scores = np.array([2.0, 0.5, 1.0]) # "важность" трех токенов
weights = np.exp(scores) / np.exp(scores).sum()
values = np.array([
[1.0, 0.0], # токен 1
[0.0, 1.0], # токен 2
[2.0, 1.0], # токен 3
])
context = weights @ values
print(weights)
print(context)
В этом примере weights и есть вектор внимания: он показывает, какие токены важнее. Затем по этим весам строится итоговый контекстный вектор context.
Пояснение кода:
scores— это сырые оценки релевантности токенов.np.exp(scores) / np.exp(scores).sum()— softmax, который превращает оценки в вероятностное распределение.weightsпоказывает относительную важность каждого токена.values— векторы информации, которые нужно агрегировать.weights @ values— взвешенная сумма, дающая контекстное представление.
Ключевые моменты:
- Вектор внимания показывает, какие токены важнее для текущего токена.
- Это не сами признаки, а веса влияния между элементами последовательности.
- После softmax веса обычно образуют распределение и суммируются в 1.
- Внимание помогает модели учитывать дальний контекст и связи между словами.
- В multi-head attention таких векторов несколько, и они могут ловить разные типы зависимостей.