Исходные данные и результаты обучения сети по правилу Хебба
Согласно правилу обучения для случая с тремя нейронами и одним выходом подстройка весовых коэффициентов производятся по формулам:
W11 (t+1)=W11 (t)+X1Y.
W21(t+1)=W21(t)+X2Y.
S0(t+1)=S0(t)-Y
При этом начальные значения синаптических весов принимаются равными нулю, т.е. W11(0)=0, W21(0)=0, S0(0)=0.
Простейшая математическая модель обучения Хебба (правило умножения активности) записывается в виде :
Wij(t+1)=Wij(t)+ɳxiyj,
Wij=Wij(t+1)-Wijj(t)=ɳxiyj
Где ɳ- коэффициент скорости обучения нейронной сети , задается в интервале (0,1); i=1,2,3,…N,j=1,2,3,…M
Правило Хебба может применяться для нейронных сетей различных типов с разными функциями активации. Ограничение применения правила обучения нейронных сетей по Хеббу заключается в том, что веса могут принимать произвольно большие значения , т.к. в каждом цикле происходит суммирование текущего значения с его приращением Wij.
Гипотеза ковариации правила Хебба. Согласно гипотезе предсинаптические и постсинаптические сигналы заменяются отклонениями от этих сигналов от средних значений на данном отрезке времени:
Wij=ɳ(xii-x)(yi-y),
Где x,y,- усредненные значения предсинаптического и постсинаптического сигналов.
Способом модификации весов привила Хебба является уточнение веса, уменьшенного на коэффициент забывания:
Wij(t+1)=Wij(t)(1-y)+Wij(t)
Где y-коэффициент забывания (0,1).
При больших значениях коэффициента забывания (Y) нейрон «забывает» значительную часть того , чему обучился нейрон в прошлом, поэтому при обучении сетей коэффициенту присваиваются небольшие значения в процентах от коэффициента обучения(ɳ).
X=[-1 -1;1 -1;-1 1;1 1;1 1;1 1];
Y=[-1;-1;-1;1;1;1];
koeff=1
weight1=zeros(6,1);
weight2=zeros(6,1);
Sres=zeros(6,1);
C=X(:,1)
C1=C.*Y*koeff;
for i=1:length(X)-1
if i==1
weight1(i)=C1(i);
end
i=i+1;
weight1(i)=weight1(i-1)+C1(i);
end
disp (weight1)
D=X(:,2);
D1=D.*Y*koeff
for i=1:length(X)-1
if i==1
weight2(i)=D1(i);
end
i=i+1;
weight2(i)=weight2(i-1)+D1(i);
end
disp (weight2)
for k=1:length(Y)-1
if k==1
Sres(k)=-Y(k)
end
k=k+1;
Sres(k)=Sres(k-1)-Y(k)
end
disp (Sres)
plot (weight1,weight2)
hold on
grid on
результаты
>> weight1
weight1 = 1 0 1 2 3 4
>> weight2
weight2 =1 2 1 2 3 4
>> Sres
Sres =1 2 3 2 1 0
№ |
X1 |
X2 |
W1 |
W2 |
Y |
S0 |
1 |
-1 |
-1 |
1 |
1 |
-1 |
1 |
2 |
1 |
-1 |
0 |
2 |
-1 |
2 |
3 |
-1 |
1 |
1 |
1 |
-1 |
3 |
4 |
1 |
1 |
2 |
2 |
1 |
2 |
5 |
1 |
1 |
3 |
4 |
1 |
1 |
6 |
1 |
1 |
4 |
4 |
1 |
0 |
Рисунок 1 - График зависимости изменения синаптического веса от постсинаптического сигнала
Задание 3. Самостоятельно написать программный код для обучения нейронной сети с модификацией правила Хебба.
X=[-1 -1; 1 -1; -1 1; 1 1; 1 1; 1 1];
Y=[-1;-1;-1;1;1; 1];
koeff=1;
W1=zeros(6,1);
W2=zeros(6,1);
Sres=zeros(6,1);
Xsr=mean(X)
Ysr=mean(Y);
Xsr1=Xsr(1);
Xsr2=Xsr(2);
A=X(:,1)-Xsr1;
B=X(:,2)-Xsr(2);
F=Y(:)-Ysr;
C1=A.*F*koeff;
D1=B.*F*koeff;
for i=1:length(X)-1
if i==1
W1(i)=C1(i);
end
i=i+1;
W1(i)=W1(i-1)+koeff*C1(i);
end%disp(W1)
D=X(:,2);
D1=D.*Y;
for i=1:length(X)-1
if i==1
W2(i)=D1(i);
end
i=i+1;
W2(i)=W2(i-1)+koeff*D1(i);
end%disp(W2)
for k=1:length(F)-1
if k==1
Sres=-F(k);
end
k=k+1;
Sres(k)=Sres(k-1)-F(k);
end%disp(Sres)
Расчет в таблицу
W1=1.3333 0.833 1.8333 2.333 2.8333 3.3333
W2 =1.0000 1.7500 1.0000 1.7500 2.5000 3.2500
Sres = 1 2 3 2 1 0
№ |
X1 |
X2 |
W1 |
W2 |
Y |
S0 |
1 |
-1 |
-1 |
1 |
1 |
-1 |
1 |
2 |
1 |
-1 |
0 |
2 |
-1 |
2 |
3 |
-1 |
1 |
1 |
1 |
-1 |
3 |
4 |
1 |
1 |
2 |
2 |
1 |
2 |
5 |
1 |
1 |
3 |
4 |
1 |
1 |
6 |
1 |
1 |
4 |
4 |
1 |
0 |
Рисунок 2 - График зависимости изменения синаптического веса от постсинаптического сигнала
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.