лабы по Сапунову / Lab3_nural / Лабораторная №3 (отчет)
.doc
Лабораторная работа №3
курс: «Вычислительный интеллект».
тема: Многослойный персептрон.
цель: изучение возможностей многослойных персептронов для распознавания образов, принадлежащих линейно неразделимым классам.
студента 5 курса группы СИИ(магистры) 2 Вариант
Дворника Константина
Построить многослойную нейронную сеть, реализующую отделение на плоскости точек, принадлежащих заданной невыпуклой фигуре, от остальных.
Для удобства добавлю прямую 6 (см. рис. 1).
Рис. 1
Определение уравнений прямых, ограничивающих заданную фигуру.
1) x + y - 7= 0
2) 4x – 7y + 27 = 0
3) 1x - y + 0 = 0
4) 2x – 1y - 6 = 0
5) -3x - 1y + 19 = 0
6) 8x - 3y - 45 = 0
Необходимая область будет построена как комбинация выпуклых многоугольников – из основной фигуры, основанной линиями 1-2-3, будут удалены фигуры, ограниченные прямыми 3-4-5-6.
Таким образом, получем 3-хслойную нейронную сеть:
1-й слой: 6 нейронов, отвечающих за определение положения поданной на вход сети точки относительно каждой из прямых. Смещения для первого слоя – свободные члены 6 уравнений прямых.
2-й слой: 2 нейрона, формирующие данные о 2-х многоугольниках.
3-й слой: 1 нейрон, формирующий функцию, которая объединяет знания о положении точки.
Структурная схема нейронной сети отображена на рис. 2
Рис. 2
Программа на Matlab:
X = [6 1 9 5 9 6 1 3 1 8 3 4 7 5 7 4];
Y = [4 8 1 6 3 8 1 5 4 3 3 2 5 3 7.5 5];
input = [X; Y];
net = newff([1 9; 1 8],[6 2 1], {'hardlim' 'hardlim' 'hardlim'});
net.IW{1, 1} = [1 1; 4 -7; 1 -1; 2 -1; -3 -1; 8 -3];
net.b{1} = [-7; 27; 0; -6; 19; -45];
net.LW{2, 1} = [1 1 0 0 0 0; 0 0 1 1 -1 0 ];
net.b{2} = [-1.5;-1.5];
net.LW{3, 2} = [1 -1];
net.b{3} = -0.5;
y = sim (net,input);
plotpv(input,y);
axis([0 10 0 10])
line([2 6],[5 1],'LineWidth',1);
line([2 9],[5 9],'LineWidth',1);
line([6 9],[6 9],'LineWidth',1);
line([5 6],[4 6],'LineWidth',1);
line([5 6],[4 1],'LineWidth',1);
Результат работы программы: