/deep-learning-course-practice

Репозиторий для публикации результатов выполнения лабораторных работ по курсу "Глубокое обучение"

Репозиторий для публикации результатов выполнения лабораторных работ по курсу "Глубокое обучение"

Цели работы

Цель настоящей работы состоит в том, чтобы изучить метод обратного распространения ошибки для обучения глубоких нейронных сетей на примере двухслойной полностью связанной сети (один скрытый слой).

Задачи работы

Выполнение работы предполагает решение следующих задач:

  1. Изучение общей схемы метода обратного распространения ошибки на базе стохастического градиентного спуска.
  2. Вывод математических формул для вычисления градиентов функции ошибки по параметрам нейронной сети и формул коррекции весов.
  3. Проектирование и разработка программной реализации метода обратного распространения ошибки.
  4. Тестирование разработанной программной реализации.
  5. Разработка примера использования метода обратного распространения ошибки для классификации рукописных цифр из набора данных MNIST [http://yann.lecun.com/exdb/mnist].

Метод обратного распространения ошибки разрабатывается, исходя из следующих предположений:

  1. На входе сети имеется w×h нейронов, что соответствует разрешению одноканального изображения (параметр; для изображений в базе MNIST составляет 28x28).
  2. На выходе сети имеется k нейронов, что соответствует количеству классов изображений (параметр; для задачи классификации рукописных цифр – 10 классов).
  3. Скрытый слой содержит s нейронов (параметр).
  4. В качестве функции активации на скрытом слое используется функция ReLU.
  5. В качестве функции активации на выходном слое используется функция softmax.
  6. В качестве функции ошибки используется кросс-энтропия.
  7. Скорость обучения, размер пачки данных, количество эпох являются параметрами метода обучения.

Требования к результатам выполнения работы

  1. Разработана корректная программная реализация метода для рассматриваемой архитектуры нейронной сети и приложение для решения задачи классификации рукописных цифр на примере базы MNIST на языке Python 3 (например, в Jupiter Notebook). В результате сформирован скрипт в формате .ipynb с выдачей промежуточных результатов на контрольном наборе параметров (приведен ниже). Скрипт должен отображать ошибку классификации на тренировочном наборе данных в процессе обучения по окончании каждой эпохи и время обучения. По завершении всех эпох скрипт должен выдавать ошибку классификации на тестовом наборе данных.
  2. Скрипт сконвертирован в формат .html внутренними средствами использованной среды разработки. Сконвертированный скрипт содержит результаты, полученные на контрольном наборе параметров.
  3. Подготовлен текстовый файл в формате Markdown README.md, в котором приведена в виде таблицы информация о результатах решения задачи классификации рукописных цифр на наборе данных MNIST: ФИО студента, количество нейронов на скрытом слое, скорость обучения модели, количество эпох, время обучения (в секундах), ошибка классификации на тренировочном наборе данных, ошибка классификации на тестовом наборе данных. Таблица обязательно должна содержать результаты работы на контрольном наборе параметров. Результаты других запусков добавляются на усмотрение слушателя.
ФИО Hidden neurons Learning rate Number of epochs Time, s Train accuracy Test accuracy
Иванов Иван Иванович 200 0.1 10 20 0.98 0.92
  1. Для контрольных значений параметров достигнута точность классификации на тестовых данных, сравнимая с точностью, которую выдают стандартные инструменты глубокого обучения (например, библиотеки MXNet или PyTorch).
  2. Скрипт в формате .ipynb, его сконвертированная копия в формате .html и текстовый файл README.md выложены в собственный fork публичного GitHub-репозитория [https://github.com/UNN-ITMM-Software/deep-learning-course-practice]. При этом все файлы должны находиться в директории с названием FamiliaIO (например, IvanovII). Также должен быть создан Pull Request в основной репозиторий с готовой работой, Pull Request должен иметь название Фамилия Имя Отчество – ФИО студента, выполнившего работу.

Контрольный набор параметров: размер пачки может меняться от 8 до 64 изображений (в зависимости от доступного объема памяти), скорость обучения составляет 0.1, количество скрытых нейронов – 300, количество эпох – 20.

Результаты решения задачи

Контрольный набор параметров

Hidden neurons Learning rate Number of epochs
300 0.1 20

Полученные результаты

ФИО Time, s Train accuracy Test accuracy