Main pageThe neural network bible

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).

Fejlen i et multilagsnetværk

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

Fejl i fejlsignalet 

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

Fejlfunktion i BPEA

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.


J(n) partielt differencieret

Ligning 3: J(n) partielt differentieret

J som funktion af w

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.

Ændringen i synapsestyrken

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.

Ændring i synapse w_ji
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.

Ændringen af w_ji ved hjælp af kædereglen

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:

Beregning af u_1^j
Ligning 7: Beregning af u1j

Differentierer vi dette i forhold til x12ji(n) får vi følgende.

Differenciering så vi får y_2^i
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:

Beregning af gradient
Ligning 9: Beregning af gradient

3. Synapsestyrken w11kj:

Operationen her hedder:

Beregning af u_1^j
Ligning 10: Beregning af u1j

Differentierer vi dette, får vi:

Differenciering med u_1^j(n)
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:

Beregning af fejlen
Ligning 12: Beregning af fejlen

Differencierer vi dette får vi

Differenciering af fejlen
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.

Ændringen i 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

Generalisering af ændringen i synapsestyrken
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).

ændringen i synapsestyrken mellem k og j
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

« forrige - top - næste »


Bottom frame
  Før du begynder at læse dette Error-correction læring Competitive læring Hebbian læring Andre metoder Programmering af træning Opgaver