|
Andre metoder

Der findes mange andre måder at lære et netværk på, end dem vi har fortalt
om, faktisk bliver der ustandseligt udledet nye algoritmer der adskiller sig mere eller mindre fra de oprindelige. En af de vigtigste, og mest kendte,
algoritmer er backpropagation algoritmen. Vi vil dog ikke gå for meget i detaljer, men bare fortælle om hvordan den virker.
Indtil nu har vi set på hvordan fejlen efter et netværk med én neuron i outputlaget ændrede
på synapsestyrkerne. Det er dog ikke altid der kun er en neuron i outputlaget, og tit er der flere lag, hertil bruges backpropagation som bedre er
kendt som BPEA (Back-propagation error algorithm).

Figur 1: Fejlen i et multilagsnetværk
Vi må derfor finde alle fejlene ek. Idet outputlaget er tilpasset
træningssættet, er der fra hvert output yk også et output fra træningssættet
dk, disse kan sammenlignes, og fejlen ek findes. Vi er nu i besiddelse af et fejlsignal for hver output
i det neurale netværk, og kan finde den summerede fejl. Det gøres ganske simpelt ved at lægge fejlene sammen. Her kan der dog
opstå et problem, idet nogle af fejlene kan være negative og andre positive, hvorved de vil ophæve hinanden som vi kan se i ligning
1
Ligning 1: Fejl i fejlsignalet
Her har vi taget vi summen af et positivt og et negativfejl signal fra 2 individuelle neuroner. Dette bevirker, at den
summerede fejl bliver mindre end en af fejlene. Den summerede fejl bliver derfor misvisende.
En løsning vil være at summere den numeriske værdi |ek|. Det er dog bedre at sætte fejlen i 2.
potens, da større fejl bliver vægtet højere end små fejl.
Vi får hermed ligningen

Ligning 2: Fejlfunktion i BPEA
Her er der taget den halve sum. Det er af praktiske årsager da vi senere skal differentiere udtrykket.
Når NN trænes, er det træningsalgoritmens opgave at minimere det summerede output J. Dette sker ved at ændre
den enkelte synapsestyrke w (w tilhører wji eller wkj)
med w ( w tilhører wji eller
wkj). J kan derfor skrives som en funktion af w, J(w).
For at finde ud af hvad der skal ske med synapsestyrkerne, kan der ses på hvordan w opfører sig i forhold til den
summerede kvadrerede fejl J (Figur 2). Det vil sige hvordan J(w) afhænger af den enkelte vægt
w. Vi opstiller derfor differentialet i Ligning 3.

Ligning 3: J(n) partielt differentieret

Graf 1: J som funktion af w
Læringsraten der er vist på graf 1 er medbestemmende til hvor store skridt w(n) skal
tage mod minimum. Det vil sige hvor stor en ændring der bliver tilført w(n), fra tiden n til tiden
n+1. Hvilket også kan ses ud fra Ligning 4.

Ligning 4: Ændringen i synapsestyrken
Vi har nu i store træk defineret hvordan ændringen, der skal fortages på synapsestyrkerne kan findes. Vi
kan nu tage problematikken op, hvordan vi så rent faktisk finder den. Hvis vi eksempelvis skal ind og finde ændringen på
synapsestyrken, der på
Figur 1, er vist som den stiplede linie mellem lagene i og j. Skal vi kunne opstille et specifikt udtryk der beskriver
den ændring der skal tilføres wji.
Ligning 5: Ændring i synapse wji
Fejlen for hver output ek (k = 1, 2,...,p) bliver her,
individuelt partielt differentieret i forhold til synapsestyrken wji. Hvorved hver fejl er medbestemmende til
ændringen, der skal foretages på synapsestyrken wji. En enkelt fejls flow tilbage gennem netværket er
på Figur 3 vist som en stiplet linie.
Her bliver fejlsignalet ført gennem hver operation i netvær-ket, der er vist som klammer i figuren. I hver
klamme bliver signalet korrigeret ud fra differentialet af den pågældende operationen. Differentialet beskriver herved hvordan inputtet i
operationen forholder sig til outputtet. Ved at multiplicere hver operations differentiale, bliver fejlen herved korrigeret til at beskrive, hvad
indflydelse den pågældende synapsestyrke har på den pågældende fejl. Ses der specifikt på fejlen
e1, kan dens bidrag til wji findes vha. kædereglen på følgende måde. Se
Ligning 6.

