Распознавание образов с применением искусственной нейронной сети

Искусственная нейронная сеть как метод анализа и распознавания образов. Обработка изображения и создание множества обучающих примеров с ошибками. Обучение нейронных сетей с использованием математического пакета Octave. Отбор и тест оптимальной сети.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 677,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Размещено на http://www.Allbest.Ru/

Лабораторная работа

Курс «Системы искусственного интеллекта»

Тема:

Распознавание образов с применением искусственной нейронной сети

Цель: научиться распознавать образы с применением искусственной нейронной сети.

1. Обработка изображения и создание множества обучающих примеров

Перед выполнением работы выполните следующую последовательность действий:

- создайте папку в c:/student, имя - ваша фамилия, написанная английским буквами;

- скопируйте в эту папку все файлы с сервера из папки z:/институт/очное/ИиУС/Толстов В.А./Интеллектуальные системы и технологии/Лаб.раб/Лаб.1. Эти файлы - функции, с помощью которых Octave может моделировать ИНС, а также файл с изображениями букв;

- запустите Octave и переключите его на работу с вашей папкой, созданной в c:/student с помощью команды cd;

- запустите командой edit встроенный текстовый редактор Octave;

- сразу сохраните файл в вашу папку под именем «lab1.m».

Теперь можно писать программу из команд Octave для решения поставленной задачи.

