Что дает понимание контекста трансформерами
Что проверяют
Понимаете ли вы, чем контекстное представление слова отличается от статического вектора, и за счёт какого механизма оно получается. Вопрос отсеивает тех, кто знает названия моделей, но не знает, что внутри них считается.
Как отвечать
Начните с того, что меняется по сравнению с предыдущим поколением. В word2vec или GloVe у слова один вектор на все случаи жизни: «замок» в тексте про архитектуру и в тексте про дверь получает одно и то же представление. Трансформер выдаёт вектор токена, пересчитанный по всему окружению, поэтому одинаковые токены в разных предложениях получают разные представления.
Дальше механизм. Self-attention строит для каждого токена три проекции: запрос, ключ, значение. Схожесть запроса с ключами даёт веса, по ним суммируются значения, и токен собирает информацию с любой позиции за один шаг. Практические следствия:
- зависимость на сто токенов назад стоит столько же, сколько на соседний, у рекуррентной сети сигнал по пути затухает;
- вся последовательность считается параллельно, обучение упирается в матричные умножения, а не в последовательный проход;
- порядок сам по себе модели не виден, его добавляют позиционные кодировки;
- внимание квадратично по длине, отсюда ограничение на размер окна.
Полезно назвать разницу режимов: двунаправленное внимание видит контекст слева и справа и годится для классификации и поиска, каузальная маска закрывает будущее и нужна для генерации.
Где спотыкаются
Говорят «трансформер понимает смысл». Он оценивает статистическую связанность токенов, никакой модели мира внутри внимания нет, и на следующий вопрос про галлюцинации после такой фразы вы не ответите.
Второе: путают контекстное окно с памятью. Модель ничего не помнит между вызовами, весь контекст подаётся на вход заново, и длина окна это ограничение одного прохода, а не объём знаний.
Третье: не могут сказать, откуда берётся порядок слов. Без позиционных кодировок внимание симметрично к перестановке, и перемешанное предложение дало бы тот же результат.