Курс даёт единую математическую основу глубинного обучения (представление сети как вычислительного графа, обратное распространение ошибки, стохастическая оптимизация, регуляризация) и затем последовательно разбирает основные семейства архитектур: полносвязные и свёрточные сети, рекуррентные сети, трансформеры и
большие языковые модели, генеративные модели (автокодировщики, 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) и одну задачу на вывод/расчёт. Пользоваться
материалами нельзя. К экзамену допускаются студенты, у которых зачтены все четыре
домашних задания. Оценка за экзамен является итоговой оценкой по
дисциплине.
Глубокое обучение - 978-5-496-02536-2 - Николенко С., Кадурин А., Архангельская Е. - 2019 - Санкт-Петербург: Питер - https://ibooks.ru/products/356955 - 356955 - iBOOKS
Гудфеллоу, Я. Глубокое обучение / Я. Гудфеллоу, И. Бенджио, А. Курвилль , перевод с английского А. А. Слинкина. — 2-е изд. — Москва : ДМК Пресс, 2018. — 652 с. — ISBN 978-5-97060-618-6. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/107901 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Глубокое обучение. - 978-5-4461-1537-2 - Николенко С., Кадурин А., Архангельская Е. - 2020 - Санкт-Петербург: Питер - https://ibooks.ru/products/377026 - 377026 - iBOOKS
Мэрфи, К. П. Вероятностное машинное обучение. Дополнительные темы: основания, вывод : руководство / К. П. Мэрфи , перевод с английского А. А. Слинкина. — Москва : ДМК Пресс, 2024. — 770 с. — ISBN 978-5-93700-120-7. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/456758 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы