
M852_Antonova_1
.pdf
••end
••pernn_0 = 100* (1- (sum (Ytest ~=Ypredict3)/ length(Ytest)));
••pernn_1 = 100* (sum(abs (Ytest - Ypredict3) <=1))/length(Ytest);
••disp([‘Neural Networks % within unit 1−‘, num2str(pernn_1), ‘%’])
В окне, приведенном на рис. 2.8, видно, что остановка обучения производится в момент, когда кривая тестовой выборки начинает возрастать (своеобразный механизм защиты от «переобучения» модели).
Рис. 2.8. График качества обучения трех различных выборок
Оценка и иллюстрация работы классификатора выполняется так же, как и при построении регрессионных деревьев лабораторной работы (рис. 2.9).
После обучения нейросети с использованием 30 нейронов (рис. 2.10) получим более точные результаты (рис. 2.11).
Определение значимых переменных из общего массива. Используем функцию «sequentialfs()», которая последовательно добавляет те или иные признаки в модель. Качество обучения определяем функцией fun=@(), в качестве параметров которой выбираем тестовые и образцовые выборки (данная функция будет выступать в качестве сравнения правильных и неправильных ответов):
21

Рис. 2.9. Количество правильно предсказанных ответов с использованием обучения нейросети
Рис. 2.10. График качества обучения нейросети с 30 нейронами
22

Рис. 2.11. Количество правильно предсказанных ответов с увеличением числа нейронов
Рис. 2.12. Количество правильно предсказанных ответов после выделения значимых переменных
23
По результатам работы программы видно, что значимыми параметрами для классификации зданий будут их относительная компактность, площадь крыши, площадь остекления и распределение площади остекления.
Классификатор, работающий только на четырех входных переменных, показывает лучший результат точности совпадений (рис. 2.12) результатов прогноза (99 %) по сравнению с классификатором, анализирующим все восемь параметров (95 %).
Вывод
В ходе работы было установлено, что лучшим классификатором среди специальных алгоритмов MATLAB (наивного байесовского классификатора NaiveBayes, регрессионных деревьев TreeBagger и нейронных сетей Neural Network) является метод TreeBagger, использующий в качестве входных заранее определенные значимые параметры.
Результаты работ рассмотренных алгоритмов: NaiveBayes — 44, 7368 %;
TreeBagger — 94,7368 %; Neural Network — 85,5263 %;
TreeBagger With Feature Selection — 98,6842 %.
Задание
Получить от преподавателя таблицу входных данных, импортировать их в среду MATLAB. Выполнить анализ входных параметров с помощью трех описанных выше методов (наивного байесовского классификатора, регрессионного анализа и нейронных сетей). Произвести удаление лишних переменных для всех методов и сделать выводы по полученным результатам.
Контрольные вопросы и задания
1.Где могут быть применены алгоритмы?
2.Приведите теорему Байеса.
3.Что такое наивный байесовский классификатор? В чем заключаются его достоинства и недостатки?
4.Что такое дерево принятия решений? Его достоинства и недостатки?
5.Что такое нейрон? Синапс? Слой?
6.Опишите функции нейрона.
7.Что такое нейронная сеть? Ее достоинства и недостатки?
8.Опишите виды обучения нейронной сети.
9.С помощью какой функции осуществляется обучение сети?
10.Опишите классификаторы в среде MATLAB.
11.Какой метод классификации оказался наилучшим? Почему?

ЛАБОРАТОРНАЯ РАБОТА № 3 РАСПОЗНАНИЕ НАДПИСИ, СОДЕРЖАЩЕЙСЯ В ИЗОБРАЖЕНИИ,
МЕТОДОМ RANDOM FOREST
Цель лабораторной работы — освоение методики распознавания номеров автомобилей с использованием машинного обучения.
Теоретическая часть
Метод Random Forest является одним из наиболее известных и эффективных методов решения задач машинного обучения, таких как классификация и регрессии. Рассмотрим его более подробно.
По фотографии, загруженной пользователем, необходимо получить строку, содержащую номер автомобиля.
Практическая часть
Обучение классификатора происходит следующим образом: в окне Command Window необходимо набрать название функции CNR_train («Путь в кавычках», false). Первым аргументом является путь до папки с обучающими изображениями, второй аргумент указывает, использовать ли отладку (см. прил. 1). Изображения для обучения хранятся по адресу, приведенному на рис. 3.1.
Вызов осуществляется командой, приведенной на рис. 3.2.
Если же будут использоваться другие тестовые изображения, необходимо изменить переменную в коде:
sym = imread( [classpath ‘/’ |
|
||
chars(char) ‘/’ num2str(sample) |
|
||
‘.bmp’]); |
|
|
|
а также изменить счетчик: |
|
||
if debugga |
|
||
count |
= |
3; |
|
else |
|
|
Рис. 3.1. Адрес хранения |
|
|
|
|
count |
= |
100; |
изображения |
|
25

Рис. 3.2. Команда вызова
Код отвечает за количество изображений для обучения для каждого символа. Приведенная переменная предполагает, что в папке «Train Images» для каждого из символов создана папка с названием, соответствующим символу (т. е. для распознавания нуля — папка с именем «0» и т. д.).
После запуска CNR_train в том же рабочем окне запускается функция «CarNumberRecognition2» («Путь до файла с картинкой номера», true). Второй аргумент отвечает за вывод на экран изображения с выделенными символами.
Например, если изображение имеет адрес, приведенный на рис. 3.3, то для распознавания номера необходимо ввести команду, приведенную на рис. 3.4.
Вывод будет иметь вид, показанный на рис. 3.5.
Окно с изображением номера автомобиля представлено на рис. 3.6.
Рис. 3.3. Другой адрес изображения |
Рис. 3.4. Команда для распознавания |
|
номера |
26

Рис. 3.5. Вывод результата в самой программе
Рис. 3.6. Вывод в окне с изображением номера автомобиля
Вывод
В работе с помощью метода Random Forest определена надпись, содержащаяся в изображении. Использованный метод показал свою достаточную эффективность, хотя одна из фотографий была расшифрована не совсем корректно. Принцип обучения алгоритма совпадает с другими принципами. Классификатору передаются данные для обучения с точно известными классами. На их основе формируется метод Random Forest, на оставшейся тестовой части переданных данных проводятся испытания и определяются весовые коэффициенты различных бинарных деревьев. Далее аналогичные параметры определяются у реальных данных и устанавливается, какой коэффициент больше для этого случая. В зависимости от этого выносится вердикт о принадлежности к классу (в данном случае — к символу).
Задание
Импортировать в среде MATLAB полученные от преподавателя тестовые изображения с фотографиями номеров в дерево принятия решений. Проверить корректность работы на тестовом номере, полученном от преподавателя
27
(в соответствии с номером варианта). Создать собственное изображение и повторить работу алгоритма. Сделать выводы по полученным результатам (см. прил. 1).
Контрольные вопросы
1.В чем заключается суть метода Random Forest?
2.Как осуществляется хранение символов в папке «Train Images»?
3.Может ли у одного конкретного символа быть больше одного изображения для обучения?
4.В чем состоит принцип обучения алгоритма?
5.Является ли этот метод безошибочным? Почему?
ЛАБОРАТОРНАЯ РАБОТА № 4 ИЗУЧЕНИЕ СЕТЕЙ LSTM
Цель лабораторной работы — получение навыков использования сетей LSTM для обработки и генерации текста.
Теоретическая часть
Самый простой вариант нейронной сети рассмотрен в лабораторной работе № 2, однако существует большое многообразие нейронных сетей, которое определяется не только их способами реализации, но и способами обучения. В данной работе будут рассмотрены лишь некоторые варианты применения рекуррентных нейронных сетей, так как для описания устройства и принципа работы всех других типов сетей потребуется большое количество теоретической информации. Ограничимся сравнением рекуррентной нейронной сети с долгосрочной памятью с сетями прямого распространения.
Нейронные сети прямого распространения (feed forward neural networks, FF или FFNN) и перцептроны (perceptrons, P) очень прямолинейны, они передают информацию от входа к выходу. Клетки одного слоя не связаны между собой, а соседние слои обычно полностью связаны. Самая простая нейронная сеть имеет две входных клетки и одну выходную и может использоваться в качестве модели логических вентилей. Нейронная сеть FFNN обычно обучается по методу обратного распространения ошибки, в котором сеть получает множества входных и выходных данных. Этот процесс называется обучением
сучителем, и он отличается от обучения без учителя тем, что во втором случае множество выходных данных сеть составляет самостоятельно. Ошибка является разностью между вводом и выводом.
Рекуррентные нейронные сети (RNN) — это сети типа FFNN, но имеющие следующую особенность: нейроны получают информацию не только от предыдущего слоя, но и от самих себя предыдущего прохода. Это означает, что порядок, в котором подаются данные и обучается сеть, становится важным. Большой сложностью сетей RNN является проблема исчезающего (или взрывного) градиента, которая заключается в быстрой потере информации
стечением времени. Конечно, это влияет лишь на веса, а не на состояние нейронов, однако именно в сетях RNN накапливается информация. Обычно сети такого типа используются для автоматического дополнения информации.
Сети с долгой краткосрочной памятью (LSTM) решают проблему потери информации, используя фильтры и явно заданную клетку памяти. У каждого нейрона есть клетка памяти и три фильтра: входной, выходной и забывающий. Целью этих фильтров является защита информации. Входной фильтр определяет, сколько информации из предыдущего слоя будет храниться в клетке.
29

Выходной фильтр определяет, сколько информации получат следующие слои. Забывающий фильтр также выполняет полезную функцию: например, если сеть изучает книгу и переходит на новую главу, какие-то символы из старой можно забыть. Такие сети способны научиться создавать сложные структуры, например, писать как Шекспир или сочинять простую музыку, но потребляют много ресурсов (рис. 4.1).
а |
|
Рис. 4.1. Схема связи нейронов в простейшей рекуррентной сети с краткосрочной (а) и долгосрочной (б) памятью (желтый цвет — нейроны входного слоя, синий — вычислительного, красный — выходного)
Основным отличительным свойством рекуррентных нейронных сетей является наличие в их структуре блоков, которые могут хранить информацию. Как отмечалось выше, существует два вида сетей такого типа:
••RNN (Recurrent neural network) — рекуррентные сети с краткосрочной памятью;
••LSTM (Long short-term memory) — рекуррентные сети с долгой краткосрочной памятью.
Фактически сеть RNN можно реализовать последовательностью копий одной и той же сети, каждая из которых передает информацию последующей копии (рис. 4.2).
Рис. 4.2. Развертка обратной связи в рекуррентной сети RNN
На рис. 4.2 фрагмент нейронной сети A принимает входное значение xt и возвращает значение ht. Наличие обратной связи позволяет передавать информацию от одного шага сети к другому.
Возможность сетей типа RNN связывать текущую информацию с недавно обработанной является довольно удобной, но на практике применяется нечасто. Объясняется это тем, что данный тип сетей способен обращаться только к недавно прошедшей информации. В случае, когда требуется обработка большого количества данных, сеть RNN теряет способность связывать информацию.
30