Этот раздел закрепляет на практике понимание архитектуры "трансформер", которая была предложена группой исследователей из Google в 2017 году в статье Attention Is All You Need.
Трансформер и его модификации получили широкое распространение в задачах NLP (BERT, ALBERT, RoBERTa, GPT, GPT-2, GPT-3, ruGPT-3, Turing-NLG, Switch Transformer, EFL, Reformer, T5 и много других). Языковые модели, основанные на трансформерах, способны генерировать тексты, почти неотличимые от написанных человеком. Трансформеры также начинают активно использоваться в компьютерном зрении (ViT, HRNet, SwinIR и др., см. также здесь и здесь), в мультимодальных сетях, связанных одновременно с изображениями и текстом (CLIP, DALL-E, Wu Dao и др.), и даже в предсказании структуры белков (AlphaFold2). Более того, есть работа, показывающая, что трансформер может претендовать на роль универсальной архитектуры для одновременного решения самых разных задач.
Мы пока не изучаем различные модификации трансформера, а изучаем только его оригинальный вариант. Для повторения теории вы можете использовать следующие материалы:
- Материалы обучающего модуля курса NLP-инженер
- Научную статью Attention Is All You Need (англ.)
- Статью The Illustrated Transformer (англ.) и перевод на Хабре
- Часть обучающего курса про трансформеры от Лены Войты (англ.)
- Практику по трансформерам от UvA Deep Learning Tutorials (англ.)
- Экспертов поддержки в Slack, которым без вас скучно :)
Вы также можете прочитать Детальное описание устройства трансформера от автора данного раздела.
Трансформер - непростая архитектура, и перед тем, как переходить к практике построения трансформеров, рекомендуется хорошо изучить принцип их устройства. Давайте повторим теорию.
Примечание: мы будем говорить о "стандартном" трансформере - в том виде, в каком он описан в обучающем модуле и в статье Attention Is All You Need.
Выберите верные утверждения:
- Энкодер трансформера принимает на вход последовательность векторов (имеется в виду один пример в батче)
- Энкодер трансформера выдает массив того же размера, что и получил на вход
- Декодер трансформера выдает меньше векторов, чем принял на вход
- В декодере трансформера 7-й входной вектор никак не влияет на 5-й выходной вектор
Ответы: да, да, нет, да
Какие из перечисленных низкоуровневых операций используются в трансформере?
- Матричное умножение
- Скалярное произведение
- Функция активации ReLU
- Функция softmax
Ответы: да, да, да, да
Механизм scaled dot-product attention принимает на вход одновременно три массива: запросы Q, ключи K и значения V. Выберите верные утверждения:
Примечание: теорию см. здесь.
- Размерность ключа равна размерности значения
- Размерность значения равна размерности запроса
- Размерность запроса равна размерности ключа
- Количество ключей равно количеству значений
- Количество значений равно количеству запросов
- Количество запросов равно количеству ключей
Ответы: нет, нет, да, да, нет, нет
Теперь давайте перейдем к написанию кода. Вам предлагается поработать с ноутбуком, в котором есть три смысловые части:
- Изучаем scaled dot-product attention
- Изучаем блок трансформера
- Изучаем трансформер целиком (только энкодер) и пробуем его обучать
В ноутбуке есть ответы ко всем заданиям :)
Скачать ноутбук
В следующем модуле вы узнаете о том, как на основе трансформеров обучают языковые модели, где можно взять готовые модели для использования и как их можно дообучать для генерации разнообразных текстов.