English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
Neuronnät
med lärande genom bakåt fel förökning
Colin Fahey
neuron_group01.jpg
En biologiska neurala nätverk

1. Mjukvara

NeuralNetwork20080614.zip
Neuron nätverk källkod (C#)
21971 bytes
MD5: 94443565716e1101a3326dc2ffd558fd

2. Inledning

Detta dokument beskriver hur man genomför ett artificiellt neuralt nätverk som kan utbildas för att känna igen mönster.
Detta dokument beskriver en modell av ett neuralt nätverk som lär sig av en algoritm som använder ”bakåt fel förökning.”
Detta dokument innehåller grundläggande demonstrationer av lärande genom ”bakåt fel förökning.”  Detta dokument har en koppling till dator-kod.  Datorn ingår demonstrationerna.  Datorn kod kan användas för att skapa komplexa neurala nätverk.  Men datorn koden är bara för demonstrationen.  Ett alternativt genomförande skulle kunna minska minnesanvändning och skulle kunna öka hastigheten.

3. Alternativ till lärande genom bakåt fel förökning

Detta dokument beskriver en modell av ett neuralt nätverk som lär sig av en algoritm som heter ”bakåt fel förökning.”  Denna algoritm kan kräva en mycket lång tid att lära sig olika lektioner.  Även denna algoritm kan slumpmässigt misslyckas med att lära sig olika lektioner på grund av den slumpmässiga ursprungliga status av neurala nätverk före träning.
Lärande genom att ”associera aktiva insatser” är ett viktigt alternativ till lärande genom ”bakåt fel förökning.”  Lärande genom att associera aktiva ingångar helt enkelt intressebolag insatsvaror som samtidigt är aktiva.  Ett sådant lärande kan vara snabb och tillförlitlig.  Men för många praktiska skäl, det finns inget självklart sätt att använda ett neuralt nätverk som lär sig genom association, medan det finns ett självklart sätt att använda ett nätverk som lär sig av bakåt fel förökning.
Vissa biologiska neuronnät är känt att lära genom en sammanslutning av aktiva insatser.  Retroaktiva fel förökning har inte observerats i några biologiska neurala nätverk.
Detta dokument beskriver intressanta användningsområden för ett neuralt nätverk som lär sig av bakåt fel förökning.  Men learning by association är ett mycket viktigt alternativ algoritm för inlärning.  Designa en neurala nätverk som lär sig genom association till att lösa ett särskilt problem kan dock vara svårare att desgining ett alternativ neurala nätverk som lär sig av bakåt fel förökning, men biologiska system lär sig genom association, och inlärningsförmåga av biologiska system är självklar.

4. Biologisk neuron

4.1 Neuron cell

neuron_1umeter01.jpg
En biologisk neuron ”(multipolär” typ, ~4 um cellkroppen)
En neuron är typ av cell som har förmåga att ta emot och skicka nervcellernas signaler.
Neuron är grunden för nerve system, finns i djur, fåglar, fiskar och insekter.
Brains med minne och logik och enkel reflex system, är båda baserade på arrangemang av nervceller.
Neuron används också för att överföra signaler över långa avstånd i en varelse kropp, t.ex.  från sensorer till hjärnan, eller från hjärnan till musklerna.
Beteendet hos ett biologiskt neuron är mycket komplex, men följande förenklade beskrivning erövrar den grundläggande principen:
Neuronet ackumuleras signaler från andra nervceller, och om det totala signal anhopning överstiger ett tröskelvärde, neuron överför sina egna signaler till andra nervceller.

4.2 Neuron delar

neuron_labels01.jpg
Delar av en biologisk neuron
Soma
Cellkroppen av en neuron
Dendriter
Fibers med kemiska receptorer (input) som sträcker sig från cellkroppen av en neuron.  En neuron vanligtvis har många dendriter, och dendriter har ofta många grenar.
Axon
En fiber med kemiska utsläppsländerna (resultat) vid dess slutpunkt som sträcker sig från cellkroppen av neuron.  Ett neuron har ett enda axon, och Axon vanligtvis har mycket få grenar.
Synapse
En konfiguration så att axonet av ett neuron och dendriter en annan neuron skiljs åt av en liten lucka.  I en sådan konfiguration, kemikalier som avges från ett axon av en neuron passera synaps och mottas av dendriter å andra neuron.  Detta är hur nervceller påverkar andra nervceller.

4.3 Neuron bränning

En neuron ackumuleras kemiska signaler från dess dendriter, och om det totala kemiska anhopning överskrider en gräns inom en tidsperiod, neuron ”bränder,” skicka en egen signal genom sin Axon.
Vissa nervceller är kapabla att avfyra pulser på order av 100 Hz.
De signaler som går genom nervceller medföra anhopningar av natrium (Na), kalium (K), och klor (Cl) joner, och en följd elektrokemiska potential (dvs spänning).
Den vilande spänningen (-70 mV) och bränning spänning (+30 mV) kan mätas eller ens påverkas av konventionella elektriska kretsar.
Följande är en spänning inspelning av en råtta neuron bränning med en hastighet av ungefär 100 Hz när ett enda morrhår är rörd och höll ut ur sitt viloläge:
neuron_spikes_whisker01.jpg
En råtta neuron bränning (100 Hz) på grund av innehav ett morrhår.
Följande är samma signal manifesteras som ljud: neuron_spikes_whisker01.wav
Även om stimulus är konstant, neuron signalen snabbt pulserande.

4.4 Neuronnät

Den mänskliga hjärnan har cirka 10^11 (100 miljarder) nervceller.
Varje neuron i cerebellum mottar bidrag från så många som 10^4 (10000) synapser.
Även om axon och dendriter av en neuron ofta bara några få mikrometer bort från cellkroppen, några axoner är på order av en meter i längd.
En hjärna har nervceller med relativt kort axoner grupperade i områden eller kluster.
En hjärnan också har buntar av nervceller med relativt långa axoner att länka områden som åtskiljs av centimeter.
Alltså ett hierarkiskt nätverk av bearbetning element bildas.

4.5 Neuronnät status

Statusen för ett nätverk av nervceller är både hur nervceller är anslutna och de signaler alls av synapser.
Det är oklart hur mycket status information går förlorad om en hjärna var tranquilized i till total inaktivitet för någon tid.
Man kan tänka sig information upprätthållas bara genom signaler gå via nätverket, och inte av nätverksanslutningen själv, liksom cellulära automater simuleringar gillar Conway's ”Game of Life”, enkla Dynamic Random Access Memory (DRAM) chips, och ekon i en kammare.

4.6 Neuronnät Learning

Konventionella lärande uppstår när egenskaper dendriter förändring i en synaps för att bli bättre eller sämre när det tar emot kemiska signaler från ett axon.
Skälen för sådana förändringar är komplicerade, men resultatet är att ett neuron kräver att en annan kombination av synaps insatsvaror för att utlösa en utsignal.

5. Artificiell neuron

5.1 Definition

En ”artificiell neuron” är en algoritm eller en fysisk enhet som genomför en matematisk modell som inspirerats av den grundläggande funktionen hos ett biologiskt neuron.
En neuron ackumuleras signaler från andra nervceller eller insatsvaror (t.ex.  sensorer), och om det totala signal anhopning överstiger ett tröskelvärde, neuron sänder en signal till andra nervceller eller resultat (t.ex.  effectors).
En matematisk modell som innehåller idén om att ackumulera flera ingångar och ger ett enda resultat (som accentuerar den relativa intensiteten i input i förhållande till vissa nominella nivå) kan användas för mönsterigenkänning.
Sådana modeller kan grundval av en artificiell neuron.
Om inflytandet från varje ingång kan ändras, då den modell som kan stödja lärandet.

5.2 Activation function

En ”aktivering funktion” är en matematisk funktion som omvandlar input värden under ett visst värde till en relativt låg produktion värdet och omvandlar indata ovan ett visst värde till ett relativt högt produktionsvärde.
En ”aktivering funktion” används för att konvertera den viktade summan av ingående värden på ett neuron till ett värde som motsvarar produktionen av neuron.
En ”sigmoid” funktion är en allmän grupp med smidiga funktioner som asymptotically synsätt en lägre gräns för indatavärden närmar negativ oändlighet, och asymptotically synsätt en övre gräns för indatavärden närmar sig positiv oändlighet.
En särskild sigmoid funktion är ”logistic sigmoid” funktion:
logistic_sigmoid_function.jpg
Den ”Logistic Sigmoid” funktion: 1 / ( 1 + Exp( -x ) )
Den ”logistic sigmoid” funktion kan användas som en ”aktivering funktion” för en matematisk modell av en neuron.
De matematiska bearbetningar av ”logistic sigmoid” kan beräknas enligt en formel som gör det lätt att beräkna ett närstående lärande formel.

5.3 Neuronnät input

Ett ”neuralt nätverk input” till att bidra till ett neuralt nätverk.
neural_network_input.jpg
Neuronnät input
”Input” är det numeriska värdet av insatsen.

5.4 Neuronnät output

Ett ”neuralt nätverk produktion” utgör ett utflöde av ett neuralt nätverk.
neural_network_output.jpg
Neuronnät output
”Output” är det numeriska värdet av produktionen.
”Error” är ett numeriskt värde som motsvarar skillnaden mellan produktionsvärde och en ”Desired” värde:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
Den ”Desired” värde är ett önskat värde, eller en idealisk värde eller ett korrekt värde, att det neurala nätverk bör producera som en produktion som svarar mot särskilda insatsvaror.
Felet värdet beräknas och tilldelas ”Error” av en utbildning algoritm.
Felet värde feedback till neurala nätverk.
Den neurala nätverk kan anpassas för att minska skillnaden mellan dess resultat och de önskade värden, alltså den neurala nätverk kan lära sig, och kan på så sätt minska framtida felaktigheter.

5.5 Neuron organ

En ”neuron organ” representerar kroppen av en neuron, som ackumuleras input bidrag och lägger till en bias, och förvandlar det resulterande värdet av ”aktivering funktion” för att producera ett produktionsvärde.
neuron_body.jpg
Neuron organ
”InputAccumulator” är ett värde som motsvarar den samlade insatser från neuron länkar vars utgångar är anslutna till neuron kroppen.
”Bias” är en justerbar värde som är kombinerade med de ackumulerade input värde.
”Output” är ett numeriskt värde som representerar produktion värdet av neuron.
Produktionen beräknas med hjälp av följande formel:
Output = ActivationFunction( Bias + InputAccumulator );
”ErrorAccumulator” är ett numeriskt värde som representerar ackumulerade misstag.
Eftersom en specifik output värdet av neuron kroppen, och ges en särskild utgång fel värde, ackumulerade misstag värdet justeras enligt följande formel:
ErrorAccumulator += Output * (1 - Output) * OutputError;
”Rate” är ett värde som påverkar hur ”Bias” värde ändras som svar på ”ErrorAccumulator” värde:
Bias += (-1) * Rate * ErrorAccumulator;

5.6 Neuron länk

En ”neuron länk” är en länk mellan:
(1) en input av neurala nätverk och insatsen av en neuron;
eller,
(2) produktionen av ett neuron kroppen och insatsen av en annan neuron;
eller,
(3) produktionen av ett neuron kropp och en uteffekt av neurala nätverk.
neuron_link.jpg
Neuron länk
”Input” är en cache av bidraget till länken.
”Weight” är en justerbar värde som påverkar hur signalen värden och fel värden propagera via länk.
”Output” är en cache av produktionen i länken.
Värdet beräknas enligt följande formel:
Output = Weight * Input;
”Error” är ett cacheminne för fel på länken.
”WeightedError” är en cache av felet av länken, viktade i viktfaktorn:
WeightedError = Weight * Error;
”Rate” är ett värde som påverkar hur ”Weight” värde ändras som svar på ”Error” värde och ”Input” värde.
Under neurala nätverk lärande, ”Weight” värdet justeras på följande sätt:
Weight += (-1) * Rate * Input * Error;

5.7 Neuronnät

Ett ”neuralt nätverk” innehåller ingångar, utgångar, neuron organ och länkar.
Följande bild visar en enkel neurala nätverk, med två ingångar, och två neuron organ i en första lagret, och en enda neuron i ett andra skikt, och en utgång.
neuron_network_drawing.jpg
Exempel på neurala nätverk
Under en simulering av ett neuralt nätverk, indatavärden propagera fram via länkar och neuron organ, och så småningom komma fram till resultat.
neuron_network_forward_propagation.jpg
Exempel på framåt förökning i ett neuralt nätverk
Under utbildning, fel värden är förutsatt i output, och dessa fel propagera bakåt genom neurala nätverk, vilket resulterar i en förändring av vikter och fördomar i neuron organ och länkar.
neuron_network_backward_propagation.jpg
Exempel på retrospektiva fel förökning i ett neuralt nätverk

5.8 Neuronnät simulering

Definition:
”Nätverk simulering” är det förfarande som används för att propagera nätverk ingångar via länkar och neuron organ fram till återkomsten till nätverket utgångar.
Nätverk simulering innebär simulering av alla dess olika länkar och neuron organ.
Simuleringar utan loopar eller tid:
Det finns många möjliga nätverkskonfigurationer innebär loopar.
Det finns många neuron modeller som är beroende av tid.
Men några av de vanligaste tillämpningarna av artificiella neuroner innebär varken loopar eller tid.
Följande är en matematisk modell av en neuron kroppen:
Output = ActivationFunction( Bias + InputAccumulator );
Med denna neuron modellen, och ett nätverk utan ”loopar,” vi helt enkelt starta från externa bidrag, beräkna resultat av det första lagret av neuroner, och till dessa resultat som insatsvaror till nästa skikt, beräkna resultat för det skikt, och fortsätter genom skikt av neurons tills de slutliga resultaten beräknas.
Loops:
Ett nätverk kan ha anslutningar i form av loopar (eller ”cyklar).”
Till exempel produktionen av en neuron kan anslutas direkt till en insats av samma neuron och orsaka ”rundgång.”
Ett annat exempel är produktion av neuron # 1 är ansluten till ingången av neuron # 2, och utdata från neuron # 2 är ansluten till ingången av neuron # 1.
Om du kan starta från någon gång i ett nätverk och spåra en stig genom nervceller och anslutningar, följer den enkelriktade flödet av signaler, och så småningom komma fram till att samma utgångspunkt, då vägen är en loop.
Loopar införa den intressanta möjligheten att signaler flyter runt i nätverket för obestämd tid.
Några enkla modeller antar att det tar en viss tid för signaler att passera enskilda nervceller.
I sådana modeller, signaler cirkulera genom slingor med få nervceller snabbare än signaler cirkulera genom slingor med många nervceller.
En neuron ansluten till själv att ha den snabbaste signalen omsättning.
Om en neuron har en ingång X, en vikt W, en bias B, och en icke-negativ Y (t.ex. 0.0 -> 1.0), då kan vi bilda en oscillator helt enkelt genom att W = (-8) och B = +4 och förbinder Y att X;
varje gång vi simulera neuron, signalen blir toggled till motsatsen.
Ett nätverk med loopar kan vara upptagen med verksamhet även när den inte accepterar yttre signaler (stimuli) som insatsvaror.
Den cellulära automater regler Conway's ”Game of Life” skulle kunna genomföras på ett neuralt nätverk, som ger dig en liten hint om mångfalden av verksamhet som kan hända i ett neuralt nätverk med loopar.
Finite-state machines (FSM), oscillatorer, flyktigt minne (i motsats till lärande mönster genom att ändra vikterna), har möjliggjorts genom looping.
Om ett nätverk har loopar, kan vi inte uppdatera något resultat förrän vi beräkna alla utgångar, vilket kräver vi en tillfällig buffert för att lagra beräknade resultat förrän vi beräkna alla utgångar, och sedan kan vi begå den nya produktionen värden till neuroner i nätet.
En metod som uppdaterar resultat i det egentliga nätverket på ett progressivt sätt, i stället för en allt-i-gång sätt, införs en godtycklig ordning i tid som leder till kaos.
Physics simuleringar som omfattar tillsammans enheter, såsom planeter som kretsar kring en stjärna med ömsesidigt gravitationskonstant krafterna mellan alla organ, kräver samma typ av tillvägagångssätt: compute nätet styrkor i alla instanser innan uppdatering varje hastighet och position.
Time-beroendet:
Ett enkelt nätverk simulering vanligtvis insatsvaror orsakar önskat resultat efter en enda simulering gången steg.
I en sådan simulering, vi tänka i termer av ”antal iterationer” istället för ”tid i sekunder.”
Det behöver inte vara någon korrespondens mellan iterationer och ett tidsperspektiv.
Ett system kan vara utformade för att göra ett nätverk simulering (iteration) endast när nya ingångar som är tillgängliga, som kan uppstå med oregelbundna mellanrum i tiden.
Men överväga en matematisk modell av en neuron för att försök att simulera de pulserande utgång aspekt av ett biologiskt neuron.
Den pulserande kan karakteriseras i form av tid, exempelvis pulserande vid en viss frekvens eller med pulser vars kurva utökas för en viss tid.
Vi kan ha andra gången beroende faktorer i en matematisk modell av en neuron, som en ingång ackumulator vars värde får bidrag från ingångar men har en läcka i proportion till sitt nuvarande värde.
I allmänhet kan vi hitta en elektrisk krets analogt till element som lyder vissa matematiska ekvationer, och så kan man betrakta ett neuron som en krets med resistorer, kondensatorer, och en icke-linjär förstärkare.
Precis som en krets kan uppvisa komplicerade tid beroende beteende, produktionen av en neuron kan betraktas som en funktion som är beroende av sina insatsvaror och tid på ett komplicerat sätt.

5.9 Retroaktiva fel förökning

Definition:
”Retroaktiva fel förökning” är en matematisk procedur som börjar med fel vid produktionen av ett neuralt nätverk och propagerar detta fel bakåt via nätverket att ge output fel värden för alla neuroner i nätet.
Retroaktiva fel förökning formler:
Felet värden på neurala nätverk resultat beräknas enligt följande formel:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
Felet ansamling i ett neuron kropp är justerade enligt utdata från neuron kroppen och utdata fel (anges av länkar som hör till neuron kroppen).
Varje utgång felvärde bidrar till felet ackumulator på följande sätt:
ErrorAccumulator += Output * (1 - Output) * OutputError;
På ett sätt är alla av produktionen fel vid nästa skikt läcka bakåt genom den input vikter och ackumuleras i produktionen av en neuron i ett tidigare lager.
Det ackumulerade värdet multipliceras med ett värde som är störst när den nuvarande produktionen av neuron är mest neutral (mest ”undecided)” och är minst när produktionen av neuron är mest extrema ”(mycket” säkert).
Vikt förändring och bias ändra formler:
Grunden för lärande är en anpassning av vikter och bias värden i ett försök att minska framtida produktion fel.
Learning ”Rate” är ett numeriskt värde som huvudsakligen visar hur snabbt en neuron justerar vikt och bias värden enligt fel värden.
Följande formel visar hur du ändrar vikter av ett neuron med en särskild uppsättning indata och utdata fel värde:
Weight += (-1) * Rate * Input * Error;
Följande formel visar hur du ändrar bias av en neuron med tanke på den nuvarande produktionen fel för neuron:
Bias += (-1) * Rate * Error;

6. Utbildning ett neuralt nätverk

6.1 Utbildning förfarande

Man kan börja med en utbildad nätverk och fortsätter att minska produktionen fel med vidareutbildning, men en ofta börjar med en outbildad nätverk.
Innan utbildning, väljer slumpvis värden för alla vikter av alla neuroner i nätet.
Jag observerade problem när jag slumpvis utvalda värden i intervallet [ -1.0, +1.0 ], och jag inte har problem när jag valde slumpmässigt värdena från intervallet [ +0.1, +1.0 ].
Jag nämner dessa iakttagelser, men de kan bero på att mitt misstag.
Syftet med slumpmässiga vikter är att minska möjligheten till eventuella patologiska situationer i ett nätverk.
Om alla neuroner i ett nätverk startat med samma vikter, nätverket skulle ha någon grund för ökad differentiering mellan nervceller.
Jag har påpekat att inställningen alla bias värden till noll (0.0) är acceptabel.
En utbildningsomgång omfattar går igenom en utbildning som många gånger, kanske hundratals eller tusentals gånger.
För varje passera genom den utbildning som vi överväga varje punkt i utbildningen inställd.
En utbildning som objekt har en uppsättning ingångar, och en uppsättning önskat resultat.
Vi simulerar nätverket, med den uppsättning av insatsvaror som anges av utbildning objektet.
Simuleringen avkastning output värden.
Vi propagera felen bakåt trodde det neurala nätverk för att beräkna produktionen fel för alla nervceller.
Vi uppdaterar alla vikter och fördomar.
Varning: En akademisk text som diskuteras neuronnät förespråkat att gå igenom hela utbildningen fastställs och bara sammanfattning vikt ändringar och fel.
Efter att gå igenom hela utbildningen som vi har en uppsättning summor vikt förändringar och bias förändringar.
Vi tar dessa summor och uppdatera alla vikter och fördomar.
Sådana summor kan vara stora för stora utbildnings-apparater - och den resulterande hoppa i vikt-rymden skulle vara orimligt stora.
Så jag tror att dividera med antalet utbildning poster, för att få medelvikt ändra värden och genomsnittliga bias ändra värderingar, skulle vara rimligt.
Det finns något tilltalande om computing en enda vikt förändring vektor att något tar hela den utbildning som i till övervägande.
Jag vet inte om jag helt enkelt gjort ett misstag i genomförandet av idén, men jag nästan gav upp helt på neurala nätverk på grund av hur dåligt det gick att vrida ur.
Sedan, när jag provat den naiva alternativ, nämligen att göra uppdateringar på varje utbildning objekt, ting fungerade perfekt.
Med tanke på hela den utbildning som innan de gör en uppdatering har vissa fördelar och nackdelar:
Fördel:
Single utbildning objekt i den utbildning som med allra största misstag (dvs dålig utbildning post) inte kommer att lämna ett stort bidrag till att uppdatera, eftersom det kommer att bli överväldigade av det inflytande som det ”goda” data;
Nackdel:
Om N är antalet objekt i din utbildning som, din takten till optimal vikt vektor kommer att fördelas genom N.
Eller, för ett visst avstånd du kommer att ha endast en bråkdel av riktning tips på vägen jämfört med den naiva inställning;
Kanske denna teknik kommer att fungera för dig, men prova den naiva inställning innan du ger dig på neurala nätverk i utter frustration!

6.2 Underlåtenhet att minska fel

Utbildning kan misslyckas med att minska det totala felet för den utbildning som.
Det är viktigt att upptäcka ett misslyckande med att minska fel.
I följande lista beskrivs orsakerna till misslyckandet att minska fel och möjliga lösningar.
Posterna i listan visas i ungefärlig ordning av sannolikhet, med den första punkten är mest trolig.
(1) Vikten kombination har nått ett lokalt minimum av felet yta, och har ”fastnat;”
Lösning: Starta en ny simulering med nya slumpmässiga vikter.
(2) Nätverket har för få nervceller eller skikt för att koda all av mönstren i din utbildning som;
Lösning: försiktigt underhållande möjligheten att lägga skikt eller nervceller.
(3) En eller flera poster i din utbildning som motsäger eller är grovt inkonsekvent med dina andra utbildning ex;
Lösning: Kontrollera dina uppgifter för oegentligheter.
Hitta testet objekt som ger den mest fel för din utbildning.
Titta in på tekniker för att medelvikt förändringar över hela uppsättning data för att minska påverkan av något dåligt fall.
(4) Den lärande skattesatsen är för hög (något över 1.0 är överdriven) och uppdateringarna alltid överskridande målet;
Lösning: Reducera lärande.
(5) Den lärande skattesatsen är alltför låg (något under 0.01 kan vara för liten), och nätverket är verkligen konvergerar på idealvikt kombination - men är för långsam;
Lösning: Öka lärande.
Utbildning en tvåskikts, tre-neuron nätverk för att matcha den exklusiva-eller (xor) funktion, kan, trots den enkla funktionen, misslyckas att konvergera.
Detta kan vara förvånande och frustrerande.
Men lösningen är att helt enkelt in alla neuron länk vikter till nya slumpmässiga värden och sedan försöka att träna nätet igen.
När det gäller utbildning ett nätverk för att matcha den exklusiva-eller (xor) funktion, random positiva vikter verkar leda till framgångsrik inlärning varje gång, medan vissa kombinationer av positiva och negativa vikter ibland orsaka utbildning misslyckas dramatiskt.
Behovet av att välja ny slumpvis ursprungliga vikterna för att återhämta sig från ett misslyckande att konvergera är en olycklig följd av kombinationen av lärande.
Den lärande är i huvudsak söker efter en global minimum av brantaste härstamning på en yta och risken för förekomst av ett ”lokalt minimum” där sökning kan fastna i dem.

6.3 Övergripande utbildning fel

Det övergripande fel i ett nätverk kan beskrivas med kvadratiska roten av genomsnittet av squared fel eller ”root-mean-square” (RMS).
Felet vid något särskilt nätverk output fås genom följande formel:
Error = (Output - Desired);
Summan av squared fel för en enskild utbildning punkt fås genom följande formel:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
    squaredError += (output.Error * output.Error);
}
Summan av squared fel för hela den uppsättning av objekt i en utbildning som är summan av squared fel av enskilda objekt.  Följande kod visar hur squared fel för hela den uppsättning av utbildning ex kan beräknas:
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 övergripande root-mean-square (RMS) av misstag ges av kvadratroten av genomsnittet av de squared fel:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Detta värde är ett sätt att beteckna det totala felet av ett nätverk med tanke på all utbildning fall.

