лабы по Сапунову / Lab1_neural / Лабораторная №1 (отчет)
.doc
Лабораторная работа №1
курс: «Вычислительный интеллект»
тема: Персептрон. Обучение персептрона.
цель: изучить принципы функционирования и способы обучения персептрона.
студента 5 курса группы СИИ (магистры)
Дворника Константина
Нейрон с одним вектором входа р с R элементами показан на рис. 1. Здесь каждый элемент входа умножается на веса соответственно и взвешенные значения передаются на сумматор. Их сумма равна скалярному произведению вектора- строки W на вектор входа р.
Рис. 1. Функциональная схема нейрона
Нейрон имеет смещение b, которое суммируется со взвешенной суммой входов. Результирующая сумма n определяется как
Алгоритм персептрона
С помощью персептрона можно осуществлять классификацию объектов по двум классам. Полагаем, что x ∈ ϖ1, если R(x)>0, и x ∈ ϖ2 – в противном случае. Функция R(x) =w⋅x будет линейной решающей функцией (ЛРФ), а гиперплоскость w⋅x= 0 – линейной разделяющей поверхностью.
Предположим, что имеется некоторая обучающая выборка {x1, …, xn}, причем {x1, …, xm} ⊂ ϖ1 и {xm+1, …, xn} ⊂ ϖ2. Требуется построить линейную решающую функцию R(x) =w⋅x, которая бы правильно разделяла элементы обучающей выборки, т.е.
w⋅xi > 0 ∀ i= (1,…m)
w⋅xi < 0 ∀ i= (m+1,…n)
Построение такой ЛРФ осуществим с помощью итерационного алгоритма. Для этого обучающую выборку запишем в виде бесконечной циклической последовательности {x1, …, xn, x1, …, xn,...} и выберем некоторое начальное значение весов w(1)=(w1(1), …, wn(1)). Далее на каждом k-м шаге алгоритма «предъявляется» k-й вектор xk обучающей выборки и значение весового вектора w(k) корректируется или не корректируется в соответствии с правилом
То есть весовой вектор не меняется, если «предъявленный» вектор классифицируется правильно и увеличивается или уменьшается на xk при неправильной классификации. Алгоритм завершает свою работу, если осуществляется n-кратная правильная классификация образов обучающей выборки.
%Konstantin Dvornik 5SAI
%Variant 2
%Omega1 = {(-3;2;0.5),(1;1;-2),(0.5;1.5;-1)}
%Omega2 = {(0;0;1),(1.5;1;0.5),(2;0;2)}
P = [-3 1 0.5 0 1.5 2; 2 1 1.5 0 1 0; 0.5 2 -1 1 0.5 2];
T = [1 1 1 0 0 0];
net = newp([-3 2;0 2;-1 2],1);
[net,Y,E]=train(net,P,T);
plotpv(P,T);
plotpc(net.IW{1},net.b{1});
На обучение было затрачено 6 итераций.