Neurale netværk
med indlæringsvanskeligheder af tilbagestående fejl formering
Colin Fahey

Et biologisk neurale netværk
1. Software
2. Indledning
Dette dokument beskriver, hvordan man gennemfører en kunstige neurale netværk, der er i stand til at blive uddannet til at genkende mønstre.
Dette dokument beskriver en model af en neurale netværk, der lærer af en algoritme, der bruger "tilbagestående fejl formering."
Dette dokument indeholder grundlæggende demonstrationer af learning by "tilbagestående fejl formering." Dette dokument er et link til computer-kode. Computeren kode omfatter demonstrationer. Computeren kode kan bruges til at skabe komplekse neurale netværk. Men computeren kode er kun til demonstration formål. En alternativ implementering kunne reducere hukommelsesanvendelse og kunne øge hastigheden.
3. Alternativ til læring af tilbagestående fejl formering
Dette dokument beskriver en model af en neurale netværk, som lærer ved en algoritme navngivne "tilbagestående fejl formering." Denne algoritme kan kræve en meget lang tid at lære forskellige ting. Også denne algoritme kan tilfældigt undlader at lære forskellige lektioner på grund af den tilfældige oprindelige status for de neurale netværk op inden træning.
Læring ved at "knytte et aktivt input" er et vigtigt alternativ til indlæring af "tilbagestående fejl formering." Læring ved at knytte aktive input simpelthen associerede materialer, der samtidigt aktive. En sådan læring kan være hurtig og pålidelig. Men for mange praktiske formål, der ikke er nogen indlysende måde at bruge en neurale netværk, der lærer af foreningsfriheden, der er en indlysende måde at bruge et netværk, der lærer af tilbagestående fejl formering.
Nogle biologiske neurale netværk er kendt for at lære ved sammenslutning af aktive indgange. Historiske fejl formering er ikke observeret i nogen biologiske neurale netværk.
Dette dokument beskriver interessante anvendelsesmuligheder for en neurale netværk, der lærer af tilbagestående fejl formering. Men learning by forening er et meget vigtigt alternativ algoritme til læring. Design af et neurale netværk, der lærer ved sammenslutning til at løse et særligt problem kan være vanskeligere at desgining et alternativ neurale netværk, der lærer af tilbagestående fejl formering, men biologiske systemer lærer ved sammenslutningen, og det kognitive evne til biologiske systemer er åbenlys.
4. Biologiske Neuron
4.1 Neuron celle

Et biologisk neuron "(multipolær" type, ~4 um celle kroppen)
En neuron er type celle, der har evnen til at modtage og videresende nerve signaler.
Neurons er grundlaget for nerve-systemer, der findes i dyr, fugle, fisk og insekter.
Brains med hukommelse og logik, og enkel refleks-systemer, der både er baseret på arrangementer af neuroner.
Neurons bruges også til at fremføre signaler over lange afstande i en skabning krop, såsom fra sensorer til hjernen eller fra hjernen til muskler.
Funktionsmåden for en biologisk neuron er meget kompliceret, men følgende forenklede beskrivelse indfanger det grundlæggende princip:
De Neuron akkumuleres signaler modtaget fra andre neuroner, og hvis det samlede signal ophobning overstiger en tærskel, neuron transmitterer sine egne signaler til andre neuroner.
4.2 Neuron dele

Dele af en biologisk neuron
|
Soma
|
Cellen kroppen af et Neuron
|
|
Dendrites
|
Fibers med kemiske receptorer (input), der strækker sig fra cellen kroppen af et neuron. Et Neuron typisk har mange dendrites, og dendrites ofte har mange filialer.
|
|
Axon
|
En fiber med kemiske udledere (output) på sit slutpunkt, der strækker sig fra cellen organ i Neuron. En neuron har et enkelt Axon, og Axon normalt har meget få filialer.
|
|
Synapse
|
En konfiguration sådan, at Axon af en neuron og dendrites en anden neuron er adskilt af et meget lille hul. I en sådan konfiguration, kemikalier, der udledes fra en Axon af en neuron krydser synapse og er modtaget af dendrites af de andre Neuron. Dette er, hvordan neuroner øve indflydelse på andre neuroner.
|
4.3 Neuron fyring
Et Neuron akkumuleres kemiske signaler fra sin dendrites, og hvis den samlede kemiske ophobning overstiger en tærskel inden for den tidsfrist, Neuron "brande," sende sit eget signal gennem sin Axon.
Nogle neuroner er i stand til fyring Impulser om rækkefølgen af 100 Hz.
De signaler, der passerer gennem neuroner inddrage ophobninger af natrium (Na), kalium (K), og klor (Cl) ioner, og en deraf følgende elektrokemiske potentiale (dvs. spænding).
Hvilefase spænding (-70 mV) og fyring spænding (+30 mV) kan måles eller endda påvirket af konventionelle elektriske kredsløb.
Det følgende er en spænding registrering af en rotte Neuron fyring med en hastighed på ca 100 Hz når en enkelt bakkenbart er rørt og holdt ud af sin hvilepuls holdning:

