лабы по Сапунову / Lab2_neural / Лабораторная №2 (отчет)
.doc
Лабораторная работа №2
курс: «Вычислительный интеллект»
тема: моделирование булевой функции с помощью нейронной сети
цель: изучение возможностей нейронных сетей для реализации булевых функций.
студента 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-кратная правильная классификация образов обучающей выборки.
Dvornik = 68 + 118 + 111 + 114 + 110 + 105 + 107 = 733. В двоичной системе 0011 1101 1101. Поскольку нам нужно первых 8 разрядов отбрасываем первые четыре. Получаем
x1 |
x2 |
x3 |
f |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
ДНФ функции f
Структура нейронной сети, представляющей функцию f
Заключительный этап – подбор весов и смещений сети таким образом, чтобы каждый нейрон реализовывал соответствующую функцию.
Например, для элементарной конъюнкции возможные весовые коэффициенты при соответствующих связях для x1, x2, x3 и смещения могут быть
(-1;-1;-1;0.5).
После подбора весовых коэффициентов созданная нейронная сеть моделируется при помощи системы Matlab.
input = [0 0 0 0 1 1 1 1; 0 0 1 1 0 0 1 1; 0 1 0 1 0 1 0 1];
output = [1 1 0 1 1 1 0 1];
net = newff([0 1; 0 1; 0 1],[6 1], {'hardlim' 'hardlim'});
net.IW{1, 1} = [-1 -1 -1; -1 1 1; 1 -1 -1; 1 1 1; 1 1 1; 1 1 1];
net.b{1} = [0.5; -1.5; -0.5; -2.5];
net.LW{2,1} = [1 1 1 1];
net.b{2,1} = -0.5;
y = sim (net,input)
Результат:
y =
1 1 0 1 1 1 0 1