Documente Academic
Documente Profesional
Documente Cultură
a
Reteaua neurala Perceptron Multistrat (MLP)
1. Baza teoretica
1.1. Arhitectura perceptronului neliniar multinivel
Structura clasica de perceptron neliniar- “Non-linear Perceptron” (NP) este o retea fara
reactie ( “feedforward”) care contine trei niveluri de neuroni, asa cum este reprezentat in
Figura 1.1, de mai jos.
O p1 O pk O pM
k
1 M
Strat de iesire
o o
W11 WML
1 j L
K K
Strat intermediar
h
W11 WLnh
1
K i K n
Strat de intrare
x p1 x pi x pn
Figura 1.1. Retea perceptron neliniar cu trei straturi de neuroni ( strutura clasica)
n (1.1)
( α ) net hpj = ∑ W jih ⋅ x pi , j=1,…,L
i =1
unde net hpj este o variabila de stare interna (activarea neuronului j).
(
Daca W jh = W jh1 , K, W jn
h
)t
, atunci:
[ ] t
net hpj = W jh , X p = W jh ⋅ X p , j=1,…,L
(1.2)
Etapa neliniara β
Aceasta etapa presupune calcularea iesirii neuronului intermediar j, conform formulei:
( )
( β ) i pj = f jh net hpj , j=1,…,L (1.3)
1
unde f jh este o functie neliniara de tipul f: ℜ → ℜ, f (x ) = ( λ >0 constant)
1 + e − λx
(neliniaritate sigmoidala conform Figurii 1.3) sau f (x ) = th x (neliniaritate de tip tangenta
hiperboloica, conform figurii Figurii 1.4).
i p1 Wko1 k
M o pk
γ δ
i pL o
WkL
data de formula:
L (1.4)
(γ) net opk = ∑ Wkj
o
⋅ i pj , k=1,…,M
j =1
unde net opk este o variabila de stare interna (activarea neuronului k).
Etapa neliniara ( δ )
Iesirea neuronului de iesire k este determinata in functie de activarea net opk si este
exprimata de formula:
(δ ) ( )
o pk = f ko net opk , k=1,…,M (1.5)
(
X p = x p1 ,L , x pn T )
pentru care se cunoaste vectorul de iesire ideal:
(
Yp = y p1,K, y pM T )
unde:
• n reprezinta dimensiunea vectorului de intrare,
• M numarul de clase (numarul neuronilor de pe stratul de iesire).
Apoi se genereaza aleator multimea ponderilor aferente stratului intermediar adica :
( )
i pj = f jh net hpj , j=1,..,L. (1.3)
( )
o pk = f ko net opk , k=1,..,M (1.5)
( ) ( )
δ opk = y pk − o pk ⋅ f k' o net opk , k = 1,K , M (1.12)
∂E p
(
= − y pk − o pk ) ∂f ko
(
= − y pk − o pk ⋅ ) ∂f ko (
∂ net opk ) (1.15)
o
∂Wkj o
∂Wkj (
∂ net opk )⋅ o
∂Wkj
(
∂ net opk )= L
∂
∑ W o ⋅ i pj = i pj
(1.16)
o o kj
∂Wkj ∂Wkj j =1
Pe baza relatiei (1.17), formula (1.14) de rafinare a ponderilor aferente stratului de iesire
este echivalenta cu formula urmatoare:
o
Wkj (t + 1) = Wkjo (t ) + ηδ opk ⋅ i pj , k = 1,K, M , j = 1,K, L (1.18)
2 (1.20)
[ ( )] 1 M
2 L
1 M
E p = ∑ y pk − f k' o net opk = ∑ y pk − f k' o ∑ Wkjo
⋅ i pj
2 k =1 2 k =1 j =1
∂E p
=
1 M ∂
( − 2
)
= −
M
− ⋅( ∂o pk ∂ net pk
⋅
o
⋅ ) ⋅
h
∂ i pj ∂ net pj
(2.21)
( ) ( ) (1.21)
∂W jih
∑
2 k =1 ∂W h
ji
y pk o pk
k
∑ pk
=1
y o pk
∂ net o
pk
∂ i pj ∂ (
net h
pj ∂W h
ji ) ( )
∂E p
h
∂W ji k =1
M
( )
= − ∑ y pk − o pk ⋅ f k' o net opk ⋅ Wkj
o
( )
⋅ f j' h net hpj ⋅ x pi ( ) (1.22)
∂E p (1.23)
( ) ( ) ( )
= − f j'h net hpj ⋅ ∑ ( y pk − o pk ) ⋅ f k'o net opk ⋅ Wkjo ⋅ x pi = − f j'h net hpj ⋅ [∑ δ pk
M (1.12 ) M
o
⋅ Wkjo ] ⋅ x pi
∂W h
ji k =1 k =1
∂E p (1.13) (1.24)
= − δ pjh ⋅ x pi
∂W h
ji
Tinand cont de relatia (1.24), formula (1.19) de rafinare a ponderilor aferente stratului
intermediar devine formula (1.25)
( )
1 M 2 (1.11)
Ep = ∑ y pk − o pk
2 k =1
Pasul 11. Daca p < N se face p = p + 1, adica se introduce un nou vector la intrarea retelei.
Altfel se calculeaza eroarea corespunzatoarea epocii respective (prin epoca se intelege
parcurgerea intregului lot de vectori) folosind formula:
1 N (1.10)
E= ∑ Ep
N p =1
f ' (x ) = f (x )[1 − f (x )]
Rezulta:
( ) (
f k' o net opk = o pk 1 − o pk , k=1,…,M ) (1.26)
( ) ( )
f j' h net oph = i pj 1 − i pj , j=1,..,L (1.27)
( ) ( )
δ opk = y pk − o pk ⋅ o pk ⋅ 1 − o pk , k=1,…,M (1.28)
( )
M (1.29)
δ hpj = i pj ⋅ 1 − i pj ⋅ ∑ δ opk ⋅ Wkj
o
, j=1,…,L
k =1
Pentru a minimiza numarul de inmultiri care ar trebui efectuate la Pasul 7 in vederea
determinarii termenilor eroare pentru neuronii din stratul intermediar, folosind formula
( )
(1.29) se face o operatie de atribuire z j = i pj ⋅ 1 − i pj (1.30). Formula (1.29) va fi inlocuita
Obiectiv: clasificarea vinurilor (din baza de date Wine) folosind reteaua MLP.
Baza de date Wine contine 3 tipuri de vinuri, fiecare avand cate 13 parametri:
1. Alcohol 2. Malic acid 3. Ash 4. Alcalinity of ash 5. Magnesium 6. Total phenols
7. Flavanoids 8. Nonflavanoid phenols 9. Proanthocyanins 10. Color intensity
11. Hue 12. OD280/OD315 of diluted wines 13. Proline
Baza de date contine:
• in Clasa1: 59 de vectori; in Clasa2: 71 de vectori; in Clasa3: 48 de vectori.
Toti vectorii sunt 13-dimensionali.
Pentru a se vizualiza baza de date, deschideti fisierul wine.data salvat in folderul curent.
Vectorii din baza de date au fost impartiti in 2 loturi:
- lot_antrenare, continand 50% din vectorii fiecarei clase
- lot_testare, continand restul de 50% din vectorii fiecarei clase
Ambele loturi sunt etichetate, stiindu-se fiecare vector din ce clasa provine. Etichetarile sunt salvate
in target_antrenare pentru lot_antrenare si target_testare pentru lot_testare.
Pentru clasificarea utilizand retele neuronale se va porni Toolboxul pentru Retele
Neuronale. Din programul Matlab, din coltul stanga jos se apasa Start/Toolboxes/Neural
Network/NNtool, ca in captura de mai jos.
Pentru implementarea retelei Perceptron Neliniar s-a folosit Toolboxul de Neural Network
din Matlab. S-a folosit o retea de tipul Feed forward backpropagation cu 3 straturi.
Stratul de intrare are 13 neuroni (dimensiunea vectorilor = 13) iar stratul de iesire
are 3 neuroni (sunt 3 clase de vinuri). Neuronii din stratul de iesire sunt de forma:
[1 0 0] vectorul apartine clasei 1
[0 1 0] vectorul apartine clasei 2
[0 0 1] vectorul apartine clasei 3
Parametrii ce vor fi variati in timpul lucrarii sunt:
- numarul neuronilor din stratul intermediar, functia de invatare, numarul de epoci
In continuare se va proceda astfel:
1. se va importa fisierul cu lotul de vectori pentru antrenare lot_antrenare apasand butonul
Import si apoi:
• la sectiunea Source se va selecta Import/Load from disk file/Browse/L4/Wine_Data
• la sectiunea Select a variable se va selecta lot_antrenare
• la sectiunea Destination se va selecta Inputs
2. se va importa fisierul cu etichetari target_antrenare apasand butonul Import si apoi:
• la sectiunea Select a variable se va selecta target_antrenare
• la sectiunea Destination se va selecta Targets
3. se va crea apoi o retea folosind butonul New Network si apoi:
• Network Name: sa va alege un nume al retelei, de exemplu: perceptron
• Network Type: tipul retelei. Se va alege Feed-forward backprop
• Input ranges: se va selecta Get from input: lot_antrenare
• Number of layers: se vor selecta 2 straturi (aceste 2 straturi sunt cel intermediar si
cel de iesire. Stratul formal de intrare il adauga el automat).
• Properties for Layer1: Proprietatile stratului intermediar
Number of neurons: 10
Transfer Function: TANSIG
• Properties for Layer2: Proprietatile stratului de iesire
Number of neurons: 3
Transfer Function: TANSIG
Se va apasa Create si in acest moment reteaua este configurata.
4. Pentru a vedea cum arata reteaua, selectati mai intai numele retelei si apoi dati View.
O sa va apara urmatoarea fereastra:
Se vor varia numărul neuronilor din stratul intermediar (L) între 3 şi 6 şi numărul epocilor
de antrenare (E) între 3 şi 15. Se vor face câte două grafice şi tabelele aferente pentru
fiecare L:
• eroarea medie pătratică în funcţie de numărul epocilor
• corelaţia în funcţie de numărul epocilor.
Experimentul se poate realiza cu ajutorul funcţiei prezicator din Matlab care are
următoarea sintaxă:
[yid,y,rms,corel] = prezicator;
Unde:
• yid reprezintă ieşirile ideale
• y sunt reşirile reale ale sistemului
• rms este eroarea medie pătratică
• corel – corelaţia.
Valorile coeficienţilor care împart intervalul în 3 sunt α = 0.76 si β = 1.55.
Bibliografie
[1] V.Neagoe, O. Stănăşilă – Recunoasterea formelor si retele neurale – algoritmi fundamentali,
Ed. Matrix Rom, Bucureşti, 1998.
[2] V. Neagoe, C. Tudoran, G. Strugaru, Data Fusion and Neural Networks for Disaster
Forecasting: Flood Prediction Case