• Nie Znaleziono Wyników

R7 - Sztuczne sieci neuronowe (przykład w Scilabie)

N/A
N/A
Protected

Academic year: 2021

Share "R7 - Sztuczne sieci neuronowe (przykład w Scilabie)"

Copied!
4
0
0

Pełen tekst

(1)

Przykład użycia sztucznych sieci neuronowych (SSN)

(toolbox ANN w Scilab) [1]

Opracowano na podstawie [2] LINK

Przygotował: Piotr Wolszczak (Politechnika Lubelska, Katedra Automatyzacji)

1. Krótkie wprowadzenie do sztucznych sieci neuronowych uczonych

metodą wstecznej propagacji błędu.

Podstawowym składnikiem SSN jest funkcja sigmoidalna 𝑓(𝑥) =1+𝑒1−𝑐𝑥.

Rys. 1 Przykłady funkcji przejścia (aktywacji) neuronu [3]

Zmienna x jest łączną wartością wejściową, która kiedy jest wystarczająco duża i wynosi f(net)=1. Kiedy wartość jest znacznie niższa od zera (ujemny) otrzymujemy wynik f(net) = 0.

Powyższa warunki zwracają od 0 do 1 w oparciu o wartość wejściową przekraczającej próg. SSN składa się z sieci neuronów, jak poniżej.

Rys. 2 Schemat sieci neuronowej [3]

Wyjście otrzymuje się w następujący sposób:

Net1 = w1 * ein ein jest wektorem wejściowym H = f (net1) h jest ukrytym wektorem neuronów Net2 = w2 * h

(2)

Zmienna zout to oczekiwana na wyjściu wartość (podczas treningu). Algorytm inicjuje losowo macierze w1 i w2, a

następnie minimalizuje błąd E = (z1- aout1) ^ 2 + (z2- aout2) ^ 2 + ... = err1 ^ 2 + err2 ^ 2 + ... przez dopasowanie wartości macierzy w1 i w2.

Poprawki do w1 i w2 uzyskuje się w przybliżeniu jak poniżej, co można poprawić dzięki współczynnikowi przyspieszającemu … f (x) * (1-f (x)).

[ dw1 ] = [ w11*err1 w12 err1 w21*err2 w22*err2 w31*err3 w32*err3 ] [dw2 ] = [ e1*sr1 e2*sr1 e3*sr1

e1*sr2 e2*sr2 e3*sr2 ] oraz

[ sr1 sr2 ] = rowsum[ dw1]

2. Przykład

Przyjmijmy węzły ni = 3 nh =2 no=3 jak na rysunku. Wektor wejściowy ein =

1. 2. 3. Wartości wyjść zout =

1. 1. 1.

Następnie inicjujemy losowe wartości w1 i w2 w1 = 0.2113249 0.0002211 0.6653811 0.7560439 0.3303271 0.62839 w2 0.8497452 0.0683740 0.6857310 0.5608486 0.8782165 0.6623569 Otrzymujemy aout = 0.6966785 0.7611054 0.8069129 Oraz błąd err = 0.3033215 0.2388946 0.1930871 Po 10-ciu powtórzeniach aout =

0.9484678 0.9001817 0.8724000 Wartość błędu zmniejszyła się do err =

0.0515322 0.0998183 0.1276000

[2]

(3)

3. Simple Scilab code for ANN

ni =3 // input nodes nh =2 // hidden nodes no =3 // output nodes c= 1 // sigmoid constant niter=5 function [sg ]= sig( c, x) nx= length(x) ; on=ones(1,nx) ; sg= (on' + exp(-c*x) ) ; sg=on'. /sg; endfunction function [dw] =dw2(err,w2) terr=[] ;// build total error matrix sz=size(w2) ;

nh=sz(1,2) ; for i =1:nh

terr =[terr , err] ; end

dw = w2.*terr ;// correction matrix endfunction

w1 =rand(nh,ni) // random input matrix w2 =rand(no,nh) // random output matrix ein= (1:ni)' // input vector

zout = ones(1,no)' // desired out vector neth = w1*ein // net h vector

hout =sig(1,neth) // neth out vector neta =w2*hout // net vector output aout = sig(1,neta) // output vector err = zout -aout // error vector starterr=err ;

for iter =1 : niter

cdw2 = dw2(err,w2) ; //change w2 vector rscdw2 = sum(cdw2,1) ; //rowsum of cdw2 ts =[] ;for i=1: ni ts= [ts,rscdw2']; end eint=[] ; for i=1:nh

