Sunteți pe pagina 1din 45

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 
( )T n ( )
unde w = w1 ,, wn ∈ R este vectorul ponderilor. Funcţia f w x se numeşte funcţie de
T

activare (sau transfer). Definind variabila s ca fiind produsul scalar

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.

x 1
 w1


 y
 θ f


 nw

x
n
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ă
1, x ≥1

f : R → [ − 1, 1], f ( x) =  x, x ∈ ( − 1, 1)
− 1, x ≤ −1

• funcţia semn

1, x≥0
f : R → { − 1, 1} , f ( x) = sign( x) = 
− 1, x < 0

• funcţia sigmoidală

1
f : R → (0, 1), f ( x ) = , k >0
1 + e − kx

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

x1 x2 y ( x1 , x2 ) = x1 ∧ x2
1 1 1
1 0 0
1
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

2
y ( x1 , x2 ) = 
0, altfel

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.
x 1 x1
 w 
 1  w1
 
  y
 θ y  0
 w n
  θ
 nx
 nw
− 1
x n
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.

wij
Considerăm o reţea de tipul celei din Figura 2.1, unde reprezintă ponderea intrării j către

( ) T
neuronul de ieşire i iar wi = wi1 , , wim este vectorul ponderilor către neuronul i .
Semnalul de învăţare este

r = d i − yi

( )
T
cu yi = sign wi x şi d i răspunsul dorit pentru neuronul de ieşire i , când la intrare se prezintă
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 ), d i (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 + c( d i − sign( < wi , x > ) ) x

wij := wij + c( d 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
( k
) k k
( { } )
Fie perechile de instruire x , d1 , , x , d K cu x = x1 , , xn , d k ∈ − 1, 1 , k = 1, , K ş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 , ) notată pentru

simplitate ( x, d ) şi se calculează ieşirea y


y ( x ) = sign( < w, x > ) .

Pasul 4. Se modifică ponderile

w := w + c( d − 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
• = ponderea intrării j către ieşirea i
( ) T
• wi = wi1 ,  , win = 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Ă

Pentru un semnal de intrare x ∈ R se obţine ieşirea y ∈ R astfel


n m

n
yi = <wi , x >= ∑ wij x j , i = 1, , m
y = wx sau j =1
yj
Componenta maximă a vectorului y determină indicatorul j al clasei căreia îi aparţine
vectorul de intrare x .

Algoritmul de învăţare competitivă

Fie { ( x , d ),  , ( x
1 1 L
,d L )} mulţimea de instruire, unde d ∈ {1, 2,  , m} este indicatorul
i

k
clasei căreia îi aparţine x . Notăm cu , respectiv cu wi , matricea w , respectiv linia i din
i

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ă
w kj x l = max wik x l
i =1,..., m

2.2. dacă j = d , nu se efectuează nimic


l

dacă j ≠ d atunci
l

w kj +1 = w kj − cx l

wdk l+1 = wdk l + cx l


wik +1 = wik pentru i ∉ j , d l { }
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 K
,d K , )}
unde
(
x k = x1k , , xnk ) T
(
, d = d1 , , d m
k k k
) 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 2
1 K k
E = ∑ Ek = ∑ d − y k
k =1 2 k =1
adică

E=
1 K m k
∑∑ (
2 k =1i =1
d i − yik ) 2
=
1 K m k
∑∑
2 k =1i =1
( (
d i − f < wi , x k > )) 2

k
unde i este indicele unităţii de ieşire, k indexează perechea ce trebuie învăţată, d i şi respectiv
( )
y ik = 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
(
şi d = d1 , , d m
k k k
) T
, 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.

Pasul 3. Se prezintă perechea de intrare x := x , d := d şi se


k k

( )
calculează ieşirea reţelei y = y1 ,  , y m ,
T

yi = f (< wi , x >) = f ( wiT x )

pentru i = 1, , m .

Pasul 4. Se corectează ponderile


wij := wij + c( d i − yi ) f ' wiT x x j( ) .

Pasul 5. Se calculează eroarea totală

1 2
E := E + d−y
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


Ny
generează un hiperplan de separare. Un neuron de pe nivelul generează o regiune de decizie
mai complicată, folosind semiplanele generate de neuronii primului nivel.

x1

x2
   
   
xn

N0 Nx Ny Nz

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
• wki = 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ă

la momentul t se prezintă la intrare vectorul x = x1 ,  , x n


t t t
( ) T
şi se doreşte să se obţină vectorul

(
d t = d1t ,  , d mt ) T
atunci
n
xkt = ∑ w1ki xit
i =1 ,
( )
y kt = hk xkt ,

n1
= ∑ w 2jk y kt
x tj
k =1 ,
( ).
y tj = f j x tj
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
1 m  t  n1 2 t  
= ∑ d j − f j  ∑ w jk y k   =
2 j =1  
  k =1 

2
1 m  t  n1 2  n 1 t   

∑ 
d j − f j  ∑ w jk hk  ∑ wki xi  
 
2
= j =1  k =1  i =1    .

Minimizarea erorii se realizează cu o metodă de tip gradient.

Notând

