Искусственный интелект

Автор работы: Пользователь скрыл имя, 20 Мая 2013 в 20:04, курсовая работа

Краткое описание

В рамках бакалаврской работы был рассмотрен метод распознавания графических образов с шумами, основанный на применении нейронной сети Хемминга. Было рассмотрено влияние шумов в данных на результат работы сети.
Также в рамках работы был построен программный комплекс, реализующий данный метод и позволяющий анализировать сгенерированные последовательности данных с внесённым в них шумом. Шум является случайной величиной и имеет заданный закон распределения. Были проведены исследования и на основе их результатов были сформулированы выводы.

Содержимое работы - 1 файл

Доклад ИИ.docx

— 1.85 Мб (Скачать файл)

 

 

Рисунок 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

 

Интерфейс

Кнопки:

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

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

Распознавание – происходит распознавание одного из образов. Название берётся из поля используемый образ, результат выводится  в виде двух картинок, слева –  вводимый образ, справа – соответствующий  ему(по мнению сети) идеальный. А так  же в виде числа в поле результат  распознавания.

Если поставить  метку в поле «Нормальное распределение», то искажение происходит не по равномерному закону распределения, а по нормальному  при помощи преобразования Бокса-Мюллера.

 

    1. Описание программного генератора случайных величин

Рисунок 9. Диаграмма классов данной программы.

  • Класс Form1 реализует интерфейс пользователя, и определяет какие методы и функции распределения использовать для генерации случайной величины;
  • Класс Form2 и класс Form3 создают новые модальные окна и рисуют в них график функции плотности, функции распределения, обратной функции распределения;
  • Класс Form4 предоставляет методы для изменения значений функций плотности в универсальном методе и методе обратной функции для дискретных величин;
  • Класс TableKolmogorova и TablePirson содержит описание таблицы значений критериев Пирсона и Колмогорова для разных значений соответствующих критериев;
  • Класс PointFromTable содержит в себе два метода, сохраняет вероятность гипотезы и значение самого критерия.

 

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

 

Программы содержит два окна. Главное окно программы появляется при запуске  программы представлено на рисунке 10, второе окно появляется после нажатие вкладки «Графики» представлено на рисунке 11.

Рисунок 10. Вкладка «данные»

Рисунок 11. Вкладка «графики»

В главном окне программы происходит настройка генератора случайных величин и выбор метода генерации случайной величины.

Данное окно содержит:

  • Поле «Размер выборки» - определяет количество генерируемых величин;
  • Поле «Число интервалов для критерия Пирсона» - определяет число степеней свободы;
  • Поле «Число интер. для практической ф. распред.» - определяет число интервалов на которые разбивается практическая функция распределения;
  • Поле «Математическое ожидание» - определяет теоретическое и практическое математическое ожидание ;
  • Поле «Дисперсия» - определяет теоретическую и практическую дисперсию;
  • Поле «СКО» - определяет теоретическую и практическую среднеквадратическое отклонение;
  • Поле «P(χ)» - определяет вероятность правильной работы генератора случайных величин по критерию Пирсона;
  • Поле «P(λ)» - определяет вероятность правильной работы генератора случайных величин по критерию Колмогорова;
  • Вкладки «Метод обратной функции для непрерывной СВ», «Метод обратной функции для дискретной СВ» и «Универсальный метод» - определяют метод генерации случайной величины и функцию плотности для каждого метода;
  • Вкладка «Графики» - служит для отображения окна «Графики обратной функции ….».

 В  окне «Графики обратной функции»  можно посмотреть качество работы  генератора. Данное окно разбито на 4 подокна и в каждом расположено по несколько графиков.

 

    1. Выводы

 

В главе 2, данной работы был программно реализован эмулятор работы НС Хемминга размерностью 20 нейронов с десятью тысячами входов, решающей задачи распознавания искаженных изображений, использующий для искажения  генераторы ПСВ, построенные в этой же главе. Также реализована генерация  случайного шума с нормальным законом распределения методом Бокса-Мюллера, рассмотренным в предыдущей главе.

 

 

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

 

 

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

 

2. Спроектировать  генератор для получения последовательности  случайных дискретных величин  методом обратной функции. В  качестве постоянных данных взять  множество пар {<yi,Pi>}:

 

Таблица 1. Данные для генератора ПСВ.

3

4

5

9

10

0,135

0,45

0,22

0,12

0,075


 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.1 Метод обратной функции для непрерывной случайной величины.

 

Проводится  опыт для фиксированного количества "карманов", равного 9, затем изменяется число выборки: 1000, 100.

 

Рисунок 12. Размер выборки 100.

 

 

 

 

Рисунок 13. Размер выборки 1000.

 

 

 

 

 

 

 

 

 

 

 

Проводится  опыт для фиксированного количества "карманов", равного 5, затем изменяется число выборки: 1000, 100.

 

 

 

Рисунок 14. Размер выборки 100.

 

 

 

 

Рисунок 15. Размер выборки 1000.

 

 

При увеличении выборки и фиксированном числе карманов достигается наиболее точное приближение к заданному закону распределения случайной величины. Увеличивается вероятность такого события, что реализация случайной величины χ2 окажется не меньше наблюдаемой по случайным причинам.

3.2 Метод обратной функции для дискретной случайной величины.

 

Фиксируется количество "величин", равное 5, затем  изменяется число выборки: 10000, 1000, 100.

 

 

Рисунок 16. Размер выборки 100.

 

 

Рисунок 17. Размер выборки 1000.

 

 

 

 

 

 

 

 

3.3 Генерация псевдослучайной величины универсальным методом

 

Проводится опыт для фиксированного количества "карманов", равного 5, затем изменяется число выборки: 100, 500.

Рисунок 18. Размер выборки 100.

 

 

 

Рисунок 19. Размер выборки 500.

 

 

 

 

 

 

 

 

Проводится опыт для фиксированного количества "карманов", равного 9, затем изменяется число выборки: 100, 500.

 

 

Рисунок 20. Размер выборки 100.

 

Рисунок 21. Размер выборки 500.

 

 

Для каждой функции считаем χ2 и количество степеней свободы, потом по специальным таблицам находим значение вероятности α. Это вероятность такого события, что реализация случайной величины χ2 окажется не меньше наблюдаемой по случайным причинам. Если α мала, то гипотезу о принятом распределении отвергаем, если же α приближается к 1, расхождение между практическим и теоретическим распределениями несущественно и гипотезу можно считать правдоподобной или, по крайней мере, не противоречащей опытным данным.

Для каждой функции считаем l, по специальным таблицам находим значения Q(l), в качестве вероятности берётся значение, при котором Q(l) = 1 – l.

3.4 Выводы

 

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

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

Для формального суждения о степени  расхождения теоретического и фактического законов распределения были количественно  установлены степени расхождения  законов с использованием критериев согласия Пирсона и Колмогорова. Было доказано, что полученные расхождения между теоретическими и практическими распределениями несущественны и относятся к расхождениям за счет случайных причин, так как для всех генераторов P(c2)>0,1 и P(l )>0,1. Критерий Колмогорова давал более высокие значения вероятности того, что полученные расхождения теоретического и практического распределений объясняются случайными факторами. Однако эти значения можно считать завышенными, т.к. критерий Колмогорова предполагает использование числовых параметров функции распределения, определенных по статистическому материалу, а при применении критерия Пирсона это обстоятельство учитывается уменьшением степеней свободы распределения c2. Поэтому критерий Пирсона даёт более строгую оценку степени согласованности теоретического и практического распределений.

Информация о работе Искусственный интелект