Трансформеры
Кратко
Трансформер (transformer) — архитектура нейросети, основанная целиком на механизме внимания: в ней нет ни рекуррентности, ни свёрток. Предложена в 2017 году в статье Google «Attention Is All You Need» для машинного перевода и с тех пор стала фундаментом больших языковых моделей — GPT, BERT и их наследников.
Для чего используется
- машинный перевод — первая задача архитектуры: 28,4 BLEU на WMT 2014 (англо-немецкий), на 2 с лишним пункта выше прежних результатов;
- языковые модели: генерация текста, ответы на вопросы, суммаризация;
- понимание текста: классификация, поиск именованных сущностей;
- за пределами текста — мультимодальные модели и модели для робототехники (темы следующих статей раздела).
Как работает
Проблема рекуррентных сетей: последовательность обрабатывается токен за токеном, и вычисления нельзя распараллелить, а информация о далёких токенах постепенно затухает. Трансформер решает обе проблемы механизмом самовнимания (self-attention): каждый элемент последовательности напрямую «смотрит» на все остальные.
Технически внимание оперирует тремя матрицами — Query (запрос), Key (ключ) и Value (значение): для каждого токена скалярные произведения его запроса с ключами остальных токенов после нормировки дают веса, с которыми суммируются значения. Аналогия — поиск по картотеке: запрос сравнивается с ярлыками карточек (ключами), и содержимое подходящих карточек (значения) смешивается пропорционально совпадению.
Блок трансформера состоит из двух частей, соединённых остаточными связями и нормализацией:
- multi-head attention — несколько «голов» внимания параллельно смотрят на последовательность с разных сторон;
- feed-forward — два полносвязных слоя, применяемых к каждому элементу независимо.
Порядок слов сам по себе механизму внимания не виден, поэтому к эмбеддингам токенов добавляется позиционное кодирование — фиксированное (тригонометрическое) или обучаемое.
Обучение крупных трансформеров идёт по схеме «предобучение + дообучение»: сначала самообучение (self-supervised) на больших корпусах текста без разметки, затем дообучение (fine-tuning) под конкретную задачу — оно требует на порядки меньше данных и ресурсов.
Основные компоненты
Три семейства моделей по устройству:
- encoder-only (тип BERT) — двунаправленное внимание, задачи понимания входа: классификация, поиск сущностей;
- decoder-only (тип GPT) — внимание с маскированием будущих токенов, генерация текста;
- encoder-decoder (тип T5) — генерация по входу: перевод, суммаризация.
Примеры
- Оригинальный трансформер (Vaswani et al., 2017) обучен за 3,5 дня на восьми GPU — быстрее рекуррентных моделей при лучшем качестве.
- GPT (июнь 2018) — первая предобученная трансформерная модель для дообучения под задачи; GPT-3 (май 2020) показала работу без дообучения (zero-shot).
- BERT (октябрь 2018) — предобучение задачей masked language modeling: модель учится восстанавливать замаскированные слова, учитывая контекст с обеих сторон; state-of-the-art на 11 задачах NLP (GLUE 80,5 %).
- T5 (октябрь 2019) — универсальная encoder-decoder модель «всё как текст».
Связанные темы
Источники
- Attention Is All You Need (Vaswani et al., 2017) — архитектура, результаты перевода, вычислительная эффективность.
- Учебник по машинному обучению (ШАД, Яндекс) — устройство блока, Q/K/V, позиционное кодирование, сравнение с RNN.
- Hugging Face LLM Course — семейства моделей, предобучение и дообучение, хронология.
- BERT (Devlin et al., 2018) — двунаправленное предобучение, masked LM, результаты.