Цель настоящей работы состоит в том, чтобы изучить метод обратного распространения ошибки для обучения глубоких нейронных сетей на примере двухслойной полностью связанной сети (один скрытый слой).
Выполнение работы предполагает решение следующих задач:
- Изучение общей схемы метода обратного распространения ошибки на базе стохастического градиентного спуска.
- Вывод математических формул для вычисления градиентов функции ошибки по параметрам нейронной сети и формул коррекции весов.
- Проектирование и разработка программной реализации метода обратного распространения ошибки.
- Тестирование разработанной программной реализации.
- Разработка примера использования метода обратного распространения ошибки для классификации рукописных цифр из набора данных MNIST [http://yann.lecun.com/exdb/mnist].
Метод обратного распространения ошибки разрабатывается, исходя из следующих предположений:
- На входе сети имеется w×h нейронов, что соответствует разрешению одноканального изображения (параметр; для изображений в базе MNIST составляет 28x28).
- На выходе сети имеется k нейронов, что соответствует количеству классов изображений (параметр; для задачи классификации рукописных цифр – 10 классов).
- Скрытый слой содержит s нейронов (параметр).
- В качестве функции активации на скрытом слое используется функция ReLU.
- В качестве функции активации на выходном слое используется функция softmax.
- В качестве функции ошибки используется кросс-энтропия.
- Скорость обучения, размер пачки данных, количество эпох являются параметрами метода обучения.
- Разработана корректная программная реализация метода для рассматриваемой архитектуры нейронной сети и приложение для решения задачи классификации рукописных цифр на примере базы MNIST на языке Python 3 (например, в Jupiter Notebook). В результате сформирован скрипт в формате
.ipynb
с выдачей промежуточных результатов на контрольном наборе параметров (приведен ниже). Скрипт должен отображать ошибку классификации на тренировочном наборе данных в процессе обучения по окончании каждой эпохи и время обучения. По завершении всех эпох скрипт должен выдавать ошибку классификации на тестовом наборе данных. - Скрипт сконвертирован в формат .html внутренними средствами использованной среды разработки. Сконвертированный скрипт содержит результаты, полученные на контрольном наборе параметров.
- Подготовлен текстовый файл в формате 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 |
- Для контрольных значений параметров достигнута точность классификации на тестовых данных, сравнимая с точностью, которую выдают стандартные инструменты глубокого обучения (например, библиотеки MXNet или PyTorch).
- Скрипт в формате
.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 |
---|---|---|---|