Вы находитесь на странице: 1из 18

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ


УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Кафедра безопасности информационных систем

ОТЧЁТ
Лабораторная работа №9
по дисциплине «Теория информации, данные, знания»
«Исследование методов классификации изображений рукописных
цифр с помощью полно связной нейронной сети»
Вариант-3
Выполнил: студент группы ИСТ-932
Белкина В.Е.
«» 2021 г.
Принял: Струев А.М.
«» 2021 г. ___________/

.. /

САНКТ-ПЕТЕРБУРГ
2021
ФОРМУЛИРОВКА ЗАДАНИЯ

Цель работы – исследование принципов разработки нейронной сети на


примере задачи классификации изображений помощью GPU и CPU.

1. Исследовать нейронную сеть при заданных начальных параметрах


(см. таблицу).

2. Исследовать зависимость точности распознавания от количества


нейронов в скрытом слое, количества слоев, метода активации.

3. Замерьте время вычисления 100 эпох на CPU и на GPU. Какое


ускорение вы наблюдаете?

4. Постройте на одном графике loss для train и test. Имеется ли


переобучение сети?
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ

Классификация — понятие в науке, обозначающее разновидность


деления объёма понятия по определённому основанию (признаку, критерию),
при котором объём родового понятия (класс, множество) делится на виды
(подклассы, подмножества), а виды, в свою очередь делятся на подвиды и т.д.

Первым значительным индустриальным приложением современных


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

1. Звуковой сигнал преобразуется в признаки специального вида;


2. Признаки превращаются в гипотезы, которые предлагают варианты
конкретных фонем для каждого окна в звуковом сигнале;
3. Гипотезы о фонемах объединяются в гипотезы относительно
произнесенных слов, и в выборе между ними уже участвует не
только обработка самого звука, но и языковые модели.

До глубоких сетей первые два шага этого процесса выглядели так:


сначала звуковой сигнал превращался в так называемые MFCC-признаки,
фонемы из них распознавали с помощью скрытых марковских моделей, а
языковые модели представляли собой обычно сглаженные распределения n-
грамм, то есть модели, которые оценивают вероятность следующего слова
при условии нескольких предыдущих MFCC (мел-кепстральные
коэффициенты) — это представление сигнала, в виде особого спектра, из
которого с помощью различных фильтраций и преобразований удалены
незначительные для человеческого слуха компоненты. Спектр носит
кратковременный характер, то есть изначально сигнал делится на
пересекающиеся отрезки по 20-40 мс. Предполагается, что на таких отрезках
частоты сигнала не меняются слишком сильно.
РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ РАБОТЫ

1. Исследовать нейронную сеть при заданных начальных параметрах (см.


таблицу).
При заданных параметрах, n_hidden_neurons = 30 и lr = 0.01, метода
оптимизации ADAM, batch_size = 100. Построим график по параметру
accuracy.

Был получен ответ: время вычислений 69 секунд


Максимальный accuracy = 0.88

Уменьш
ение ошибки
2. Исследовать зависимость точности распознавания от количества
нейронов в скрытом слое, количества слоев, метода активации.

Количества нейронов в скрытом слое:

Будем изменять параметр mnist_net = MNISTNet(). Посмотрим на 2ух


примерах, где параметр MNISTNet() будет 5 и 100.

В случае с малым количеством нейронов, сеть производит меньше


вычислений и из-за этого разброс точности большой, поэтому график –
пологий. Время обучения составило 40 секунд. Показатель accuracy не
превышал 0,79.
В случае с количеством нейронов равным 100, сеть сеть производит больше
вычислений, поэтому график – менее пологий с предыдущем примером и
выдает более точный accuracy. Время обучения составило 120 секунд.
Показатель accuracy не превышал 0,9.

Количество слоев:

Увеличим количество слоев до 3ех

С увеличением слоя сеть обучалась незначительно дольше 72 секунды. Ее


точность упала на 0,01. Максимальный accuracy не превышал 0,86.
Функция по ошибкам не особо изменилась.
Оставим только 1 слой.

С увеличением слоя сеть обучалась 69 секунд. Ее точность варьировалась


постоянно от 0,85 до 0,9. Обучение проходило плохо. Функция по loss
увеличивалась.
Вывод:

Увеличение скрытых слоев больше 2ух незначительно уменьшает разброс


точности (accuracy) во время вычислений. Увеличивается время, результат
почти не изменяется.

При уменьшении скрытых слоев, обучение проходит плохо, функция ошибки


постоянно растет. Время не изменяется.

Метода активации:

Изначально использовался Sgmoid. Воспользуемся ReLU.


Обучение нейросети с помощью активации ReLU не подходит для данной
задачи. Её точность упала до 0,4.
3. Замерьте время вычисления 100 эпох на CPU и на GPU. Какое
ускорение вы наблюдаете?

Был произведен тест по времени вычислении на CPU ryzen 5 3600x с 6 ядер, и с


12 логическими ядрами, использовались на полной мощности 7 логических ядер
м частотой 4,22Ггц. И время вычисления составило 1 минуты и 9 секунд. Где
функция print(torch.cuda.is_available()) выводит False, то есть все вычисления
происходят на CPU
Был произведен тест по времени вычислении на GTX 1050ti. Время работы
вычислений составило 9 секунд, что в 7.7 раз быстрее
4. Постройте на одном графике loss для train и test.

Сравнение двух графиков:


Качество на train и test идет примерно одинаково. Нет скачка роста качества
на train, значит проблемы переобучения не имеется.

ВЫВОД
Было произведено исследование принципов разработки нейронной сети
на примере задачи классификации изображений помощью GPU и CPU.
Исследована нейронная сеть при заданных начальных параметрах.
Исследовано зависимость точности распознавания от количества нейронов в
скрытом слое, количества слоев, метода активации. Было замеренл время
вычисления 100 эпох на CPU и на GPU. Построена на одном графике loss для
train и test.