7. Lärande

Lärande uppstår när vikt och bias värden av neuron länkar och neuron organ är justerad i enlighet med angivna nätverk input och output fel värden.
Fundera ett neuralt nätverk med två ingångar (x1 och x2), och två länkar (med vikter w1 och w2), och en neuron kroppen, och en produktion (y).
neuron_network_single_neuron.jpg
Neuronnät med två ingångar, och en neuron kroppen, och en produktion
Vi utbildar detta neuron genom att leverera insatsvaror, data output, data felet, computing vikt och bias förändringar och uppdatering av vikter och bias, anländer till nya vikter ( w1', w2' ).
Det finns ett mycket intressant sätt att visualisera denna process.
Vi kan betrakta uppsättning vikter som en vektor i en mångdimensionell rymd.  Till exempel för två vikter vi har vektorn W = (w1, w2) i en tvådimensionell ”vikt rymden.”
När vikterna justeras, vi har en ny tyngd vektor W' = (w1',w2').
Vi kan visualisera detta som en punkt W flyttar till en ny punkt W' som en del i processen att minska produktionen fel.
Normalt skulle man inte beräkna produktionen fel för alla möjliga vikt kombinationer, eftersom förhoppningen är att den vikt anpassningsprocessen kommer effektivt huvudet mot den bästa kombinationen.
Men låt oss tomtens yta som huvudsakligen visar hur bra en neuron uppfyller alla objekt i ett utbildningsprojekt anges som en funktion av sina två vikter:
neuron_weight_space03.jpg
Summan av squared fel för en viss utbildning anges som en funktion av två vikter (w1, w2)
I grund och botten är målet för lärande är att stiga ned till den lägsta nivån på denna yta, där fel minimeras.
När vi hittar den punkt W = (w1, w2) som ger det lägsta värdet på denna yta, lärande är klar och då kan vi helt enkelt använda utbildade neuron.
Följande diagram visar resultaten av en utbildad neuron som en funktion av alla möjliga ingångar X = (x1, x2):
neuron_input_space02.jpg
Neuron produktionen som en funktion av två ingångar (x1, x2) för en vikt kombination som minimerar squared error
Även om det viktade summan för denna dubbel inmatning neuron är helt enkelt (w1*x1 + w2*x2), aktiveringen funktion förvandlar en enkel roteras plane in på en klippa.
Denna yta har en korrekt output värden för alla ingående kombinationer (x1, x2) anges av vår utbildning som.
Men ni kan föreställa er hur input vektorer X = (x1, x2) liknande utbildning värden skulle också leda till en korrekt output values; denna funktion av neurala nätverk kallas ”generalisering” och är det huvudsakliga värdet av neurala nätverk.
Som vi försöka ”gå ned” yta squared error, måste vi ”steg innan vi ser!”
Vi uppdaterar vikt vektor och slagsida och sedan utvärderar vi ”höjden” av ytan på vår nya platsen.
En konsekvens av detta är att vi kan flytta till en punkt med ett mer extremt fel.
En annan konsekvens är att det kan ta lång tid att stiga ned till djupet av vårt tidigare läge.
Möjligheten att ”leaping” till mer extrema toppar och dalar av felet ytan är direkt kopplat till ”lärande skattesats,” eftersom lärande skattesatsen avgör hur stor inverkan fel värden har på vår vikt och bias förändringar.
Följande diagram visar hur öka inlärningen kurs hastens vår ankomst till lägre positioner på squared error yta, där fel minimeras.
Diagrammet visar också att öka inlärningen skattesats införs också möjligheten att göra dåliga steg:
neuron_training_error1512_zoom.jpg
Korttidsboende trend för root-mean-squared (RMS) fel för hela den utbildning som under flera utbildning iterationer, för lärande skattesatser 0.1, 0.5, 1.0 och 2.0.
Här är en graf över root-mean-squared output fel av en multi-layer-nätverk med en utbildning som med 19386 objekt som upplevt många dåliga steg på vägen till den bästa vikt vektorer:
neuron_training_error_spikes.jpg
Utbildning ibland stöter Spikes i root-mean-squared (RMS) fel, när felet höjningar för vissa upprepningar innan återuppta en nedåtgående trend.
Ibland trenden är helt enkelt ett smidigt sammanlöpande till önskad uppsättning vikter:
neuron_training_error1512.jpg
Trend för root-mean-squared (RMS) fel för hela den utbildning som under flera utbildning iterationer, för lärande skattesatser 0.1, 0.5, 1.0 och 2.0.

