Исследование результатов работы программы-эмулятора ИНС

Автор: Пользователь скрыл имя, 17 Апреля 2013 в 18:30, курсовая работа

Описание работы

Искусственные нейронные сети (НС) – набор математических и алгоритмических методов для решения широкого круга задач. Они превосходят последовательные машины в решении тех же задач, в которых машину превосходит человек. К задачам, успешно решаемым НС на данном этапе их развития, относятся [1]:
Распознавание зрительных и слуховых образов: от распознавания текста до систем голосового управления.
Ассоциативный поиск информации и создание ассоциативных моделей: синтез речи, формирование естественного языка.
Формирование моделей различных нелинейных и трудно описываемых математически систем, а также прогнозирование развития этих систем во времени: прогнозирование развития различных природных процессов, изменений курсов валют, курсов акций и других финансовых показателей.

Содержание

Введение 7
Постановка задачи 9
1. Системный анализ методов распознавания образов и построения генераторов псевдослучайных величин. 10
1.1. Анализ методов распознавания графических образов 10
1.1.1 Статистические методы распознавания 10
1.1.2 Структурные (лингвистические) методы распознавания 12
1.1.3 Нейросетевые методы распознавания 15
1.1.4 Вывод по результатам анализа рассмотренных методов 18
1.2. Процедура искажения изображений 20
1.3.1 Преобразование Бокса – Мюллера. 20
1.3. Выводы 22
2. Реализация эмулятора нейронной сети Хемминга, решающей задачи распознавания зашумлённых образов. 23
2.1. Выбор структуры ИНС 25
2.2. Программная реализация ИНС 27
2.2.1. Интерфейс пользователя программы-эмулятора ИНС 31
2.3. Выводы 33
3. Исследование результатов работы программы-эмулятора ИНС 34
3.1 Выводы 36
Заключение 37
Библиографический список 38

Работа содержит 1 файл

нейросети.docx

— 397.07 Кб (Скачать)

 σ —  среднеквадратичное отклонение (СКО);

 

Преобразование Бокса – Мюллера  – метод моделирования стандартных  нормально распределённых случайных  величин. Имеет два варианта. Метод  является точным, в отличие, от методов, основывающихся на центральной предельной теореме. Метод был опубликован  в 1958 году Джорджем Боксом и Мервином Мюллером.

Первый вариант:

Пусть φ и τ независимые случайные  величины, равномерно распределённые на интервале (0, 1]. Вычислим и по формулам

  

  

Тогда и будут независимы и распределены нормально с математическим ожиданием 0 и дисперсией 1. При реализации на компьютере обычно быстрее не вычислять обе тригонометрические функции –   и – а рассчитать одну из них через другую. Ещё лучше воспользоваться вместо этого вторым вариантом преобразования Бокса — Мюллера.

Второй вариант:

Пусть x и y — независимые случайные величины, равномерно распределённые на отрезке [-1, 1]. Вычислим . Если окажется, что или , то значения x и y следует «выбросить» и сгенерировать заново. Как только выполнится условие , по формулам

  

  

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

Коэффициент использования базовых  случайных величин для первого  варианта, очевидно, равен единице. Для второго варианта – это отношение площади окружности единичного радиуса к площади квадрата со стороной два, т. е. . Тем не менее, на практике второй вариант обычно оказывается быстрее за счёт того, что в нём используется только одна трансцендентная функция, . Это преимущество для большинства реализаций перевешивает необходимость генерации большего числа равномерно распределённых случайных величин.

После получения стандартной нормальной случайной величины , можно легко перейти к величине распределённой нормально с математическим ожиданием µ и стандартным отклонением по формуле:

  

Это уже не является частью преобразования Бокса — Мюллера, но позволяет  завершить генерацию нормальной случайной величины.

 

 

    1. Выводы

 

 

В первой главе  данной работы был произведён анализ методов распознавания графических изображений. На основе анализа был выбран метод нейросетевого распознавания.

 

 

  1. Реализация эмулятора нейронной сети Хемминга, решающей задачи распознавания зашумлённых образов.

 

В рамках данной работы разрабатывался эмулятор ИНС решающей задачи распознавания искаженных изображений, шумы для которых формируются генераторами ПСВ. В качестве исходных данных используются растровые черно-белые изображения размером 100х100 пикселей. Следовательно, размерность моделируемой НС составляет n=10000 нейронов.

