Wstęp tortyczny. Modl sztuczngo nuronu Podobn jak w przypadku nuronowych sc bologcznych, podstawowym lmntam z których buduj sę sztuczn sc nuronow są sztuczn nurony. Sztuczny nuron jst lmntm, którgo własnośc odpowadają wybranym własnoścom nuronu bologczngo. Z założna n jst węc on jgo wrną kopą, lcz lmntm, który pownn spłnać okrślon funkcj w sztucznj sc nuronowj. Ogóln sztuczny nuron można rozpatrywać jako spcyfczny prztwornk sygnałów dzałający wdług następującj zasady: na wjśc prztwornka doprowadzon są sygnały wjścow, któr następn są mnożon przz odpowdn współczynnk wag, ważon sygnały wjścow są następn sumowan na tj podstaw wyznacza sę aktywność nuronu. Na rys. przdstawono modl sztuczngo nuronu. Składa sę on z dwóch bloków: bloku sumowana Σ bloku aktywacj f(ϕ). ys.. Modl nuronu W bloku sumowana wykonywan jst algbraczn sumowan ważonych sygnałów wjścowych, oraz gnrowany jst sygnał wyjścowy ϕ : T ϕ = w, u + b = w u + b () = gdz: w wktor współczynnków wag w,, u wktor sygnałów wjścowych u, lczba wjść nuronu, b próg (bas). Sygnał ϕ poddawany jst prztwarzanu przz blok aktywacj f(ϕ) ralzujący zalżność y = f(ϕ). Ostatczn sygnał wyjścowy ma postać: y = T f ( ϕ ) = f ( w u + b) = f ( w u + b) (2) =, Funkcja aktywacj, w zalżnośc od konkrtngo clu, jakmu służy nuron, moż przyjmować różn postac. Nktór z nch to: funkcja skokowa unpolarna (funkcja Havsd a) ( x) = ( x) = 0 jsl jsl x > 0 f (3) x 0 funkcja skokowa bpolarna ( x) = ( x) = jsl jsl x > 0 f (4) x 0 funkcja lnowa f ( x) = ax (5) funkcja sgmodalna unpolarna
f ( (6) x) = + βx funkcja sgmodalna bpolarna (tangnsodalna) f x) = tanh( x) = x x + x ( lub x f x x) = tanh( ) = 2 + x ( (7) x 2. Sc jdnokrunkow Nurony połączon mędzy sobą tworzą układ nazywany sztuczną scą nuronową (w skróc scą nuronową). W zalżnośc od sposobu połączna nuronów można wyróżnć sc jdnokrunkow lub rkurncyjn (z sprzężnm zwrotnym). Sć nuronowa jdnokrunkowa jst złożona z nuronów ułożonych w warstwy o jdnym krunku przpływy sygnałów. Połączna mędzywarstwow występują jdyn mędzy sąsdnm warstwam. Najprostszą scą nuronową jst sć jdnowarstwowa. Tworzą ją nurony ułożon w jdnj warstw (rys. 2a, 2b). Każdy nuron posada próg (bas) b oraz wl wag wj prowadzonych do sygnałów wjścowych uj. Nurony ułożon w pojdynczj warstw dzałają nzalżn od sb, stąd możlwośc takj sc są ogranczon do możlwośc pojdynczych nuronów. ys. 2. Jdnowarstwowa sć nuronowa o wjścach S wyjścach: a) schmat płny, b) schmat uproszczony Każdy nuron ralzuj odwzorowan funkcyjn: y = f ( (8) j= w, ju j + b ) gdz: lczba wjść, y -t wyjśc, w j waga dla -tgo nuronu j-tgo wjśca Powyższ równan można zapsać równż w zwęzłj postac macrzowj: T y = ( W u + b) f (9) gdz: u wktor wjśca, y wktor wyjśca, W macrz wag.
Sć jdnowarstwowa ma nwlk znaczn praktyczn, jakkolwk stosuj sę ją nadal tam, gdz stnn jdnj warstwy jst wystarczając do rozwązana okrślongo problmu. Sć wlowarstwową tworzą nurony ułożon w wlu warstwach, przy czym oprócz wjść warstwy wyjścowj stnj co najmnj jdna warstwa ukryta. a rys. 3 przdstawono sć o jdnj warstw ukrytj, a na rys. 4 sć o dwóch warstwach ukrytych (w oznacznach przyjęto stosować ndks górny do oznaczana numru warstwy). ys. 3. Sć dwuwarstwowa ys. 4. Sć trójwarstwowa Sć dwuwarstwowa ralzuj następując odwzorowan wktora wjścowgo u na wktor wyjścowy y: 2 2 2 2 2 2 y = f ( W y + b ) = f ( W f ( W u + b ) + b ), (0) lub dla k-tgo wyjśca: S = S 2 wk f ( 2 2 2 y = f ( w y + b ) = f ( ( w u ) + b ) + b ) () k k k = j= j j gdz: lczba wjść, S lczba nuronów w -szj warstw ukrytj, yk k-t wyjśc, wj, wk wag, bk, b prog. Sc nuronow wykorzystując cągł funkcj aktywacj mają cągł charaktrystyk. Pozwala to na bzpośrdn zastosowan algorytmów gradntowych do uczna takch sc (uczn polga na doborz wartośc wag wdług okrślongo algorytmu, któr umożlw dostosowan dzałana sc do warunków środowskowych okrślonych w postac okrślonych wymagań co do odwzorowana danych wjścowych na wyjścow). Sc z funkcjam lnowym mają nogranczony zakrs wartośc wyjścowj, al ralzują tylko odwzorowan lnow. Z kol sc zawrając funkcj sgmodaln mogą tworzyć dowoln odwzorowan nlnow o ogranczonym zakrs wyjścowym. Aby połączyć zalty obu tych sc zdolność ralzowana nlnowych odwzorowań nogranczoność zakrsu wyjścowgo nalży w warstwach ukrytych zastosować sgmodaln funkcj aktywacj, natomast w warstw wyjścowj lnow. Skokow funkcj aktywacj przyjmuj sę w tgo typu systmach, gdz sygnał wyjścowy pownn przyjmować jdną z dwóch wartośc dyskrtnych. W tym przypadku algorytmy gradntow, uznawan za najskutcznjsz w ucznu, n mogą mć zastosowana, gdyż podstawow wymagan dotycząc funkcj clu n jst spłnon. k
Przbg ćwczna. Prcptron Ops zastosowanych funkcj: nwp tworzy nowy prcptron NET = NEWP(P,S,TF,LF) P macrz okrślająca zakrs wartośc wjść sc (lczba wjść jst okrślana na podstaw rozmaru tj macrzy), S lczba nuronów, TF funkcja wyjśca, domyśln 'hardlm', LF funkcja ucząca, domyśln 'larnp', Funkcja zwraca: nowy prcptron o nazw nt. Węcj nformacj: hlp nwp. nwff tworzy sć nuronową propagacj wstcznj NET = NEWFF(P,[S S2...SNl],{TF TF2...TFNl},BTF,BLF,PF) taks, P - macrz okrślająca zakrs wartośc wjść sc (lczba wjść jst okrślana na podstaw rozmaru tj macrzy), S - lczba nuronów w -tj warstw, N lczba warstw, TF funkcja wyjśca nuronów w -tj warstw, domyśln 'tansg'. BTF funkcja ucząca sć, domyśln 'tranlm'. BLF funkcja ucząca wag/bas, domyśln 'larngdm'. PF - funkcja błędu, domyśln 'ms'. Zwraca N warstwową sć nuronową propagacj wstcznj. Węcj nformacj: hlp nwff. sm oblcza odpowdź sc nuronowj na dany sygnał wjścowy [Y,Pf,Af,E,prf] = SIM(nt,P,P,A,T) Paramtry: NET Sć nuronowa. P Wktor wjścowy. P, A,T paramtry nobowązkow Funkcja zwraca: Y Wktor odpowdz sc. Węcj nformacj: hlp ntwork/sm.m. Wykonać następując polcna: Funkcją wyjśca prcptronu jst funkcja skokowa unpolarna. Stworzn wykrsu funkcj wyjśca: >> x=-5:0.:5; >> y=hardlm(x); >> plot(x,y) Sprawdzn wartośc funkcj w punkc 0: >> hardlm(0) Tworzn wktorów uczących P oraz T: wktor wjścowy sc pary lczb rzczywstych (punkty na płaszczyźn): >> P=[-5, -5, 3, -; -5, 5, -5, 0] wktor wyjścowy sc wartość odpowadająca danj parz wktora wjścowgo: >> T=[ 0 0] Tworzn nowgo prcptronu przypsan go zmnnj nt: >> nt=nwp([-0 0; -0 0], ); Incjowan wag sc (nadawan przypadkowych wartośc wagom): >> nt=nt(nt); Wyśwtln zmnnj nt: >> nt Jakgo typu jst zmnna nt? Wyśwtln wktora wag (zapsać wartośc): >> nt.iw{} Wyśwtln wartośc basu (zapsać wartość): >> nt.b{}
Oblczn odpowdz sc na wktor wjścowy P: >> f=nt.iw{}*p+nt.b{} >> hardlm(f) Oblczn odpowdz sc na wktor wjścowy P za pomocą funkcj sm >> sm(nt,p) Czy odpowdź sc jst równa wktorow wyjścowmu T (wyśwtlć wktor T)? Clm uczna sc prcptronowj jst tak dobór wag sc, aby jj odpowdź na wktor wjścowy P była równa wktorow T. Uczn sc: >> nt=tran(nt,p,t); Przanalzować wykrs śrdnokwadratowgo błędu uczna sc. Wyśwtln wktora wag: >> nt.iw{} Wyśwtln wartośc basu: >> nt.b{} Czy wktor wag oraz bas ulgły zman? Oblczn odpowdz sc na wktor wjścowy P: >> sm(nt,p) Czy odpowdź jst równa wktorow wyjścowmu T (wyśwtlć wktor T)? Wag oraz bas wyznaczają prostą o równanu: y=(-nt.iw{}()*x - nt.b{})./nt.iw{}(2) rozgranczającą dw półpłaszczyzny. Do jdnj z nch nalżą punkty, którym przyporządkowano wartośc, a na drugj punkty, którym przyporządkowano wartośc 0. Wyśwtln wktora wjścowgo wyjścowgo; symbolm kółko (o) oznaczono współrzędn punktów, którym przyporządkowano wartość 0, symbolm plus (+) oznaczono współrzędn punktów, którym przyporządkowano wartość : >> plotpv(p,t) >> grd Wyśwtln prostj rozdzlającj półpłaszczyzny: >> plotpc(nt.iw{}, nt.b{}) Sprawdzć odpowdź sc dla punktów nalżących do prwszj drugj półpłaszczyzny, np. punkty (-6,6) (0,6): >> sm(nt,[-6;-6]) >> sm(nt,[0;6]) Tworzn wktorów uczących P oraz T: wktor wjścowy sc pary lczb rzczywstych (punkty na płaszczyźn): >> P=[-5, -5, 3, -, 4; -5, 5, -5, 0, 0] wktor wyjścowy sc wartość odpowadająca danj parz wktora wjścowgo: >> T=[ 0 0 ] Wyśwtln wktora wjścowgo wyjścowgo: >> plotpv(p,t) >> grd Wyśwtl prostą rozdzlającą półpłaszczyzny: >> plotpc(nt.iw{}, nt.b{}) Zwrócć uwagę na położn dodango punktu (4,0). Incjowan wag sc (nadawan przypadkowych wartośc wagom): >> nt=nt(nt); Uczn sc: >> nt=tran(nt,p,t); Oblczn odpowdz sc na wktor wjścowy P za pomocą funkcj sm >> sm(nt,p) Porównać odpowdź sc z wktorm T. Czy sć została poprawn wytrnowana? Dlaczgo? 2. Aproksymacja funkcj 2. Dokładność uczna Propozycja: ponższy cąg polcń wpsać do dytora tkstu kopować do okna polcń MATLAB-a potrzbn fragmnty.
Tworzn wktorów uczących P oraz T: >> P=-0:0.2:0; >> T=sn(P); >> plot(p,t,'-o'); >> grd Tworzn dwuwarstwowj sc nuronowj (0 nuronów w warstw wjścowj w wyjścowj): >> nt=nwff([-0 0],[0 ],{'tansg' 'purln'}); Maksymalna lczba przntacj danych uczących (lczba pok): >> nt.tranparam.pochs=7; Incjowan wag sc (nadawan przypadkowych wartośc wagom): >> nt=nt(nt); Oblczn odpowdz n wytrnowanj sc na wktor wjścowy P: >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); >> grd Uczn sc: >> nt=tran(nt,p,t); Oblczn odpowdz wytrnowanj sc na wktor wjścowy P: >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); >> grd Ocnć dokładność aproksymacj. Zapamętać końcowy błąd uczna. Objrzć wktory wag basów oraz uzasadnć ch rozmary na podstaw struktury sc. Prwsza warstwa: >> nt.iw{} >> nt.b{} Druga warstwa: >> nt.lw{2,} >> nt.b{2} Oblczn odpowdz sc dla wartośc x=0.5 bz wykorzystana funkcj sm: >> x=0.5 >> f=nt.iw{}*x+nt.b{} >> y= tansg(f) >> f2=sum(y.*nt.lw{2,}')+ nt.b{2} >> y2= purln(f2) Porównan otrzymanj odpowdz z wartoścą otrzymaną przy pomocy funkcj sm: >> sm(nt,x) Parokrotn powtórzyć ponższy cąg polcń: >> nt.tranparam.pochs=0; >> nt=nt(nt); >> nt=tran(nt,p,t); >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); grd Ocnć dokładność aproksymacj. Zapamętać końcowy błąd uczna. Dlaczgo dokładność wytrnowana sc jst różna po każdym ucznu? Parokrotn powtórzyć ponższy cąg polcń: >> nt.tranparam.pochs=00; >> nt=nt(nt); >> nt=tran(nt,p,t); >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); grd Jak wpływa lczba pok na dokładność wytrnowana sc nuronowj (na dokładność aproksymacj) oraz czas uczna. Tworzn dwuwarstwowj sc nuronowj (4 nuronów w warstw wjścowj w wyjścowj): >> nt=nwff([-0 0],[4 ],{'tansg' 'purln'});
>> nt.tranparam.pochs=00; >> nt=nt(nt); >> nt=tran(nt,p,t); >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); grd Jak wpływa lczba nuronów w warstw ukrytj na dokładność wytrnowana sc nuronowj (na dokładność aproksymacj) oraz czas uczna. 2.2 Zdolność uogólnana sc nuronowj Tworzn wktorów uczących P oraz T: >> P=-p:0.4:p; >> T=sn(P); >> plot(p,t,'-*'); >> grd Tworzn dwuwarstwowj sc nuronowj (6 nuronów w warstw wjścowj w wyjścowj): >> nt=nwff([-p p],[6 ],{'tansg' 'purln'}); >> nt.tranparam.pochs=00; >> nt=nt(nt); >> nt=tran(nt,p,t); >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); grd Ocnć dokładność aproksymacj. Oblczn odpowdz sc na wktor wjścowy P, zawrający punkty, których sć nuronowa n była uczona: >> P=-p:0.:p; >> y=sm(nt,p); >> fgur >> plot(p,t,'-o',p,y,'-*'); grd Dokładn przyjrzć sę otocznom kstrmów funkcj snus (powększyć wykrs w tych przdzałach). Porównan odpowdz sc na wktor wjścowy P z dokładnym wartoścam funkcj sn: >> ys=sn(p); >> fgur >> plot(p,ys,'-o',p,y,'-*'); grd Dokładn przyjrzć sę otocznom kstrmów funkcj snus (powększyć wykrs w tych przdzałach). 2.3 Zdolność aproksymacyjna dwuwarstwowj sc lnowj 9 Tworzn wktorów uczących P oraz T: >> P=-p:0.2:p; >> T=sn(P); >> plot(p,t,'-*'); >> grd Tworzn dwuwarstwowj sc nuronowj (0 nuronów w warstw wjścowj w wyjścowj): >> nt=nwff([-0 0],[0 ],{'purln' 'purln'}); >> nt.tranparam.pochs=200; >> nt=nt(nt); >> nt=tran(nt,p,t); >> y=sm(nt,p); uczona: >> P=-2*p:0.2:2*p; >> ys=sn(p); >> fgur >> plot(p,ys,'-o',p,y,'-*'); grd Ocnć dokładność aproksymacj. Czy sć lnowa moż dobrz aproksymować funkcję nlnową?