1 INTRODUCERE ÎN CALCULUL NEURONAL Calculul neuronal se bazează pe modele matematice inspirate din neurobiologie, numite reţele neuronale. O reţea neuronală are trei caracteristici generale: • unităţi de calcul interconectate, numite neuroni • reguli recursive pentru modificarea ponderilor conexiunilor dintre neuroni • reguli de calcul simple. 1.1. NEURONUL BIOLOGIC 11 Unitatea celulară fundamentală a creierului este neuronul. Creierul uman are aproximativ 10 4 neuroni, fiecare fiind interconectat cu aproximativ 10 alţi neuroni. Neuronul biologic este alcătuit din: • corp neuronal (sau soma), constituit din membrană şi substanţă intracelulară, rolul său fiind de a transforma semnalele de intrare în semnale de ieşire • arbore dendridic, care reprezintă prelungiri ale corpului neuronal şi are rolul de a colecta semnalele de intrare de la alţi neuroni • axon, care este o prelungire a corpului neuronal cu rol de a transmite semnalul de ieşire către alţi neuroni, prin intermediul arborelui axonic. Neuronii sunt interconectaţi prin intermediul unor legături numite sinapse, care reprezintă punctele de contact dintre ramurile arborelui dendridic al unui neuron pre-sinaptic cu ramurile arborelui axonic ale unui neuron post-sinaptic. Prin intermediul dendridelor, neuronul primeşte informaţie sub formă de impulsuri nervoase de natură electrică. Aceste impulsuri provoacă depolarizări ale membranei neuronale, adică modificări ale diferenţei de potenţial dintre exteriorul şi interiorul celulei. Potenţialele locale generate pe suprafaţa membranei se însumează, iar dacă potenţialul rezultat depăşeşte o anumită valoare – numită prag – atunci se generează un potenţial de acţiune care se transmite de-a lungul axonului pană la legătura sinaptică. Impulsurile ajunse la nivelul sinapsei provoacă eliberarea unor substanţe chimice purtătoare de informaţie, numite neurotransmiţători; cantitatea de neurotransmiţători depinde de impulsurile primite dar şi de alţi factori. Membrana post-sinaptică recepţionează neurotransmiţătorii şi determină modificări ale permeabilităţii ionice a membranei, deci depolarizări. Sinapsele pot fi excitatoare (dacă provoacă depolarizare pozitivă) sau inhibitoare (dacă provoacă depolarizare negativă). 1.2. NEURONUL ARTIFICIAL Într-o reţea neuronală, analogul neuronului biologic este neuronul artificial, numit simplu neuron. Fiecare neuron are n intrări şi o ieşire. Intrările x1 , x2 , , xn sunt numere reale şi reprezintă semnalele venite de la alţi neuroni sau din lumea exterioară şi corespund semnalelor electrice din modelul biologic. Fiecare intrare xi are asociată o pondere wi , ce corespunde valorii sinaptice din neuronul biologic. Semnalul de ieşire este dat de relaţia n y f ( w, x ) f wT x f wi xi i 1 w w1 ,, wn T R n T este vectorul ponderilor. Funcţia f w x se numeşte funcţie de activare (sau transfer). Definind variabila s ca fiind produsul scalar unde s w, x wT x w1 x1 wn xn în cazul cel mai simplu, ieşirea y se calculează ca fiind 1 dacă wT x y f s 0 altfel unde este pragul de activare. x1 xn w1 wn f y Figura 1.1 Neuron cu o singură ieşire Există şi alte funcţii de activare, cele mai utilizate fiind • funcţia liniară f : R R, f ( x) x • funcţia treaptă 1, x 0 f : R 0, 1, f ( x) 0, x 0 • funcţia rampă x 1 1, f : R 1, 1, f ( x) x, x 1, 1 1, x 1 • funcţia semn x0 1, f : R 1, 1, f ( x) sign( x) 1, x 0 • funcţia sigmoidală f : R (0, 1), f ( x) 1 1 e kx , k 0 Alegerea unei funcţii de activare depinde de modelul de reţea neuronală ales şi de tipul problemei de rezolvat, nefiind constrânsă decât de analogia cu modelul biologic. Valoarea furnizată de funcţia de activare este propagată pe căile de ieşire, echivalente arborelui axonic din modelul biologic. Exemplul 1.1. Considerăm intrările x1 , x2 0, 1 , ieşirea y 0, 1 şi mulţimea de antrenare definită prin y ( x1 , x2 ) x1 x2 x1 x2 1 1 1 1 0 0 0 1 0 0 0 0 Problema învăţarii constă în găsirea ponderilor w1 , w2 şi a pragului astfel încât ieşirea dată de reţea să coincidă cu cea dorită. O soluţie este 1 w1 w2 , 0.6 2 şi 1, x1 2 x2 2 0.6 y ( x1 , x2 ) 0, altfel X1 X2 Figura 1.2. O soluţie a problemei din Exemplul 1.1 onfigurarea unei reţele neuronale constă în determinarea ponderilor şi a pragurilor. Eliminarea pragului asociat unui neuron este o problemă simplă. Din w1 x1 wn xn w1 x1 wn xn 1 0 rezultă că prin adăugarea unui extra-neuron în stratul de intrare, cu valoarea fixată 1 şi ponderea , pragul devine zero. x1 x1 w1 y wn w1 wn xn y 0 1 xn Figura 1.4. Eliminarea pragului Deşi foarte simplu, acest model de neuron reprezintă o unitate de calcul foarte puternică, McCullogh şi Pitts demonstrând că o reţea neuronală poate efectua orice calcul, cu condiţia alegerii convenabile a ponderilor. 2 REŢELE CU UN SINGUR NIVEL 2.1. PERCEPTRONUL SIMPLU CU O SINGURĂ IEŞIRE Perceptronul simplu este cea mai studiată reţea neuronală, proprietăţile ei putând fi regăsite la orice altă reţea. Perceptronul simplu nu are straturi ascunse şi foloseşte învăţarea supervizată. Interesul pentru perceptronul simplu este şi de natură istorică: el reprezintă modelul din care s-au dezvoltat toate celelalte reţele neuronale. Considerăm o reţea de tipul celei din Figura 2.1, unde wij reprezintă ponderea intrării j către w wi1 , , wim neuronul de ieşire i iar i este vectorul ponderilor către neuronul i . T Semnalul de învăţare este r d i yi cu şi di răspunsul dorit pentru neuronul de ieşire i , când la intrare se prezintă yi sign wiT x vectorul x . Fie regula de învăţare: vectorul wi creşte proporţional cu produsul dintre intrarea x şi semnalul de învăţare r , definit în general ca o funcţie r r wi , x, d i . Notând wi (t ) c r ( wi (t ), x(t ), di (t )) x(t ) (1.1) unde t este timpul iar c este constanta de învăţare, rezultă următoarea regulă de modificare a ponderilor wi (t 1) wi (t ) wi (t ) . (1.2) Conform formulelor (1.1) - (1.2), ponderile se modifică astfel: wi : wi cd i sign wi , x x wij : wij cd i sign wi , x x j unde i 1, , m, j 1, , n, c 0 este rata de învăţare iar x, d este perechea de instruire. x1 w11 y1 x2 ym wmn xn Figura 2.1 Reţea feedforward uninivel Considerăm un singur neuron la ieşire şi x, d o pereche de instruire; vectorul x va aparţine uneia din cele două clase disjuncte C1 x / d 1, C 2 x / d 1 . Ţinând seama de definiţia funcţiei de activare, rezultă că se doreşte căutarea unui vector pondere w astfel încât w, x 0 pentru orice x C1 şi w, x 0 pentru orice x C 2 . Dacă un astfel de vector există, atunci problema definită de perechile de instruire se numeşte liniar separabilă. Algoritmul perceptronului 1 K x k x1k , , xnk d k 1, 1 k 1, , K Fie perechile de instruire x , d1 , , x , d K cu , , şi L numărul maxim de cicluri de instruire admise. Pasul 1. Se alege constanta de instruire c 0 Pasul 2. Iniţializări: E : 0, k : 1, l : 0 , w se iniţializează cu valori mici aleatoare Pasul 3. Se prezintă reţelei perechea x k , dk , simplitate x, d şi se calculează ieşirea y notată pentru yx sign w, x . Pasul 4. Se modifică ponderile w : w cd sign w, x x Pasul 5. Se cumulează eroarea E : E d y Pasul 6. Dacă k K atunci k : k 1 şi se continuă cu Pasul 3; în caz contrar se merge la Pasul 7 Pasul 7. S-a terminat un ciclu de instruire: l : l 1 . Dacă E 0 sau l L algoritmul se opreşte. În caz contrar, se atribuie valorile E : 0, k : 1 şi se iniţiază un nou ciclu de instruire, mergându-se la Pasul 3. 2.2 PERCEPTRONUL MULTIPLU Perceptronul multiplu este o reţea neuronală care are n neuroni de intrare total interconectaţi cu cei m neuroni de la ieşire. Perceptronul multiplu se utilizează pentru rezolvarea problemelor de clasificare multiplă, cele m unităţi de la ieşire permiţând clasificarea în m clase. Folosim notaţiile amintite anterior: w • = matricea ponderilor • wij • wi wi1 , , win = ponderea intrării j către ieşirea i T = vectorul ponderilor spre neuronul de ieşire i • y i = ieşirea neuronului i i • d = ieşirea dorită pentru neuronul i ÎNVĂŢARE COMPETITIVĂ m n Pentru un semnal de intrare x R se obţine ieşirea y R astfel n y wx sau yi wi , x wij x j , i 1, , m j 1 Componenta maximă vectorul de intrare x . yj a vectorului y determină indicatorul j al clasei căreia îi aparţine Algoritmul de învăţare competitivă x , d , , x 1 Fie 1 L ,d L mulţimea de instruire, unde d i 1, 2, , m este indicatorul k i clasei căreia îi aparţine x . Notăm cu , respectiv cu wi , matricea w , respectiv linia i din matricea w , la iteraţia k . 1 Pasul 1. Se iniţializează w şi indicatorul iteraţiei: k : 1 Pasul 2. Pentru fiecare l 1, 2, , L se efectuează 2.1. se determină indicele j al unităţii care produce ieşirea maximă wkj x l max wik x l i 1,..., m l 2.2. dacă j d , nu se efectuează nimic l dacă j d atunci • wkj 1 wkj cx l • wdk l1 wdk l cx l k 1 k l • wi wi pentru i j, d Pasul 3. Algoritmul se opreşte dacă este îndeplinită una din condiţiile: i) la ultima parcurgere a Pasului 2 nu s-a efectuat nicio modificare a ponderilor ii) k a atins numărul maxim de iteraţii admis. În caz contrar se incrementează indicatorul iteraţiei k : k 1 şi se merge la Pasul 2. ÎNVĂŢARE CU AJUTORUL REGULII DELTA Considerăm mulţimea de antrenament x , d , , x 1 1 x k x1k , , xnk , K ,d K , unde T d k d1k , , d mk T , k 1, , K . Ideea de bază în descoperirea regulii de învăţare constă în a defini performanţa reţelei şi a optimiza această performanţă. Putem defini performanţa ca fiind K 1 K k E Ek d y k 2 k 1 k 1 2 adică E 1 K m k d i yik 2 k 1i 1 2 1 K m k d i f wi , x k 2 k 1i 1 2 k unde i este indicele unităţii de ieşire, k indexează perechea ce trebuie învăţată, d i şi respectiv yik f wi , x k reprezintă ieşirea dorită, respectiv ieşirea reţelei, corespunzătoare unităţii i k când la intrare se prezintă vectorul x . Vom considera cazul funcţiilor de transfer continue. Semnalul de învăţare este numit delta şi este . r d i f wiT x f ' wiT x Expresia sa rezultă din condiţia de minimizare a erorii E . Notând ik d ik yik f ' wiT x k şi ţinând seama de formula (1.2), rezultă regula delta de învăţare wi : wi c ik x k sau, pe componente, wij : wij c ik x kj pentru i 1, , m şi j 1, , n . Algoritmul delta Se dau perechile de instruire x , d , , x 1 1 K ,d K , unde x k x1k , , xnk T T k k k şi d d1 , , d m , k 1, , K . Pasul 1. Se aleg c 0, Emax 0 Pasul 2. Se fac iniţializări: k : 1, eroarea totală E : 0 iar ponderile wij primesc valori mici aleatoare. k k Pasul 3. Se prezintă perechea de intrare x : x , d : d şi se y y1 , , y m T calculează ieşirea reţelei , yi f ( wi , x ) f (wiT x) pentru i 1, , m . Pasul 4. Se corectează ponderile wij : wij cd i yi f ' wiT x x j . Pasul 5. Se calculează eroarea totală E : E 1 dy 2 2 Pasul 6. Dacă k K atunci k : k 1 şi se continuă cu Pasul 3; în caz contrar se merge la Pasul 7. Pasul 7. S-a finalizat un ciclu de instruire. Dacă E E max , învăţarea s-a terminat. Dacă E E max atunci se începe un nou ciclu de instruire: E : 0 , k : 1 şi se merge la Pasul 3. În cazul când funcţia de activare este liniară, f ( x) x, suprafaţa de eroare este paraboloidală; prin urmare are un minim unic. Ne vom referi în continuare la acest caz, numindu-l algoritmul delta liniar. Referitor la convergenţa acestui algoritm au loc următoarele observaţii. Constanta de instruire c are un rol foarte important în controlarea convergenţei. Dacă c are o valoare prea mică, atunci vectorul pondere se mişcă prea încet pe suprafaţa de eroare, adică instruirea devine prea lentă. Dacă c este prea mare, atunci algoritmul poate să nu sesizeze punctele de minim, vectorul w mişcându-se haotic pe suprafaţa paraboloidului. În acest caz algoritmul poate să nu conveargă niciodată, indiferent de numărul de iteraţii. Viteza de convergenţă poate fi controlată prin alegerea ratei de învăţare. De obicei, se ia c 0.01, 10, valoarea cea mai utilizată fiind c 0.1. De asemenea, iniţializarea ponderilor se face, de obicei, cu valori aleatoare din intervalul 0, 1 sau 1, 1 . 3 REŢELE UNIDIRECŢIONALE MULTINIVEL 3.1. GENERALITĂŢI Reţelele cu un singur nivel au numeroase restricţii în utilizare. De exemplu, perceptronul simplu împarte spaţiul stărilor doar în două semiplane. Pentru a realiza regiuni de decizie mai complicate trebuie mărită complexitatea reţelei, inserându-se nivele suplimentare (numite ascunse) între neuronii de intrare şi cei de ieşire. Un perceptron cu două nivele poate realiza regiuni de decizie convexe, obţinute prin intersecţia semiplanelor generate de fiecare neuron de pe nivelul ascuns. Fiecare neuron de pe nivelul ascuns N x se comportă ca un perceptron standard şi generează un hiperplan de separare. Un neuron de pe nivelul Ny generează o regiune de decizie mai complicată, folosind semiplanele generate de neuronii primului nivel. x1 x2 Nx Ny Nz xn N0 Figura 3.1. Exemplu de reţea multinivel N Să considerăm doi neuroni a şi b de pe nivelul y , şi fie A şi B regiunile lor de decizie. Fie c un neuron de pe nivelul N z . Considerăm că ponderile conexiunilor de la a şi b către c sunt egale cu 1 şi că pragul lui c este t 1 . Dacă unul din neuronii a sau b este activat, atunci ieşirea neuronului c va fi 1 ; înseamnă că acest neuron realizează funcţia logică SAU între suprafeţele A şi B . PROPAGAREA ÎNAPOI CU UN NIVEL ASCUNS Considerăm o reţea cu un strat ascuns şi folosim notaţiile: • i = un neuron de pe nivelul 0 , de intrare • k = un neuron de pe nivelul 1 , cel ascuns • j = un neuron de pe nivelul 2 , de ieşire • xi = semnalul de intrare în unităţile nivelului 0 • y i = semnalul de ieşire din unităţile nivelului 0 • x k = semnalul de intrare în unităţile nivelului 1 • y k = semnalul de ieşire din unităţile nivelului 1 • xj = semnalul de intrare în unităţile nivelului 2 • yj = semnalul de ieşire din unităţile nivelului 2 • n = numărul de neuroni de pe nivelul 0 • n1 = numărul de neuroni de pe nivelul 1 • m = numărul de neuroni de pe nivelul 2 1 • wk i = ponderea conexiunii între neuronii i şi k • w 2jk = ponderea conexiunii între neuronii j şi k • hk = funcţia de activare a neuronului k • fj = funcţia de activare a neuronului j . Considerăm că neuronii unui nivel sunt conectaţi cu toţi neuronii nivelului următor. Dacă x t x1t , , x nt la momentul t se prezintă la intrare vectorul d t d1t , , d mt T şi se doreşte să se obţină vectorul T atunci n xkt w1ki xit i 1 , , y kt hk xkt , y tj f j x tj n1 x tj w 2jk y kt k 1 . t t Eroarea pătratică corespunzătoare perechii x , d din mulţimea de antrenare este Et 1 m t d j y tj 2 j 1 2 1 m t d j f j x tj 2 j 1 2 2 n1 1 m d tj f j w 2jk y kt 2 j 1 k 1 2 n1 2 n 1 t 1 m t d j f j w jk hk wki xi 2 j 1 i 1 . k 1 = Minimizarea erorii se realizează cu o metodă de tip gradient. Notând tj f j' x tj d tj y tj şi w kt hk' xkt m j 1 t j 2 jk obţinem w2jk w1ki Et w2jk Et w1ki tj ykt , kt xit . Rezultă următoarele reguli de corectare a ponderilor w 2jk,t 1 w 2jk,t ct2 w 2jk w1ki, t 1 w1ki, t c1t w1ki Se observă că , . kt se obţine prin propagarea înapoi în reţea a erorii de pe nivelul superior. Algoritmul de propagare înapoi cu un nivel ascuns În continuare vom nota cu l indicele perechii de instruire şi cu t iteraţia, care indică a câta prelucrare a setului de instruire este în curs de desfăşurare. Fie mulţimea de antrenament. x , d , , x 1 1 L ,d L Pasul 1. Se iniţializează: 1 2 • matricele w şi w , cu valori aleatoare mici din 0, 1 sau 1, 1 • rata de instruire c 0, 1 • eroarea maximă admisă E max (de exemplu, Emax : 0.01) • indicele perechii de instruire l : 1 • contorul iteraţiei t : 1 l l Pasul 2. Se prezintă reţelei perechea de instruire x , d dată de x l x1l , , xnl , d d , , d . l l 1 l m Pasul 3. Se determină valorile de activare ale neuronilor de pe nivelul ascuns n xkl w1ki, l xil i 1 Pasul 4. Se determină ieşirile neuronilor de pe nivelul ascuns y kl hk xkl Pasul 5. Se calculează activările neuronilor de pe nivelul de ieşire n1 x lj w 2jk,l y kl k 1 Pasul 6. Se calculează ieşirile reţelei y lj f j x lj Pasul 7. Se calculează semnalul de eroare pentru neuronii de pe nivelul de ieşire lj f j' x lj d lj y lj Pasul 8. Se calculează semnalul de eroare pentru neuronii de pe stratul ascuns kl hk' xkl lj w 2jk,l m j 1 Pasul 9. Se ajustează ponderile neuronilor de pe nivelul de ieşire w2jk, l : w2jk, l c lj ykl Pasul 10. Se ajustează ponderile neuronilor de pe nivelul ascuns w1ki, l : w1ki, l c kl xil Pasul 11. Se trece la următoarea pereche din mulţimea de instruire : • dacă l L atunci l : l 1 şi se merge la Pasul 2 • dacă l L atunci se merge la Pasul 12. Pasul 12. Se calculează eroarea pe setul de antrenare 1 L m l E d j y lj 2 L l 1 j 1 2 . Dacă E E max , algoritmul se termină; în caz contrar se începe o nouă iteraţie ( t : t 1 ) şi se parcurge setul de antrenare de la început ( l : 1 ), mergându-se la Pasul 2. Este posibil ca propagarea înapoi să genereze un minim local, caz semnalat de faptul că eroarea ieşirilor este destul de mare. Pentru a ieşi dintr-o astfel de stare se recomandă: a) Schimbarea constantei de instruire. Iniţial se alege o valoare mică, de exemplu c 0.05, 0.25 , iar pe măsură ce eroarea descreşte se poate mări valoarea lui c . Creşterea se justifică doar dacă suprafaţa de eroare este suficient de netedă, în caz contrar fiind posibil ca reţeaua să sară peste valoarea de minim, reală. 1 Euristic, s-a ajuns la concluzia că o valoare iniţială bună pentru c este n , n fiind numărul de neuroni de la intrare. O altă posibilitate este folosirea unei rate de instruire variabile; constanta c din paşii 9 şi 10 se înlocuieşte la fiecare iteraţie cu o valoare ct mai mică. Şirul acestor valori trebuie să descrească lent pentru a se asigura accelerarea convergenţei. Descreşterea este suficient de lentă dacă ct ct2 t 1 şi t 1 . Un exemplu de şir ce satisface condiţiile anterioare este ct 1 t. b) Schimbarea ponderilor inţiale. Se recomandă ca ponderile iniţiale să nu fie egale, evitându-se “paralizarea reţelei”. Pentru neuronii care au multe intrări, ponderile iniţiale trebuie să fie mici, astfel încât activările să nu fie prea îndepărtate de zero. Dacă un neuron are n intrari, se recomandă ca ponderile să fie 2 2 , din intervalul n n . Pentru a ieşi dintr-un minim local se recomandă adăugarea de valori mici, aleatoare, la vectorul pondere. Dacă noua stare este suficient de îndepărtată de acest minim, instruirea se va desfăşura într-o altă direcţie. c) Schimbarea numărului de neuroni ascunşi. Se recomandă ca numărul iniţial al lor să fie aproximativ 4 MEMORII ASOCIATIVE mn . Reţelele de acest tip simulează evoluţia unui sistem dinamic care constă în evoluţia unui patern de intrare către unul memorat, numit prototip. Ele memorează şi regăsesc asociaţii date sub forma unor perechi C, A , unde C este informaţia cheie iar A este informaţia asociată. O memorie asociativă bidirecţională (MAB) este o reţea cu două nivele de neuroni complet interconectaţi. Doi neuroni de pe acelaşi nivel nu sunt interconectaţi, dar fiecare neuron poate fi conectat cu el însuşi; toate conexiunile sunt bidirecţionale (Figura 4.2). Spre deosebire de reţelele studiate anterior, în care ponderile se determină iterativ, în cazul reţelelor MAB matricea ponderilor se fixează iniţial şi rămâne neschimbată pe durata funcţionării reţelei. 1 1 2 2 n m Figura 4.2. Memorie asociativă bidirecţională 1 1 p p i m i n n Considerăm mulţimea de instruire x , y , , x , y , cu x B şi y B , B fiind cubul bidimensional 0, 1n sau 1, 1n . Matricea ponderilor se defineşte ca în cazul asociatorului liniar p w yi xi T i 1 şi are următoarea semnificaţie : • linia i conţine ponderile conexiunilor neuronului i din stratul de ieşire • coloana j conţine ponderile conexiunilor neuronului j din stratul de intrare. Algoritmul MAB O reţea MAB se defineşte ca fiind un sistem S N x , N y , W , I , J , U , V , unde N • N x şi y sunt neuronii de pe nivelul de intrare şi respectiv ieşire • W este matricea ponderilor • I şi J sunt vectori coloană reprezentând intrările externe asupra neuronilor din N x şi, respectiv, Ny • U şi V sunt vectori coloană ce reprezintă pragurile neuronilor de pe nivelele N x şi, respectiv, Ny Pasul 1. Se prezintă reţelei perechile de asociaţii x , y , , x 1 1 p , yp şi se calculează matricea ponderilor p W yi xi i 1 T . Pasul 2. Se pune t : 0 , reprezentând momentul iniţial. Pasul 3. Se iniţializează stările neuronilor de pe nivelul Ny cu un vector arbitrar y (0) . Pasul 4. Se prezintă reţelei vectorul x x0 , urmând să se i determine vectorul x cel mai apropiat de x0 în sensul distanţei Hamming. N Pasul 5. Se propagă informaţia de la N x la y : • se calculează vectorul B al activărilor B W xt J N • se calculează vectorul y (t 1) al stărilor neuronilor din y 1, bj v j y j t 1 y j t , b j v j bj v j 0, Pasul 6. Se propagă informaţia de la Ny la N x : • se calculează vectorul A al activărilor A W T y t 1 I • se calculează vectorul de stare x (t 1) ai u i 1, xi t 1 xi t , ai u i 0, ai u i Pasul 7. Se trece la iteraţia următoare, t : t 1, şi se repetă paşii 5 şi 6 până când stările tuturor neuronilor rămân neschimbate. i Algoritmul se termină prin găsirea unei stări de echilibru x, y , unde x este vectorul x din mulţimea de instruire cel mai apropiat de x0 ; y va fi informaţia asociată lui x0 . Algoritmul funcţionează bine dacă reţeaua nu este supraîncărcată, adică mulţimea de instruire nu este prea mare. În cazul supraîncărcării, apare fenomenul de interferenţă care poate genera stări de echilibru false, similare punctelor de minim local ale unei funcţii. O MAB poate fi folosită pentru a regăsi o anumită informaţie când se prezintă reţelei o informaţie cheie. De exemplu, se poate regăsi media unui student dacă informaţia cheie cuprinde numele şi anul de studii. Chiar dacă informaţia este incompletă (de exemplu, nu se ştie anul) sau este distorsionată (de exemplu, numele este eronat), reţeaua poate furniza informaţia corectă. 4.6. REŢELE HOPFIELD CU TIMP DISCRET O reţea neuronală Hopfield este o memorie asociativă a cărei funcţionare este caracterizată de folosirea intensivă a feedback-ului. O reţea feedback uninivel este de forma 1 w21 v1 wn1 v1 w 12 2 v2 w n 2 w1n v2 w2n n vn vn Figura 4.3. Reţea feedback uninivel Reţeaua este alcătuită din n neuroni cu pragurile 1 , 2 , , n . Pentru fiecare neuron se calculează potenţialul intern neti n wij v j I i i , i 1, 2, , n j 1, j i unde I i este intrarea externă a neuronului i . Notând wi wi1 , , win T v v1 , , vn T , , putem scrie neti wiT v I i i În acest model matricea conexiunilor sinaptice este simetrică. Considerând că funcţia de activare este sign , neuronii îşi modifică starea după regula vi sign wiT v I i i . Evoluţia în timp a stărilor neuronilor se face după regula vit 1 sign wiT v t I i i , i 1, , n, t 0, 1, 4.7. MEMORII AUTOASOCIATIVE RECURENTE O astfel de memorie este reţeaua Hopfield uninivel cu timp discret şi funcţionare asincronă. Presupunem că I i i 0, i 1, 2, , n. Funcţionarea are loc în două etape: memorare şi utilizare. Faza de memorare 1 L Fie x , , x vectorii binari ce trebuie memoraţi. Matricea w a ponderilor este similară cu matricea de autocorelaţie din cazul asociatorului liniar, singura deosebire fiind că wii 0 . Avem L w xl xl T LI l 1 sau wij 1 ij xil xlj L l 1 unde I este matricea unitate. Oricând se pot adăuga sau elimina autoasocieri iar memorarea este invariantă la ordinea de prezentare a acestora. Faza de utilizare În această fază, un vector x este impus ca vector de stare. El reprezintă o versiune incompletă sau distorsionată a unui vector memorat. Apoi, fiecare neuron al reţelei, ales aleator, îşi estimează propriul potenţial de activare şi îşi stabileşte starea finală. Acest proces de modificare a stărilor continuă până când vectorul de stare nu se mai modifică. Înseamnă că reţeaua a găsit un vector de stare invariant în timp, ale cărui componente satisfac condiţia de stabilitate. Deoarece reţeaua se stabilizează în unul din minimele locale ale funcţiei energie 1 E v T wv 2 şi E (v ) E ( v ) , înseamnă că regăsirea lui x este determinată de similaritarea dintre x şi v sau x şi v , complementul lui v . Algoritmul 1 L l Se dau vectorii x , , x , cu x 1, 1 şi vectorul iniţial x 1, 1 , ce trebuie regăsit. n n Memorare Pasul 1. Iniţializări: w 0, l 1 l Pasul 2. Se memorează x : w : w x l x l T I Pasul 3. Dacă l L atunci l : l 1 şi se merge la Pasul 2. Ulilizare Notăm v x Pasul 4. Iniţializări: i 1, actualizare 0 , (1), , (n) o permutare a mulţimii 1, 2, , n Pasul 5. Se lucrează cu neuronul i : n net i w i j v j j 1 Dacă v i semn atunci , semn sign net i v i semn actualizare 1 , . Pasul 6. Dacă i n atunci i : i 1 şi se merge la Pasul 5. Pasul 7. Dacă actualizare 0 atunci afişează vectorul regăsit şi STOP; în caz contrar se merge la Pasul 4. . 5 REŢELE CU FUNCŢII DE ACTIVARE RADIALE 5.1. STRUCTURA REŢELEI În acest caz învăţarea se reduce la găsirea suprafeţei care se potriveşte cel mai bine cu mulţimea de instruire. Neuronii de pe nivelul ascuns produc o mulţime de funcţii folosite pentru reprezentarea vectorilor de intrare, numite funcţii radiale. Aceste reţele se mai numesc şi RBF (Radial Basis Functions) şi sunt alcătuite din neuroni aranjaţi pe trei nivele: n neuroni la intrare, K neuroni ascunşi şi m neuroni la ieşire. În 1990 s-a demonstrat că, la fel ca reţelele feedforward cu propagare înapoi, reţelele RBF pot aproxima orice funcţie continuă, oricât de bine. Spre deosebire de reţelele feedforward, reţelele RBF învaţă rapid dar sunt lente în utilizare. Structura unei astfel de reţele este prezentată în figura 5.1. u11 x1 x2 xn 1 h1 w11 2 K Nivel ascuns Nivel iesiri y1 y2 ym y1 S out1 y2 S out 2 ym S out m Nivel Iesiri normalizate Figura 5.1. Structura reţelei RBF Activarea h x a neuronilor de pe nivelul ascuns dă un răspuns semnificativ doar pentru un interval de valori ale lui x , numit domeniul receptiv al neuronului. Mărimea acestui interval este determinată de parametrul . Notând x x1 , , x n T • = vectorul de intrare u k u k 1 , , u kn T • = vectorul ponderilor către al k -lea neuron ascuns • k = parametrul pentru al k -lea neuron ascuns • z k = ieşirea neuronului ascuns k n 2 xi u ki x u k x u k exp i 1 z k hk x u k exp 2 2 k k . avem T Vectorul u k va reprezenta centrul unităţii ascunse k . Ieşirea neuronului j , corespunzătoare semnalului de intrare x , este y j w jk hk x u k w j 0 , K j 1, 2, , m k 1 unde iar w w jk j 1,m , k 0 ,K este matricea ponderilor conexiunilor dintre nivelul ascuns şi cel de ieşire este norma euclidiană. Se poate lucra cu ieşirile normalizate out j yj m y i 1 i . 2 2 Se pot folosi şi alte funcţii de activare, dar numai cele gaussiene h( x) exp x / sunt “radiale”, adică produc o valoare semnificativă doar pentru argumentele aflate în vecinătatea lui 0 ; vom lucra în continuare cu aceste funcţii. 5.2. INSTRUIREA REŢELEI Parametrii care trebuie învăţaţi în procesul de instruire sunt centri u k ai neuronilor ascunşi, ponderile w ale conexiunilor către nivelul de ieşire şi lărgimile k ale câmpurilor receptoare. Considerăm mulţimea de antrenament x , d , , x pot fi determinaţi în două moduri: simultan sau separat. 1 1 L , d L . Parametrii de control a) Determinarea simultană a parametrilor Eroarea medie pătratică asociată mulţimii de antrenament este E u , , w 1 L El u, , w L l 1 cu 1 m El u , , w d lj y lj 2 j 1 2 1 m K d lj w jk hk x l u k w j 0 2 j 1 k 1 2 Aplicarea unei metode de tip gradient pentru minimizarea erorii pătratice impune calcularea derivatelor parţiale El d lj y lj w j 0 El d lj y lj hk x l u k z kl d lj y lj w jk El 2 2 u ki k d m j 1 l j y lj w jk z kl xil u ki El 2 m 3 d lj y lj w jk z kl x l u k k k j 1 2 . Calcularea parametrilor u, w, folosind o metodă de tip gradient se poate efectua cu următorul algoritm. Pasul 1. Iniţializarea parametrilor • Matricele u, w şi vectorul se iniţializează cu valori mici aleatoare • Se fixează valoarea admisibilă pentru eroare, numărul maxim IT de prelucrări pentru mulţimea de instruire şi constanta de instruire c . Pasul 2. Se iniţializează numărul prelucrărilor: t : 1 Pasul 3. Se pregăteşte instruirea reţelei: E : 0, l : 1 Pasul 4. Se actualizează parametrii, folosind perechea de instruire x , d : l l w jk : w jk c • • • u ki : u ki c El u , , w w jk , j 1, 2, , m, k 0,1, , K El u , , w u ki , k : k c El u , , w k , k 1, 2, , K , i 1, 2, , n k 1, 2, , K Pasul 5. Se cumulează eroarea: se calculează E l , apoi E : E El Pasul 6. Dacă l L , se prezintă următoarea formă de instruire: l : l 1 şi se merge la Pasul 4. În caz contrar, dacă E sau t IT algoritmul se opreşte iar în caz contrar se începe o nouă prelucrare a mulţimii de instruire: t : t 1 şi se merge la Pasul 3. 6 REŢELE BAZATE PE CĂLIRE SIMULATĂ 6.1. PRINCIPIUL DE FUNCŢIONARE A CĂLIRII SIMULATE Călirea simulată se bazează pe analogia dintre procesul de călire a metalelor şi rezolvarea problemelor de optimizare combinatorială. Există două posibilităţi de a rezolva o problemă de optimizare combinatorială: • utilizarea unui algoritm de optimizare care, însă, poate să furnizeze o soluţie optimă globală într-un timp care poate fi foarte mare • utilizarea unui algoritm aproximativ, care să obţină o soluţie aproximativă, dar într-un timp rezonabil. Este de dorit un algoritm aproximativ general care să poată fi folosit pentru rezolvarea unei mari varietăţi de probleme. Călirea simulată este un astfel de algoritm şi este o generalizare a algoritmilor de ameliorare iterativă. Un algoritm de ameliorare iterativă funcţionează astfel: 1) se porneşte cu o configuraţie iniţială 2) se generează o secvenţă de iteraţii, fiecare dintre ele constând în trecerea de la configuraţia curentă la alta nouă care are un cost mai mic şi este situată în vecinătate 3) algoritmul se opreşte când se obţine o configuraţie care are cel mai mic cost în raport cu cel al configuraţiilor din vecinătatea sa. Principalele dezavantaje ale algoritmilor iterativi sunt: • oprirea poate avea loc într-un minim local şi nu ştim cât de departe este acesta faţă de minimul global • minimul local depinde de configuraţia iniţială. Spre deosebire de ameliorarea iterativă, călirea simulată nu depinde de configuraţia iniţială şi oferă o valoare apropiată de minimul global al funcţiei de cost. Deşi mai lentă decât ameliorarea iterativă, călirea simulată este preferată datorită capacităţii de a evita punctele de minim local. Călirea simulată urmăreşte obţinerea echilibrului termic la o anumită temperatură T . Cea mai rapidă metodă de obţinere a echilibrului a fost dezvoltată de Metropolis şi colaboratorii săi [40] şi constă în: • fiind dată starea curentă a metalului (caracterizată de poziţia particulelor sale) având energia Ec , se aplică o perturbaţie generată aleator prin deplasarea mică a unei particule; fie E p energia stării obţinute ca urmare a perturbaţiei. • dacă E E p Ec 0 atunci probabilitatea p de acceptare a stării perturbate este E p exp k 0T , unde k 0 este constanta lui Boltzmann. Această regulă de acceptare a noii stări (numită criteriul Metropolis) face ca sistemul să evolueze spre echilibrul termic, adică după un număr de perturbaţii distribuţia de probabilitate a stărilor aproximează distribuţia Boltzmann. Această metodă de obţinere a echilibrului termic se numeşte algoritmul Metropolis şi poate fi folosită la rezolvarea problemelor de optimizare combinatorială astfel: • configuraţiile problemei joacă rolul stărilor metalului • funcţia obiectiv este similară energiei • parametrul de control joacă rolul temperaturii; în continuare îl vom nota tot cu T şi-l vom numi temperatura sistemului. 6.2. INSTRUIREA REŢELELOR NEURONALE FOLOSIND CĂLIREA SIMULATĂ Instruirea unei reţele neuronale nu necesită valori prea mari ale ponderilor. Dacă aceste valori sunt mari atunci activările neuronilor vor fi mari iar valorile derivatelor funcţiilor sigmoidale de răspuns vor fi mici, ceea ce tinde să paralizeze conexiunea respectivă. De aceea se impun limite de mărime pentru ponderi. Considerăm o reţea neuronală cu transmisie unidirecţională şi fără straturi ascunse. Funcţia criteriu E măsoară diferenţa dintre ieşirile reale şi cele dorite. Considerăm un pas al algoritmului w de călire simulată corespunzător valorii T a temperaturii. Fie ij o pondere asociată neuronului j ; modificarea sa se face cu o valoare aleatoare wij . Probabilitatea ca modificarea wij să fie E p j exp T , unde E este variaţia energiei datorată modificării ponderii. acceptată este Pentru acceptarea modificării se compară cu un număr aleator r , ales uniform din 0, 1 : pj 12 dacă pj r atunci schimbarea este acceptată 13 dacă pj r atunci ponderea wij rămâne neschimbată O iteraţie a algoritmului de instruire a unei reţele neuronale prin călire simulată este: i Pasul 1. Se prezintă reţelei vectorul de intrare x ; se calculează ieşirile şi valoarea funcţiei obiectiv. Pasul 2. Se fixează o valoare T a temperaturii Pasul 3. Se selectează aleator o conexiune (i, j ) având ponderea wij . Pasul 4. Se generează aleator o modificare wij a ponderii conexiunii selectate. Pasul 5. Se calculează variaţia E a energiei asociate modificării ponderii. Pasul 6. Dacă valoarea funcţiei energie scade atunci se acceptă modificarea ponderii, adică wij : wij wij . În caz contrar au loc operatiile: 1) Se calculează probabilitatea pj de acceptare a E p j exp wij T modificării : 2) Se generează un număr aleator r cu distribuţie uniformă pe intervalul [0, 1] . Dacă dacă pj r pj r valoarea. atunci wij : wij wij iar atunci conexiunea (i, j ) îşi menţine Algoritmul anterior se execută pentru fiecare pondere a reţelei, ceea ce reprezintă un ciclu de prelucrare. Se reduce apoi temperatura şi se efectuează un nou ciclu de prelucrare. Reducerea temperaturii are loc până când se obţine o valoare acceptabilă a funcţiei obiectiv. În acest moment se consideră un nou vector de instruire şi se reia întregul proces, pornind călirea simulată cu valoarea maximă a temperaturii. Reţeaua este instruită pentru toţi vectorii din mulţimea de antrenament. Ei pot fi prezentaţi ciclic până când funcţia criteriu are o valoare rezonabilă pentru toţi vectorii de instruire. 7 REŢELE CU INSTRUIRE NESUPERVIZATĂ În învăţarea nesupervizată nu există antrenor, reţeaua trebuind să descopere singură modele, trasături, corelaţii existente în mulţimea datelor de intrare şi să le codifice sub forma unor date de ieşire. În învăţarea nesupervizată cunoaşterea este asigurată de redundanţa existentă în mulţimea datelor de intrare. Acest tip de învăţare se recomandă în următoarele situaţii: • mulţimea datelor de intrare este mare • caracteristicile formelor se pot schimba în timp, ele putând fi urmărite mult mai bine în cadrul învăţării nesupervizate • este necesar să avem informaţii a priori despre mulţimea datelor de intrare. 7.1. ÎNVĂŢARE COMPETITIVĂ Acest tip de învăţare împarte mulţimea datelor de intrare în clase. Într-o astfel de reţea, fiecare neuron de ieşire i este conectat cu toţi neuronii de intrare j , cu ponderile wij . Presupunem că atât vectorul de intrare x cât şi vectorul wi al ponderilor către neuronul de ieşire i sunt normalizaţi. Activarea neuronului i este n neti wij x j wiT x j 1 . Va fi declarat câştigător neuronul k care are activarea maximă: neti net k , i k Neuronul de ieşire se mai numeşte “câştigătorul ia totul” şi este ales, de obicei, prin selectarea neuronului cu cea mai mare activare. Un alt mod de implementare este specific reţelei MAXNET, în care un neuron i este conectat cu el însuşi cu o pondere excitatoare iar cu ceilalţi neuroni j cu ponderi inhibitoare , i j wij 1, i j Odată selectat câştigătorul k , ponderile se modifică cu regula wk (t 1) wk (t ) cx(t ) wk (t ) wk (t ) cx(t ) wk (t ) unde împărţirea se face pentru a asigura normalizarea vectorului w . Pentru a putea lucra cu vectori nenormalizaţi trebuie schimbată regula de selectare a neuronului câştigător k : se alege acel neuron k care este cel mai apropiat de vectorul de intrare x , în norma euclidiană wk x w j x , j . Ponderile se modifică cu regula wk (t 1) wk (t ) cx(t ) wk (t ) (7.1) În abordările anterioare se modifică doar ponderile către neuronul câştigător, celelalte rămânând constante. Este posibil să se modifice şi celelalte ponderi după regula wl (t 1) wl (t ) c' x(t ) wl (t ) l k şi c' c . Pentru a măsura calitatea învăţării competitive se foloseşte eroarea pătratică E wk x p 2 , p p unde k este neuronul câştigător când la intrare se prezintă vectorul x . Ponderile w sunt interpretate ca centri ai claselor. Modificarea ponderilor după regula (7.1) asigură minimizarea p funcţiei eroare pentru vectorul de intrare x : Ep 1 wkj x jp 2 j 2 , unde k este neuronul câştigător. 7.2. ÎMBUNĂTĂŢIRI ALE ÎNVĂŢĂRII COMPETITIVE Principalul dezavantaj al învăţării competitive constă în faptul că unii neuroni ai reţelei pot fi utilizaţi foarte rar sau chiar deloc în procesul de instruire. Algoritmul Kohonen (care va fi discutat mai târziu) este un mijloc de a depăşi această situaţie, dar nu reuşeşte întotdeauna. Alte posibilităţi sunt prezentate în continuare. a) Algoritmul cu conştiinţă Denumirea provine de la faptul că fiecare neuron este “conştient” de performanţele sale iar cei care au ieşit prea des învingători îşi micşorează şansele de a învinge în etapele următoare. Pentru aceasta, pentru fiecare neuron se reţine de câte ori a ieşit învingător. Algoritmul funcţionează astfel [5]: Pasul 1. Se determină vectorul pondere wk cel mai apropiat de vectorul de intrare x : x wk min x wi i , i 1, 2,, m Pasul 2. Se numără, pentru fiecare neuron j , de câte ori a câştigat competiţia: n j : n j B y j n j unde 1, dacă neuronul j este castigator yj 0, altfel 0 B 1 şi n j 0 la începutul algoritmului Pasul 3. Determinarea neuronului învingător prin folosirea conştiinţei x wk min x wi ti i unde , i 1, 2, , m ti poate fi asimilat cu pragul de activare definit prin 1 ti c ni m , c fiind o constantă iar m este numărul neuronilor de ieşire. Pasul 4. Se modifică ponderile neuronului câştigător al competiţiei wk : wk x wk unde este rata de învăţare. 7.3. METODE DE GRUPARE K-MEDII Fiind dată o mulţime de forme de clasificat X x1 , , xn şi o mulţime de ponderi ataşate P P1 , , Pn se urmăreşte determinarea centrilor C c1 , , cm ai claselor astfel încât să se minimizeze funcţia de cost m F fi i 1 unde Pj fi jI i x j ci Pj j I i iar mulţimea I i j / x j este mai aproape de centrul ci , se numeşte mulţimea index. Ea poate fi reformulată cu ajutorul diagramei Voronoi. Diagrama Voronoi este o partiţie a spaţiului de clasificat în regiuni Ri cu proprietăţile: i) centrul ci aparţine unei singure regiuni ii) Ri x / x ci x c j j i . Deci, regiunea Ri este formată din mulţimea punctelor de clasificat care au ca cel mai apropiat I j / x j Ri centru pe ci . Acum mulţimea index se poate scrie i . Metoda k-medii este o metodă iterativă de obţinere a centrilor claselor prin deplasarea iterativă a centrului fiecărei clase către centrul său de greutate. Prin aceasta se asigură deplasarea către minimul global al funcţiei de cost f i , ataşată unei clase. Algoritmul k-medii-1 Pasul 1. Se iniţializează clasele, distribuind în fiecare cel puţin un element, şi se aleg centri c1 , , cm . Pasul 2. Pentru fiecare clasă K i , i 1, 2, , m se execută: 2.1. Se determină noul centru ci ca fiind media ponderată a formelor de intrare xj definite de I i : Pj x j ci jI i Pj j I i 2.2. Se actualizează mulţimea index I i j / x j ci x j ck , k i Pasul 3. Se repetă Pasul 2 până când nicio clasă nu se mai modifică. Algoritmul anterior are avantajul că este simplu, dar are şi dezavantaje: • lucrează cu un numar fix de clase, ceea ce impiedică distribuţia într-un număr suficient de mare de clase astfel încât eroarea să scadă sub o limită dată • rezultatul depinde de iniţializările de la Pasul 1 • actualizarea mulţimilor index necesită un efort mare de calcul, trebuind să fie determinată distanţa de la fiecare formă de intrare la fiecare centru • algoritmul funcţionează pentru clase bine separabile, alcătuite din nori compacţi. În cazul claselor neuniforme apare fenomenul de captare de către clasa mai mică a punctelor periferice ale norului mai mare, aflate mai aproape de centrul clasei mici. Observaţia 7.1. Cel mai des algoritmul este utilizat pentru cazul ponderilor egale cu unitatea: Pi 1 i 1, , n . O altă versiune a algoritmului general k-medii constă în inserarea de noi centri în regiunea cu cea mai mare eroare relativă la funcţiile anterior. f i [10]; deci numărul claselor nu mai este fixat Algoritmul k-medii-2 Pasul 1. Se consideră un singur centru, dat de media ponderată a formelor de intrare xi R m , i 1, 2, , n ; diagrama Voronoi corespunzătoare va fi întregul spaţiu al datelor de intrare. Pasul 2. Se determină regiunea Re cu cea mai mare eroare şi se partiţionează în două regiuni: 2.1. Se determină axa de coordonate, k , care are cea mai mare varianţă a proiecţiei k max Pi xij cej j1, , miI k 2.2. Ducând prin punctul ce un hiperplan perpendicular pe a k -a axă de coordonate, se separă regiunea Re în două submulţimi definite de mulţimile index I e1 şi I e 2 : i / x , iI I e1 i / xik cek , i I e I e2 k i cek e 2.3. Se calculează centri c e1 şi ce 2 ai noilor clase Pi xi ce1 Pi xi iI e1 ce 2 Pi iI e1 , i I e 2 Pi i I e 2 Pasul 3. Se actualizează diagrama Voronoi: 3.1. Se elimină centrul ce şi se adaugă centri ce1 şi ce 2 3.2. Se actualizează mulţimile index ale regiunilor noi Pasul 4. Pentru regiunile modificate se execută operaţiile: 4.1. Se deplasează centrul clasei în punctul care reprezintă media aritmetică ponderată a punctelor ce aparţin acelei regiuni 4.2. Se actualizează diagrama Voronoi, mulţimile index şi mulţimile de puncte ale regiunilor modificate Pasul 5. Se repetă paşii 2 – 4 până când este verificată condiţia de oprire: • s-a obţinut un numar suficient de mare de clase şi/sau • eroarea maximă a devenit mai mică decât o valoare impusă şi/sau • fiecare clasă conţine cel puţin un număr dat de elemente. 7.4. ALGORITMUL ISODATA Algoritmul ISODATA (Iterative Self-Organizing Data Analysis Techniques Algorithm) este una din metodele iterative cel mai des folosite în problemele de clasificare. Se porneşte cu o partiţie iniţială (aleasă arbitrar sau furnizată de un alt algoritm) şi se mută formele dintr-o clasă în alta în vederea îmbunătăţirii funcţiei obiectiv. Folosim notaţiile următoare 1 2 p • X x , x , , x = mulţimea formelor de clasificat, • K = numărul de centri de clase, specificat iniţial în mod arbitrar 1 2 K • c , c , , c = centri Pasul 1. Se definesc parametri algoritmului: • n = numărul de clase dorit • e = numărul minim de elemente dintr-o clasă • d = parametrul dispersiei standard • f = distanţa maximă pentru fuzionare • L = numărul maxim de perechi de centri ce pot fuziona concomitent • I = numărul maxim de iteraţii permise Pasul 2. Se distribuie cele p forme din X în clase după regula x Ki x ci min j1, , K xcj Pasul 3. Se elimină clasele cu mai puţin de e elemente, repartizând componentele lor în alte clase, şi se micşorează corespunzator K . Pasul 4. Se calculează centrii claselor cu formula ci 1 x, i 1, 2, , K card K i xK i În continuare, pentru simplitatea scrierii, vom nota pi card ( Ki ) . Pasul 5. Se calculează diametrul mediu al fiecarei clase Di 1 pi x c i , i 1, , K xK i Pasul 6. Se calculează distanţa medie faţă de centrii claselor D 1 K pi Di p i 1 Pasul 7. i) Dacă algoritmul este la ultima iteraţie, se pune f 0 şi se merge la Pasul 11. ii) Dacă numărul iteraţiei este par sau K 2n atunci se merge la Pasul 11. iii) În rest se continuă cu pasul următor. Pasul 8. Pentru fiecare clasă K i , i 1, , K se calculează dispersia ij a datelor în direcţia j : ij 1 pi x j cij 2 xK i Pasul 9. Pentru fiecare clasă se determină componenta maximă a dispersiei j 1, , K ij * max ij , j * d Pasul 10. Dacă există o clasă K i astfel încât ij şi Di D, pi 2 e 1 sau K n 2 i atunci clasa K i se împarte în două clase cu centrii c şi c i , se şterge centrul c i şi se pune K : K 1 . Centrii noi se calculează după regula: c i : c ij* c ij * ij * c i : c ij* c ij * ij * cu 0 1 . Dacă s-a realizat o separare la acest pas, se merge la Pasul 2; în caz contrar se continuă. Pasul 11. Se calculează distanţele dintre oricare doi centrii d ij c i c j , i 1, , K 1, j i 1, , K d Pasul 12. Se aranjează primele L distanţe ij mai mici decât în ordine crescătoare. Pasul 13. Considerând perechea K , K i j cu distanţa centrilor cea mai mică, se modifică centri după regula: 13.1. Dacă centrii celor două clase nu au fost modificaţi, se i j înlocuiesc c şi c prin c * şi se pune K : K 1 . pi c i p j c j pi p j K 13.2. Dacă K i sau j are centrul modificat atunci perechea i, j nu se consideră şi se trece la perechea următoare. Pasul 14. Dacă aceasta este ultima iteraţie sau dacă numărul şi poziţia centrilor coincid cu cele de la iteraţia anterioară atunci algoritmul se opreşte; în caz contrar se merge la Pasul 2. 7.5. REŢELE KOHONEN Reţeaua Kohonen, numită şi harta cu auto-organizare a lui Kohonen sau harta topologică, are rolul de a realiza proiecţia spaţiului de intrare înalt dimensional într-un spaţiu de ieşire unisau bi-dimensional, păstrând topologia spaţiului de intrare. După învăţare, doi vectori din spaţiul de intrare apropiaţi unul de celălalt în raport cu distanţa din acest spaţiu vor fi proiectaţi pe doi neuroni apropiaţi din spaţiul de ieşire. În literatura de specialitate, o astfel de reţea este referită prin abreviera SOFM (Self-Organizing Feature Map). SOFM conţine un strat de neuroni şi două straturi (tipuri) de conexiuni. Vom presupune că dimensiunea spaţiului de ieşire este 2 , neuronii fiind aranjaţi pe un grilaj bidimensional. Fiecare neuron are conexiuni externe la vectorii de intrare, dar şi conexiuni laterale la vecinii săi până la o anumită distanţă. SOFM presupune, de obicei, că vectorii de intrare şi de încărcare sunt normalizaţi; produsul scalar poate, astfel, fi considerat ca o măsură a distanţei dintre doi vectori x şi w . Valorile conexiunilor laterale sunt fixe în timpul învăţării, ele depinzând doar de distanţa dintre neuronii de pe grilaj. Este evident că între doi neuroni neurij şi neurkl va fi aceeaşi conexiune ca neurij între neurkl şi . Consideram un model simplificat, in activările neuronilor se calculează cu formula aij x wij . Învăţarea pe o hartă Kohonen este nesupervizată: vectorii de intrare sunt prezentaţi reţelei iar încărcările sunt calculate fără a cunoaşte nicio valoare de ieşire dorită; pentru aceasta se utilizează relaţiile: wij t 1 wij (t ) (t ) x(t ) wij (t ) wij (t 1) wij (t ) dacă dacă neurij V (neurab ) neurij V neurab unde • wij (t ) este vectorul de încărcare dintre neuronul reţelei la momentul t al învăţării, neurij şi vectorul de intrare xt prezentat • t este un factor de învăţare care descreşte în timp, pentru a asigura convergenţa • neurab este neuronul cel mai potrivit, ales în conformitate cu relaţia (7.3) • V neurab este o vecinătate a neuronului neurab , care descreşte cu timpul. O versiune a acestui model simplificat utilizează relaţiile wij t 1 wij (t ) (t ) i a j b x(t ) wij (t ) dacă neurij V (neurab ) wij (t 1) wij (t ) dacă neurij V neurab neurij unde () este o funcţie monoton descrescătoare în raport cu distanţa dintre neuronii şi neurab . Alegerea parametrilor ce depind de timp este importantă pentru rapiditatea convergenţei. Vecinătatea V neurab N se alege iniţial ca fiind 2 , N fiind numărul neuronilor de ieşire, şi apoi scade la fiecare iteraţie. V neur ab neurab Figura 7.1. Exemplu de vecinătăţi Algoritmul de învăţare a hărţii Kohonen este următorul. Algoritmul Kohonen Pasul 0. Se aleg: numărul N al claselor, eroarea admisibilă 0 , rata de învăţare t 0, 1 , mărimea vecinătăţii ca fiind N 2 şi se iniţializează cu valori mici şi aleatoare wij . Pasul 1. Se determină distanţele euclidiene dintre vectorul de intrare şi vectorii de încărcare asociaţi neuronilor din hartă. Pasul 2. Se determină neuronul neurab , cel mai potrivit: cel cu distanţa minimă faţă de vectorul de intrare. Pasul 3. Se determină vecinătatea V neurab , asociată celui mai potrivit neuron. Pasul 4. Se modifică ponderile neuronilor aflaţi în vecinătatea V neurab . Pasul 5. Se repetă paşii 1 – 4 pentru fiecare vector de intrare. Pasul 6. Dacă wij (t ) wij (t 1) pentru toţi neuronii de ieşire, algoritmul se opreşte. În caz contrar se trece la iteraţia următoare, efectuându-se operaţiile: • t : t 1 , • se micşorează t , • se micşorează cu 1 vecinătatea neuronului cel mai potrivit şi se revine la Pasul 1.