На рисунке 5.1 и рисунке 5.2 приведена общая схема алгоритма функционирования системы.

Нет


Да


Загрузка изображения для искажения


Продолжить обучение?


Обучение сети


Начало


Загрузка изображения для обучения



 

2



Распознавание искажённого изображения


Искажение изображения



 

 

 

 

 

 

 

 

 

 

 

Конец



 

 

 

 

 

 

 

1



 

 

Рисунок 5.1.

 

 

Выбор генератора ПСВ


Генерация ДСВ методом обратной функции


Генерация НСВ методом обратной функции


 

Генерация НСВ универсальным методом


 

Генерация ПСВ используя преобразование Бокса-Мюллера


Проверка  эффективности работы генератора ПСВ


1


2



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 5.2.

 

 

    1. Выбор структуры ИНС

 

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

(01100)  и  (01100) – расстояние 0

(01100)  и  (00000) – расстояние 2

(01100)  и  (10011) – расстояние 5

Структура сети

 

 

 

Рисунок 6. Структурная схема сети Хэмминга.

 

 

 

Сеть состоит  из двух слоев. Первый и второй слои имеют по m нейронов, где m – число  образов для запоминания. Нейроны первого слоя имеют по n синапсов, соединенных с входами сети (образующими фиктивный нулевой слой).

Первый слой имеет однонаправленное распространение  сигналов от входа к выходу и фиксированные  значения весов.

Нейроны второго  слоя связаны между собой отрицательными обратными синаптическими связями. Единственный синапс с положительной обратной связью для каждого нейрона соединен с его же аксоном. Таким образом, второй слой состоит из нейронов, связанных обратными связями по принципу "каждый с каждым", при этом в каждом нейроне слоя существует автосвязь (связь входа нейрона со своим собственным выходом). Разные нейроны в слое связаны отрицательной (тормозящей) обратной связью с весом , при этом величина обычно обратно пропорциональна количеству образов. С собственным входом нейрон связан положительной (возбуждающей) обратной связью с весом, равным +1. Пороговые веса нейронов приняты равными нулю. Нейроны этого слоя функционируют в режиме, при котором в каждой фиксированной ситуации активизируется только один нейрон, а остальные пребывают в состоянии покоя.

Выходной  однонаправленный слой формирует выходной вектор, соответствующий входному вектору.

Тип входных  сигналов: бинарные векторы.

Тип выходных сигналов: целые числа.

Размерности входа и выхода ограничены при  программной реализации только возможностями  вычислительной системы, на которой  моделируется нейронная сеть, при  аппаратной реализации - технологическими возможностями. Размерности входных  и выходных сигналов могут не совпадать.

Тип передаточной функции: линейная с насыщением.

Число синапсов в сети: (N*M).

 

Преимущества:

-небольшие затраты на память,

-сеть работает предельно быстро,

-чрезвычайно простой алгоритм работы,

-ёмкость сети не зависит от размерности входного сигнала (как в НС Хопфилда) и в точности равна количеству нейронов.

 

Недостатки:

-сеть вместо образца в явном виде выдаёт его номер.

 

    1.  Программная реализация ИНС

 

В данной реализации размер входного образца должен быть 100х100,а перед обработкой размер образа приводится к 40х40. Поскольку сеть при обучении на не зашумлённых эталонах распознавала только образы с зашумлением до 10%, было принято решение для каждого образа использовать 2 эталона с зашумлением 0% и 10%. Таким образом, в каждом слое сети число нейронов m=20, а выходы соединены попарно 0 и 10, 1 и 11 и т.д. Вес отрицательной обратной связи e был принят равным -0.05.

Алгоритм  обучения нейронной сети был адаптирован  для данной задачи

1. Выбирается i-й входной образ.

2. Изображение локализуется и приводится к нужному масштабу.

3. Образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа

чёрная, то весу k-го входа присваивается значение 0.5, в противном случае -0.5 .

4. Переход на шаг 1, пока не будут исчерпаны все эталонные образы.

Программный код алгоритма обучения:

 

I1:=TImage.Greate(self);

I2:=TImage.Greate(self);

I2.Width:=DestSize;

I2.Height:=DestSize;

for i:=1 to m do

begin

I1.Picture.LoadFromFile(IntToStr(i-1)+’.bmp’);

vScale(I1,I2); // Читаем и масштабируем образ

end;