8. Exempel: Exklusiv-eller (xor)

”Exclusive-eller” (xor) är en funktion som accepterar två booleska ingångar och ger ett samlat Boolean produktionen enligt följande tabell:
X1
X2
Y = xor (X1, X2)
0
0
0
0
1
1
1
0
1
1
1
0
I allmänhet är ett enda neuron har ingångar {x1, x2, ...}, in genom kontakter med vikter {w1, w2, ...}.
Neuronet beräknar en mellanliggande kvantitet d = bias + (w1*x1 + w2*x2 + ...), som kan anses identifiera vilken planet, i ett oändligt antal parallella plan som innehåller en bestämd punkt med koordinater {x1, x2, ...}.
Neuronet beräknar ett produktionsvärde, y = ActivationFunction( d ), som har den verkan att dela upp de oändliga rad parallella plan i två uppsättningar, med en uppsättning som producerar låga produktionsvärden som, och övriga som producerar höga produktionsvärden som.
Alltså, en enda neuron spaltavfall flerdimensionell rymd i två regioner, åtskilda av planet bias + w1*x1 + w2*x2 + ...  = 0, och tilldelar låga produktionsvärden som till punkterna i området på ena sidan av planet, och tilldelar höga produktionsvärden som till punkter i regionen på motsatt sida av planet.
Alltså, om två uppsättningar av punkter i flerdimensionell rymd har tydliga indelningar och kan vara helt åtskilda av ett plan och sedan en enda neuron kan användas för att korrekt klassificera poäng från dessa apparater som hör till en uppsättning eller det andra.
Den exklusiva-eller (xor) funktion klassificerar punkter i två-dimensionell rymd (med koordinater (x1, x2)) sådant som pekar i uppsättningen { (0,0), (1,1) } klassificeras som producerar ett utflöde av ”0,” och punkter i uppsättningen { (0,1), (1,0) } klassificeras som producerar ett utflöde av ”1.”
Det finns ingen enhetlig ”plan” (i detta fall, en linje) som kan separera dessa fyra punkter i de två uppsättningarna.
Därför kan en enda neuron kan inte användas för att klassificera poäng enligt ensam-eller (xor) funktion.
En enda neuron kan bara dela en rymd av poäng i två regioner.
Den exklusiva-eller (xor) funktion klassificerar poäng på ett sätt som väsentligen skiljer en tvådimensionell yta i tre regioner (eller alternativt fyra regioner).
Två nervceller kan dela tvådimensionell yta i tre regioner (t.ex. genom två olika parallella linjer), och kan således användas för att klassificera poäng enligt ensam-eller (xor) funktion.
En tredje neuron kan användas för att kombinera resultaten från de två andra nervceller i en enda produktion.
Följande neurala nätverk, med två ingångar, och två neuron organ i en första lagret, och en enda neuron i ett andra skikt, och en enda utgång, kan användas för att klassificera poäng enligt ensam-eller (xor) funktion.
Följande neurala nätverk kan antingen vara utbildad för att beräkna ensam-eller (xor) funktion, eller neurala nätverk kan helt enkelt ha sin vikt och bias värden som angivits på ett sätt som ger önskat beteende.
neuron_network_drawing.jpg
Ett neuralt nätverk kan klassificera poäng enligt ensam-eller (xor)
Datorn nummer kopplat till det här dokumentet visar utbildning av neurala nätverk visas i diagrammet ovan att matcha den exklusiva-eller (xor) funktion.
Den neuronnät ibland misslyckas med att lära sig fungera, men programvara kan enkelt startas för att försöka lära sig med en ny uppsättning inledande vikter.
Om programmet framgångsrikt lär sig ensam-eller (xor) funktion, då produktionen av följande:
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
Produktionen (y) är inom 2% av det önskade värdet för vart och ett av de fyra kombinationer av variabler (x1, x2).
Även om nätverket har utbildats för att lära produktionsvärden som för bara fyra kombination av variabler (med värden 0.0 och 1.0, vilket motsvarar booleska värden), tillförsel av neurala nätverk kan vara till någon godtycklig floating-point värden.
Följande bild visar resultaten av de utbildade neurala nätverk för många kombinationer av indatavärden:
neuron_xor_surface02.jpg
Ett neuralt nätverk kan klassificera poäng enligt ensam-eller (xor)
Ytan motsvarar produktionen av neurala nätverk för alla möjliga bidrag kombinationer (x1, x2) i intervall [ -2.0, +2.0 ].
Produktionen är nära 0.0 vid sänker områden av ytan, och produktionen är nära 1.0 på högsta områden av ytan.
Observera att beläggningen är låg till på de punkter { (0,0), (1,1) }, och beläggningen är hög på de punkter { (0,1), (1,0) }.
Nätverket var bara utbildade för att producera önskade resultat för fyra specifika kombinationer av ingående variabler, men det neurala nätverk ger också resultat för alla andra möjliga kombinationer av indatavärden.
Förmågan av neurala nätverk för att producera rimligt svar för allmänna ärenden efter utbildas för särskilda fall kan betraktas som ”generalisering.”
Varje process som passar data pekar på en modell, som montering pekar på en linje eller annan kurva, som också ger en ”allmän” effekt, så det faktum att montera ett neuralt nätverk för att producera önskade resultat för särskilda lektioner resulterar i en slags generalisering inte extraordinära, men det är ändå intressant att observera förmåga att generalisera från enskilda fall.