En rotte Neuron fyring (100 Hz) på grund af besiddelse af en bakkenbart.
Selv om stimulus er konstant, Neuron signal er hurtig pulserende.
4.4 Neurale netværk
Den menneskelige hjerne har ca 10^11 (100 milliarder) neuroner.
Hver neuron i lillehjerne modtager input fra så mange som 10^4 (10000) synapser.
Selv om Axon og dendrites af en Neuron ofte strækker sig kun nogle få mikrometer væk fra cellen organ, nogle axons er på rækkefølgen af en meter i længden.
En hjerne har neuroner med relativt korte axons grupperet i områder eller klynger.
En hjerne har også bundter af neuroner med forholdsvis lang axons at forbinde områder adskilt af centimeter.
Således en hierarkisk netværk af behandlingen elementer er dannet.
4.5 Neurale netværk status
Status for et netværk af neuroner er både den måde, som neuroner er tilsluttet og signaler på alle de synapser.
Det er uklart, hvor meget status oplysninger vil gå tabt, hvis en hjerne blev tranquilized i den samlede ledighed for nogen tid.
Man kan forestille sig oplysninger vedholdende kun af signaler bevæger sig gennem netværket, og ikke af netværksforbindelsen sig selv, ligesom cellulære automata simuleringer gerne Conway's "Game of Life", enkle Dynamic Random Access Memory (DRAM) chips, og ekkoer i et kammer.
4.6 Neurale netværk Learning
Konventionelle læring opstår, når egenskaberne for dendrites ændringer på en synapse til at blive mere eller mindre effektive til at modtage kemiske signaler fra en Axon.
Årsagerne til sådanne ændringer er komplicerede, men resultatet er, at en neuron kræver en anden kombination af synapse input til at udløse et output signal.
5. Artificial Neuron
5.1 Definition
En "kunstig neuron" er en algoritme eller en fysisk enhed, der gennemfører en matematisk model inspireret af det grundlæggende problem af en biologisk neuron.
Et Neuron akkumuleres signaler modtaget fra andre neuroner eller input (eg, sensorer), og hvis det samlede signal ophobning overstiger en tærskel, Neuron sender et signal til andre neuroner eller output (eg, effectors).
Enhver matematisk model, der indarbejder ideen om at akkumulere flere indgange og giver en enkelt output (som accentuerer den relative intensitet af input i forhold til nogle nominelle niveau) kan bruges til mønster anerkendelse.
Sådanne modeller kan være grundlag af en kunstig neuron.
Hvis indflydelsen fra hver indgang kan ændres, så den model kan understøtte læring.
5.2 Aktivering funktion
En "aktivering funktion" er en matematisk funktion, der konverterer input værdier under en bestemt værdi til en forholdsvis lav produktion værdi, og konverterer input værdier over en bestemt værdi til et relativt højt output-værdi.
En "aktivering funktion" bruges til at konvertere den vejede sum af input-værdier af en neuron til en værdi, der svarer til produktionen fra de Neuron.
En "sigmoid" funktion er en generel klasse af glatte funktioner, asymptotically tilgang en lavere grænse for input værdier nærmer negative uendeligt, og asymptotically tilgang en øvre grænse for input værdier nærmer positive uendelige.
En specifik sigmoid funktion er "logistic sigmoid" funktion:

De "Logistic Sigmoid" funktion: 1 / ( 1 + Exp( -x ) )
De "logistic sigmoid" funktion kan bruges som en "aktivering funktion" for en matematisk model af en neuron.
Den matematiske derivat af "logistic sigmoid" kan beregnes som en formel, der gør det nemt at beregne et associeret læring formel.
5.3 Neurale netværk input
En "neurale netværk input" udgør et input til en neurale netværk.

Neurale netværk input
"Input" er den numeriske værdi af input.
5.4 Neurale netværk output
En "neurale netværk produktion" udgør et output af en neurale netværk.

Neurale netværk output
"Output" er den numeriske værdi af produktionen.
"Error" er en numerisk værdi, der udgør forskellen mellem produktionen værdi og en "Desired" værdi:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
De "Desired" værdi repræsenterer en ønsket værdi, eller en ideel værdi eller en korrekt værdi, at de neurale netværk skal producere så et output som svar på bestemte input.
Fejlen værdi er beregnet og tildelt "Error" en uddannelsesaftale algoritme.
Fejlen værdi er feedback til de neurale netværk.
De neurale netværk kan tilpasse sig til at mindske forskellen mellem dens output og det ønskede værdier; dvs. de neurale netværk kan lære, og kan således reducere fremtidige fejl.
5.5 Neuron organ
Et "Neuron organ" repræsenterer det organ i en neuron, der akkumuleres input bidrag, og tilføjer en skævhed, og omdanner den deraf følgende værdi af "aktivering funktion er" at producere et output værdi.

Neuron organ
"InputAccumulator" er en værdi, der repræsenterer den akkumulerede input fra neuron links, hvis udgange er forbundet til Neuron organ.
"Bias" er en indstillelig værdi, der er kombineret med den akkumulerede input værdi.
"Output" er en numerisk værdi repræsenterer output værdien af Neuron.
Outputtet værdi er beregnet efter følgende formel:
Output = ActivationFunction( Bias + InputAccumulator );
"ErrorAccumulator" er en numerisk værdi repræsenterer akkumulerede fejl.
Da en specifik output værdien af Neuron kroppen, og fik en specifik output error værdi, akkumulerede fejl værdi justeres efter følgende formel:
ErrorAccumulator += Output * (1 - Output) * OutputError;
"Rate" er en værdi, der påvirker, hvordan "Bias" værdi ændringer som reaktion på "ErrorAccumulator" værdi:
Bias += (-1) * Rate * ErrorAccumulator;
5.6 Neuron link
Et "Neuron link" er et link mellem:
(1) et input af de neurale netværk og et input af en Neuron organ;
eller,
(2) en produktion på en Neuron organ og et input fra en anden neuron organ;
eller,
(3) en produktion på en Neuron organ og et output af de neurale netværk.

Neuron link
"Input" er en cache af input til linket.
"Weight" er en indstillelig værdi, som påvirker hvordan signal værdier og fejl værdier overføres via linket.
"Output" er en cache af produktionen af linket.
Værdien er beregnet efter følgende formel:
Output = Weight * Input;
"Error" er en cache for fejl i linket.
"WeightedError" er en cache af fejl på den link, vægtet med vægten faktor:
WeightedError = Weight * Error;
"Rate" er en værdi, der påvirker, hvordan "Weight" værdi ændringer som reaktion på "Error" værdi og "Input" værdi.
Under neurale netværk læring, "Weight" værdi justeres på følgende måde:
Weight += (-1) * Rate * Input * Error;
5.7 Neurale netværk
En "neurale netværk" indeholder input, output, Neuron organer, og links.
Følgende billede ses en enkel neurale netværk, med to indgange og to Neuron organer i et første lag, og en enkelt neuron i et andet lag, og én udgang.

Eksempel på en neurale netværk
Under en simulering af en neurale netværk, input værdier udbrede sig frem gennem links og Neuron organer, og i sidste ende nå frem til udgange.

