- •Лабораторная работа № 1. Активационная функция
- •Лабораторная работа № 2. Искусственные нейронные сети
- •Лабораторная работа № 3. Обучение искусственных нейронных сетей
- •Лабораторная работа № 4. Персептронные сети
- •Лабораторная работа № 5. Линейные нейронные сети
- •Лабораторная работа № 6. Сети Эльмана
- •Лабораторная работа № 7. Сети Хопфилда
- •Лабораторная работа № 8. Радиальные базисные сети общего вида
- •Лабораторная работа № 9. Радиальные базисные сети типа grnn
- •Лабораторная работа № 10. Радиальные базисные сети типа pnn
- •Лабораторная работа № 11. Самоорганизующиеся слои Кохонена
- •Лабораторная работа № 12 Самоорганизующиеся карты Кохонена
- •Литература
Лабораторная работа № 4. Персептронные сети
Цель работы: изучение архитектуры персептрона и специальных функций для создания персептрона, настройки его весов и смещений и адаптации, ознакомление с демонстрационными примерами, а также приобретение навыков построения и обучения персептронов для различных областей применения.
Задание 1. Создать персептрон с одним нейроном и одноэлементным входом, диапазон значений которого от 0 до 1, и проанализировать значения параметров его вычислительной модели, выполнив следующие действия:
1. Создать и инициализировать персептрон:
net = newp([0 1], 1) % на экране весь объект
net.inputWeights{1,1} % веса входа объекта
net.biases{1} % смещение нейрона
net.IW{1,1} % значение весов
net.b{1} % значение смещения
net.IW{1,1}=[3] % задание веса
net.b{1}=[4] % задание смещения
net = init(net); % инициализация нулями
net.IW{1,1} % нулевое значение веса
net.b{1} % нулевое значение смещения
net.inputWeights{1,1}.initFcn=′rands′;
net.biases{1}.initFcn=′rands′;
net = init(net); % инициализация случайными значениями
net.IW{1,1}, net.b{1} % новые значения
p = {[0] [1] [0.5]}; % последовательность входов
a = sim(net, p) % моделирование сети
Задание 2. Создать персептрон с одним нейроном и одним двухэлементным вектором входа, значения элементов которого изменяются в диапазоне от –2 до 2, настроить веса и смещение для реализации разделяющей линии
– p1 + p2 + 1 = 0,
а затем с помощью моделирования определить классы значений входного вектора, выполнив следующие действия.
1. Создать персептрон:
net = newp([ –2 2; –2 2], 1).
2. Произвести ручную инициализацию:
net.IW{1,1} = [ –1 1] ;
net.b{1} = [1].
3. Произвести проверку персептрона:
p = [1;1];
a = sim(net, p) % a = 1
p = [1; –1];
a = sim(net, p) % a = 0
4. Определить классы значений вектора:
p = {[ –2; –2] [ –2; –1] [ –2;0] [ –2;1] [ –2;2]…
[ –1; –2] [ –1; –1] [ –1;0] [ –1;1] [ –1;2]…
[0; –2] [0; –1] [0;0] [0;1] [0;2]…
[1; –2] [1; –1] [1;0] [1;1] [1;2]…
[2; –2] [2; –1] [2;0] [2;1] [2;2];
a = sim(net, p) % [0] –0 –й класс, [1] –1 –й класс
Задание 3. Создать персептрон с одним нейроном и двоичным входом и настроить его параметры для выполнения логической функции AND, а затем для выполнения логической функции OR, выполнив следующие действия:
1. Создать персептрон:
net = newp([0 1;0 1], 1).
2. Подготовить обучающие последовательности:
p={[0;0] [0;1] [1;0] [1;1]};
p1=cat(2, p{:});
T1=num2cell(p1(1,:) & p1(2,:)) % функция AND
T2=num2cell(p1(1,:) | p1(2,:)) % функция OR
3. Настроить параметры персептрона для выполнения логической функции AND, используя процедуру адаптации:
net.adaptParam.passes = 10; % число проходов
net.adapt(net,p,T1); % настройка на AND
net.IW{1,1},net.b{1} % линия 2p1 + p2 –3=0
Y =sim(net,p) % моделирование AND
4. Настроить параметры персептрона для выполнения логической функции OR, используя процедуру обучения:
net.trainParam.epochs=20; % число циклов
net = init(net); % инициализация
net = train(net,p,T2); % настройка на OR
net.IW{1,1},net.b{1} % линия 2p1 + 2p2 –2=0
Y = sim(net,p) % моделирование OR
Задание 4. Используя пошаговый режим адаптации и обучения, проследить изменения весов, смещения, выходного значения и ошибки для персептрона, рассмотренного в третьем задании. Для этого использовать команды:
net.adaptParam.passes = 1;
net.trainParam.epochs = 1;
[net,Y,e]=adapt(net,p,T1); % для AND
[net, Y,e]=train(net,p,T2); % для OR
net.IW{1,1},net.b{1} % настраиваемые параметры