Модуль 3. Базовый Transformer
Сначала попробуйте решить упражнение. Ответы, подробные решения и проектные ориентиры раскрываются отдельно и сохраняют своё состояние при переключении RU/EN.
Скачать файлы курса (.zip) 2588,1 КБАрхив содержит файлы на обоих языках и вспомогательные материалы с сохранением структуры каталогов.
Упражнение 1. Softmax по правильной оси
Дан scores формы [B, h, T_q, T_k] = [2, 4, 3, 5].
-
Какую форму имеет
weights? -
Какая сумма должна быть равна единице?
-
Что произойдёт при
softmax(dim=-2)?
Показать ответ и решение
Решение. Форма остаётся [2,4,3,5]. Для каждого фиксированного (b, head, query) сумма по последней оси ключей равна 1. dim=-2 нормирует три query-позиции для каждого ключа; код выполнится, но операция больше не соответствует attention.
Упражнение 2. Масштабирование dot product
Пусть , координаты независимы, имеют нулевое среднее и единичную дисперсию. Оцените дисперсию до и после масштабирования.
Показать ответ и решение
Решение. При указанных предположениях дисперсия до масштабирования равна 64, а после деления на равна . Ноутбук оценивает дисперсии на 50 000 случайных пар с seed=18 и проверяет отклонение не более 8%; конкретные эмпирические значения печатаются при запуске.
Упражнение 3. Attention руками
Для матриц из §4.5 восстановите вторую строку выхода каузального внимания.
Показать ответ и решение
Решение. Логиты [0,0.707], softmax [0.330238,0.669762]. Поэтому
Упражнение 4. LayerNorm
Нормируйте при , , .
Показать ответ и решение
Решение. , , стандартное отклонение . Ответ:
Упражнение 5. Параметры слоя
Для , посчитайте веса MHA и FFN без смещений.
Показать ответ и решение
Решение. MHA: . FFN: . Вместе ; доля FFN равна .
Упражнение 6 [проект]. Поймайте утечку будущего
Реализуйте блок decoder с каузальной маской и без неё. Возьмите две последовательности, одинаковые на первых трёх позициях и разные на четвёртой. Сравните логиты первых трёх позиций.
Демо и критерии проекта
Ожидаемый результат. С маской логиты совпадают до численной погрешности. Без маски хотя бы часть ранних логитов различается. Ноутбук модуля содержит воспроизводимый вариант этого теста.
Упражнение 7 [проект]. Нарисуйте блок по памяти
На пустом листе восстановите:
-
полный слой encoder;
-
полный слой decoder оригинала;
-
decoder-only блок с нормализацией перед подслоями.
Для каждой стрелки подпишите форму тензора. Затем сравните с VIZ 02 и VIZ 08.
Демо и критерии проекта
Критерий готовности. Вы не забыли отдельный Add & Norm после каждого подслоя, указали cross-attention из decoder и из encoder и сохранили в остаточном потоке.
Упражнение 8 [проект]. Мини-языковая модель
Оберните один DecoderBlock токенными и позиционными эмбеддингами на входе, финальной нормой и проекцией словаря на выходе. Обучите её воспроизводить маленькую периодическую последовательность. Проверьте:
- потеря снижается;
- сгенерированное продолжение повторяет закономерность;
- проверка независимости от будущего проходит;
- удаление каузальной маски открывает доступ к правильному следующему токену; это утечка, даже если потеря на простом периоде снизилась не сильнее.
Демо и критерии проекта
Граница вывода. Следующий токен этого периода определяется одним предыдущим: успех не доказывает необходимость внимания или умение использовать длинный контекст. Опыт проверяет обучение и генерацию на простой задаче, без отдельной проверки обобщения.