eint =[ eint ;ein'] ; end

dw1 = eint.*ts ;

w1=w1+dw1 ;//new w1 matrix w2= w2+cdw2 ; //neww2 matrix neth = w1*ein; // net h vector hout =sig(1,neth) ; // neth out vector neta =w2*hout ; // net vector output aout = sig(1,neta) ; // output vector err = zout -aout ; // error vector end ;

// final Ann input/ output neth = w1*ein ;// net h vector hout =sig(1,neth) ; // neth out vector neta =w2*hout ; // net vector output aout = sig(1,neta) ; // output vector ein

zout aout

Źródła

1. Scilab „Artificial Neural Network tutorial” https://scilab.io/artificial-neural-network-tutorial/ (2017.04.06)

2. Narasim Ramesh „A simple Scilab 5.3.3 code for ANN (Artificial Neuron Networks)”

https://www.researchgate.net/file.PostFileLoader.html?id=53f8364bd5a3f2752e8b45b7&asset Key=AS%3A273584633647104%401442239067556

https://www.researchgate.net/post/How_does_one_predict_the_temperature_using_Neural_ Networks#view=53f8364bd5a3f2752e8b45b7

(4)

ni =3 // input nodes nh =2 // hidden nodes no =3 // output nodes c= 1 // sigmoid constant niter=5 function [sg ]= sig( c, x) nx= length(x) ; on=ones(1,nx) ; sg= (on' + exp(-c*x) ) ; sg=on'. /sg; endfunction function [dw] =dw2(err,w2) terr=[] ;// build total error matrix sz=size(w2) ;

nh=sz(1,2) ; for i =1:nh

terr =[terr , err] ; end

dw = w2.*terr ;// correction matrix endfunction

w1 =rand(nh,ni) // random input matrix w2 =rand(no,nh) // random output matrix ein= (1:ni)' // input vector

zout = ones(1,no)' // desired out vector neth = w1*ein // net h vector

hout =sig(1,neth) // neth out vector neta =w2*hout // net vector output aout = sig(1,neta) // output vector err = zout -aout // error vector starterr=err ;

for iter =1 : niter

cdw2 = dw2(err,w2) ; //change w2 vector rscdw2 = sum(cdw2,1) ; //rowsum of cdw2 ts =[] ;for i=1: ni ts= [ts,rscdw2']; end eint=[] ; for i=1:nh

eint =[ eint ;ein'] ; end

dw1 = eint.*ts ;

w1=w1+dw1 ;//new w1 matrix w2= w2+cdw2 ; //neww2 matrix neth = w1*ein; // net h vector hout =sig(1,neth) ; // neth out vector neta =w2*hout ; // net vector output aout = sig(1,neta) ; // output vector err = zout -aout ; // error vector end ;

// final Ann input/ output neth = w1*ein ;// net h vector hout =sig(1,neth) ; // neth out vector neta =w2*hout ; // net vector output aout = sig(1,neta) ; // output vector ein

zout aout

Cytaty

Powiązane dokumenty

W wyniku tak radykalnej procedury adaptacji wag, możliwe jest dopasowywanie sieci do wielu wzorców różniących się od siebie, a ponadto sieć wykazuje pewną (ograniczoną)

Podstawową cechą sieci neuronowej jest jej zdolność do uogólniania, a więc generowania właściwego rozwiązania dla danych, które nie pojawiły się w zestawie danych

Przy starcie uczenia z wartości losowych prawdopodobieństwo utknięcia procesu w minimum lokalnym jest większe niż w przypadku sieci. sigmoidalnych, ze względu na silną

Modele koneksjonistyczne: sieci i rozproszone przetwarzanie równoległe, ale węzły nie działają jak neurony – sieci Bayesowskie, modele graficzne, uczenie się przez

Systemy uczące się (machine learning, ML) oraz sztuczne sieci neuronowe (artificial neural networks, ANN) są ważnymi elementami CI.... Problemy

• diagnostyka medyczna. Zastosowanie sztucznych sieci neuronowych dobrze wkomponowuje się w badania zależności i procesów zachodzących na rynkach finansowych. Wyni- ka to

Robert Sulej Sztuczne sieci neuronowe – aplikacje w analizie danych eksperymentalnych 11/05/2009.

Analiza wpływu liczby cech na zdolność sieci SOM do wyróżniania skupień 202 5.5.. Zastosowanie sieci SOM do wyboru oferty na wtórnym rynku nieruchomości