Курс даёт единую математическую основу глубинного обучения (представление сети как вычислительного графа, обратное распространение ошибки, стохастическая оптимизация, регуляризация) и затем последовательно разбирает основные семейства архитектур: полносвязные и свёрточные сети, рекуррентные сети, трансформеры и
большие языковые модели, генеративные модели (автокодировщики, GAN, диффузионные модели). Отдельный блок посвящён обучению представлений, переносу обучения и практике: как оценивать, ускорять, сжимать и интерпретировать модели, чтобы их можно было использовать в реальных системах.
Каждая тема сопровождается практическим занятием, на котором студенты реализуют изучаемые компоненты сначала «с нуля» (NumPy), а затем на PyTorch, и домашними заданиями, воспроизводящими типичные инженерные задачи: обучение классификатора, дообучение предобученной модели, реализация трансформера, обучение генеративной модели. Курс завершается письменным экзаменом по теоретическому материалу.
Дисциплина является дисциплиной по выбору. Для освоения необходимы компетенции, полученные в курсах «Машинное обучение», «Методы оптимизации», «Линейная алгебра», «Теория вероятностей», а также уверенное владение Python.
Цель освоения дисциплины
Сформировать у студентов целостное понимание математических принципов работы глубоких нейронных сетей и практические навыки их проектирования, обучения, оценки и применения к задачам компьютерного зрения, обработки текстов и генеративного моделирования с использованием современных программных инструментов (PyTorch и экосистема).
Планируемые результаты обучения
Реализует прямой и обратный проход полносвязной сети без использования
фреймворка и проверяет корректность градиентов численно.
Воспроизводит тот же эксперимент средствами PyTorch и объясняет соответствие
между ручной и автоматической реализацией.
Выписывает правила обновления SGD, momentum, Adam/AdamW и объясняет роль
каждого гиперпараметра.
Выводит формулы инициализации Xavier/He из условия сохранения дисперсии
активаций.
Подбирает расписание скорости обучения и схему регуляризации под конкретную
задачу и обосновывает выбор экспериментально.
Диагностирует переобучение, недообучение и нестабильность градиентов по
кривым обучения и устраняет их.
Рассчитывает размеры выходов, число параметров и рецептивное поле для заданной
свёрточной архитектуры.
Реализует свёрточный слой и обратное распространение через него без фреймворка.
Проектирует и обучает свёрточную сеть для классификации, дообучает
предобученную модель на новых данных.
Применяет готовые модели детекции и сегментации, интерпретирует и вычисляет
метрики IoU, mAP, Dice.
Обучает и анализирует векторные представления слов, объясняет целевую функцию
skip-gram с negative sampling.
Реализует рекуррентную ячейку и обратное распространение через время; объясняет
причину затухания градиентов и роль гейтов LSTM/GRU.
Обучает языковую модель, рассчитывает перплексию и применяет разные стратегии
декодирования.
Реализует seq2seq-модель с вниманием и объясняет, какую проблему решает
внимание.
Реализует механизм multi-head self-attention и блок трансформера; выписывает
формулы и объясняет назначение каждого компонента.
Рассчитывает вычислительную сложность и объём памяти внимания в зависимости
от длины последовательности.
Различает encoder/decoder/encoder-decoder модели и подбирает подходящую под
задачу.
Дообучает предобученную языковую или визуальную модель полностью и с
помощью LoRA; сравнивает подходы по качеству и стоимости.
Применяет CLIP-подобную модель для zero-shot классификации и объясняет
контрастивную целевую функцию.
Реализует контрастивную целевую функцию и оценивает качество представлений
линейным пробингом.
Применяет дистилляцию, квантизацию и прунинг к обученной модели; измеряет
компромисс между точностью, размером и латентностью.
Организует воспроизводимый эксперимент с логированием и статистически
обоснованным сравнением моделей.
Выводит ELBO и объясняет каждую его компоненту; реализует VAE с
reparameterization trick.
Выписывает прямой и обратный процессы диффузионной модели и целевую
функцию DDPM; реализует и обучает упрощённую диффузионную модель.
Сравнивает VAE, GAN и диффузионные модели по качеству, разнообразию и
стоимости семплирования с использованием FID.
Содержание учебной дисциплины
Раздел 1. Основы глубинного обучения: от линейной модели к глубокой сети
Практические занятия: (1) реализация полносвязной сети и backprop на NumPy с
проверкой градиентов конечными разностями; (2) тот же эксперимент на PyTorch:
nn.Module, autograd, DataLoader, цикл обучения.
Раздел 2. Оптимизация и регуляризация глубоких сетей
Практические занятия: (1) реализация SGD/momentum/Adam «с нуля», сравнение на
одной задаче, визуализация траекторий; (2) эксперименты с BatchNorm, dropout,
аугментациями и расписаниями LR на CIFAR-10; подбор гиперпараметров.
Раздел 3. Свёрточные нейронные сети и компьютерное зрение
Практические занятия: (1) реализация свёрточного слоя и его градиента на NumPy,
обучение небольшой CNN на PyTorch; (2) дообучение ResNet на своём датасете,
аугментации, анализ ошибок; (3) сегментация с U-Net и запуск предобученного
детектора, расчёт mAP/IoU.
Раздел 4. Обработка последовательностей: эмбеддинги и рекуррентные сети
Практические занятия: (1) обучение word2vec, анализ ближайших соседей и аналогий;
реализация RNN-ячейки и BPTT на NumPy; (2) LSTM-языковая модель на символах/
токенах на PyTorch, генерация текста, измерение перплексии, seq2seq с вниманием.
Раздел 5. Трансформеры и большие предобученные модели
Практические занятия: (1) реализация блока трансформера и обучение маленькой GPTмодели на PyTorch; (2) дообучение BERT/ViT на задачу классификации с помощью
Hugging Face, сравнение полного дообучения и LoRA по качеству и числу обучаемых
параметров.
Раздел 6. Генеративные модели
Практические занятия: (1) реализация и обучение VAE на MNIST/CelebA, визуализация
латентного пространства, интерполяции; (2) обучение DCGAN и упрощённой DDPM на
том же датасете, сравнение образцов и FID.
Раздел 7. Обучение представлений и практика применения глубоких моделей
Практические занятия: (1) контрастивное предобучение (SimCLR) на небольшом
датасете и линейная оценка представлений; metric learning для задачи верификации; (2)
дистилляция и квантизация обученной модели, измерение точности/латентности/
размера; Grad-CAM для анализа ошибок.
Элементы контроля
Домашнее задание № 1
Домашнее задание № 2
Домашнее задание № 3
Домашнее задание № 4
Экзамен
Письменный экзамен, 120 минут. Билет содержит два теоретических вопроса из перечня
(по одному из разделов 1–3 и 4–7) и одну задачу на вывод/расчёт. Пользоваться
материалами нельзя. К экзамену допускаются студенты, у которых зачтены все четыре
домашних задания. Оценка за экзамен является итоговой оценкой по
дисциплине.
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы