Лабораторные работы по курсу "Глубокое обучение"
В рамках лабораторных работ будут реализованы разные конфигурации нейронных сетей для решения задачи классификации.
Постановка задачи
По входным данным X вычислить выход сети U.
Задача обучения сети заключается в минимизации функции ошибки E(U,Y), где Y - ожидаемый выход сети.
Данные
Источник данных: Traffic Signs Preprocessed
Данные лежат в формате .pickle в виде словаря с ключами: y_train, x_train, y_test, x_test.
Необходимо распознать на RGB изображении 32 * 32 один из 43 дорожных знаков.
Число примеров | |
---|---|
x_train | 86989 |
x_test | 12630 |
В обучающей выборке содержится 86989 примеров. В тестирующей выборке содержится 12630 примеров.
На каждый класс приходится около 2000 примеров в обучающей выборке.
Пример данных для обучения:
Предобработка данных
Предобработка данных заключается в нормализации и вычитании "среднего изображения".
Пример данных для обучения после предобработки:
Для использования в FCNN данные представляются в виде вектора, размерность которого есть 32 * 32 * 3 = 3072. Для CNN в виде набора матриц (32, 32, 3)
Математическая модель нейрона
Математическая модель нейрона имеет следующий вид:
Где - функция активации, - смещение, - вес, - вход.
Для удобства выкладок сделаем некоторое преобразование. Внесем смещение в сумму с новым значением синапса . Тогда модель нейрона можно записать в следующем виде:
Функции активации
На скрытом слое
На скрытых слоях будем использовать следующие функции:
Функции активации |
---|
На выходном слое
На выходе будем использовать функцию Softmax:
Функция ошибки
В качестве функции ошибки рассмотрим кросс-энтропию:
Где y - выход сети, u - ожидаемый выход, M - число нейронов на выходном слое, L - число примеров.
Задача обучения сети
Задача обучения сети состоит в минимизации функции ошибки E(U,Y).
На последнем слое мы используем Softmax, так что её вычисление упростится.
Метрика качества
Наши данные являются сбалансированными, то есть каждому классу соответствует одинаковое число примеров в обучающей выборке. Следовательно, мы можем использовать метрику accuracy:
Где Y - выход сети, X - вход сети, U - ожидаемый выход.
То есть метрика качества - доля правильно классифицированных объектов из выборки.
Обучение на тренировочной выборке
Сеть обучается заданное число эпох. Эпоха - полный проход по тестовой выборке. Внутри эпохи набор тестовых данных делится на пакеты.
- Инициализация весов
- Каждую эпоху
- Перемешиваем выборку
- Делим выборку на пакеты и для каждого пакета
- Коррекция весов по алгоритму обратного распространения
Описание реализации
Внешние зависимости
tensorflow - основа для Keras
keras - фреймворк для работы с сетями
numpy - для работы с векторами и матрицами
pickle - для работы с изображениями
math - для математических вычислений
matplotlib - для визуализации
pydot, graphviz - для визуализации графа сети
datetime - для замера времени работы
json - для хранения статистки
re - для регулярных выражений
os - для работы с файловой системой