Main pageThe neural network bible

Uovervåget læring


Ved uovervåget læring menes der at netværket selv klassificerer sit input, og finder ud af hvilke neuroner der skal trænes, og hvordan de skal trænes, uden at der behøves nogen lærer eller træningssæt. Efterhånden som netværket trænes bliver input automatisk klassificeret og derved bliver netværket i stand til at skelne ét input fra et anden.

Competitive læring

Competitive læring er en simpel læringsalgoritme der egner sig godt til bogstavgenkendelse, derfor vil vi også bruge den til et program. Den går ud på at der kun er én neuron der er aktiv og at det kun er den aktive neuron der bliver trænet.

Alle neuroner har forskellige synapsestyrker så der ikke er nogen der giver det samme output på nogen tid. Grunden til dette er at det kun er den neuron der giver det største output der bliver trænet, denne neuron bliver også kaldt en winner-takes-it-all neuron.

3 Neuroner konkurrerer om hvilken der skal fyre
Figur 1: 3 neuroner konkurrerer om hvilken der skal fyre.

På figur 1 har vi det simpleste netværk med to lag, og kan man se hvordan neuronerne konkurrerer om at blive den der skal fyre og derved blive trænet. De hvide pile kan betegnes som forbindelser med negative synapsestyrker på -1. Den neuron der har det største output er den røde, og derfor bliver den trænet. Man kan sætte det op matematisk på følgende måde.

Neuronerne konkurrerer om hvilken der skal fyre
Ligning 1: Neuronerne konkurrerer om hvem der skal fyre

Dette betyder faktisk bare hvad der altid er blevet sagt, alle output bliver gennemløbet, og den der har det største output giver 1 som output, alle andre giver 0.

Som sagt er det kun den aktive neuron der bliver trænet. Når den aktive neuron skal trænes bliver dens synapsestyrker svækket en lille smule på en sådan måde at vektoren af synapsestyrker kommer til at ligne vektoren af input. Dette gøres ved hjælp af læringsregelen for competitive læring som følger,

Ændringen af synapsestyrker i et competitive netværk
Ligning 2:Ændringen af synapsestyrker i et competitive netværk

Et virkeligt godt billede af hvordan competitive læring virker er de følgende to billeder der viser netværket før og efter træning.

a: Før træning - b: Efter træning
Figur 2: a: Før træning - b: Efter træning

På billedet overfor er cirklerne inputvektoren og krydserne er de synaptiske styrker som bliver tilpasset efter læringen. Vi kan se at netværket tilpasser synapsestyrkerne efter hvor der er samlet en stor klump af input. Competitive lærte netværk er dog ikke gode hvis disse klumper ligger for spredt, derved er det for ustabilt og læringen bliver hurtigt ligegyldig da den ikke fører til bedre genkendelse.

Programmet herunder er en implementation af et neuralt netværk med competitive læring, filen nn.pas er selve netværket mens pRECForm.pas er brugerinterfacet. Her kan man se hvordan netværket er i stand til at generalisere af sig selv og inddele visse mønstre i de rigtige klasser. Det minder på mange måder om nLAB der dog brugte error-correction. Nederst i programmet er der en graf der viser hvor store ændringer der bliver lavet på synapsestyrkerne, man kan se at netværket lærer mindre og mindre, jo tættere og tættere det kommer på en klassifikation af selve mønsteret. Hvis man her træner for meget vil der dog kunne opstå fejl i netværket, så det ikke vil være i stand til at genkende andre mønstre end det ene. Her kommer der et andet aspekt ind, som også indtager meget af forskernes tid, nemlig overtræning af netværk. Du kan prøve at træne netværket over 200 runder og med en læringsrate på 100%. Så skulle der gerne vise sig en fuldstændig korrekt aftegning af dit billede i konturplottet, der viser netværkets synapsestyrker. Tit vil det ske, at netværket, på grund af overtræning, mister sin evne til at genkende andet end det mønster du har lært det. Der findes avancerede algoritmer der løser dette problem effektivt, men jeg har nøjedes med en støjknap, der tilsætter lidt støj til synapsestyrkerne. Du kan læse mere om programmet under programmeringssektionen hvor jeg dissekrerer koden og netværksarkitekturen.


Navn Beskrivelse Størrelse
pREC.zip Bogstavgenkendingsprogram der bruger competitive læring. 137 KB


Følgende program er endnu et af de utallige programmer til bogstavgenkending, det viser hvordan et netværk kan lære ved hjælp af både overvåget og uovervåget træning

http://vv.carleton.ca/~neil/neural/recog.html

Kilder

Simon Haykin, "Neural Networks - A comperehensive Foundation", Prentice Hall, ISBN:0-02-352761-7

« 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