for x:=1 to DestSize do

for y:=1 to DestSize do // Перебираемпоточечно

if(I2.Canvas.Pixels[x-1,y-1]=clBlack)then InputRow[i].W[x*DestSize+y]=0.5;

elseInputRow[i].W[x*DestSize+y]=-0.5;

 

 

Рисунок 7. Схема алгоритма обучения НС Хемминга

 

Общий алгоритм распознавания для сети Хэмминга состоит из четырёх частей.

Подача распознаваемого образа на входы сети, передача данных с первого слоя на второй, обработка данных вторым слоем, выбор распознанного образа. Алгоритм работы первого этапа выглядит так:

1. Выбирается  очередной нейрон.

2. Обнуляются его выход.

3. Изображение  локализуется и приводится к  нужному масштабу.

4. Локализованный  образ поточечно подаётся на входы i-го нейрона. Если

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

5. Значение  выхода пропускается через функцию линейного порога.

6. Переход  на шаг 1, пока не исчерпаны  все нейроны первого слоя.

Код первого этапа процедуры распознавания:

 

for i: =1 to m do

begin

InputRow[i].Output:=0;

for x: =1 to DestSize do

for y: =1 to DestSize do // Подаём образ на нейроны первого слоя

if i2.Canvas.Pixels[x-1,y-1]=clBlack then

InputRow[i].Output:= InputRow[i].Output+InputRow[i].W[x*DestSize+y];

elseInputRow[i].Output:= InputRow[i].Output-InputRow[i].W[x*DestSize+y];

ifInputRow[i]. Output>=N/2 then

InputRow[i].Output:=N/2; // Выход - через функцию линейного порога

еnd;

 

На втором этапе надо передать данные с выходов  первого слоя на входы второго  и в список результатов предыдущего прохода распознавания:

 

for i:=1 to m do

begin

SecondRow[i].Output= InputRow[i].Output;

Outputs[i]:=InputRow[i].Output;

SecondRow[i].Sum=0;

еnd;

 

На третьем  этапе начинает работу второй слой последующей схеме.

1. Обнуляется  счётчик итераций.

2. Запоминаются  выходы нейронов в списке результатов  предыдущего прохода.

3. Перебираются  поочередно все нейроны.

4. Каждый нейрон принимает значения выходов всех нейронов, суммирует их, предварительно умножив на коэффициент e (кроме случая, когда нейрон принимает своё же значение, которое остается без изменения).

5. Полученную сумму каждый нейрон посылает на свой выход.

6. Переход на шаг 2, пока выходы нейронов на текущей итерации не совпадут с выходами на предыдущей или пока счётчик числа итераций не превысит некоторое значение. Теоретически второй слой должен работать пока его выходы не стабилизируются, нона практике количество итераций искусственно ограничивают.

Исходный код:

Count:=0;

repeat

for i:=1 to m do // Значения предыдущей итерации

begin

Outputs[i]:=SecondRow[i].Output;

SecondRow[i].Sum = 0;

End;

fori:=1 to m do // Один шаг работы второго слоя

for j:=1 to m do

if i=j then // c его выходов на его же входы

SecondRow[j].Sum := SecondRow[j].Sum+ SecondRow[i].Output;

else

SecondRow[j].Sum := SecondRow[j].Sum+ SecondRow[i].Output * e;

Flag:=true;

for i:=1 to m do

begin

SecondRow[i].Output = SecondRow[i].Sum

If (Outputs[i] <>SecondRow[i].Output) then flag:=false;

end;

Count:=Count+1;

until (flag or (Count>25));

 

Последний шаг— выбор нейрона второго слоя с наибольшим значением на

выходе. Его номер и есть номер распознанного образа:

 

Max:= -N;

For i:=1 to m do

If SecondRow[i].Output>Max then

begin

Max = SecondRow[i].Output;

Index = i;

end;

 

      1. Интерфейс пользователя программы-эмулятора ИНС

 

Программы содержит единственное окно, представлено на рисунке 8.1 и рисунке 8.2

 

Рисунок 8.1

 

Рисунок 8.2

 

Интерфейс

Кнопки:

Обучение  – при нажатии на эту кнопку происходит обучение сети.

Исказить  образ – при нажатии на неё  происходит искажение одного из образов, параметры берутся из полей: используемый образ, процент искажения.

Информация о работе Исследование результатов работы программы-эмулятора ИНС