Académique Documents
Professionnel Documents
Culture Documents
Univerzitet u Beogradu
Fakultet organizacionih nauka
Diplomski rad
Beograd, 2004
Univerzitet u Beogradu
Fakultet organizacionih nauka
Profesor
Vladan Devedi
Student
Zoran evarac
__________________
__________________
Beograd 2004
SADRAJ
Uvod ....................................................................................
1. Neuronske mree definicije i osnovni pojmovi ...........
2. Osnovni modeli ...............................................................
2.1. Model neurona .............................................................
2.2. Modeli neuronskih mrea .............................................
2.2.1. Arhitekture ................................................................
2.2.2. Algoritmi za uenje ...................................................
2.3. Konceptualni model .....................................................
2.4.1. Adaline ......................................................................
2.4.2. Perceptron .................................................................
2.4.3. Vieslojni perceptron ................................................
2.4.4. Hopfield-ova mrea ...................................................
2.4.5. Kohonenova samo-organizujua mapa .....................
3. Dizajn i implementacija framework-a za razvoj NM .....
3. 1. Definisanje funkcionalnih i strukturnih zahteva .........
3. 2. Konceptualni model ....................................................
3. 3. Dijagram klasa ............................................................
3. 4. Klase aplikacionog okvira ...........................................
4. Postojei aplikacioni okviri za razvoj NM ......................
4.1. JOONE .........................................................................
4.2. OpenAi NNet ...............................................................
5. Primena ...........................................................................
6. Zakljuna razmatranja .....................................................
1
2
4
4
7
7
8
10
11
13
15
17
19
21
21
21
22
23
33
33
37
39
45
PRILOG
Dokumentacija za najvanije klase aplikacionog okvira ....
46
Literatura .............................................................................
56
1
UVOD
Cilj diplomskog rada je razvoj aplikacionog okvira (framework), koji e omoguiti
jednostavno kreiranje i simulaciju raznih modela neuronskih mrea (NM). Na taj
nain stvorie se osnova za razvoj NM u obliku softverskih komponenti,
eksperimentalno istraivanje i praktinu primenu ove tehnologije.
Ideja je da se definie skup osnovnih softverskih klasa iz kojih e se izvoditi svi
modeli. Pri tom treba uzeti u obzir sve strukturne i funkcionalne specifinosti koje
odlikuju razliite modele. Da bi se to postiglo potrebno je izvriti analizu glavnih
predstavnika razliitih modela, definisati zahteve za svaki od njih, a potom
projektovati odgovarajue reenje.
Rad je organizovan u est celina:
1. U prvom delu su ukratko izloene definicije i osnovni pojmovi iz ove oblasti.
2. U drugom delu su analizirani razni modeli neurona i arhitekture NM, a kao
rezultat analize dobijeni su matematiki i konceptualni model.
3. U treem delu su isprojektovane klase aplikacionog okvira.
4. U etvrtom delu je izvrena je analiza i poreenje sa nekim postojeim
aplikacionoim okvirima iste namene.
5. U petom delu prikazana je simulacija Kohonen-ove samoorganizujue mree, i
dati su primeri primene iste.
6. U estom delu data su zakljuna razmatranja
U prilogu je data dokumentacija za najvanije klase okvira.
Ulazi
Teine veza
u1
w1
u2
w2
Ulazna
Funkcija
u3
Prenosna
Funkcija
Izlaz
w3
u4
w4
Slika 1.b.Vetaki neuron
2. OSNOVNI MODELI
2.1. MODEL NEURONA
Osnovna komponenta neuronskih mrea je neuron (element procesiranja). U skladu sa
slikom 1.b. imamo sledei matematiki model:
u ulazni vektor [u1, u2, ...un]T
w vektor teina [w1, w2wn] T
net ukupni ulaz iz mree
g ulazna funkcija
f prenosna funkcija
y izlaz
Izlaz neurona definisan je jednainom
y = f(net)
(1)
Ukupni ulaz iz mree za pojedinani neuron je vektorska funkcija teina veza i ulaza
net = g(u, w)
(2)
net = u i wi
(3)
Linearna
y=ax
Odskona
1, x > 0
y=
0, x 0
y=
Sigmoidna
1
1 + ex
(4)
a, net < T
- inhibitorni neuron
y=
b, net T
(5)
Kod nekih modela imamo i unutranju pobudu (bias), koja predstavlja konstantnu
vrednost koja se dodaje ulaznoj sumi. Ako sa B oznaimo bias, tada je za neuron sa
bias-om:
y=f(net+B)
(6)
Negativan bias ima istu ulogu kao prag u nekim sluajevima (ekscitorni neuron sa
odskonom funkcijom prenosa kod koga je T=0).
Navedeni model naziva se McCulloch-Pitts (MP) model neurona. Pored njega postoje
i razne varijante tzv. modifikovanog MP modela. Originalni MP model ima odskonu
funkciju prenosa, a modeli sa sigmoidnom funkcijom su tzv. modifikovani MP
neuroni.
Kod kohonenove samoorganizujue mree neuroni umesto funkcije sume imaju
funkciju rastojanja - euklidske metrike. Ova funkcija predstavlja intenzitet razlike
vektora ulaza i vektora teina.
d = uw =
(u
wi ) 2
(7)
(8)
(9)
Na izlazu neurona se moe nai element za kanjenje, kojim se odlae uticaj izlaza na
ostale neurone u mrei.
Poto je raunarska simulacija NM na jednoprocesorskim sistemima sekvencijalna,
koristiemo modele u diskretnom vremenu i umesto t imati k koje oznaava tekuu
iteraciju. Na taj nain e se reiti problem sinhronizacije izraunavanja.
Dati matematiki model i uvedeni pojmovi bie osnov za dalju analizu i formiranje
konceptualnog modela. Pre toga bie analizirane osnovne arhitekture i algoritmi za
uenje na konkretnim modelima.
skriveni
ulazni
izlazni
(1)
gde je:
w ji (k ) - teina veze od i-og do j-og elementa, u k-oj iteraciji
w ji (k ) - promena teine veze u k-oj iteraciji
uji ulaz j-og elementa, uji=yi
(2)
Ova formula predstavlja tzv. Hebovo pravilo za uenje bez nadgledanja. Prema ovom
pravilu teina se ne menja na osnovu eljenog izlaza, ve srazmerno prema stvarnom
izlazu i ulazu. Proces se ponavlja za isti ulaz sve dok se teine menjaju. Kada teine
prestanu da se menjaju znai da je mrea postala stabilna, tj. da je zapamtila zadati
ulaz.
Pomenuemo jo i opte Hebovo pravilo (Hebbian learning) koje ima veliki uticaj u
neuro-raunarstvu. Prema ovom pravilu, teina veze se poveava ukoliko prva elija
ima ekscitorno dejstvo na drugu, i ako je stalno (ili dovoljno esto) aktivna. Time se
pojaavaju veze grupe aktivnih neurona.
2. 3. KONCEPTUALNI MODEL
Na osnovu dosadanje analize moemo izvesti sledei konceptualni model:
Neuronska
mrea
Sloj neurona
Neuron
Algoritam za
uenje
Veza
10
Slika 4. Adaline
Adaline se moe proiriti u Madaline (Many Adalines) kombinovanjem nekoliko
adaline komponenti.
11
E=
1 n
p2
2 p =1
w ji (k + 1) = w ji (k ) + (k )u ji (k )
(k + 1) = (k )
12
2. 4. 2. PERCEPTRON
Arhitektura
Perceptron se sastoji od dva potpuno povezana sloja neurona ulaznog i izlaznog.
Veza izmeu slojeva je jednosmerna unapred (slika 5).
Slika 5. Perceptron
Elementi procesiranja u perceptronu su ekscitorni neuroni sa pragom, ulaznom
funkcijom sume i odskonom funkcijom prenosa.
net = u i wi
- ulazna suma
1, net T
y=
0, net < T
- izlaz neurona
Iz matematikog modela se vidi da je izlaz neurona jednak 1 ako je ulazna suma vea
od praga, a 0 u suprotnom.
13
Zbog problema i ogranienja koji su uoeni, iz ovoga je proisteklo delta pravilo koje
predstavlja proirenje LMS pravila za nelinearne sisteme sa glatkim diferencijabilnim
funkcijama prenosa.
w( k + 1) = w( k ) + (k )u (k ) f ' ( net ( k ))
Delta pravilo dobijeno je primenom pravila za izvod sloene funkcije pri
izraunavanju parcijalnih izvoda funkcije srednje-kvadratnog odstupanja po teinama.
Time se zapravo dobija osetljivost funkcije greke na promenu teina.
Za primenu ovog algoritma potrebno je odabrati pogodnu funkciju prenosa, kojoj se
lako (sa malo izraunavanja) moe odrediti izvod. Zato se koriste sigmoidne funkcije:
y=
1
1 + ex
y=
1 ex
= tanh( x)
1 + e x
y ' = y (1 y )
y ' = 0.5(1 y 2 )
1 n m
2
E pj
2 p =1 j =1
pri emu je :
p - indeks elementa za trening
j indeks neurona u izlaznom sloju
14
2. 4. 3. VIESLOJNI PERCEPTRON
Arhitektura
Vieslojni perceptron (Multi layer perceptron) pored ulaznog i izlaznog ima i
najmanje jedan skriveni sloj neurona. U praksi se koriste mree sa najvie 3 skrivena
sloja.
a
Izraz u zagradi je suma lokalnih greaka pomnoenih teinom veze, od svih izlaznih
neurona. Izraz predstavlja greku koja se sa izlaznog prenosi na skriveni sloj. To se
radi zato jer ne postoji eljena vrednost za skriveni sloj, pa nije mogue neposredno
izraunati greku za neurone iz ovog sloja.
15
16
2. 4. 4. HOPFIELD-OVA MREA
Arhitektura
Hopfield-ova mrea je rekurentna mrea u kojoj je svaki neuron povezan sa svim
ostalim neuronima u mrei sem sa samim sobom. Mrea nema slojevitu strukturu,
odnosno svi neuroni se nalaze u istom sloju.
Uenje
Uenje moe da se realizuje iterativno preko Hebbian-ovog pravila, ili se teine mogu
izraunati unapred na osnovu podataka koje e skladititi.
Teine veza su simetrine i mogu se izraunati na sledei nain:
M
w ji = u j u i , i j
a
a =1
wji = wij
pri emu je
u=[u1, un] ulazni vektor odnosno uzorak
M broj uzoraka
17
ji
y i ( k ) b j + u j ( k ))
i =1,i j
1
w ji y j (k ) yi (k ) + j y j (k )b j
2 j i j
18
mapa
X1
X2
ulaz
Algoritam za uenje
Kohenenova mapa koristi euklidsku metriku odnosno funkciju rastojanja, za izbor pobednika
tj. dominirajue elije:
d j = x wj =
(x w
i
ji
)2
(1)
(2)
wj (k + 1) = wj ( k ) + hcj ( k )[x( k ) wj ( k )]
(3)
gde je
k diskretna celobrojna vremenska koordinata odnosno iteracija treninga
hcj funkcija susedstva koja se definie kao
19
(k ), j Nc ( k )
hcj ( k ) =
0, drugacije
(4)
20
1)
2)
3)
4)
5)
6)
7)
3. 2. Konceptualni model
Iz prethodno navedene specifikacije izveden je konceptualni model koji predstavlja
osnov za definisanje odgovarajuih klasa.
Neuronska
mrea
Sloj neurona
Funkcija
ulaza
Neuron
Algoritam za
uenje
Funkcija
prenosa
Veza
Skup
za trening
21
3. 3. Dijagram klasa
Na slici 11 dat je dijagram klasa neposredno proizaao iz konceptualnog modela.
NeuralNetwork
Layer
InputFunction
Neuron
LearningRule
TrainingSet
TransferFunction
Connection
TrainingElement
Klasa
NeuralNetwork
Layer
Neuron
InputFunction
TransferFunction
Connection
Weight
LearningRule
TrainingSet
TrainingElement
Uloga
Neuronska mrea
Sloj neurona
Neuron
Ulazna funkcija
Prenosna funkcija
Veza
Teina veze
Algoritam za uenje
Skup za trening
Primer za trening
22
Weight
23
Klasa Layer
Sloj neurona je kolekcija neurona.
Klasa Layer realizuje sloj neurona. Sadri kolekciju neurona, metode za dodavanje,
izbacivanje i pristup neuronima, i metode za inicijalizaciju i izraunavanje sloja.
24
Klasa Neuron
Neuron je osnovni strukturni i funkcionalni element NM.
Svaki neuron sadri:
- kolekciju ulaznih veza i metode za dodavanje i izbacivanje veza
- ulaznu i prenosnu funkciju i metode za pristup i postavljanje istih
- atribute koji predstavljaju ukupan mreni ulaz, metodu za izraunavanje izlaza i
metode za pristup navedenim atributima
- bias vrednost, bafer za greku - error, baffer za kanjenje
25
26
Klasa InputFunction
Ulazna funkcija neurona predstavlja funkciju vektora teina ulaznih veza i vrednosti
ulaza. Kod MP neurona to je skalarni proizvod vektora, a kod SOM euklidska
metrika. Mogue su i razne varijacije npr. logike funkcije. Kako bismo izbegli
ponavljanje koda i omoguili realizaciju svih navedenih sluajeva, ulaznu funkciju
emo dekomponovati na dve komponente:
1. Funkciju ulaza mree NetInFunction
2. Ulaznu vektorsku funkciju InVectFunction
Funkcija ulaza mree je vektorska funkcija iji su argumenti vektor teina i vektor
ulaza. Kao rezultat vraa vektor koji je njihova razlika, linearna transformacija ili
neto drugo u zavisnosti od konkretne implementacije.
Argument ulazne vektorske funkcije je vektor dobijen od funkcije ulaza mree.
Ova funkcija vraa sklar koji predstavlja ukupni ulaz iz mree net. Ova vrednost je
argument za funkciju prenosa. Konkretne implementacije mogu biti npr. L1 ili L2
norma.
27
28
Klasa TransferFunction
TransferFunction realizuje funkciju prenosa. Ova klasa je apstrakcija funkcije prenosa
i ima metode koje vraaju vrednost funkcije i izvod. Takoe ima i metod koji vraa
istinitosnu vredost u zavisnosti od toga da li funkcija ima prag. Prag funkcije prenosa
bie realizovan pomou decorater paterna klasa ThresholdFunction.
29
30
Klasa LearningRule
Klasa LearningRule je generalizacija algoritma za uenje. Sadri:
- referencu na mreu na koju se primenjuje
- skup elemenata za trening i metodu za postavljanje ovog skupa
- metod learn kojim inicira uenje
Naslednici ove klase implementiraju konkretne algoritme. Implementirani su svi
razmatrani algoritmi.
31
NeuralNetwork
layers: Vector
learningRule: LearningRule
Layer
neurons:Vector
addLayer()
removeLayer()
layers()
setInput()
calculate()
getOutput()
learn()
addNeuron()
removeNeuron()
neurons()
calculate()
LearningRule
Neuron
trainingSet:TrainingSet
inputs:Vector
inputFunc:InputFunction
transferFunc:TransferFunction
bias: double
learn()
calculate()
getOutput()
TrainingSet
elements:Vector
InputFunction
addElement()
elements()
elementAt()
removeElementAt()
getOutput()
TransferFunction
TrainingElement
getOutput()
getPrime()
inputPattern:Vector
inputPattern()
Connection
Weight
value:double
connected:Neuron
weight:Weight
delay:Integer
inc()
dec()
randomize()
value()
connected()
weight()
getInput()
getWeightedInput()
32
33
34
35
36
4. 2.OPENAI NNET
Java NeuralNet je projekat OpenAi grupe i predstavljao je uzor u poetnim fazama
razvoja. Po mom miljenju je veoma dobro koncipiran aplikacioni okvir samo to je
ostao na nivou apstrakcije - nisu razvijene biblioteke konkretnih klasa.
Dati su glavni dijagrami klasa i sekvenci.
37
38
5. PRIMENA
Na realizovanom aplikacionom okviru izgraena je aplikacija SmartNet, koja
demonstrira osnovne mogunosti okvira u radu sa razliitim neuronskim mreama.
Aplikacija omoguava kreiranje razmatranih NM putem arobnjaka , a zatim trening
mree. Tokom kreiranja i treninga mogue je praenje i kontrolisanje svih relevantnih
parametara mree i procesa preninga.
39
40
Ova mrea ima veliku praktinu primenu u mnogim oblastima, za reavanje problema
vezanih za klasifikaciju, prepoznavanje, optimizaciju, vizuelizaciju i interpretiranje
velikih skupova visokodimenzionalnih podataka. Poznate primene ove mree su
1) Svetska mapa ivotnog standarda
2) WebSom
41
42
WebSom
WebSom je projekat u kome je samoorganizujua mrea upotrebljena za pretraivanje
dokumenata na Internetu. Osnovni princip je da se povezani (slini) dokumenti
nalaze 'jedni blizu drugih. Koriste se dve SOM. Jedna za predstavljanje rei i jedna
za predstavljanje dokumenata. Dokumenti se razvrstavaju u kategorije na osnovu rei
koje sadre u naslovu. Projekat je zapoet 1996 i jo uvek je u razvoju.
43
44
6. ZAKLJUNA RAZMATRANJA
Razvijeni aplikacioni okvir u potpunosti je odgovorio na postavljene zahteve.
Aplikacija SmartNet demonstrira osnovne mogunosti okvira i NM izvedenih iz
njega. Uspeno su realizovane dve najee koriene mree: vieslojni perceptron i
samo-organizujua mapa. Pored njih, okvir se moe koristiti bez ikakvih izmena za
izvoenje mrea bilo koje druge arhitekture to je pokazano na primeru Hopfieldove
mree.
Osnovne klase iste su za sve NM, a razlike su na nivou implementacije konkretnog
modela.Pored osnovnih klasa definisane su i pomone (utility) klase koje uglavnom
pojednostavljuju korienje osnovnih i obezbeuju dodatne funkcionalnosti vezane za
realizaciju konkretnih aplikacija.
Aplikacioni okvir je primenljiv u svim situacijama kada je za reavanje odreenog
problema potrebna neuronska mrea. To su problemi koje karakteriu:
1)
2)
3)
4)
nelinearnost
visokodimenzionalnost
um i neprecizni podaci
nedostatak odgovarajueg matematikog reenja ili algoritma
Uenje
Asocijacija
Klasifikacija
Generalizacija
Optimizacija
Dalji razvoj okvira e biti usmeren na praktinu primenu. Cilj je razvoj gotovih
komponenti istreniranih za odreene probleme.
to se tie samog okvira, potrebno mu je dodati razne ulazno/izlazne interfejsa, npr.
podrka za ulaz preko mree, iz baze podataka, analizu dokumenata i podataka u
razliitim formatima, grafiko predstavljanje rezultata itd.
XML se moe upotrebiti za specifikaciju mree i rezultata.Potrebno je omoguiti
serializaciju svih objekata, ime se omguava slanje gotovih komponenti preko
mree.
Uz navedena poboljanja razvijeni aplikacioni okvir bi naao veliku primenu u
tehnologijama kao to su inteligentni agenti, obrada jezika, reprezentacija i otkrivanje
znanja.
45
PRILOG
DOKUMENTACIJA ZA NAJVANIJE KLASE APLIKACIONOG OKVIRA
neuroph.nnet
Class NeuralNetwork
public class NeuralNetwork
extends Observable
Neuronska mreza
Constructor Detail
NeuralNetwork
public NeuralNetwork()
Method Detail
addLayer
public void addLayer(Layer layer)
addLayer
public void addLayer(int idx,
Layer layer)
removeLayer
public void removeLayer(Layer layer)
46
removeLayerAt
public void removeLayerAt(int idx)
layers
public Enumeration layers()
getLayers
public Vector getLayers()
layerAt
public Layer layerAt(int idx)
indexOf
public int indexOf(Layer layer)
layerNum
public int layerNum()
47
setInput
public void setInput(Vector inVect)
getOutput
public Vector getOutput()
calculate
public void calculate()
learn
public void learn(TrainingSet trainingSet)
stopTraining
public void stopTraining()
Zaustavlja trening
getTypeId
public Integer getTypeId()
setTypeId
public void setTypeId(int typeId)
48
getInputCells
public Vector getInputCells()
setInputCells
public void setInputCells(Vector inputCells)
getOutputCells
public Vector getOutputCells()
setOutputCells
public void setOutputCells(Vector outputCells)
getLearningRule
public LearningRule getLearningRule()
setLearningRule
public void setLearningRule(LearningRule learningRule)
notifyChange
public void notifyChange()
49
neuroph.nnet
Class Layer
public class Layer
Sloj neurona
Constructor Detail
Layer
public Layer()
Method Detail
setParentNetwork
public void setParentNetwork(NeuralNetwork parent)
parentNetwork
public NeuralNetwork parentNetwork()
neurons
public Enumeration neurons()
addNeuron
public void addNeuron(Neuron neuron)
50
addNeuron
public void addNeuron(int idx,
Neuron neuron)
setNeuron
public void setNeuron(int idx,
Neuron neuron)
removeNeuron
public void removeNeuron(Neuron neuron)
removeNeuronAt
public void removeNeuronAt(int idx)
neuronAt
public Neuron neuronAt(int idx)
indexOf
public int indexOf(Neuron neuron)
51
neuronNum
public int neuronNum()
52
neuroph.nnet.neuron
Class Neuron
public class Neuron
extends Object
Constructor Detail
Neuron
public Neuron(InputFunction inFunc,
TransferFunction transFunc)
Parameters:
transFunc
- prenosna funkcija
Method Detail
calculate
public void calculate()
setInput
public void setInput(double input)
getNetInput
public double getNetInput()
getOutput
public double getOutput()
hasInputs
public boolean hasInputs()
53
inputs
public Enumeration inputs()
addInput
public void addInput(Connection conn)
removeInput
public void removeInput(Neuron from)
setInputFunc
public void setInputFunc(InputFunction in)
setTransferFunc
public void setTransferFunc(TransferFunction trans)
inputFunc
public InputFunction inputFunc()
transferFunc
public TransferFunction transferFunc()
54
setParentLayer
public void setParentLayer(Layer parent)
getParentLayer
public Layer getParentLayer()
55
LITERATURA
[1] Introducing Neural Networks, Alison Carling, Sigma Press, Wilmslow, United
Kingdom (1992)
[2] Neural Networks for Intelligent Signal Processing, Anthony Zaknich, World
Scientific Publishing Co. Pte Ltd. Singapore (2003)
[3] Neural and Adaptive Systems: Fundamentals Through Simulations, Principe,
Euliano, and Lefebvre, John Wiley and Sons (1999)
56