Исследование нейронных сетей в системе Scilab
Ф ункции активации в нейронных сетях в Scilab
Пример 1. Рассмотрим следующие функции активации в нейронных сетях: логистическую, гиперболического тангенса, линейную.
Для их построения в Scilab предлагается следующая программа
// Иллюстрации различных функций активации в нейронных сетях
x= -10:0.1:10;
tmp = exp(-x);
y1 =1./(1+ tmp); // Логистическая функция
y2 =(1-tmp)./(1+tmp); //функция гиперболического тангенса
y3=x; // линейная Функция
subplot(2,3,1);
plot(x,y1);
set(gca(),"grid",[1 1]);
([min(x) max(x) -2 2]) ;
title('Logistic Function');
xlabel ('(a)');
('square');
subplot(2,3,2);
plot(x,y2);
set(gca(),"grid",[1 1]);
([min(x) max(x) -2 2]);
title('Hyperbolic Tangent Function');
xlabel('(b)');
('square');
subplot(2,3,3);
plot(x,y3);
set(gca(),"grid",[1 1]);
([min(x) max(x) -2 2]);
title('Identity Function');
xlabel('(c)');
('square');
Графики функций, полученные с помощью программы показаны на рис.21.
Рис. 21. Графики функций: логистической (а), гиперболического тангенса (b), линейной (c)
Персептрон для логической функции И с двумя входами
Пример 2. Рассмотрим программу для создания персептрона для двухвходовой (биполярной) логической функции И (AND). Использовать теоретические положения п.2 и п.3.
Для его построения в Scilab предлагается следующая программа.
//Создать персептрон для функция И с двухполярными входными сигналами и 1 выходом (целью)
//Таблица истинности для элемента И
// X1 X2 Y
// -1 -1 -1
// -1 1 -1
// 1 -1 -1
// 1 1 1 (Bipolar (1,-1))
clc;
clear;
x=[1 1 -1 -1;1 -1 1 -1];//входы
t=[1 -1 -1 -1]; //цель (сигнал на выходе)
w=[0 0]; //веса входов
|
|
b =0; //смещение
alpha=input('Enter learning rate='); //скорость обучения
theta=input('Enter threshold value='); //пороговое значение
con=1;
epoch=0;
while con
con=0;
for i=1:4
yin=b+x(1,i)*w(1)+x(2,i)*w(2);
if yin>theta then
y=1;
end
if yin<=theta & yin>= -(theta) then
y =0;
end
if yin<-(theta) then
y= -1;
end
if y=t(i) then
con=1;
for j=1:2
w(j)=w(j)+alpha*t(i)*x(j,i);
//повышение веса
end
b=b+alpha*t(i) //обновление смещения
end
end
epoch=epoch+1;
end
disp('perceptron for AND function');
disp('Final Weight matrix');
disp(w);
disp('Final Bias');
disp(b);
Первоначально скорость обучение задать равной α =0.1, а порог θ = 0.4. Обучением надо добиться, чтобы в конце обучения персептрон выдавал правильные выходные данные при соответствующих входных значениях согласно таблицы истинности для элемента И. При необходимости можно изменять скорость обучения и порог.
Создание логической функции ИЛИ с двумя входами с использованием
Нейронной сети Adaline
Пример 3. Рассмотрим программу для создания нейронной сети Adaline для двухвходовой (биполярной) логической функции ИЛИ (OR). Использовать теоретические положения п.2 и п.3.
Для его построения в Scilab предлагается следующая программа.
//Создайте функцию ИЛИ с двухполярными входными сигналами и одним выходом (целью) с использованием нейронной сети Adaline
|
|
//Таблица истинности для элемента ИЛИ
// X1 X2 Y
// -1 -1 -1
// -1 1 1
// 1 -1 1
// 1 1 1 (Bipolar (1,-1))
clc;
clear;
disp('Нейронная сеть Adaline для функции ИЛИ с биполярными входами и выходом (целью)');
//матрица входов
x1=[1 1 -1 -1];
x2=[1 -1 1 -1];
//матрица смещений
x3=[1 1 1 1];
//вектор цели (выхода)
t=[1 1 1 -1];
//начальные веса и смещения
w1=0.1; w2=0.1; b=0.1;
//начальная скорость обучения
alpha=0.1;
//разность между желаемым и фактическим выходами сети (ошибка)
e=2;
//изменение весов и смещения
delw1=0; delw2 =0; delb =0;
epoch=0;
while (e>1.018)
epoch=epoch+1;
e=0;
for i=1:4
nety(i)=w1*x1(i)+w2*x2(i)+b;
//рассчитанные входы сети и цели
nt=[nety(i) t(i)];
delw1=alpha*(t(i)-nety(i))*x1(i);
delw2=alpha*(t(i)-nety(i))*x2(i);
delb=alpha*(t(i)-nety(i))*x3(i);
//изменение весов входов
wc=[delw1 delw2 delb]
//обновление весов
w1=w1+delw1;
w2=w2+delw2;
b=b+delb;
//новые веса
w=[w1 w2 b];
//матрица входов
x=[x1(i) x2(i) x3(i)];
//печать полученных результатов
disp([x nt wc w]);
end
for i=1:4
nety(i)=w1*x1(i)+w2*x2(i)+b;
e=e+(t(i)-nety(i))^2;
end
end
На экран выводятся окончательные результаты обученной сети: вектор входных данных, рассчитанной цели, вектора измененных весов, вектора измененных весов и измененного смещения.
|
|
Дата добавления: 2019-09-13; просмотров: 545; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!