Введите в файл команду: A = imread (`alfa2.bmp'), сохраните и запустите командой run. Обратите внимание на то, что вывел Octave в текстовом окне. Вернитесь к редактору и введите следующую строку: A = round(A)./255. Сохраните и запустите. Что изменилось? Теперь всё белые пиксели кодируются значением 1, а чёрные - значением 0.

Ненаблюдаемые свойства изображений букв были кодированы с помощью векторов Y. Аналогично нужно выполнить кодирование наблюдаемых свойств изображений.

Но изображение является двумерной структурой, а вектор - одномерной. Поэтому при обработке каждой буквы необходимо выполнить следующее преобразование. Изображение буквы из двумерного 10х10 трансформируется в 1х100 - строку из 100 элементов. Все строки собираются в матрицу X, поэтому, в ней будет столько строк, сколько букв в графическом файле. Единичную матрицу Y создадим тогда, когда будет заполнена матрица X. Добавьте в файл программы следующие строки с комментариями:

X = zeros(0, 100); % создание матрицы X,

% в которой нет ни одной строки

NPS = 1;% номер просматриваемого столбца

[rA, cA] = size(A); % количество строк и столбцов А

while (NPS <= cA) % цикл перебора столбцов А

C = A(:, NPS); % копируем в В просматриваемый

% столбец (column) А

if(C == 1) % проверяем, все ли элементы равны 1

NPS = NPS + 1; % буквы нет - переходим к следующему

else% буква есть

B = A(:, NPS:NPS+9)% копируем 10 столбцов из A в B

B = reshape(B, 1, 100);% транформация 10х10 в 1х100

X = cat(1, X, B);% добавление строки в X

NPS = NPS + 10;% следующую букву ищем

% в столбцах после текущей

end

end

[rX, cX] = size(X);% определяем размер X

Y = eye(rX);% создаём единичную матрицу Y

Примечание. В графическом файле 31 буква, так как «Й» и «Ё» не рассматриваются - при растеризации в графическом файле искажаются их верхние элементы. Поэтому в списке переменных Octave должен показать размер X, равный 31x100, а Y - 31x31.

2. Создание примеров с ошибками

Сеть необходимо научить распознавать не только заведомо правильные изображения букв. Внесём ошибки следующим образом. В матрице Х информация об изображении каждой буквы представлена строкой из 100 элементов. Сгенерируем целое случайное число от 1 до 100. Элемент, номер которого задан этим числом, испортим следующим образом: если он был равен 1 (белый), сделаем его равным 0 (чёрным), и наоборот.

Для каждого исходного изображения получим по 5 искажённых, которые соберём в отдельный массив. При этом, необходимо создать и матрицу выхода. Добавьте в файл программы следующие строки с комментариями:

Xv = zeros(0, 100);% пустые матрицы - ни одной строки

Yv = zeros(0, rX);

for NRX = 1:rX% NRX- номер строки Х

B = X(NRX, :)% копирование строки в В

for NP = 1:5% номер примера с ошибкой для данной буквы

sc = ceil(rand*99)+1;% целое число от 1 до 100

B(1,sc) = 1- B(1,sc);% замена цвета пикселя

Xv = cat(1, Xv, B);% добавление полученной строки в Xv

Yv = cat(1, Yv, Y(NRX, :));% и соответствующей в Yv

end

end

Сохраните и запустите файл. Octave должен показать размер Xv, равный 155x100, а Yv - 155x31.

3. Создание и обучение нейронных сетей

Перед созданием нейронной сети необходимо определить её параметры: количество входов и выходов, количество скрытых слоёв и нейронов в них, функции активации нейронов и др. Изображение каждой буквы описывается 100 пикселями. Так как ни один из них исключить из рассмотрения недопустимо, на входы ИНС должна поступать информация о цвете всех элементов. Следовательно, ИНС должна обладать 100 входами. Получив на входе значения наблюдаемых свойств распознаваемого объекта, ИНС должна предоставить на выходе значения ненаблюдаемых свойств. Выше рассматривалось 31 ненаблюдаемое свойство. Поэтому у ИНС должен быть 31 выход. В общем случае, выходов должно быть столько, сколько символов предполагается распознавать.

В Octave с помощью функции mlp можно создавать персептрон с одним скрытым слоем. Количество нейронов в скрытом слое можно выбрать в пределах 30-50% от количества элементов предыдущего слоя. Так как предыдущим слоем является входной, в котором 100 элементов, зададим сеть с 40 нейронами в скрытом слое:

net = mlp(100, 40, rX, `linear');

Первый параметр функции - количество входных элементов, второй - количество нейронов в скрытом слое, третий - количество нейронов в выходном слое. Четвёртый параметр определяет функцию активации нейронов скрытого слоя, в данном случае - линейная. Функция активации нейронов выходного слоя - гиперболический тангенс - для изменения недоступна.

Для обучения персептрона используется функция mlptrain, параметры которой задают сеть, которую нужно обучить, массивы входных и выходных векторов, а также число эпох, т.е. сколько раз необходимо провести обучение сети по алгоритму обратного распространения ошибки (АОРО). Так как заранее неизвестно, сколько эпох необходимо провести для достижения низкого уровня энергии ошибки сети, то используем следующий подход. Проводим небольшое количество прогонов АОРО, затем проверяем, достигнут ли целевой уровень ошибки. Если уровень не достигнут, то вновь выполняем АОРО:

Nmax = 200;% ограничение количества эпох

Nper = 20;% проводить по 20 прогонов между проверками

% значения энергии ошибки

N = 0;% пока что не сделано ни одного прогона АОРО

e = 1;% текущая ошибка - вначале любое число, большее goal

goal = 0.01;% целевое значение энергии ошибки

while (e > goal)&(N <= Nmax)

[net, e] = mlptrain(net, X, Y, Nper);

% вывод на экран значений переменных

% ВНИМАНИЕ! В конце следующей строки нет знака «;»

["goal: " num2str(goal) " error: " num2str(e) " epochs: " num2str(N)]

N = N + Nper;

end

% обучение персептрона с шумом

Nmax = Nmax + 1000;

goal = 0.001;

while (e > goal)&(N <= Nmax)

[net, e] = mlptrain(net, Xv, Yv, Nper);

% вывод на экран значений переменных

% ВНИМАНИЕ! В конце следующей строки нет знака «;»

["goal: " num2str(goal) " error: " num2str(e) " epochs: " num2str(N)]

N = N + Nper;

end

распознавание образ искусственный нейронный сеть

Таблица 1.1

Результаты обучения ИНС

Функция активации

Количество эпох

Энергия ошибки

`linear'

1200

0.45738

`logistic'

140

0.00037898

`softmax'

40

0.00025323

4. Отбор и тест оптимальной сети

ИНС с функцией активации softmax достигла наименьшего уровня ошибки за кратчайшее время обучения. Такую сеть будем считать оптимальной.

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

Xt = X;% изменения в Xt не изменят X

for NSX = 1:rX% цикл по строкам X

sc = ceil(rand*99)+1;% целое число от 1 до 100

Xt(NSX, sc) = 1- Xt(NSX, sc);% искажение пикселя

End

Используя матрицу Xt как массив входных значений, получим выходные значения ИНС:

Yt = round(mlpfwd(net, Xt));

Чтобы узнать, сколько букв тестируемая ИНС рапознала ошибочно, необходимо посчитать, сколько соответствующих строк матриц Y и Yt не совпадают:

KNS = 0; % кол-во несовпадающих строк

for NSY = 1:rX

if( Y(:,NSY)==Yt(:,NSY) )

else

KNS = KNS+1;

end

end

Добавьте эти строки в программу сохраните и запустите файл.

Linear - линейная функция активации

Logistic - сигмоида

Линейная функция представляет собой прямую линию и пропорциональна входу (то есть взвешенной сумме на этом нейроне).

Монотонно возрастающая всюду дифференцируемая S-образная нелинейная функция с насыщением. Сигмоид позволяет усиливать слабые сигналы и не насыщаться от сильных сигналов. Гроссберг (1973 год) обнаружил, что подобная нелинейная функция активации решает поставленную им дилемму шумового насыщения.

Softmax - гиперболический тангенс

Гиперболический тангенс очень похож на сигмоиду. И действительно, это скорректированная сигмоидная функция. Поэтому такая функция имеет те же характеристики, что и у сигмоиды, рассмотренной ранее. Её природа нелинейна, она хорошо подходит для комбинации слоёв, а диапазон значений функции -(-1, 1). Градиент тангенциальной функции больше, чем у сигмоиды (производная круче)

Вывод: в ходе лабораторной работы я научилась распознавать образы с применением искусственной нейронной сети. В данной работе использовался математический пакет Octave. такой же подход. Наиболее оптимальной функцией активации является softmax, так как ИНС с этой функцией активации достигла наименьшего уровня ошибки за кратчайшее время обучения. В отличие от сигмоиды, выход данной функции центрирован относительно нуля, поэтому требуется меньше итераций для изменения значения нейрона из 0 в 1.

Размещено на allbest.ru

...

Подобные документы

  • Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.

    контрольная работа [229,5 K], добавлен 28.05.2010

  • Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.

    презентация [387,5 K], добавлен 11.12.2015

  • Принципы и система распознавание образов. Программное средство и пользовательский интерфейс. Теория нейронных сетей. Тривиальный алгоритм распознавания. Нейронные сети высокого порядка. Подготовка и нормализация данных. Самоорганизующиеся сети Кохонена.

    курсовая работа [2,6 M], добавлен 29.04.2009

  • Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.

    курсовая работа [3,0 M], добавлен 14.11.2013

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

    курсовая работа [1,0 M], добавлен 05.01.2013

  • Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.

    дипломная работа [1,5 M], добавлен 17.09.2013

  • Создание программного средства, осуществляющего распознавание зрительных образов на базе искусственных нейронных сетей. Методы, использующиеся для распознавания образов. Пандемониум Селфриджа. Персептрон Розенблатта. Правило формирования цепного кода.

    дипломная работа [554,8 K], добавлен 06.04.2014

  • Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.

    дипломная работа [2,7 M], добавлен 18.02.2017

  • Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.

    дипломная работа [2,6 M], добавлен 23.09.2013

  • Эффективность применения объектного подхода для программных систем. Детальное проектирование и реализация системы, реализующей процессы создания и взаимодействия объектов. Распознавание компьютером печатных букв с помощью многослойной нейронной сети.

    курсовая работа [38,0 K], добавлен 09.03.2009

  • Выявление закономерностей и свойств, применимых в искусственной нейронной сети. Построение графиков и диаграмм, определяющих степень удаленности между объектами. Моделирование, тестирование и отладка программной модели, использующей клеточный автомат.

    дипломная работа [4,1 M], добавлен 25.02.2015

  • Программная реализация статической нейронной сети Хемминга, распознающей символы текста. Описание реализации алгоритма. Реализация и обучение сети, входные символы. Локализация и масштабирование изображения, его искажение. Алгоритм распознавания текста.

    контрольная работа [102,3 K], добавлен 29.06.2010

  • Механизм работы нервной системы и мозга человека. Схема биологического нейрона и его математическая модель. Принцип работы искусственной нейронной сети, этапы ее построения и обучения. Применение нейронных сетей в интеллектуальных системах управления.

    презентация [98,6 K], добавлен 16.10.2013

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

  • Прогнозирование валютных курсов с использованием искусственной нейронной сети. Общая характеристика среды программирования Delphi 7. Существующие методы прогнозирования. Характеристика нечетких нейронных сетей. Инструкция по работе с программой.

    курсовая работа [2,2 M], добавлен 12.11.2010

  • Понятие и свойства искусственных нейронных сетей, их функциональное сходство с человеческим мозгом, принцип их работы, области использования. Экспертная система и надежность нейронных сетей. Модель искусственного нейрона с активационной функцией.

    реферат [158,2 K], добавлен 16.03.2011

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

    курсовая работа [645,2 K], добавлен 05.04.2015

  • Изучение архитектуры искусственных нейронных сетей, способов их графического изображения в виде функциональных и структурных схем и программного представления в виде объектов специального класса network. Неокогнитрон и инвариантное распознавание образов.

    курсовая работа [602,6 K], добавлен 12.05.2015

  • Обучение простейшей и многослойной искусственной нейронной сети. Метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки. Реализация в программном продукте NeuroPro 0.25. Использование алгоритма обратного распространения ошибки.

    курсовая работа [1019,5 K], добавлен 05.05.2015

  • Обзор и анализ распространенных искусственных нейронных сетей. Функциональное назначение слоев сети, алгоритмы обучения. Описание функциональных возможностей разработанной программной системы. Анализ исследовательской эксплуатации и возможных применений.

    дипломная работа [1,3 M], добавлен 19.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.