( ) ∑δ w
m
δ kt = hk' xkt t 2
δ tj = f j' ( )(
x tj d tj − y tj ) şi j =1
j jk

obţinem

∂Et
∆w 2jk = − = δ tj y kt
∂w 2jk
,

∂Et
∆w1ki = − = δ kt xit
∂w1ki
.

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


.
t
Se observă că δ k 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 {( x , d ) ,  , ( x


1 1 L
,d L )}
mulţimea de antrenament.

Pasul 1. Se iniţializează:

• matricele w şi w , cu valori aleatoare mici din [ 0, 1]


1 2

sau [ − 1, 1]

• rata de instruire c ∈ ( 0, 1)

• eroarea maximă admisă E max (de exemplu, E max := 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 l = d1l , , d ml . )
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


w 2jk, l := w 2jk, l + cδ lj y kl

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

E=
1 L m l
(
∑ ∑ 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 .

1
ct =
Un exemplu de şir ce satisface condiţiile anterioare este 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 mn .


4 MEMORII ASOCIATIVE

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 n ( i m
)
Considerăm mulţimea de instruire x , y ,  , x , y , cu x ∈ B şi y ∈ B , B fiind
n

cubul bidimensional { 0, 1} n sau { − 1, 1} n . 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

S = (Nx , N y , W , I, J, U, V )
O reţea MAB se defineşte ca fiind un sistem , 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,
Ny
respectiv,

• U şi V sunt vectori coloană ce reprezintă pragurile neuronilor de pe nivelele N x şi,


Ny
respectiv,

Pasul 1. Se prezintă reţelei perechile de asociaţii


( x , y ),  , ( x
1 1 p
, yp )
şi se calculează matricea ponderilor

( )
p T
W = ∑ yi xi
i =1 .

Pasul 2. Se pune t := 0 , reprezentând momentul iniţial.

Ny
Pasul 3. Se iniţializează stările neuronilor de pe nivelul cu un
vector arbitrar y (0) .

Pasul 4. Se prezintă reţelei vectorul x = x( 0) , urmând să se

determine vectorul x cel mai apropiat de x( 0 ) în sensul


i

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 ⋅ x( t ) + 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

0, bj < v j

Ny
Pasul 6. Se propagă informaţia de la 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)

1, ai > u i

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.

Algoritmul se termină prin găsirea unei stări de echilibru ( x, y ) , unde x este vectorul x
i

din mulţimea de instruire cel mai apropiat de x( 0 ) ; y va fi informaţia asociată lui x( 0 ) .


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

w21 1
v1 wn1 v1

w 12
2
v2 w n 2 v2
 
 
 w1n 
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
n
neti = ∑ 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
− L⋅I
l =1

sau
L
(
wij = 1 − δ ij )∑ xil xlj
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

Se dau vectorii x ,  , x , cu x ∈ { − 1, 1} şi vectorul iniţial x ∈ { − 1, 1} , ce trebuie regăsit.


1 L l 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, actualizar e = 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 ,
(
semn = sign netσ ( i ) ).
vσ ( i ) ≠ semn vσ ( i ) = semn actualizar e = 1
Dacă atunci , .

Pasul 6. Dacă i < n atunci i := i + 1 şi se merge la Pasul 5.

Pasul 7. Dacă actualizar e = 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 h1 w11 y1
x1 σ1 Σ y1 S out1

y2
x2 σ2 Σ y2 S out 2
   
   
   
 
ym
xn σK Σ ym S out m

Nivel
ascuns
Σ Nivel
Iesiri
Nivel normalizate
iesiri

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
( )T
• x = x1 ,  , x n = vectorul de intrare
( ) T
• u k = u k1 , , u kn = 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 − uk ) ( x − uk ) 
T
z k = hk ( x − u k ) = exp −  = exp − i =1


σ 2  σ 2 
 k  
k

avem  .

Vectorul u k va reprezenta centrul unităţii ascunse k . Ieşirea neuronului j , corespunzătoare


semnalului de intrare x , este

K
y j = ∑ w jk hk ( x − u k ) − w j 0 , j ∈ {1, 2 ,  , m}
k =1

w = ( w jk ) j =1,m , k =0 ,K
unde este matricea ponderilor conexiunilor dintre nivelul ascuns şi cel de ieşire

iar este norma euclidiană. Se poate lucra cu ieşirile normalizate

yj
out j = m

∑y i
i =1 .

Se pot folosi şi alte funcţii de activare, dar numai cele gaussiene h( x) = exp − x / σ
2 2
( )
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


1 1 L
)}
, d L . Parametrii de control
pot fi determinaţi în două moduri: simultan sau separat.

a) Determinarea simultană a parametrilor

Eroarea medie pătratică asociată mulţimii de antrenament este

1 L
E ( u , σ , w) = ∑ El ( u,σ , w)
L l =1
cu
2
1 m
(
El ( u ,σ , w) = ∑ d lj − y lj
2 j =1
) 2 1 m 
= ∑  d lj
2 j =1 
 K
( 
−  ∑ w jk hk x l − u k − w j 0   )
 k =1 
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
∂w jk
( ) ( )
= − d lj − y lj hk x l − u k = − z kl d lj − y lj ( )
∂El
∑(d ) ( )
m
2
=− 2 l
j − y lj w jk z kl xil − u ki
∂u ki σk j =1