Eksempel på frem formering i et neurale netværk
Under uddannelse, fejl værdier er fastsat på output, og disse fejl udbrede sig baglæns gennem de neurale netværk, hvilket resulterer i en ændring af synk og systematiske fejl i Neuron organer og links.

Eksempel på tilbagestående fejl formering i et neurale netværk
5.8 Neurale netværk simulering
Definition:
"Net-simulation" er den procedure, der anvendes til at udbrede nettet input via links og Neuron organer indtil nå nettet udgange.
Netværk simulation indebærer simulering af hele sit konstituerende links og Neuron organer.
Simuleringer uden sløjfer eller tid:
Der er mange mulige netkonfigurationer involverer sløjfer.
Der er mange Neuron modeller, der er afhængige af tid.
Men nogle af de mest almindelige anvendelser af kunstige neuroner inddrage hverken sløjfer eller tid.
Det følgende er en matematisk model af en neuron organ:
Output = ActivationFunction( Bias + InputAccumulator );
Med dette neuron model, og et netværk uden "sløjfer," vi simpelthen starte fra eksterne input, beregne output af første lag af neuroner, og levere disse output som input til det næste lag, beregne output for at lag, og fortsætte gennem lag af neuroner, indtil de endelige resultater er beregnet.
Loops:
Et netværk kan have forbindelser i form af sløjfer (eller "cykler)."
For eksempel er produktionen af en neuron kan tilsluttes direkte til et input af samme Neuron, der forårsager "feedback."
Et andet eksempel er outputtet af neuron # 1 er forbundet til input af Neuron # 2, og outputtet af neuron # 2, bliver forbundet til input af Neuron # 1.
Hvis du kan starte fra et tidspunkt i et netværk og spore en vej gennem neuroner og forbindelser, følger de en-vejs flow af de signaler, og i sidste ende nå frem til det samme udgangspunkt, så stien er en sløjfe.
Loops indføre den interessante mulighed for signaler der flyder rundt i netværk for ubestemt tid.
Nogle enkle modeller antage, at det tager et specifikt beløb på tidspunktet for signaler til at passere gennem individuelle neuroner.
I sådanne modeller, signaler cirkulere gennem sløjfer med få neuroner hurtigere end signaler cirkulere gennem sløjfer med mange neuroner.
Et Neuron tilsluttet sig selv vil have den hurtigste signal omsætning sats.
Hvis et neuron har et input X, en vægt W, en skævhed B, og en ikke-negative output Y (f.eks 0.0 -> 1.0), så vi kan danne en oscillator blot ved at sætte W = (-8) og B = +4 og forbindelsesledninger Y til X;
hver gang vi simulere Neuron, at signalet vil blive skiftes til den modsatte tilstand.
Et netværk med sløjfer kan travlt med aktivitet, selv når den ikke accepterer ydre signaler (stimuli) som input.
De cellulære automata regler Conway's "Game of Life" kunne gennemføres i et neurale netværk, som giver dig en lille antydning af den mangfoldighed af aktiviteter, der kan ske i en neurale netværk med sløjfer.
Finite-state maskiner (FSM), oscillators, flygtige hukommelse (i modsætning til læring mønstre via skiftende vægte), er gjort mulig ved looping.
Hvis et netværk har sløjfer, kan vi ikke opdatere alle udgange, indtil vi beregne alle udgange, og således, kræver vi en midlertidig buffer til at gemme beregnet output indtil vi beregne alle udgange, og så kan vi begå den nye output-værdier til neuroner i netværket.
Enhver metode, der opdaterer output i selve nettet på en progressiv måde, i stedet for en alt-i-gang måde, indfører en vilkårlig rækkefølge i tid, som fører til kaos.
Fysik simulationer som involverer koblede enheder, såsom planeter kredser en stjerne med gensidig tyngdeaccellerationen kræfter mellem alle organer, kræver den samme form for tilgang: compute redskabet styrker på alle organer, før du opdaterer enhver hastighed og position.
Time-afhængighed:
Et simpelt netværk simulation typisk indebærer input skaber de ønskede resultater efter en enkelt simulering tid skridt.
I en sådan simulation, vi mener med hensyn til "antallet af gentagelser" frem for "tiden i sekunder."
Der behøver ikke være nogen korrespondance mellem gentagelser og en tidshorisont.
Et system kan være designet til at gøre et netværk simulering (iteration) kun, når der kommer nye input er tilgængelige, hvilket kan forekomme med uregelmæssige mellemrum i tid.
Men overveje en matematisk model af en neuron, at forsøg på at simulere den pulserende output aspekt af en biologisk neuron.
De pulserende kunne være karakteriseret i form af tid, såsom pulserende på en bestemt frekvens eller har pulser hvis kurven udvider for en bestemt tid.
Vi kan have andre tids-afhængige elementer i en matematisk model af en neuron, såsom et input akkumulator, hvis værdi får bidrag fra input, men har en lækage i rimeligt forhold til dets nuværende værdi.
Generelt kan vi finde et elektrisk kredsløb analogt for elementer, som adlyder visse matematiske ligninger, og så kan man betragte en Neuron som et kredsløb med modstande, kondensatorer, og en ikke-lineær forstærker.
Ligesom et kredsløb kan udstille kompleks tid afhængige adfærd, produktionen af en neuron kan betragtes som en funktion, der afhænger af dens input og gang i en kompliceret måde.
5.9 Historiske fejl formering
Definition:
"Historiske fejl formering" er en matematisk procedure, der starter med fejlen på outputtet af en neurale netværk og propagerer denne fejl baglæns gennem netværket at give output error værdier for alle neuroner i netværket.
Historiske fejl formering formler:
Fejlen værdier på det neurale netværk udgange er beregnet efter følgende formel:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
Fejlen ophobning i en Neuron organ er justeret i henhold til produktionen i de Neuron organ og output fejl (angivet ved links forbundet til Neuron organ).
Hver output error værdi bidrager til fejlen akkumulator på følgende måde:
ErrorAccumulator += Output * (1 - Output) * OutputError;
I en vis forstand alle de output fejl på det næste lag lække baglæns gennem input lodder og opkoncentreres på outputtet af en neuron i et tidligere lag.
Denne akkumulerede værdi er multipliceret med en værdi, der er størst, når den nuværende produktion af Neuron er mest neutrale (mest "ubeslutsomme)" og er mindst når produktionen i de Neuron er mest ekstreme (meget "bestemt)."
Vægt forandringer og partiskhed ændre formler:
Grundlaget for læring er en justering af vægte og partiskhed værdier i et forsøg på at mindske fremtidige produktion fejl.
Learning "Rate" er en numerisk værdi, som primært viser, hvor hurtigt en Neuron justerer vægt og partiskhed værdier efter fejl værdier.
Følgende formel viser, hvordan man kan ændre vægten af et neuron med et bestemt sæt af input værdier og dens output error værdi:
Weight += (-1) * Rate * Input * Error;
Følgende formel viser, hvordan du kan ændre fordomme af et neuron i lyset af den nuværende produktion fejl for Neuron:
Bias += (-1) * Rate * Error;
6. Træning en neurale netværk
6.1 Uddannelse procedure
Man kan begynde med en uddannet netværk og fortsætte med at sænke produktionen fejl med videreuddannelse, men en ofte starter med en uuddannet nettet.
Før uddannelse, vælger tilfældige værdier for alle vægte af alle neuroner i netværket.
Jeg observerede problemer, når jeg tilfældigt valgte værdier i intervallet [ -1.0, +1.0 ], og jeg har ikke haft problemer, når jeg har valgt tilfældigt værdier fra intervallet [ +0.1, +1.0 ].
Jeg nævner disse bemærkninger, men de kan være på grund af min fejl.
Formålet med tilfældige vægte er at mindske muligheden for eventuelle patologiske situationer i et netværk.
Hvis alle neuroner i et netværk startede med samme vægt, nettet ville have noget grundlag for øget differentiering mellem neuroner.
Jeg har bemærket, at indstillingen alle partiskhed værdier til nul (0.0) er acceptabel.
Et uddannelsesforløb indebærer at gå gennem en uddannelse sat mange gange, måske hundreder eller tusinder af gange.
For hver passere gennem uddannelsen sæt, vi betragter hvert element i uddannelsen sæt.
En uddannelse sæt element har et sæt af input, og et sæt af ønskede resultater.
Vi simulere nettet ved hjælp af det sæt af input angivet af uddannelse elementet.
Simuleringen udbytter output værdier.
Vi udbreder de fejl baglæns tænkte neurale netværk for at beregne produktionen fejl for alle neuroner.
Vi opdatere alle lodder og afvigelser.
Advarsel: En akademisk tekst, som drøftes neurale netværk slået til lyd går gennem hele uddannelsen sæt og kun opsummering vægt ændringer og afvigelser.
Efter at passere gennem hele uddannelsen sæt vi har et sæt af summer af vægten ændringer og partiskhed ændringer.
Vi tager disse beløb og opdatere alle lodder og afvigelser.
Sådanne beløb kan være enorme for store uddannelse sæt - og den deraf følgende hoppe i vægt-rummet ville være urimeligt stort.
Så jeg tror, at dividere med antallet af uddannelses-elementer, for at få gennemsnitlige vægt ændre værdier og den gennemsnitlige partiskhed ændre værdier, ville være rimelig.
Der er noget at klage over computing en enkelt vægt ændre vektor, der på en eller anden måde tager hele uddannelsen sat ind på overvejelse.
Jeg ved ikke, om jeg bare lavet en fejl i gennemførelsen af den idé, men jeg næsten opgav helt på neurale netværk på grund af, hvordan dårligt ting var at dreje ud.
Så når jeg prøvede det naive alternativ, nemlig at gøre opdateringer, hver gang uddannelse punkt, tingene fungerede perfekt.
I betragtning af den samlede uddannelse sæt før laver en opdatering har nogle fordele og ulemper:
Fordel:
Enkelt uddannelsesprojekt elementer i uddannelsen sæt med ekstreme fejl (dvs. dårlig uddannelse element) ikke vil yde et stort bidrag til opdatering, fordi det vil blive overvældet af den indflydelse, de "gode" data;
Ulempe:
Hvis N er antallet af poster i din uddannelse sæt dit sats på fremskridt til den optimale vægt vektor vil blive delt af N.
Eller, for en given afstand vil du kun har en brøkdel af retning hints hen ad vejen i forhold til det naive tilgang;
Måske denne teknik vil arbejde for dig, men prøv den naive tilgang, før du giver op på neurale netværk i ytre frustration!
6.2 Manglende evne til at reducere fejl
Uddannelse kan fejle at reducere den samlede fejlprocent for uddannelse sæt.
Det er vigtigt at opdage en manglende evne til at reducere fejl.
Følgende liste beskriver årsager til manglende evne til at reducere fejl, og mulige løsninger.
Punkterne på listen er opført i tilnærmelsesvis kendelse af sandsynlighed, med det første punkt på dagsordenen er mest sandsynlig.
(1) Vægten kombination har nået et lokalt minimum af fejlen overflade, og der "sidder fast;"
Løsning: Start en ny simulering med nye tilfældige lodder.
(2) Netværket er for få neuroner eller lag til at kode alle de mønstre i din uddannelse sæt;
Løsning: Cautiously underholde muligheden for at tilføje lag eller neuroner.
(3) Et eller flere elementer i din uddannelse sæt modsiger eller er helt uforeneligt med dine andre uddannelses-elementer;
Løsning: Tjek dine data sat for uregelmæssigheder.
Find teststoffer, at udbytte de mest fejl for din uddannet nettet.
Kig ind på teknikker til gennemsnitlige vægt ændrer sig hele datasættet til at mindske indflydelsen fra eventuelle dårlige sager.
(4) Den læring sats er for høj (alt over 1.0 er formentlig overdreven), og de opdateringer altid overskridelse af målet;
Løsning: Reducer læring sats.
(5) De læring sats er for lav (noget nedenfor 0.01 kunne være for lille), og netværket er virkelig konvergerende om den ideelle vægt kombination - men er for langsom;
Løsning: Forøg læring sats.
Uddannelse i to lag, tre-neuron netværk til at matche den eksklusive eller (xor) funktion, kan på trods af enkelheden i den funktion, undlader at konvergere.
Dette kan være overraskende og frustrerende.
Men den løsning er simpelthen at indstille alle Neuron link vægte til nye tilfældige værdier og derefter forsøge at uddanne nettet igen.
I tilfælde af uddannelsen et netværk til at matche den eksklusive eller (xor) funktion, tilfældige positive vægte synes at føre til en vellykket læring hver gang, mens visse kombinationer af positive og negative vægte undertiden forårsage uddannelsen til at mislykkes dramatisk.
Behovet for at vælge ny tilfældig oprindelige vægte for at tilbagesøge en fiasko at konvergere er en uheldig konsekvens af kombinationen af læring procedure.
Den læring procedure er primært søger efter et globalt minimum ved steepest afstamning på en overflade, og potentialet for tilstedeværelsen af et "lokalt minimum," hvor søgningen kan blive fanget.
6.3 Samlet uddannelse fejl
Den samlede fejl af et netværk kan karakteriseres ved torvet-rot af gennemsnittet af kvadrerede fejl, eller "rot-betyde-square" (RMS).
Fejlen på noget særligt netværk output er givet ved følgende formel:
Error = (Output - Desired);
Summen af kvadrerede fejl for et enkelt uddannelsesprojekt punkt på dagsordenen er givet ved følgende formel:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
Summen af kvadrerede fejl for hele viften af emner i en uddannelse sæt er summen af kvadrerede fejl af de enkelte poster. Følgende kode viser, hvordan squared fejl for det samlede sæt af uddannelse genstande kan være beregnet:
double squaredError = 0.0;
for
(
int trainingItemIndex = 0;
trainingItemIndex < totalTrainingItems;
trainingItemIndex++
)
{
trainingSet.SetAllInputNodeValues( trainingItemIndex );
Simulate( propagationIterations );
trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
PropagateErrors( propagationIterations );
UpdateWeightsAndBiases();
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
}
Det overordnede rot-betyde-square (RMS) af fejlen er givet ved kvadratroden af gennemsnittet af de kvadrerede fejl:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Denne værdi er én måde at karakterisere den samlede fejlprocent af et netværk overvejer alle uddannelse tilfælde.
7. Læring
Læring sker, når vægten og partiskhed værdier Neuron links og Neuron organer er justeret i overensstemmelse med specificerede netværk input og output error værdier.
Overvej en neurale netværk med to input (x1 og x2), og to bånd (med vægte w1 og w2), og en Neuron organ, og en output (y).

Neurale netværk med to input, og en Neuron organ, og en output
Vi tog dette Neuron ved at levere input, computing output, edb fejlen, computing vægt og partiskhed ændringer og ajourføring af lodder og partiskhed, ankommer til nye lodder ( w1', w2' ).
Der er en meget interessant måde at visualisere denne proces.
Vi kan betragte det sæt af vægte, som en vektor i en multi-dimensionelle rum. For eksempel for to lodder vi har vektoren W = (w1, w2) i en to-dimensional "vægt rummet."
Når vægtene er justeret, vi har en ny vægt vektor W' = (w1',w2').
Vi kan visualisere dette som et punkt W flytter til et nyt punkt W' som en del af en proces for at minimere output error.
Normalt en ikke ville beregne output error for alle mulige vægt kombinationer, fordi håbet er, at vægten justeres proces vil effektivt kør mod de bedste kombination.
Men lad os plot overfladen, som primært viser, hvor godt et Neuron opfylder alle elementer i en uddannelse angives som en funktion af dens to vægte:

Summen af kvadrerede fejl for en bestemt uddannelse angivet som en funktion af to vægte (w1, w2)
Dybest set er målet for læring er at komme ned til det laveste niveau i denne overflade, hvor fejl er minimeret.
Når vi finder det punkt W = (w1, w2), der giver den mindste værdi på denne flade, læring er færdig og derefter kan vi simpelthen bruge uddannet Neuron.
Nedenstående graf viser outputtet af en uddannet Neuron som en funktion af alle mulige input X = (x1, x2):

Neuron output som en funktion af to indgange (x1, x2) for en vægt kombination, der minimerer squared error
Selv om den vægtede sum for denne to-input neuron er simpelthen (w1*x1 + w2*x2), aktivering funktion vender en enkel drejes fly til en klint.
Denne overflade er det korrekte output-værdier for alle input kombinationer (x1, x2) specificeret af vores trænings-sæt.
Men du kan forestille dig, hvordan input vektorer X = (x1, x2) ligner uddannelse værdier vil også føre til den korrekte output værdier; denne funktion af neurale netværk kaldes "generalisering" og er den største værdi af neurale netværk.
Som vi forsøge at "nedstamme fra" overfladen af kvadrerede fejl, må vi "spring, før vi ser!"
Vi opdaterer vægt vektor og partiskhed, og så evaluerer vi "højden" af overfladen på vores nye placering.
En konsekvens af dette er, at vi kunne flytte til et punkt med en mere ekstrem fejl.
En anden konsekvens er, at det kan tage et stykke tid at nedstamme tilbage til dybden af vores tidligere placering.
Muligheden for "leaping" til mere ekstreme toppe og dale af fejlen overflade er direkte relateret til "læring sats," fordi det kognitive sats bestemmer, hvor meget indflydelse fejl værdier har på vores vægt og partiskhed ændringer.
Nedenstående graf viser, hvordan øge læring sats hastens vores ankomst til lavere placeringer på squared error overflade, hvor fejl er minimeret.
Grafen viser også, at øge læring sats indfører også muligheden for at gøre dårlige trin:

Kort sigt tendens til rot-betyde-squared (RMS) fejl for hele uddannelsen sat over flere uddannelse gentagelser, for læring satser 0.1, 0.5, 1.0, og 2.0.
Her er et diagram over de dybereliggende betyde-squared output fejl af et multi-lag netværk med en uddannelse sæt med 19386 elementer, der oplevede mange dårlige skridt på vejen til den bedste vægt vektorer:

Uddannelse til tider støder spidser i de dybereliggende betyde-squared (RMS) fejl, når fejlen stigninger for nogle gentagelser, før du genoptager en faldende tendens.
Sommetider tendensen er simpelthen glat konvergens til det ønskede sæt af vægte:

Trend af rot-betyde-squared (RMS) fejl for hele uddannelsen sat over flere uddannelse gentagelser, for læring satser 0.1, 0.5, 1.0, og 2.0.
8. Eksempel: Exclusive-eller (xor)
"Eksklusiv-eller" (xor) er en funktion, der accepterer to Boolean input og giver en enkelt Boolesk produktion i henhold til følgende tabel:
|
X1
|
X2
|
Y = xor (X1, X2)
|
|
0
|
0
|
0
|
|
0
|
1
|
1
|
|
1
|
0
|
1
|
|
1
|
1
|
0
|
I almindelighed et enkelt neuron har input {x1, x2, ...}, ind gennem links med lodder {w1, w2, ...}.
De Neuron beregner en foreløbig mængde d = bias + (w1*x1 + w2*x2 + ...), som kan anses for at fastlægge, hvilke fly, i en uendelig række parallelle fly, indeholder en nærmere angivet punkt med koordinater {x1, x2, ...}.
De Neuron beregner et output værdi, y = ActivationFunction( d ), som har den virkning at opdele uendelig række parallelle fly ind på to sæt, med et sæt producerer lavt output værdier, og det andet sæt producerer høje output værdier.
Således er en enkelt neuron opdeler multidimensional rummet i to regioner, adskilt af flyet bias + w1*x1 + w2*x2 + ... = 0, og tildeler lavt output værdier til punkter i regionen på den ene side af flyet, og tildeler højkapacitet værdier til punkter i regionen på den modsatte side af flyet.
Det betyder, at hvis to punkter i multidimensionale rum har forskellige klassifikationer og kan være fuldstændig adskilt af et fly, så en enkelt neuron kan anvendes korrekt at klassificere punkter fra disse datasæt som tilhørende et sæt eller det andet.
Den eksklusive eller (xor) funktion klassificerer punkter i to-dimensionelle rum (med koordinater (x1, x2)) sådanne, der peger i sættet { (0,0), (1,1) } er klassificeret som producerer en udgangseffekt på "0," og punkter i sættet { (0,1), (1,0) } er klassificeret som producerer en udgangseffekt på "1."
Der er ingen enkelt "fly" (i dette tilfælde en linje), som kan adskille disse fire punkter i de to sæt.
Derfor kan en enkelt neuron kan ikke bruges til at klassificere punkter i henhold til den eksklusive eller (xor) funktion.
En enkelt neuron kan kun opdele en plads punkter i to regioner.
Den eksklusive eller (xor) funktion klassificerer punkter på en måde, at væsentlige skel en to-dimensionelle rum i tre regioner (eller, alternativt, fire regioner).
To neuroner kan opdeles i to dimensionelle rum i tre regioner (f.eks ved to forskellige parallelle linjer), og derfor kan anvendes til at klassificere punkter i henhold til den eksklusive eller (xor) funktion.
En tredje neuron kan bruges til at kombinere output af de to andre neuroner i et enkelt output.
Følgende neurale netværk, med to indgange og to Neuron organer i et første lag, og en enkelt neuron i et andet lag, og en enkelt produktion, kan bruges til at klassificere punkter i henhold til den eksklusive eller (xor) funktion.
Følgende neurale netværk kan enten være uddannet til at beregne den eksklusiv-eller (xor) funktion, eller det neurale netværk kan simpelthen have sin vægt og partiskhed værdier tildeles på en måde, der frembringer den ønskede adfærd.

En neurale netværk i stand til at klassificere punkter ifølge eksklusiv-eller (xor)
Computeren kode forbundet med dette dokument viser, uddannelse af de neurale netværk vist i diagrammet ovenfor for at matche den eksklusive eller (xor) funktion.
De neurale netværk undertiden undlader at lære den funktion, men softwaren kan også bare være genstartet for at forsøge at lære med et nyt sæt af de oprindelige vægte.
Hvis softwaren held lærer eksklusiv-eller (xor) funktion, så outputtet ligner følgende:
x1 = 0.0000 x2 = 0.0000 y = 0.0172 error = 0.0172
x1 = 1.0000 x2 = 0.0000 y = 0.9802 error = -0.0198
x1 = 0.0000 x2 = 1.0000 y = 0.9839 error = -0.0161
x1 = 1.0000 x2 = 1.0000 y = 0.0154 error = 0.0154
Outputtet (y) er inden for 2% af den ønskede værdi for hver af de fire kombinationer af de variabler (x1, x2).
Selv om netværket blev trænet til at lære output værdier for kun fire kombination af variabler (med værdier 0.0 og 1.0, der repræsenterer booleske værdier), input til neurale netværk kan indstilles til enhver vilkårlig floating-point-værdier.
Følgende billede viser produktionen af de uddannede neurale netværk for mange kombinationer af input værdier:

En neurale netværk i stand til at klassificere punkter ifølge eksklusiv-eller (xor)
Overfladen udgør produktionen af de neurale netværk for alle mulige input kombinationer (x1, x2) i intervaller [ -2.0, +2.0 ].
Resultatet er tæt på 0.0 på sænker områder af overfladen, og produktionen er tæt på 1.0 på højeste områder af overfladen.
Bemærk, at overfladen er lav for på de punkter { (0,0), (1,1) }, og overfladen er højt på de punkter { (0,1), (1,0) }.
Netværket blev kun trænet til at producere ønskede udgange til fire specifikke kombinationer af input variabler, men det neurale netværk producerer også udgange for alle andre mulige kombinationer af input værdier.
Evne til neurale netværk til at producere rimeligt svar til generelle tilfælde efter at være blevet uddannet til særlige tilfælde kan betragtes som en "generalisering."
Enhver proces, der passer data peger på en model, såsom montering peger på en linje eller anden kurve, som også producerer en "generalizing" virkning, så det faktum, at montering af et neurale netværk til at fremstille de ønskede resultater for specifikke lektioner resulterer i en form for generalisering er ikke ekstraordinært, men det er alligevel interessant at iagttage evnen til at generalisere fra særlige tilfælde.
9. Eksempel: Tic-tac-toe "(Naughts og krydser)"
9.1 Indledning
Tic-tac-toe "(Naughts og krydsninger)" er et simpelt spil spilles på en 3 * 3 gitter af celler, som kan mærkes med "O" eller "X".
Spillere skiftevis sted "O" og "X" varemærker tomme celler, indtil en af spillerne udfylder en række, kolonne eller diagonal.
Da der er 3 rækker og 3 kolonner, og 2 diagonaler, der er otte vindende mønstre for hver spiller.

Tic-Tac-Toe bord og vinde mønstre
Det er trivielt at skrive en rekursiv funktion, der udforsker alle mulige Tic-Tac-Toe spil, fordi den maksimale varighed af spillet er ni bevægelser.
På hvert punkt i spillet vi simpelthen behandler resultaterne af de bevæger sig i hver af de resterende ubesatte celler.
En sådan funktion kan bekræfte, at en Tic-Tac-Toe Spillet spilles med "perfekt spillere" vil ende med ikke vinder.
9.2 Træning en neurale netværk til at angive de bedste flytter
En rekursiv funktion kan udforske alle mulige spil og bestemme den bedste flytte til hvert bord konfiguration.
Vi tilføjer hver bord konfiguration (input), og de bedste farten (ønskede output), til en liste over uddannelse poster.
Vi så toget netværket til at fremstille de ønskede resultater for hvert sæt indgange.
Netværket vil have 9 input svarer til hver celle af nettet, og de input værdier vil være begrænset til følgende værdier:
0: ubesatte celle
+1: Protagonist afspiller
-1: Opponent afspiller
Netværket vil have 9 udgange svarer til hver celle i nettet, og output værdier vil være begrænset til følgende værdier:
0: Undlad at flytte her
1: Flyt her
Otte output vil blive sat til "0," og en produktion vil blive sat til "1."
Således, efter at træne neurale netværk, et bord konfiguration kan angives som input, og det neurale netværk vil angive de bedste træk.
Outputtet tættest på "1" angiver den bedste flytte, og alle andre udgange bør være tæt på "0."
Normalt kan enhver funktion med Boolesk parametre og Boolesk udgange kan lade sig repræsentere ved en neurale netværk med to lag neuroner.
Det første lag af neuroner kan opdele den flerdimensionale rum, til regioner, og det andet lag kombinerer regionen klassifikationer til at producere passende output værdier.
De Tic-Tac-Toe neurale netværk producerer Boolesk output, og selv om de input, har tre stater ( -1, 0, +1 ), vi kunne i princple, konvertere disse få diskret input værdier til et sæt Boolesk indgange.
Derfor er to lag neuroner bør være tilstrækkeligt til at lære Tic-Tac-Toe.
Da nettet har 9 udgange, der er 9 Neuron organer i den endelige (andet) lag.
Den eneste tilbageværende neurale netværk design afgørelse er at beslutte antallet af neuron organer til at lægge i det første lag af det neurale netværk.
Til at træffe denne beslutning, edb-koden kan generere og uddanne en neurale netværk med N neuroner i første lag.
Den evne til neurale netværk til at lære den komplette uddannelse er fastsat for Tic-Tac-Toe kan grafen.
Nedenstående graf viser den samlede uddannelse er sat fejl under uddannelse for hver af 48 forskellige neurale netværk med N = 1,2,...,48 neuroner i første lag.

Samlet uddannelse sæt fejl under uddannelse, for N = 1,2,...,48 neuroner i første lag (N = 1 er øverst, og N = 48 er i bunden, og de fleste mellemliggende kurver er lavere til højere værdier N)
En anden måde at visualisere denne tendens er at danne en overflade fra sekvens af kurver:

Samlet uddannelse sæt fejl under uddannelse, for N = 1,2,...,48 neuroner i første lag (N = 1 er på ryggen, og N = 48 er på forsiden)
Således kan vi se, at efterhånden som vi nærmer os N = 48 neuroner i første lag, nettet synes at være i stand til at acceptere alle uddannelse tilfælde.
Alt færre end 48 neuroner niveauer synes utilstrækkelige til at lære det komplette sæt af sager.
For lavt antal af neuroner, som hver yderligere Neuron væsentligt reducerer den samlede fejlprocent.
Men når antallet af neuroner er tæt på det antal der kræves for at lære hele viften af lektioner, hver yderligere Neuron kun reducerer fejlen ved et relativt lille beløb.
Følgende billede viser en neurale netværk med 9 indgange, og 48 Neuron organer i første lag, og 9 Neuron organer i et andet lag, og 9 udgange.

En neurale netværk i stand til at lære at spille tic-tac-toe
Computeren kode forbundet med dette dokument indeholder kode til at opbygge og oplære neurale netværk vist ovenfor.
Uddannelsen sæt har 4520 uddannelsen poster.
I 200 uddannelse gentagelser (involverer 3 formering skridt, for i alt 200 * 4520 * 3 = 2712000 simulation skridt og det samme antal fejl formering trin), den samlede fejlprocent faldet fra 1.520 til 0.153.
(Disse tal kan variere afhængigt af tilfældige oprindelige betingelser.)
Den krævede uddannelse i flere minutter.
Følgende er to eksempler af bestemte input og output produceret af trænede neurale netværk:
Scenario #1:
Input:
1.0000 -1.0000 0.0000
0.0000 1.0000 -1.0000
-1.0000 0.0000 0.0000
Best move:
0.0001 0.0000 0.0676
0.0001 0.0000 0.0000
0.0000 0.0000 0.9870
Scenario #2:
Input:
-1.0000 -1.0000 0.0000
1.0000 1.0000 0.0000
0.0000 0.0000 0.0000
Best move:
0.0000 0.0000 0.0859
0.0000 0.0000 0.9819
0.0000 0.0000 0.0000
Netværket blev uddannet til at producere den bedste flytter til spilleren, hvis mærke svarer til "+1."
Den bedste flytte til modstander-afspiller, hvis mærke svarer til "-1," kan findes ved at multiplicere alle indgange ved (-1) før simulerer neurale netværk.
10. Uddannelse neurale netværk
Det følgende er et citat fra "Artificial Intelligence" (3rd edition; Addison Wesley; 1993) ved Patrick Henry Winston, kapitel 22, Learning by Training Neural Nets, p. 468.
Neurale-Net Uddannelse er en kunst
Du ved nu, at du står over for mange valg, når du beslutter dig at arbejde på et problem ved at uddanne en neurale net ved hjælp tilbage formering:
* Hvordan kan du repræsenterer oplysninger i neurale net?
Hvordan kan du bruge neurale net input til at udtrykke, hvad du ved?
Hvordan kan du bruge neurale net output til at bestemme, hvad du ønsker at vide?
* Hvor mange neuroner, hvis du har i din neurale net?
Hvor mange indgange?
Hvor mange udgange?
Hvor mange lodder?
Hvor mange skjulte lag?
* Hvilke sats parameter bør du bruger i back-formering formlen?
* Skal du træne dine neurale net i etaper eller samtidig?
Et forkert valg fører til dårlige resultater.
En lille neurale net kan ikke vide, hvad du ønsker det at lære.
En stor netto vil lære langsomt, kan sidde fast på de lokale maxima, og kan udstille overfitting.
En lille sats parameter mai fremme ustabilitet eller give dårlige forudsigelser.
Desværre er den rette valg afhænger af prøverne.
Matematisk, kan du se de prøver som repræsentant glimt af en skjult funktion, med en dimension for hver indgang.
Hvis der er mange indgange, den funktion's flerdimensionale karakter gør den funktion hårdt på at tænke over og umuligt at visualisere.
Derfor er den bedste guide til dit valg er trial and error, buttressed, hvis det er muligt, med henvisning til de valg, der har fungeret godt i lignende problemer.
Således er den succesfulde implementering af neurale-net-teknologien kræver tid og erfaring.
Neurale-net-eksperterne er kunstnere, de er ikke blotte håndbog brugere.
11. Making input værdier og output-værdier der er egnet til en neurale netværk
Den matematiske model af en neuron organ, der præsenteres i dette dokument producerer en output-værdi ved hjælp af "logistiske sigmoid funktion" (dvs. ( 1 / (1 + Exp(-x)) )).
Derfor er det output er begrænset til området fra 0.0 til 1.0.
Så den matematiske model af en neurale netværk præsenteres i dette dokument kan anvendes direkte til at lære og producere output i intervallet fra 0.0 til 1.0, såsom boolsk udgange, eller til løbende output begrænset til en del af dette interval.
Men nettet kan også bruges til at lære og producere output i enhver begrænset sortiment, hvis output er konverteret til og fra området fra 0.0 til 1.0.
For eksempel går den endelige output værdier er begrænset til området fra P til Q, og formoder Z repræsenterer en vilkårlig endelige output værdi begrænset til området fra P til Q, og formoder Y repræsenterer en tilsvarende neurale netværk produktionen begrænset til området fra 0.0 til 1.0.
Følgende formler kan bruges til at konvertere mellem de to typer af output værdier:
Y = (Z - P) / (Q - P); // Q > P; Q != P
Z = P + (Q - P) * Y; // Q > P
Konvertering af en endelig produktion til en neurale netværk output er nødvendige under uddannelse.
Konvertere en neurale netværk output til en endelig produktion er nødvendige under normale simulering.
Input til neurale netværk er ikke så begrænset som output, fordi de links har vægt værdier, der kan dæmpe eller forstærke input værdier vilkårligt.
Men input værdier langt uden for intervallet fra -1.0 til 1.0 kan forårsage problemer, fordi før lodder har en chance for at justere de ekstreme værdier vil først ankomme som en parameter til den "logistiske sigmoid funktion" ( 1 / (1 + Exp(-x)) ).
Extreme værdier til denne funktion vil gøre produktionen af Neuron meget tæt på 0.0 eller 1.0, og når fejl udbrede tilbagestående via nettet til at Neuron, fejlen vil blive vægtet med (Output * (1 - Output)), som vil være meget lille.
Derfor konvertere oprindelige input værdier til området fra 0.0 til 1.0 inden levering af disse værdier til udledning af de neurale netværk er sikkert en god idé.
Antag at den oprindelige indgang værdier er begrænset til området fra A til B, og formoder W repræsenterer en vilkårlig oprindelige input værdi begrænset til området fra A til B, og formoder X repræsenterer en tilsvarende neurale netværk input værdi, at vi vælger at begrænse til spænder fra 0.0 til 1.0.
Følgende formel kan anvendes til at konvertere det oprindelige input værdi til en værdi egnede til at levere til det neurale netværk.
(Der er ingen grund til at konvertere en neurale netværk input værdi til en værdi i den oprindelige indgang interval.)
X = (W - A) / (B - A); // B > A; B != A
12. Referencer
De følgende bøger kan være nyttige i at forstå neurale netværk og deres ansøgninger.
[1] Artificial Intelligence (3rd ed) (Patrick Henry Winston; Addison-Wesley; 1993)
Denne bog er meget interessant og nyttig.
Forfatteren beskriver mange fascinerende emner, med eksempler, med tilstrækkeligt detaljeret til at gøre dig i stand til at bruge begreber i praktiske situationer.
Forfatteren beskriver neurale netværk og "tilbage formering" læring i betydelig detalje, herunder matematiske afledning.
[2] Artificial Intelligence: A New Synthesis (Nils J Nilsson; Morgan Kaufmann; 1998)
Denne bog, ligesom reference [1], er en fascinerende og praktisk introduktion til kunstig intelligens.
Men denne bog er lidt mere kortfattet end reference [1].
Jeg tror, en person vil have gavn af at læse både [1] og [2].
Jeg vil kun anbefale denne bog, hvis du har en stærk interesse i samtlige af kunstig intelligens, mens jeg anbefaler reference [1] selv til dem, der er specielt interesserede i at vide mere om neurale netværk.
[3] Focus on AI (Prima Tech / Prima Publishing)
En del af spillets udvikling serie redigeret af Andre LaMothe.
Denne bog er nyttigt at spillets programmører, og er fyldt med computer-kode eksempler at påvise, neurale netværk, genetiske algoritmer og fuzzy logik, alle anvendt på spil karakter adfærd.