9. Exempel: Tic-tac-toe ”(Naughts och korsen)”

9.1 Inledning

Tic-tac-toe ”(Naughts och korsen)” är en enkel match spelas på en 3 * 3 rutnät av celler som kan märkas med ”O” eller ”X”.
Spelare växelvis rum ”O” och ”X” varumärkena i obebodda celler tills en av spelarna avslutar en rad, kolumn eller diagonal.
Eftersom det finns 3 rader och 3 kolumner och 2 diagonaler finns det åtta vinnande mönster för varje spelare.
tic_tac_toe_board_and_winning_patterns.jpg
Tic-Tac-Toe styrelse och vinnande mönster
Det är trivialt att skriva en rekursiv funktion som utforskar alla möjliga Tic-Tac-Toe spel, eftersom den längsta spelet är nio drag.
Vid varje punkt i spelet vi helt enkelt granska resultaten går i vart och ett av de återstående obebodda celler.
En sådan funktion kan bekräfta att en Tic-Tac-Toe Spelet spelas med ”perfekt spelare” kommer att sluta med några vinnare.

9.2 Utbildning ett neuralt nätverk för att ange bästa flyttar

En rekursiv funktion kan utforska alla möjliga spel och hitta den bästa flytta för varje styrelse konfiguration.
Vi lägger till respektive styrelse-konfiguration (input) och det bästa flytta (önskat resultat), att en förteckning över utbildning ex.
Vi har då tåget nätverket ge önskade resultat för varje uppsättning av insatsvaror.
Nätverket kommer att ha 9 insatsvaror motsvarar varje cell av nätet, och indatavärden kommer att begränsas till följande värden:
0: obebodda cell
+1: Protagonist spelare
-1: Opponent spelare
Nätverket kommer att ha 9 resultat som motsvarar varje cell av nätet, och de produktionsvärden som kommer att begränsas till följande värden:
0: Försök inte flytta hit
1: Flytta hit
Åtta resultat kommer att vara satt till ”0,” och en produktion kommer att sättas till ”1.”
Alltså, efter utbildning av neurala nätverk, en styrelse konfiguration kan anges som indata och den neurala nätverk kommer att ange bästa flytta.
Produktionen ligger närmast ”1” kommer att ange bästa flytta, och alla andra resultat bör vara nära ”0.”
I allmänhet har någon funktion med Boolean parametrar och booleska resultat kan företrädas av ett neuralt nätverk med två lager av nervceller.
Det första lagret av neuroner kan dela upp de multidimensionella rymd i att regionerna och det andra skiktet kombinerar regionen klassificeringar för att producera en lämplig produktion värden.
Den Tic-Tac-Toe neurala nätverk producerar Boolean utgångar, och även om insatsvarorna har tre stater ( -1, 0, +1 ) kunde vi, i princple, omvandla dessa få diskreta indata till en uppsättning booleska ingångar.
Därför två lager nervceller bör vara tillräckligt för att lära Tic-Tac-Toe.
Eftersom nätverket har 9 utgångar finns det 9 neuron organ i det sista (andra) skikt.
Den enda kvarvarande neuralt nätverk design beslut är beslut om antal neuron organ att sätta i första lagret av neurala nätverk.
För att fatta detta beslut, dator-kod kan generera och träna ett neuralt nätverk med N neuroner i det första skiktet.
Förmågan av neurala nätverk för att läsa den fullständiga utbildning som för Tic-Tac-Toe kan bli ett diagram.
Följande diagram visar den totala utbildningen som fel under utbildning för var och en av 48 olika neuronnät, med N = 1,2,...,48 neuroner i det första skiktet.
neuron_training_tictactoe_nlayers01.jpg
Övergripande utbildning som fel under utbildning, för N = 1,2,...,48 neuroner i det första skiktet (N = 1 är överst, och N = 48 är längst ner, och de flesta mellanliggande kurvor är lägre för högre värden av N)
Ett annat sätt att visualisera denna tendens är att bilda en yta från sekvens av kurvor:
neuron_training_tictactoe_surface01.jpg
Övergripande utbildning som fel under utbildning, för N = 1,2,...,48 neuroner i det första skiktet (N = 1 står på baksidan, och N = 48 är vid fronten)
Således ser vi att när vi närmar oss N = 48 neuroner i det första lagret, nätverket verkar kunna acceptera all utbildning fall.
Allt färre än 48 neurons nivåer förefaller otillräckliga för att läsa den fullständiga uppsättningen av fallen.
För lågt antal neuroner, varje ytterligare neuron väsentligt minskar det totala felet.
Men när antalet nervceller är nära till det antal som krävs för att läsa hela den uppsättning av lektioner, varje ytterligare neuron endast minskar misstag av ett relativt litet belopp.
Följande bild visar ett neuralt nätverk med 9 ingångar och 48 neuron organ i det första lagret, och 9 neuron organ i ett andra skikt, och 9 utgångar.
tic_tec_toe_network.jpg
Ett neuralt nätverk kan lära sig att spela tic-tac-toe
Datorn kod kopplad till detta dokument innehåller kod för att bygga upp och utbilda de neurala nätverk som visas ovan.
Den utbildning som har 4520 utbildning ex.
I 200 utbildning iterationer (omfattar 3 förökning steg, för totalt 200 * 4520 * 3 = 2712000 simulering steg och samma antal fel förökning steg), det totala felet minskade från 1.520 att 0.153.
(Dessa siffror kan variera beroende på slumpmässiga ursprungliga förutsättningarna.)
Den utbildning som krävs flera minuter.
Följande är två exempel på angivna insatsvaror och producerade resultat av utbildade neurala nätverk:
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