∂El
∂σ k
2 m
( )
= − 3 ∑ d lj − y lj w jk z kl x l − u 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

∂El ( u ,σ , w)
w jk := w jk − c
, j ∈ {1, 2,  , m} , k ∈ { 0 ,1,  , K }
∂w jk

∂El ( u ,σ , w)
u ki := u ki − c
• ∂u ki , k ∈ {1, 2,  , K } , i ∈ {1, 2,  , n}

∂El ( u ,σ , w)
σ k := σ k − c
• ∂σ k , k ∈ {1, 2,  , K }

Pasul 5. Se cumulează eroarea: se calculează El , apoi E := E + E l

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.

∆E = E p − E c ≥ 0
• dacă atunci probabilitatea p de acceptare a stării perturbate este
 ∆E 
p = exp − 
k
 0 ,T

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 − 
acceptată este  T  , unde ∆E este variaţia energiei datorată modificării ponderii.

cu un număr aleator r , ales uniform din [ 0, 1] :


pj
Pentru acceptarea modificării se compară
pj > r
12 dacă atunci schimbarea este acceptată
pj ≤ r wij
13 dacă atunci ponderea 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
.

∆wij
Pasul 4. Se generează aleator o modificare 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ă


wij := wij + ∆wij
modificarea ponderii, adică .
În caz contrar au loc operatiile:
pj
1) Se calculează probabilitatea 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] .


pj > r wij := wij + ∆wij
Dacă atunci iar
pj ≤ r
dacă atunci conexiunea (i, j ) îşi menţine
valoarea.

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
wij
, cu ponderile . 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 ) + c( x (t ) − wk (t ) )
wk (t + 1) =
wk (t ) + c( x(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 ) + c( x(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 , i ∈ {1, 2,  , m}

unde 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 , , x n şi o mulţime de ponderi
{ } { }
ataşate P = P1 , , Pn se urmăreşte determinarea centrilor C = c1 ,  , c m ai claselor astfel
încât să se minimizeze funcţia de cost
m
F = ∑ fi
i =1

unde

∑ Pj x j − ci
j∈I i
fi =
∑ 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 ,  , c m .
{ }
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


xj
formelor de intrare definite de I i :

∑ Pj x j
j ∈I i
ci =
∑ 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 f i [10]; deci numărul claselor nu mai este fixat
anterior.
Algoritmul k-medii-2

Pasul 1. Se consideră un singur centru, dat de media ponderată a


m
{ }
formelor de intrare xi ∈ R , 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
j∈{1, , m} i∈I
( )
 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 e1 = i / xik ≤ cek , i ∈ I e }
I e2 = {i/ x k
i ≥ cek , i∈I }
e

2.3. Se calculează centri c e1 şi c e 2 ai noilor clase

∑ Pi xi ∑ Pi xi
i∈I e1 i∈ I e 2
ce1 = ce 2 =
∑ Pi ∑ Pi
i∈ I e1 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 x−cj
j∈{1, , K }

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


1
ci = ∑ x, i ∈ {1, 2,  , K }
card ( K i ) x∈K i

În continuare, pentru simplitatea scrierii, vom nota


pi = card ( K i ) .

Pasul 5. Se calculează diametrul mediu al fiecarei clase

1
Di = ∑ x − c i , i ∈ {1,  , K }
pi x∈K i

Pasul 6. Se calculează distanţa medie faţă de centrii claselor

1 K
D= ∑ pi Di
p i =1

θf =0
Pasul 7. i) Dacă algoritmul este la ultima iteraţie, se pune ş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ă

σ ij
dispersia a datelor în direcţia j :

∑ ( x j − c ij )
1 2
σ ij =
pi x∈K i

Pasul 9. Pentru fiecare clasă se determină componenta maximă a


dispersiei
σ ij * = max σ ij , j ∈ {1,  , K }
j

σ * > θd
Pasul 10. Dacă există o clasă K i astfel încât ij şi

Di > D, pi > 2(θ e + 1)


sau
n
K<
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

* pi c i + p j c j
c =
pi + p j

şi se pune K := K − 1 .
13.2. Dacă K i sau j are centrul modificat atunci perechea ( i, j ) nu se consideră şi se
K

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 uni-
sau 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
neurij
neuronii de pe grilaj. Este evident că între doi neuroni ş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 ) ) dacă neurij ∈ V (neurab )
wij (t + 1) = wij (t ) neurij ∉ V ( neurab )
dacă

unde

şi vectorul de intrare x( t ) prezentat


wij (t ) neurij
• este vectorul de încărcare dintre neuronul
reţelei la momentul t al învăţării,

• α ( 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 ) )
neurij ∈ V (neurab )
dacă

wij (t + 1) = wij (t ) neurij ∉ V ( neurab )


dacă

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.

N 
V ( neurab )  
Vecinătatea 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  w
şi se iniţializează cu valori mici şi aleatoare ij .

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.


wij (t ) − wij (t − 1) < ε
Pasul 6. Dacă 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.