Ligning 6: Ændringen i wji ved hjælp af kædereglen
Ændring af en specifik synapsestyrke
I Figur 3 er det udledte differentiale delt op, så hver differentieret operation hentyder til hvor i netværket den udføres. Målet er at bestemme mellem
lagene j og i. Der indføres nu notationen, hvor den øverste notering ji, er bestemmende for, hvilke lag der arbejdes med, og den nederste 11, er bestemmende
for hvilke neuroner der arbejdes med, i de pågældende lag.
Vi kan nu gå ind og se på de individuelle operationer (1,...,5):
1. Output
Operationen her kan benævnes:

Ligning 7: Beregning af u1j
Differentierer vi dette i forhold til x12ji(n) får vi følgende.

Ligning 8: Differenciering så vi får y2i
Outputtet y2i er specifik for ændringen af vores udvalgte synapsestyrke.
2. Den lokale gradient :
Denne operation er bestemt af neuronens aktiveringsfunktion (j). Det er derfor
differentialet af den pågældende aktiveringsfunktion der kan give os den lokale gradient j:
Hvis vi eksempelvis definerer aktiveringsfunktionen . Kan vi definere den lokale gradient
1 som i Ligning 9:

Ligning 9: Beregning af gradient
3. Synapsestyrken w11kj:
Operationen her hedder:

Ligning 10: Beregning af u1j
Differentierer vi dette, får vi:

Ligning 11: Differenciering med u1j(n)
Her er synapsestyrken w11kj(n) en konstant.
4. Den lokale gradient k:
Denne operation kan defineres som den lokale gradient k.
Dette er blot i k-laget, hvor det før var i j-laget. Der kan være forskel, da
aktiveringsfunktionerne i laget j og k ikke nødvendigvis er ens.
5. Fejlen e1:
Operationen her kan benævnes:

Ligning 12: Beregning af fejlen
Differencierer vi dette får vi

Ligning 13: Differenciering af fejlen
Hvad vi får ud af det
Vi kan nu sammensætte det hele og definere ændringen, der skal foretages på synapsestyrken.

Ligning 14: Ændringen i synapsestyrken
Vi kan så generalisere dette udtryk, så det er bestemmende for alle synapsestyrker mellem laget i og j.
Vi går væk fra den nye notation og får

Ligning 15: Generalisering af ændringen i synapsestyrken
På samme måde som vi har fået defineret ændringen på synapsestyrkerne mellem laget i og j. Kan vi også definere ændringen på synapsestyrkerne mellem laget j og k.
Her skal signalet ikke føres videre fra wkj (ligning 16).

Ligning 16: Ændringen i synapsestyrken mellem k og j
Vi har nu fået defineret hvordan man opstiller, beregner og træner et neuralt netværk. Vi er hermed kommet til et punkt, hvor de definerede formler kan
implementeres i et programmeringssprog. Herved er vi i stand til at træne et neuralt netværk.
I teksten er det beskrevet, hvordan hver enkelt ændring kan findes og hvordan de individuelle værdier i netværket kan beregnes. Der er ikke beskrevet
i hvilken rækkefølge denne procedure skal udføres. Til ændringen af synapsestyrkerne formodes det at synapsestyrkerne mellem laget j og k ændres i følgende
rækkefølge:
- Der fortages først en ændring på den første synapsestyrke, så w går fra w(n) til w(n+1). Altså et "step".
- Beregner herefter den nye fejl med hensigt på, hvad den pågældende værdi w kan foretage af ændringer.
- Fortsætter så til en ny synapsestyrke, i stedet for at minimere den tidligere.
- Denne proces udføres på alle synapsestyrkerne mellem laget j og k hvorefter regneprocessen fortsættes til lagene i og j.
Procedurerne udføres på de samme træningsdata. Efter gennemløbet foretages regneproceduren på et nyt sæt træningsdata (alle værdierne er placeret i træningssættet), indtil man
enten har nået et acceptabelt fejlminimum, eller har gennemløbet træningssættet tilstrækkelig mange gange.
En bogstavgenkendingsapplet der bruger mlp kan du se på denne addresse (link testet 13/03/2000).
Har du selv lyst til at gå videre med backpropagation findes der et væld af sider der omhandler denne algoritme,
generation5.org der også er en Thinkquest side (dog international, så indholdet er på
engelsk)indeholder informationer om både BPEA og mange andre slags netværk deriblandt Kohonen self-organizing maps, der helt bestemt er
værd at kigge nærmere på.
Et andet slags netværk er et self-organizing map, jeg vil ikke beskrive det her, men generation5 har også en god information om det, et eksempel på
et self-organizing map, der løser et travelling salesman problem (at finde den korteste vej mellem x antal punkter) findes her (link testet 13/03/2000).
Kilder
Simon Haykin, "Neural Networks - A comperehensive Foundation", Prentice Hall, ISBN:0-02-352761-7
generation5.org - www.generation5.org
|