Лабораторная работа
по курсу
"Интеллектуальные системы":
Распознавание изображений с помощью персептрона
Выполнил
студент группы ИУ5-81
Баришок Н.И.
Краткое описание
Разработка программы, которая обучает искусственную нейронную сеть (персептрон) распознавать два или более черно-белых изображения.
Разработка программы, которая обучает искусственную нейронную сеть (персептрон) распознавать два или более черно-белых изображения.
Цель работы
Изучить принципы работы и алгоритм обучения простейших искусственных нейронных сетей (НС).
Изучить принципы работы и алгоритм обучения простейших искусственных нейронных сетей (НС).
Требования к исходным данным и функциональности компьютерной программы
- В программе должна быть реализована возможность задания обучающей выборки из внешних файлов изображений
- Изображения должны быть черно-белыми (bitmap) и размером не менее 9 (3x3) пикселей.
- Программа должна иметь два режима работы: обучения и распознавания.
- Обучение должно производиться по стандартному алгоритму обучения персептрона с использованием дельта-правила.
- В программе должны задаваться следующие настройки:
- количество входов нейрона, которое соответствует общему числу пикселей изображения
- коэффициент скорости обучения (если его значение постоянно)
- правильные варианты элементов обучающей выборки
- размер ошибки, при котором обучение персепетрона завершается (опционально)
- На экранной форме режима обучения должны отображаться:
- элементы обучающей выборки (изображения)
- настройки алгоритма обучения
- текущие (итоговые) веса нейронов и значение порога активационной функции
- протоколы результатов обучения (значения весов для каждой итерации)
- На экранной форме режима распознавания должны отображаться:
- распознаваемое изображение (должно выбираться из всего множества)
- результат распознавания
- веса нейронов и значение порога активационной функции
- значения выходов всех нейронов до и после применения активационной функции
Алгоритмы обучения и распознавания персептрона:
Персептрон - простейшая однонаправленная нейронная сеть.
В качестве функции f применяется биполярная функция активации:
Сигнал Х на выходе линейной части перспетрона задается выражением
здесь w0 = v, u0=-1
Задача персептрона заклчается в классификации вектора u=[u1,...,un]T в смысле отнесения его к классу либо L1 или L2. Персептрон относит вектор к классу L1, если выхдной сигнал равен 1, и l2, если -1. После этого персептрон разделяет N-мерное пространство входных векторов u на 2 полупространства, разделяемые (n-1)-мерной плоскостью, задаваемой уравнением
Обучение персептрона заключается в реккурентной коррекции вектора весов w(n), согласно формулам:
Пошаговое выполнение алгоритма в программе:
Участок кода, ответственный за подбор весов персептрона:
double delta = 0;
this.InitWeights();
for (int i = 0; i < etalonPictures.Count; i++)
{
ObservableCollection<bool> currentitem = etalonPictures.ElementAt(i);
double value = 0;
int j = 0;
foreach (bool item in currentitem)
{
value += Convert.ToInt32(item) * m_weights[j];
j++;
}
delta = Math.Round((1 - value) * this.RightTrainingSpeed, 2);
this.UpdataWeights(currentitem, delta);
}
for (int i = 0; i < trainingPictures.Count; i++)
{
ObservableCollection<bool> currentitem = trainingPictures.ElementAt(i);
double value = 0;
int j = 0;
foreach (bool item in currentitem)
{
value += Convert.ToInt32(item) * m_weights[j];
j++;
}
delta = Math.Round((0 - value) * this.WrongTrainingSpeed, 2);
this.UpdataWeights(currentitem, delta);
}
ObservableCollection<bool> item1 = etalonPictures.ElementAt(0);
double temp = this.EvaluateThreshHoldFunc(item1);
m_thresholdFunc = Math.Round(temp, 2) - 0.01;
Полный проект решения можно найти здесь
При выполнении ЛР были использованы следующие источники:
-"интеллектуальная" часть:
+Рутковская Д., Пилиньский М., Рутковский Л. - Нейронные сети, генетические алгоритмы и нечеткие системы (2006)
+конспекты лекций
-программная часть:
+msdn.microsoft.com
+stackoverflow.com
+статьи по теме: mvvm-pattern in wpf
Описание разработки:
-язык программирования: C#
-техннология: WPF
-среда разработки: VS 2010
* для корректной работы прораммы на ПК необходимо установить:
-.net frameork v4.0
-entity framework v4.2
Здравствуйте. Есть возможность перезалить проект? Ссылка уже недействительна. Заранее спасибо.
ОтветитьУдалить