Transformer и attention: как модель связывает части контекста
Transformer обрабатывает последовательность через повторяющиеся блоки attention и преобразований признаков. Attention позволяет каждому положению вычислять взвешенную смесь…
Краткий ответ
Transformer обрабатывает последовательность через повторяющиеся блоки attention и преобразований признаков. Attention позволяет каждому положению вычислять взвешенную смесь информации из разрешённых позиций.
Transformer обрабатывает последовательность через повторяющиеся блоки attention и преобразований признаков. Attention позволяет каждому положению вычислять взвешенную смесь информации из разрешённых позиций. Это не «внимание» в психологическом смысле и не готовое объяснение решения, а дифференцируемая операция над векторами.
Запросы, ключи и значения
Для каждого входного представления слой вычисляет три вектора: query, key и value. Сходство query текущего положения с ключами других положений превращается в веса после масштабирования и softmax. Выход — взвешенная сумма векторов value.
Query можно понимать как запрос текущей позиции, key — как признак для сопоставления, value — как передаваемое содержимое. Это полезная инженерная аналогия, но веса обучаются, а не задаются словарными правилами. Высокий вес показывает сильный вклад в конкретной голове и слое, но сам по себе не доказывает причинное объяснение ответа.
Multi-head и последовательность блоков
Multi-head attention запускает несколько наборов проекций параллельно. Разные головы могут специализироваться на разных отношениях, но у каждой нет обязательной заранее заданной роли. Их выходы объединяются и снова проецируются.
После attention обычно работает позиционно-независимая feed-forward сеть. Residual-связи помогают передавать сигнал через глубину, нормализация стабилизирует оптимизацию. Повторение блоков позволяет строить всё более контекстные признаки. Большая часть параметров Transformer находится не только в attention, но и в матрицах проекций, feed-forward слоях и эмбеддингах.
Порядок и причинная маска
Обычный self-attention без дополнительной информации не различает перестановку элементов. Поэтому модель получает позиционное кодирование. В современных системах используются разные схемы, включая обучаемые позиции и вращательные представления RoPE; у каждой есть ограничения при переносе на длины, отличающиеся от обучения.
Авторегрессионный decoder применяет causal mask: позиция не должна видеть будущие токены целевого текста. Во время обучения все позиции можно вычислять параллельно с маской, но при генерации следующий токен появляется только после предыдущего. Эта последовательность объясняет заметную стоимость длинного ответа.
Квадратичная стоимость и оптимизации
Матрица обычного attention содержит пары позиций, поэтому вычислительная и память-зависимая стоимость растёт примерно квадратично с длиной последовательности. Это не значит, что вся модель всегда имеет строго одну и ту же асимптотику: существуют локальные, разреженные и линейные варианты, а точные реализации вроде FlashAttention сокращают обмен с памятью без изменения математического результата attention.
Длинное заявленное окно контекста не гарантирует одинаково хорошее использование каждого токена. Архитектура, позиционное обучение, данные и тестирование длинных зависимостей остаются важны.
Мысленный эксперимент с местоимением
Рассмотрите фразу: «Мария положила книгу на стол, потому что она была тяжёлой». Для местоимения «она» выпишите возможные источники: Мария, книга, стол. Представьте три attention-head: одна сравнивает грамматическое согласование, другая — типичные причинные связи, третья — расстояние.
Поменяйте «тяжёлой» на «шатким» и проследите, как вероятные связи меняются. Эксперимент показывает, почему контекстное представление формируется сочетанием сигналов, а не одним правилом. Он не доказывает, что конкретная реальная модель использует именно такие головы.
Частые вопросы
Attention хранит факты модели?
Фактические и языковые зависимости распределены по параметрам многих компонентов. Attention маршрутизирует контекст во время прохода, но не является отдельной базой знаний.
Можно ли считать attention-карту объяснением ответа?
Её можно исследовать как один диагностический сигнал. Однако веса не всегда совпадают с причинным вкладом, а итог проходит через множество голов, residual-связей и нелинейных слоёв.
Почему Transformer генерирует токены последовательно, если обучается параллельно?
При обучении правильные предыдущие токены уже известны, поэтому masked-предсказания считаются сразу для многих позиций. При выводе следующий правильный токен неизвестен: его нужно выбрать, добавить в контекст и только затем продолжить.
Что важно запомнить
- Attention вычисляет веса взаимодействия query, key и value, а не человеческое «внимание».
- Multi-head, feed-forward слои, residual-связи и нормализация совместно образуют блок Transformer.
- Causal mask запрещает авторегрессионной модели использовать будущие токены.
- Длинный контекст дорог, а заявленный размер окна не равен гарантированной способности использовать все его части.
https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-03