Генератор,
построенный универсальным методом,
является более гибким и настраиваемым.
При реализации его на компьютере
требуется сравнительно небольшое количество
операций для получения каждого случайного
числа. А при реализации генератора, построенного
методом обратной функции, необходимо
рассчитывать формулы, содержащие действия
логарифмирования, возведения в степень
и т.п., выполнение которых увеличивает
затраты машинного времени на получение
каждого псевдослучайного числа. Такое
увеличение времени ощутимо при больших
объемах выборки. Однако данный недостаток
является незначительным на современном
этапе развития вычислительной техники.
- Исследование результатов работы программы-эмулятора ИНС
Таблица
2. Опыты по распознаванию образов
Тестируемый
образ |
Процент
зашумления образа |
Вид
искаженного образа
(одна
из 10 наложенных ошибок) |
Результат
распознавания
Число
опытов/количество верных распознаваний |
Шум
с равномерным распределением |
10% |
|
40/40 |
20% |
|
40/40 |
30% |
|
40/40 |
40% |
|
40/38 |
45% |
|
40/35 |
50% |
|
40/7 |
Шум с нормальным
распределением |
10% |
|
40/40 |
15% |
|
40/40 |
20% |
|
40/10 |
25% |
|
40/7 |
30% |
|
40/3 |
Шум с распределением
1/cos(2x)^2 |
10% |
|
40/40 |
15% |
|
40/35 |
20% |
|
40/20 |
25% |
|
40/5 |
Для шума с
равномерным распределением:
До 40% зашумлённости
образа распознавание происходит в
большинстве случаев.
45%-47% резкое
падение количества распознаваемых
образов(при некоторых ошибках воспринимался
как другой образ).
Для шума с
нормальным распределением:
До 20% зашумлённости
образа распознавание происходит в большинстве
случаев. Если уровень шума превышает
20%, то распознать данное изображение не
удаётся т.к. математическое ожидание
нормального распределения походит через
центральную ось изображения.
Если брать
область изображения, зашумлённого
на 25%-30%, с рассеиванием от математического
ожидания равным дисперсии и сравнивать
с равномерным распределением, то это
будет эквивалентно 50%-60% зашумления.
Границы цифр
0 и 8 на изображении выходят за пределы
единичной дисперсии, по этой причине
нейронная сеть продолжает распознавать
эти образы до 30%-35% зашумления.
Для шума с
распределением 1/cos(2x)^2:
При данной
плотности распределения дисперсия
меньше, чем при нормальном распределении.
До 10% распознавание
происходит в большинстве случаев. От
10% до 15% наблюдаются ошибки при распознавании.
Это связанно прежде всего с тем, что, например,
изображение цифры «8» после подобного
зашумления ближе, по хемминговому расстоянию,
к изображению «6».
Если используются
изображения такие как 1, 2, 4, 7 т.е.
образы, которые наименее похожи на остальные,
то их распознавание возможно и при зашумлении
20%. При уровне шума выше 20% распознавание
не представляется возможным, т.к. треть
изображения является практически полностью
инвертированным.
4.1 Выводы
По
проведенным исследованиям качества
распознавания нейронной сетью
Хемминга искаженных изображений можно
сделать следующие выводы:
- Качество распознавания изображений в значительной мере зависит от степени искажения изображения и сходства запоминаемых эталонных изображений. Зависимость качества распознавания от сходства эталонных изображений хорошо просматривается при сравнении серий экспериментов по распознаванию образов. Из-за схожести изображений цифр 0, 8, 9, 6 при зашумлении нейронная сеть может их перепутать.
- Качество распознавания изображений зависит от законов распределения ПСВ – координат искажаемых пикселей, сформированных генераторами ПСВ. При распределении координат искажаемых пикселей, соответствующему равномерному закону, нейронная сеть Хемминга справляется с задачей распознавания в большинстве экспериментов лучше, чем при нормальном распределении.
Заключение
В результате
выполнения данной работы был разработан
программный комплекс, позволяющий:
- Моделировать работу нейронной сети Хемминга, решающей задачи распознавания искаженных изображений:
- Обучать нейронную сеть эталонным образам.
- Распознавать искаженные образы.
- Строить генераторы ПСВ с заданными законами распределения следующими тремя методами:
- Методом обратной функции для получения дискретной ПСВ.
- Методом обратной функции для получения непрерывной ПСВ.
- Универсальным методом для получения непрерывной ПСВ.
- Генерировать выборки реализаций ПСВ.
- Исследовать эффективность работы построенных генераторов ПСВ следующим образом:
- Вычислять степени расхождения теоретических и практических законов распределения с использованием критериев согласия Пирсона и Колмогорова.
- Представлять результаты исследования в графическом виде, осуществляя построение графиков выборки реализаций ПСВ, плотности распределения (теоретической и практической), функций распределения (теоретической и практической).
- Искажать изображения с заданным процентом зашумления.
Также в работе
были проведены исследования качества
распознавания нейронной сетью
Хемминга искаженных черно-белых изображений.
Разработанный
программный комплекс в дальнейшем
может быть основой более сложных
систем анализа и распознавания
образов с целью повышения
эффективности распознавания.
Библиографический
список
- Хайкин С. Б. Нейронные сети: полный курс / С. Б. Хайкин. – Спт.: «Вильямс», 2005. – 866с.
- Уоссерман Ф. Нейрокомпьютерная техника: Теория и практика / Ф. Уоссерман. Перевод на русский язык, Ю. А. Зуев, В. А. Точенов, 1992./
- Л. Шапиро, Дж. Стокман Компьютерное зрение / Пер. с англ. - М.: БИНОМ. Лаборатория знаний, 2006.
- 752 с, 8 с. ил.: ил.
- Абламейко С.В., Лагуновский Д.М. Обработка изображений: технология, методы, применение. Учебное пособие. – Мн.: Амалфея, 2000. – 304с.
- Заенцев И.В. Нейронные сети: основные модели: учебное пособие – Воронеж: Изд-во ВГУ, 1999. – 76 с.
- Осовский С. Нейронные сети для обработки информации / Пер. с польского И.Д. Рудинского.
- М.: Финансы и статистика,
2002. - 344 с: ил.
- Вентцель Е.С. Теория вероятностей: учеб.для вузов / Е.С. Вентцель. - 7-е изд., стер. - М.: Высш. шк., 2001. - 575 с.
- Шеннон Р. Имитационное моделирование систем. Искусство и наука: [пер. с англ.] / Р. Шеннон. – М.: Мир, 1978. – 421 с.
- Потапов В.И. Потапов И.В. Математические модели, методы и алгоритмы оптимизации надежности и технической диагностики искусственных нейронных сетей. – Омск: Изд-во ОГУП Омская областная полиграфия.
- 2004г. – 220с.
- Кирьянов Б.Ф. Моделирование случайных величин: методические указания для студентов / Б.Ф.Кирьянов – Великий Новгород: РИС НовГУ, 2004. – 47с.
- Бусленко Н.П. Моделирование сложных систем / Н.П. Бусленко. – М.: Наука, 1968. – 356 с.
- Вентцель Е.С. Теория вероятностей: учеб.для вузов / Е.С. Вентцель. - 7-е изд., стер. - М.: Высш. шк., 2001. - 575 с.
- Комашинский В.И. Нейронные сети и их применение в системах управления и связи / В.И. Комашинский, Д.А. Смирнов. – М.: Горячая линия - Телеком, 2003. – 94 c.
- Потапов В.И. Выполнение и организация защиты выпускных квалификационных работ бакалавров: метод. указания для студентов, обучающихся по направлению 230100 "Информатика и вычислительная техника"
/ В.И. Потапов. – Омск: Изд-во ОмГТУ, 2007. – 15 с.
- Потапов В.И. Дипломное проектирование: метод. указания для студентов, обучающихся по специальности 230101 и направления подгот. бакалавров 230100
/ В.И. Потапов, Б.И. Елькин, О.П. Шафеева. – Омск: Изд-во ОмГТУ, 2007. – 64 с.
- Фурман Я. А., Юрьев А. Н., Яншин В. В. Цифровые методы обработки и распознавания бинарных изображений.— Красноярск: Издательство Красноярского университета, 1992
- 248 с.
- Потапов В.И. Магистерская диссертация: методика написания, правила оформления и порядок защиты: учеб. пособие / В.И. Потапов, Д.В. Постников; ОмГТУ. - Омск: Изд-во ОмГТУ, 2010. - 59 с.
- ГОСТ 7.32 – 2001 Отчет о научно-исследовательской работе. Структура и правила оформления. – Взамен ГОСТ 7.32–91; введ. 2002–07–01. – М.: Изд-во стандартов, 2001. – 18с.
- ГОСТ 19.701 – 90 ЕСПД. Схемы алгоритмов, программ, данных и систем. – Взамен ГОСТ 19.002-80; введ. 1992-01-01. - М.: Изд-во стандартов, 1990. – 8 с.
- ГОСТ 7.1 – 2003 Библиографическая запись. Библиографическое описание. Общие требования и правила составления. – Взамен ГОСТ 7.1–84; введ. 2004-07-01. – М.: ИПК Изд-во стандартов, 2004
- Wikipedia. [Электронный ресурс]. [http://ru.wikipedia.org/wiki/].
Приложение А. Генератор ПСВ.
// алгоритм для
генерации непрерывной случайной
величины
//функция распределения обратного метода непрерывной СВ
public class InverseDistributionFunction : IDistributionFunction, IDensityFunction
{
private static InverseDistributionFunction func = null;
//метод создания
public static InverseDistributionFunction Create()
{
func = new InverseDistributionFunction();
return func;
}
//конструктор
private InverseDistributionFunction()
{
func = this;
}
//возвращает значение функции в точке
public double GetFunctionValue(double x)
{
if(x<Xmin())
{
return 0;
}
if(x>Xmax())
{
return 1;
}
double y = Math.Tan(2 * x) / 2 /*Math.Log(x,2)*/; //функция распределения
if (y<0)
{
return 0;
}
else
{
if (y>1)
{
return 1;
}
else
{
return y;
}
}
}
//возвращает значение обратной функции в точке
public double GetInverseFunctionValue(double y)
{
if (y < 0 || y > 1)
{
throw new Exception("Обратная функция существует только в интервале от 0 до 1");
}
double x = Math.Atan(2 * y) / 2; //обратная функция распределения
return x;
}
//Возвращает значение функции плотности в точке
public double GetDensityFunctionValue(double x)
{
double y = (double)1 / (Math.Cos(2 * x) * Math.Cos(2 * x));//функция плотности
return y;
}
//возвращает математическое ожидание СВ
public double GetExpectation()
{
double step = (Xmax() - Xmin()) / 100;
double prevM = 0;
double M = 1;
while (Math.Abs(M - prevM) > 0.000001)
{
prevM = M;
double current = 0;
for (double x = Xmin(); x < Xmax(); x += step)
{
current += step * ((x + step) * GetDensityFunctionValue(x + step) + x * GetDensityFunctionValue(x)) / 2;
}
M = current;
step /= 2;
}
return M;
}
//возвращает СКО
public double GetMeanSquareDeviation()
{
return Math.Sqrt(GetDispersion());
}
//возвращает дисперсию
public double GetDispersion()
{
double step = (Xmax() - Xmin()) / 100;
double prevD = 0;
double D = 1;
double M = this.GetExpectation();
while (Math.Abs(D - prevD) > 0.000001)
{
prevD = D;
double current = 0;
for (double x = Xmin(); x < Xmax(); x += step)
{
current += step * (Math.Pow((x + step - M), 2) * GetDensityFunctionValue(x + step) + Math.Pow((x - M), 2) * GetDensityFunctionValue(x)) / 2;
}
D = current;
step /= 2;
}
return D;
}
public double Xmin()
{
return this.GetInverseFunctionValue(0);
}
public double Xmax()
{
return this.GetInverseFunctionValue(1);}}
public class InverseGenerator:IGenerator
{
private InverseDistributionFunction Function = null;
Random BaseGenerator = new Random();//генератор базовой случайной величины
//конструктор
public InverseGenerator()
{
Function = InverseDistributionFunction.Create();//получаем экземпляр функции распределения
}
//сгенерировать очередное значение
public double GenerateValue()
{
double x1 = BaseGenerator.NextDouble();// генерация очередного значения базовой случайной величины
double result = Function.GetInverseFunctionValue(x1);//получение значения обратной функции распределения
return result;
}
}
//алгоритм для
генерации дискретной случайной
величины
//дискретная функция распределения
public class DiscreteDistributionFunction : IDistributionFunction, IDensityFunction
{
private static DiscreteDistributionFunction func = null;//экземпляр самой функции
private List<Point> Values = new List<Point>();//массив точек(точки вида: значение, вероятность)
//метод создания
public static DiscreteDistributionFunction Create()
{
return func;//возвращаем существующий объект
}
//метод создания
public static DiscreteDistributionFunction Create(List<Point> values)