Курс "Глубокое обучение"
(2023 г.)
В курсе рассматриваются следующие вопросы (в скобках указано время, на которое рассчитан материал):
Введение в глубокое обучение.
Многослойные полностью связанные нейронные сети.
Сверточные нейронные сети.
Классификация изображений с большим числом категорий с использованием методов глубокого обучения.
Обучение без учителя: автокодировщики, ограниченные машины Больцмана.
Семантическая сегментация изображений с использованием методов глубокого обучения.
Детектирование объектов на изображениях с использованием методов глубокого обучения.
Рекуррентные нейронные сети.
Генерация синтетических данных с использованием генеративных состязательных сетей.
Материалы лекций*
Лекция 1. Введение в глубокое обучение.
(Презентация, Текстовое описание)
Лекция 2. Многослойные полностью связанные нейронные сети.
(Презентация, Текстовое описание)
Лекция 3. Сверточные нейронные сети.
(Презентация, Текстовое описание)
Лекция 4. Классификация изображений с большим числом категорий с использованием методов глубокого обучения.
(Презентация, Текстовое описание)
Лекция 5. Обучение без учителя: автокодировщики, ограниченные машины Больцмана.
(Презентация, Текстовое описание)
Лекция 6. Семантическая сегментация изображений с использованием методов глубокого обучения.
(Презентация, Текстовое описание)
Лекция 7. Детектирование объектов на изображениях с использованием методов глубокого обучения.
(Презентация, Текстовое описание)
Лекция 8. Рекуррентные нейронные сети.
(Презентация, Текстовое описание)
Лекция 9. Генерация синтетических данных с использованием генеративных состязательных сетей.
(Презентация, Текстовое описание)
Материалы практических занятий и мастер-классов
Практика 1. Обзор инструментов глубокого обучения с демонстрацией небольших примеров.
(Презентация, Текстовое описание)
Практика 2. Выбор одного инструмента и разбор всех этапов от загрузки данных до тестирования обученной модели.
(Презентация, Текстовое описание)
Перечень практических работ
Практическая работа 1. Разработка сверточной нейронной сети с использованием MXNet или PyTorch на примере задачи классификации изображений (пример постановки задачи для данных Cifar-10 приведен ниже).
Решается задача классификации изображений на наборе данных Cifar-10. Разработайте сверточную нейронную сеть, которая решает поставленную задачу классификации, с использованием библиотеки PyTorch или MXNet в Jupiter notebook. Подберите оптимальную архитектуру и параметры сети, а также параметры алгоритма обучения.
Последовательность действий, которую должен реализовывать скрипт:
Загрузка данных. Необходимо обеспечить демонстрацию избранных изображений и меток классов для подтверждения корректности загрузки.
Построение архитектуры сверточной сети. Требуется вывести информацию об архитектуре, возможно выполнить визуализацию графа сети.
Обучение модели. Необходимо вывести информацию о параметрах алгоритма обучения. Также по завершении каждой эпохи следует обеспечить вывод точности классификации на тренировочной выборке, а по завершении обучения - вывод общего времени обучения.
Тестирование модели. Необходимо обеспечить вывод точности классификации на тестовой выборке, по завершении тестирования - вывод среднего времени классификации одного изображения.
Максимальное количество баллов - 30 баллов:
По 5 баллов за реализацию и подтверждение корректности каждого этапа реализованной последовательности действий.
10*<точность> за достигнутые результаты качества классификации, где <точность> - точность классификации, полученная на тестовой выборке на последнем этапе реализации.
Практическая работа 2. Перенос обучения. Применение переноса обучения к классификации изображений (пример постановки задачи для данных Cifar-10 приведен ниже).
Решается задача классификации изображений на наборе данных Cifar-10. Примените перенос обучения для решения поставленной задачи классификации с использованием библиотеки PyTorch или MXNet в Jupiter notebook. Выбор библиотеки обусловлен тем, какой инструмент был использован при выполнении предшествующей работы. Подберите оптимальную архитектуру и параметры сети, а также параметры алгоритма обучения. Проведите возможные типы эксперименты по переносу обучения: обучение последних модифицированных слоев, соответствующих классификатору (веса остальных слоев зафиксированы), полное обучение сети (начальная инициализация весов случайная или из обученной сети).
Последовательность действий, которую должен реализовывать скрипт:
Загрузка данных. Загрузка реализована при выполнении предыдущей работы, поэтому отдельно не оценивается.
Построение архитектуры сверточной сети (загрузка и модификация последних слоев). Требуется вывести информацию об архитектуре (слои, использованные от исходной модели + модифицированные слои классификатора), возможно выполнить визуализацию графа сети.
Обучение модели. Необходимо вывести информацию о способе инициализации весов сети и параметрах алгоритма обучения.
Тестирование модели. Необходимо обеспечить вывод точности классификации на тестовой выборке.
Этапы 2-4 реализуются несколько раз по числу экспериментов переноса и по количеству моделей. Результаты тестирования моделей накапливаются для последующего сравнения. Для множества выбранных моделей, обученных для решения исходной задачи (для лучших подобранных параметров в каждом эксперименте по переносу обучения) необходимо построить сравнительную гистограмму точностей: по горизонтали - модель и тип эксперимента (кратко указать параметры), по вертикали - точность. В гистограмме должны фигурировать результаты не более 4 моделей, которые показали наиболее высокие показатели точности. В целом гистограмма должна содержать 8 бинов (4 модели * 2 эксперимента). Далее необходимо вывести информацию о модели, для которой получены лучшие результаты решения задачи: название исходной модели, модифицированные слои, тип эксперимента по переносу обучения, параметры обучения (алгоритм оптимизации и его параметры, способ инициализации весов), полученная точность классификации на тестовой выборке.
Максимальное количество баллов - 35 баллов:
По 2 балла за каждую реализацию переноса обучения (максимальное количество моделей - 4, по каждой модели 2 типа экспериментов, 4 * 2 * 2 = 16 баллов).
4 балла за построение сравнительной гистограммы результатов точности классификации.
15*<точность> за достигнутые результаты качества классификации, где <точность> - лучшая точность классификации, полученная на тестовой выборке.
Практическая работа 3**. Реализация метода обратного распространения ошибки для двухслойной нейронной сети на примере решения задачи классификации рукописных цифр набора данных MNIST.
Цель настоящей работы состоит в том, чтобы изучить метод обратного распространения ошибки для обучения глубоких нейронных сетей на примере двухслойной полностью связанной сети (один скрытый слой). Выполнение практической работы предполагает решение следующих задач:
Изучение общей схемы метода обратного распространения ошибки.
Вывод математических формул для вычисления градиентов функции ошибки по параметрам нейронной сети и формул коррекции весов.
Проектирование и разработка программной реализации.
Тестирование разработанной программной реализации.
Подготовка отчета, содержащего минимальный объем информации по каждому этапу выполнения работы .
В процессе выполнения лабораторной работы предполагается, что сеть ориентирована на решение задачи классификации одноканальных изображений. Типичным примером такой задачи является задача классификации рукописных цифр. Именно ее предлагается использовать в качестве тестовой задачи на примере набора данных MNIST.
Метод обратного распространения ошибки разрабатывается, исходя из следующих предположений:
На входе сети имеется w×h нейронов, что соответствует разрешению изображения.
На выходе сети имеется k нейронов, что соответствует количеству классов изображений.
Скрытый слой содержит s нейронов.
В качестве функции активации на втором слое используется функция softmax.
В качестве функции ошибки используется кросс-энтропия.
Условия успешной сдачи лабораторной работы:
Подготовлено пошаговое описание метода обратного распространения ошибки с выводом всех математических формул для сети, описанной в разделе Задачи.
Разработана программная реализация метода для рассматриваемого частного случае.
Разработано приложение для решения задачи классификации рукописных цифр на примере базы MNIST.
Подготовлено краткое описание разработанного программного кода.
Подготовлена краткая инструкция по сборке программного кода и запуску приложения на данных базы MNIST.
Подготовлены результаты классификации для тестового набора данных MNIST.
Программная реализация, инструкция по сборке и запуску, описание метода выложены в личный репозиторий на GitHub.
* Некоторые лекции/мастер-классы проводятся приглашенными лекторами, поэтому материалы этих лекций доступны только для слушателей курса. При этом для большинства лекций имеются материалы по соответствующей тематике за авторством разработчика курса.
** Практические работы выполняются слушателями, у которых предусмотрен экзамен по данному курсу.