کدتون درست کار می کنه و همونجوری که گفتم توی چهار مرحله همگرا میشه
كد:
s = [-1 -1 1 1;
-1 1 -1 1;
-1 -1 -1 1];
%first row of s show first input of AND
%second row of s show second input of AND
%3th row show out put
w = [rand();rand();1]
%set random initial weight
s_c = 1;
alpha = 0.1;
iteration_c = 1;
for iteration_c = 1:4
for s_c = 1:4
y = (w(1)*(s(1,s_c)))+(w(2)*(s(2,s_c)))+(w(3));
w(1) = w(1) + (alpha.*(s(3,s_c) - y).*s(1,s_c));
w(2) = w(2) + (alpha.*(s(3,s_c) - y).*s(2,s_c));
w(3) = w(3) + (alpha.*(s(3,s_c) - y));
end
end
w
for s_c = 1:4
end_value = (w(1).*(s(1,s_c)))+(w(2).*(s(2,s_c)))+w(3)
end
خروجی هم اینه
كد:
w =
0.9597
0.3404
1.0000
w =
0.5926
0.5525
-0.2758
end_value =
-1.4210
end_value =
-0.3159
end_value =
-0.2358
end_value =
0.8693
که w اولی که نشون داده شده وزن اولیه است و w بعدی هم وزن بعد از آموزش
همونطوری که میبینی خروجی برای سه داده اول منفی شده یعنی صفر و برای 1 و 1 مثبت شده یعنی 1
اینم نمود گرافیکی این سلول
خط سبز وزن اولیه
خط های قرمز چهار مرحله آخر
(البته مال یک اجرای دیگه چون وزن ها تصادفی انتخاب میشن و من قسمت هار رسم شکل رو از کد حذف کردم که قابل فهم تر بشه)