English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
Neuraal netwerk
met het leren door achteruit fout propagatie
Colin Fahey
neuron_group01.jpg
Een biologisch neuraal netwerk

1. Software

NeuralNetwork20080614.zip
Neuron netwerk broncode (C#)
21971 bytes
MD5: 94443565716e1101a3326dc2ffd558fd

2. Inleiding

Dit document beschrijft de wijze van uitvoeren van een kunstmatig neuraal netwerk dat kan worden getraind in het herkennen patronen.
Dit document beschrijft een model van een neuraal netwerk leert dat door een algoritme dat gebruik maakt van „achteruit fout voortplanting.“
Dit document bevat elementaire demonstraties van leren door „achteruit fout voortplanting.“  Dit document heeft een link naar de computer code.  De computer code omvat de demonstraties.  De computer code kan worden gebruikt voor het maken van complexe neurale netwerken.  Maar de computer code is alleen bedoeld ter illustratie.  Een andere toepassing zou kunnen verminderen geheugengebruik en snelheid zou kunnen vergroten.

3. Alternatief voor het leren door achteruit fout propagatie

Dit document beschrijft een model van een neuraal netwerk die leert door een algoritme genaamd „achteruit fout voortplanting.“  Dit algoritme kan eisen dat een zeer lange tijd om te leren de verschillende lessen.  Ook dit algoritme kan niet willekeurig verschillende lessen te leren als gevolg van de random oorspronkelijke toestand van het neuraal netwerk voor de opleiding.
Leren door „welke actief input“ is een belangrijk alternatief voor het leren door „achteruit fout voortplanting.“  Leren door welke actief input gewoon geassocieerde inputs "die tegelijk actief zijn.  Deze leren kan worden snel en betrouwbaar.  Maar voor vele praktische doeleinden, is er geen voor de hand liggende manier gebruik te maken van een neuraal netwerk leert dat door de vereniging, dat er een voor de hand liggende manier om gebruik te maken van een netwerk dat leert door achteruit fout voortplanting.
Sommige biologische neurale netwerken bekend zijn om te leren door de vereniging van actieve ingangen.  Retrospectieve fout voortplanting niet in acht is genomen in een biologisch neuraal netwerk.
Dit document beschrijft interessante toepassingen voor een neuraal netwerk leert dat door achteruit fout voortplanting.  Echter, het leren door associatie is een zeer belangrijk alternatief algoritme voor het leren.  Het ontwerpen van een neuraal netwerk leert dat door de vereniging op te lossen met name een probleem zou kunnen worden bemoeilijkt dat desgining een alternatief neuraal netwerk leert dat door achteruit fout voortplanting, maar biologische systemen leren door de vereniging, en het leervermogen van biologische systemen is evident.

4. Biologisch neuron

4.1 Neuron cel

neuron_1umeter01.jpg
Een biologisch neuron „(multipolaire“ type, ~4 um cel lichaam)
Een neuron is het type van de cel die de mogelijkheid biedt te ontvangen en door de zenuwen signalen.
Neuronen liggen aan de basis van de zenuwen, gevonden in dieren, vogels, vissen en insecten.
Brains met geheugen en logica, en eenvoudige reflex systemen, zijn beide gebaseerd op de regeling van de neuronen.
Neuronen worden ook gebruikt om signalen over grote afstanden in een wezen op het lichaam, zoals uit de sensoren aan de hersenen of van de hersenen naar de spieren.
Het gedrag van een biologisch neuron is zeer complex, maar de volgende vereenvoudigde beschrijving legt het basisprincipe:
Het neuron hoopt signalen ontvangen van andere neuronen, en als de totale signaal accumulatie van meer dan een drempel, het neuron zendt haar eigen signalen van andere neuronen.

4.2 Neuron delen

neuron_labels01.jpg
Delen van een biologisch neuron
Soma
De cel lichaam van een neuron
Dendrites
Fibers met chemische receptoren (input) die zich uitstrekken van de cel lichaam van een neuron.  Een neuron heeft meestal veel dendrites, en dendrites hebben vaak vele branches.
Axon
Een glasvezel met chemische vervuilers (outputs) op haar eindpunt dat zich uitstrekt van de cel lichaam van het neuron.  Een neuron heeft een axon, en de axon heeft over het algemeen heel weinig takken.
Synaps
Een dergelijke configuratie dat de axon van een neuron en de dendrites van een andere neuron worden gescheiden door een zeer klein verschil.  In een dergelijke configuratie, chemische stoffen uitgestoten door een axon van een neuron steek de synaps en worden ontvangen door de dendrites van de andere neuron.  Dit is hoe de neuronen van invloed zijn op andere neuronen.

4.3 Neuron stoken

Een neuron hoopt chemische signalen van haar dendrites, en als de totale hoeveelheid chemische stoffen accumulatie van meer dan een drempel binnen een periode van tijd, het neuron „branden,“ het versturen van zijn eigen signaal via de axon.
Sommige neuronen in staat zijn om het stoken van peulvruchten op de volgorde van 100 Hz.
De signalen die door de opeenhoping van neuronen betrekken (Na) Natrium-, kalium-(K), en Chloor (Cl) ionen, en een daaruit voortvloeiende elektrochemische potentieel (dat wil zeggen, spanning).
De rust spanning (-70 mV) en stoken (+30 mV) spanning kan worden gemeten of zelfs beïnvloed door conventionele elektrische circuits.
Het volgende is een spanning van de opname van een rat neuron afvuren met een snelheid van ongeveer 100 Hz als een enkele whisker is geraakt en die in het bezit van haar rustende standpunt:
neuron_spikes_whisker01.jpg
Een rat neuron afvuren (100 Hz) vanwege het bezit van een whisker.
Het volgende is hetzelfde signaal manifesteerde als audio: neuron_spikes_whisker01.wav
Hoewel de prikkel is constant, het neuron signaal is een snelle pulserende.

4.4 Neuraal netwerk

Het menselijk brein heeft ongeveer 10^11 (100 miljard) neuronen.
Elk neuron in het cerebellum ontvangt input van zoveel als 10^4 (10000) synapsen.
Hoewel het axon en dendrites van een neuron dikwijls slechts enkele micrometers afstand van de cel lichaam, sommige axons zijn op de orde van een meter in lengte.
Een hersenen heeft neuronen met een relatief korte axons gegroepeerd in regio's of clusters.
Een hersenen heeft ook bundels van neuronen met een relatief lange axons te koppelen gebieden gescheiden door centimeter.
Daarom is een hiërarchisch netwerk van de verwerking van elementen wordt gevormd.

4.5 Neuraal netwerk status

De status van een netwerk van neuronen is zowel de manier waarop de neuronen verbonden zijn en de signalen op alle van de synapsen.
Het is onduidelijk hoeveel status informatie zou verloren gaan als een brein was tranquilized in te totale inactiviteit voor een bedrag van tijd.
Men kan zich voorstellen informatie aanhoudende alleen door signalen die via het netwerk, en niet door de netwerk-verbinding zelf, zoals cellulaire automaten simulaties zoals Conway's „Game of Life“, eenvoudig Dynamic Random Access Memory (DRAM) chips, en sluit zich in een kamer.

4.6 Neuraal netwerk Leren

Conventionele leren vindt plaats wanneer de eigenschappen van dendrites veranderen in een synaps tot meer of minder efficiënt zijn op het ontvangen van chemische signalen van een axon.
De redenen voor deze veranderingen zijn ingewikkeld, maar het resultaat is dat een neuron vereist een andere combinatie van de synaps ingangen te leiden tot een uitgangssignaal.

5. Kunstmatige neuron

5.1 Definitie

Een „kunstmatige neuron“ is een algoritme of een fysiek apparaat ter uitvoering van een wiskundig model geïnspireerd op het fundamentele gedrag van een biologisch neuron.
Een neuron hoopt signalen ontvangen van andere neuronen of inputs (bijvoorbeeld sensoren), en als de totale signaal accumulatie van meer dan een drempel, het neuron stuurt een signaal naar andere neuronen of outputs (bv effectoren).
Elke wiskundig model, waarin de idee van de accumulatie van meerdere ingangen en bezwijken een uitgang (dat accentueert de relatieve intensiteit van de inbreng van sommige nominale niveau) kan gebruikt worden voor patroonherkenning.
Deze modellen kunnen de basis vormen van een kunstmatige neuron.
Als de invloed van elke input kan worden gewijzigd, dan is het model kan steunen leren.

5.2 Activatie functie

Een „activering functie“ is een wiskundige functie die converteert input waarden beneden een bepaalde waarde bij een relatief lage waarde van de output, input en converteert waarden boven een bepaalde waarde bij een relatief hoge output waarde.
Een „activering functie“ wordt gebruikt om de gewogen som van de input waarden van een neuron op een waarde die worden weergegeven in de output van het neuron.
Een „sigmoid“ functie is een algemene klasse van goede functies die asymptotically aanpak van een lagere grenswaarde voor de input waarden benaderen negatief oneindig, en asymptotically aanpak van een bovengrens voor de input waarden benaderen positief oneindig.
Een specifieke sigmoid functie is de functie „logistic sigmoid“:
logistic_sigmoid_function.jpg
De „Logistic Sigmoid“ functie: 1 / ( 1 + Exp( -x ) )
De „logistic sigmoid“ functie kan gebruikt worden als een „functie“ voor de „activering van“ een wiskundig model van een neuron.
De wiskundige afgeleide van de „logistic sigmoid“ kan worden berekend als een formule, waardoor het gemakkelijk is om het leren van een bijbehorende formule.

5.3 Neuraal netwerk input

Een „neuraal netwerk input“ vormt een bijdrage aan een neuraal netwerk.
neural_network_input.jpg
Neuraal netwerk input
„Input“ is de numerieke waarde van de input.

5.4 Neuraal netwerk output

Een „neuraal netwerk output“ is een productie van een neuraal netwerk.
neural_network_output.jpg
Neuraal netwerk output
„Output“ is de numerieke waarde van de output.
„Error“ is een numerieke waarde vertegenwoordigt, dat het verschil tussen de waarde van de output en een „Desired“ waarde:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
De „Desired“ waarde vertegenwoordigt een gewenste waarde, of een ideale waarde, of een juiste waarde te hebben, dat het neuraal netwerk moet als een output in antwoord op specifieke ingangen.
De fout waarde wordt berekend en toegekend aan „Error“ door een opleiding algoritme.
De fout is feedback naar het neurale netwerk.
De neurale netwerk kunnen aanpassen om het verschil tussen de resultaten en de gewenste waarden, dat wil zeggen, het neuraal netwerk kunnen leren, en kunnen daarmee de toekomst van fouten.

5.5 Neuron lichaam

Een „neuron orgaan“ vertegenwoordigt het lichaam van een neuron, die hoopt input bijdragen, en voegt een vooroordeel, en transformeert de resulterende waarde door de „activering van de functie“ voor de productie van een productie-waarde.
neuron_body.jpg
Neuron lichaam
„InputAccumulator“ is dat een waarde vertegenwoordigt van de gecumuleerde input van neuron banden waarvan de resultaten zijn aangesloten op het neuron lichaam.
„Bias“ is een instelbare waarde die wordt gecombineerd met de opgebouwde waarde.
„Output“ is een numerieke waarde die de waarde van de output neuron.
De output waarde wordt berekend met gebruikmaking van de volgende formule:
Output = ActivationFunction( Bias + InputAccumulator );
„ErrorAccumulator“ is een numerieke waarde vertegenwoordigen geaccumuleerde fout.
Aangezien een bepaalde waarde van de output neuron lichaam, en van een specifieke output error waarde van de opgebouwde waarde fout is aangepast volgens de volgende formule:
ErrorAccumulator += Output * (1 - Output) * OutputError;
„Rate“ is een waarde die van invloed op hoe de „Bias“ waarde als reactie op de „ErrorAccumulator“ waarde:
Bias += (-1) * Rate * ErrorAccumulator;

5.6 Neuron link

Een „neuron link“ vormt een link tussen:
(1) een input van het neuraal netwerk en een inbreng van een neuron lichaam;
of,
(2) een output van een neuron lichaam en een input van een andere neuron lichaam;
of,
(3) een output van een neuron lichaam en een output van het neurale netwerk.
neuron_link.jpg
Neuron link
„Input“ is een cache van de input in de link.
„Weight“ is een instelbare waarde die de invloed op hoe fout signaal waarden en waarden propageren door middel van de link.
„Output“ is een cache van de productie van de link.
De waarde wordt berekend volgens de volgende formule:
Output = Weight * Input;
„Error“ is een cache van de fout van de link.
„WeightedError“ is een cache van de fout van de band, gewogen met het gewicht factor:
WeightedError = Weight * Error;
„Rate“ is een waarde die van invloed op hoe de „Weight“ waarde als reactie op de „Error“ waarde en de „Input“ waarde.
Tijdens neuraal netwerk leren, de „Weight“ waarde wordt aangepast op de volgende wijze:
Weight += (-1) * Rate * Input * Error;

5.7 Neuraal netwerk

Een „neuraal netwerk“ bevat inputs, outputs, neuron organen, en links.
De volgende afbeelding toont een eenvoudige neurale netwerk, met twee ingangen, en twee neuron organen in een eerste laag, en een enkel neuron in een tweede laag, en een uitgang.
neuron_network_drawing.jpg
Voorbeeld van een neuraal netwerk
Tijdens een simulatie van een neuraal netwerk, input waarden propageren door middel van links en neuron organen, en uiteindelijk komen tot concrete resultaten.
neuron_network_forward_propagation.jpg
Voorbeeld van vooruit reproductie in een neuraal netwerk
Tijdens de opleiding, fout waarden zijn die op de uitgangen, en deze fouten verder achteruit door het neuraal netwerk, hetgeen resulteert in de wijziging van de gewichten en systematische fouten in neuron organen en links.
neuron_network_backward_propagation.jpg
Voorbeeld van achteruit fout reproductie in een neuraal netwerk

5.8 Neuraal netwerk simulatie

Definitie:
„Netwerk simulatie“ is de procedure die wordt gebruikt om zichzelf voort netwerk inputs via de links neuron en organen tot het bereiken van de netwerk-uitgangen.
Netwerk simulatie omvat de simulatie van alle van zijn banden en neuron organen.
Simulaties zonder loops of tijd:
Er zijn veel mogelijk netwerk configuraties met loops.
Er zijn veel neuron modellen die afhankelijk zijn van de tijd.
Maar een aantal van de meest voorkomende toepassingen van kunstmatige neuronen betrekken noch loops, noch de tijd.
Het volgende is een wiskundig model van een neuron instantie:
Output = ActivationFunction( Bias + InputAccumulator );
Met deze neuron model, en een netwerk zonder „loops,“ beginnen we gewoon uit de externe input, output berekenen van de eerste laag van neuronen, en tot deze uitkomsten als input voor de volgende laag, berekenen output voor die laag, en verder via lagen neuronen in afwachting van de definitieve uitkomsten worden berekend.
Lussen:
Een netwerk kan hebben connecties in de vorm van loops (of „cycli).“
Bijvoorbeeld, de uitvoer van een neuron kan rechtstreeks worden aangesloten op een ingang van diezelfde neuron, waardoor „feedback.“
Een ander voorbeeld is de output van neuron # 1 wordt aangesloten op de input van neuron # 2, en de output van neuron # 2 wordt aangesloten op de input van neuron # 1.
Als u kunt starten vanaf een bepaald punt in een netwerk en een pad via de neuronen en verbindingen, obeying de one-way flow van de signalen, en uiteindelijk komen tot hetzelfde uitgangspunt, dan is het pad is een lus.
Loops invoering van de interessante mogelijkheid van signalen stromen rond het netwerk voor onbepaalde tijd.
Enkele eenvoudige modellen gaan ervan uit dat je met een specifieke hoeveelheid tijd voor signalen zijn om door individuele neuronen.
In dergelijke modellen, zendt signalen door middel van lussen met weinig neuronen sneller dan de signalen circuleren door middel van loops met veel neuronen.
Een neuron aangesloten op zich zal moeten de snelste signaal verkeer.
Als een neuron heeft een ingang X, een gewicht W, een bias B, en een niet-negatieve output Y (bijvoorbeeld 0.0 -> 1.0), dan kunnen we een oscillator gewoon door W = (-8) en B = +4 en de aansluiting van Y te X;
elke keer dat we de simulatie van het neuron, het signaal zal worden toggled naar het tegenovergestelde staat.
Een netwerk met loops kan worden bezig met de activiteit, ook wanneer zij niet aanvaarden externe signalen (stimuli) als input.
De cellulaire automaten regels van Conway's „Game of Life“ kan worden uitgevoerd in een neuraal netwerk, dat geeft je een kleine hint van de verscheidenheid van activiteiten die kunnen gebeuren in een neuraal netwerk met loops.
Finite-state machines (FSM), oscillatoren, vluchtig geheugen (in tegenstelling tot het leren van patronen via veranderende gewichten), wordt mogelijk gemaakt door de looping.
Als een netwerk heeft loops, kunnen we niet elke update uitgangen tot we berekenen alle uitgangen, dus vragen wij om een tijdelijke buffer op te slaan berekend uitgangen tot we berekenen alle uitgangen, en dan kunnen we verbinden de nieuwe productie-waarden aan de neuronen in het netwerk.
Elke methode die updates uitgangen in de werkelijke netwerk in een geleidelijke manier, in plaats van een all-in-een keer weg, introduceert een willekeurige bestellen in de tijd dat leidt tot chaos.
Natuurkunde simulaties waarbij gekoppelde entiteiten, zoals de planeten een baan om een ster met wederzijdse gravitationele krachten tussen alle instanties, vereisen dezelfde soort aanpak: bereken de netto-troepen over alle instanties die voor het bijwerken van alle snelheid en positie.
Time-afhankelijkheid:
Een eenvoudige netwerk simulatie meestal gaat ingangen waardoor de gewenste output na een enkel tijdstip van de simulatie.
In een dergelijke simulatie, we denken in termen „van“ het „aantal herhalingen“ in plaats van „de tijd in seconden.“
Er hoeft niet te worden alle correspondentie tussen de herhalingen en een tijdschema.
Een systeem kan worden ontworpen om een netwerk simulatie (iteratie) alleen als nieuwe input beschikbaar is, die zich met onregelmatige tussenpozen van de tijd.
Maar denk eens aan een wiskundig model van een neuron dat pogingen om de simulatie van de bruisende output aspect van een biologisch neuron.
De pulserende kunnen worden gekarakteriseerd in termen van tijd, zoals de bruisende op een bepaalde frequentie of die pulsen waarvan de curve een uitbreiding voor een bepaald bedrag van de tijd.
We kunnen ook andere tijd-afhankelijke elementen in een wiskundig model van een neuron, zoals een input accu met een waarde krijgt bijdragen van inputs, maar heeft een lek in verhouding staan tot de huidige waarde.
In het algemeen vinden we een elektrisch circuit analogie voor elementen die voldoen aan bepaalde wiskundige vergelijkingen, en zo kan een verwijzing een neuron als een circuit met weerstanden, condensatoren, en een niet-lineaire versterker.
Net als een circuit kan vertonen complexe tijd afhankelijk zijn gedrag, de uitvoer van een neuron kan worden beschouwd als een functie die afhankelijk is van de inputs en de tijd op een ingewikkelde manier.

5.9 Retrospectieve fout propagatie

Definitie:
„Retrospectieve fout voortplanting“ is een wiskundige bewerking die begint met de fout op de uitvoer van een neuraal netwerk en voortplant deze fout achteruit via het netwerk te leveren output error waarden voor alle neuronen in het netwerk.
Retrospectieve fout propagatie formules:
De fout waarden op het neuraal netwerk outputs zijn berekend volgens de volgende formule:
Error = (Output - Desired);  // Derived from: Output = Desired + Error;
De fout accumulatie in een neuron lichaam is aangepast aan de hand van de output van het neuron lichaam en de output error (door links aangesloten op het neuron lichaam).
Elke output error waarde levert een bijdrage aan de fout accu op de volgende wijze:
ErrorAccumulator += Output * (1 - Output) * OutputError;
In zekere zin is het geheel van de productie fouten bij de volgende laag lek achteruit door de inbreng gewichten en zich ophopen aan de uitgang van een neuron in een eerder laag.
Dit opgebouwde waarde wordt vermenigvuldigd met een waarde die het grootst is wanneer de huidige output van het neuron is het meest neutrale (de meeste „besluiteloos)“ en het minst bij de uitgang van het neuron is het meest extreme (zeer „zeker).“
Gewicht veranderingen en veranderingen bias formules:
De basis van leren is de aanpassing van de gewichten en de partijdigheid waarden in een poging om de toekomstige productie fouten.
Leren „Rate“ is een numerieke waarde die in wezen geeft aan hoe snel een neuron past het gewicht en de partijdigheid waarden volgens fout waarden.
De volgende formule geeft aan hoe de verandering van de gewichten van een neuron met een bepaalde set van waarden en haar input output error waarde:
Weight += (-1) * Rate * Input * Error;
De volgende formule geeft aan hoe de verandering van de partijdigheid van een neuron gezien de huidige output fout voor de neuron:
Bias += (-1) * Rate * Error;

6. Opleiding van een neuraal netwerk

6.1 Opleiding procedure

Men kan beginnen met een getrainde netwerk en verder te verminderen en de output fout met de voortgezette opleiding, maar een vaak begint met een ongetrainde netwerk.
Voordat de opleiding, kies random waarden voor alle wegen van alle neuronen in het netwerk.
Ik waargenomen problemen als ik toevallig gekozen waarden in het interval [ -1.0, +1.0 ], en ik heb er geen problemen hebben als ik willekeurig gekozen waarden van het interval [ +0.1, +1.0 ].
Ik noem deze opmerkingen, maar ze zou het gevolg kunnen zijn van mijn fouten.
Het doel van willekeurige gewichten is ter vermindering van de mogelijkheid van een pathologische situaties in een netwerk.
Als alle neuronen in een netwerk van start met dezelfde gewichten, het netwerk zou hebben geen basis voor het vergroten van de differentiatie tussen neuronen.
Ik heb geconstateerd dat het instellen van alle bias waarden op nul (0.0) aanvaardbaar is.
Een training houdt in dat er een opleiding ingesteld vele malen, misschien wel honderden of duizenden keren.
Voor elke door de opleiding vastgesteld, zijn wij van mening elk item in de training set.
Een opleiding ingesteld object heeft een aantal ingangen, en een set van gewenste resultaten.
We simuleren het netwerk, met behulp van de set van de inbreng door de opleiding item.
De simulatie levert output waarden.
We propageren de fouten achteruit dacht dat het neurale netwerk om de output fouten voor alle neuronen.
We werken alle maten en gewichten fouten.
Let op: Een academische tekst die besproken neurale netwerken bepleit die door de hele opleiding ingesteld en slechts opsomming, gewicht en fouten.
Na wat over het hele opleiding ingesteld, hebben we een set van bedragen van het gewicht en de partijdigheid veranderingen.
Wij nemen deze bedragen en actualiseren alle maten en gewichten fouten.
Deze bedragen kunnen worden enorm groot voor de opleiding sets - en de daaruit sprong in gewicht-ruimte zou onredelijk groot.
Ik denk dus dat delen door het aantal items van de opleiding, om het gemiddelde gewicht van de aanpassing van de waarde en de gemiddelde bias verandering waarden, redelijk zou zijn.
Er is iets in beroep over computer-een enkele verandering in gewicht vector die op de een of andere manier duurt de hele opleiding in te stellen.
Ik weet niet of ik gewoon een fout gemaakt bij de uitvoering van het idee, maar ik gaf bijna volledig op neurale netwerken als gevolg van hoe slecht het allemaal was keerpunt.
Daarna, toen ik probeerde de naïeve alternatief, namelijk het maken van updates op elke opleiding item, dingen werkte perfect.
Gezien de gehele opleiding ingesteld voordat u een update heeft een aantal voordelen en nadelen:
Voordeel:
Interne opleiding items in de training set met extreme fout (dat wil zeggen, een slechte opleiding item) zal niet een grote bijdrage aan de update, want het zal worden overspoeld door de invloed van de „goede“ gegevens;
Nadeel:
Als N is het aantal items in uw opleiding ingesteld, uw tarief van de vooruitgang op het optimale gewicht vector wordt gedeeld door N.
Of, voor een bepaalde afstand heeft u slechts een fractie van hints richting langs de weg ten opzichte van de naïeve aanpak;
Misschien is deze techniek zal werken voor u, maar proberen de naïeve aanpak voordat u opgeven op neurale netwerken in diepe frustratie!

6.2 Niet om de fout

Opleiding mag niet tot vermindering van de totale fout voor de training set.
Het is van belang voor het opsporen van een mislukking te verminderen fout.
De volgende lijst beschrijft oorzaken van de mislukking te verminderen fout en mogelijke oplossingen.
De items in de lijst worden vermeld in volgorde van waarschijnlijkheid bij benadering, met het eerste item dat wordt het meest waarschijnlijke.
(1) De combinatie gewicht heeft bereikt, een lokaal minimum van de fout oppervlak, en „zit vast;“
Oplossing: Start van een nieuwe simulatie met nieuwe random gewichten.
(2) Het netwerk heeft te weinig neuronen of voor het coderen van alle lagen van de patronen in je opleiding ingesteld;
Oplossing: entertainen voorzichtig de mogelijkheid van het toevoegen van lagen of neuronen.
(3) Een of meer items in uw opleiding vastgelegd in tegenspraak is van grove of in strijd zijn met uw andere opleiding items;
Oplossing: Controleer uw gegevens voor onregelmatigheden.
Zoek het testmateriaal dat de opbrengst van de meeste fouten zijn opgeleid voor uw netwerk.
Kijk in op technieken voor de gemiddelde gewicht voor de gehele dataset om de invloed van een slecht gevallen.
(4) Het leren te hoog is (iets meer dan 1.0 is waarschijnlijk overdreven), en de updates altijd overschrijding van de doelstelling;
Oplossing: Verminderen van leren.
(5) Het leren percentage is te laag (iets minder dan 0.01 zou kunnen zijn te klein), en het net echt is convergerende op het ideale gewicht combinatie - maar is te traag;
Oplossing: Verhoog leren.
Opleiding een dubbele-laag-, drie-neuron netwerk om te voldoen aan de exclusieve of (xor)-functie, kunnen, ondanks de eenvoud van de functie, niet te convergeren.
Dit kan verrassende en frustrerend.
Echter, de oplossing is om gewoon alle neuron link gewichten aan nieuwe willekeurige waarden en dan proberen om het netwerk opnieuw.
In het geval van de opleiding van een netwerk om te voldoen aan de exclusieve-of (xor) functie, random positieve gewichten lijken te leiden tot succesvol leren elke keer, dat bepaalde combinaties van positieve en negatieve gewichten soms tot gevolg hebben dat de opleiding drastisch te mislukken.
De noodzaak voor het selecteren van nieuwe random initiële gewichten om te herstellen van een mislukking te convergeren is een ongelukkig gevolg van de combinatie van het leren.
Het leren procedure is in wezen op zoek naar een globale minimum door steile afdaling op een oppervlak, en het potentieel voor de aanwezigheid van een „lokaal minimum“ waarin de zoekopdracht kan worden gevangen.

6.3 Totale training fout

De totale fout van een netwerk kan worden gekenmerkt door de vierkante wortel van het gemiddelde van het kwadraat fouten, of „RMS“ (RMS).
De fout op een specifiek netwerk output wordt gegeven door de volgende formule:
Error = (Output - Desired);
De som van het kwadraat fouten voor een enkel item opleiding wordt gegeven door de volgende formule:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
    squaredError += (output.Error * output.Error);
}
De som van het kwadraat fouten voor het geheel van de items in een opleiding heeft ingesteld, is de som van het kwadraat fouten van de individuele items.  De volgende code laat zien hoe de fouten voor het kwadraat van de gehele opleiding objecten kan worden berekend:
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);
    }
}
De totale RMS (RMS) van de fout wordt gegeven door de wortel uit het gemiddelde kwadraat van de fouten:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Deze waarde is een manier om de totale fout van een netwerk over alle opleidingen gevallen.

7. Leren

Leren gebeurt wanneer het gewicht en de partijdigheid waarden van neuron links en neuron instanties wordt aangepast op basis van de gespecificeerde netwerk input en de output error waarden.
Denk aan een neuraal netwerk met twee ingangen (x1 en x2), en twee links (met gewichten w1 en w2), en een neuron lichaam, en een output (y).
neuron_network_single_neuron.jpg
Neuraal netwerk met twee ingangen, en een neuron lichaam, en een output
We trainen deze neuron door het leveren van input, output van de computer-, computer-de fout, computers gewicht en partijdigheid veranderingen, en het bijwerken van de gewichten en de partijdigheid, aankomen op nieuwe gewichten ( w1', w2' ).
Er is een zeer interessante manier om dit proces te visualiseren.
We kunnen wat betreft de set van gewichten als een vector in een multi-dimensionale ruimte.  Bijvoorbeeld, voor twee gewichten hebben we de vector W = (w1, w2) in een twee-dimensionale „ruimte gewicht.“
Wanneer de gewichten worden aangepast, we hebben een nieuwe gewicht vector W' = (w1',w2').
We kunnen visualiseren dit als een punt W verhuizing naar een nieuw punt W' als onderdeel van een proces tot een minimum te beperken output fout.
Normaal gesproken zou een niet berekenen van de output error voor alle mogelijke combinaties gewicht, want de hoop is dat het gewicht aanpassingsproces zal efficiënt volg de richting van de beste combinatie.
Laten we echter plot het oppervlak dat in wezen laat zien hoe goed een neuron voldoet aan alle items in een opleiding ingesteld als een functie van haar twee gewichten:
neuron_weight_space03.jpg
Som van het vierkant fouten voor een bepaalde opleiding ingesteld als een functie van twee gewichten (w1, w2)
In principe is het doel van leren is te dalen tot het laagste niveau van dit oppervlak, waar de fout tot een minimum beperkt.
Zodra we vinden het punt W = (w1, w2) dat de opbrengsten van de minimale waarde op dit vlak, dat het leren klaar is en dan kunnen we gewoon gebruik maken van de opleiding neuron.
De volgende grafiek geeft de output van een neuron opgeleid als functie van alle mogelijke ingangen X = (x1, x2):
neuron_input_space02.jpg
Neuron output als functie van de twee ingangen (x1, x2) voor een gewicht combinatie minimaliseert het vierkant fout
Hoewel de gewogen som van deze twee-input neuron is gewoon (w1*x1 + w2*x2), de activering functie maakt van een eenvoudige gedraaid in het vliegtuig op een klif.
Deze oppervlakte is de juiste output waarden voor alle input combinaties (x1, x2) door onze training set.
Maar je kunt je voorstellen hoe input vectoren X = (x1, x2) vergelijkbaar met de opleiding waarden zou ook leiden tot de productie waarden; dit kenmerk van neurale netwerken heet „generalisatie“ en is de belangrijkste waarde van neurale netwerken.
Als we proberen te „dalen“ het oppervlak van het vierkant fout, we moeten „sprong voordat we kijken!“
We werken het gewicht vector en vooroordeel, en dan zullen we evalueren de „hoogte“ van het oppervlak op onze nieuwe locatie.
Een gevolg hiervan is dat we zouden kunnen verhuizen naar een punt met een meer extreme fout.
Een ander gevolg is dat het even kan duren voordat dalen terug naar de diepte van onze vorige locatie.
De mogelijkheid om „te springen“ om meer extreme pieken en dalen van de fout oppervlak is direct gerelateerd aan het „leren,“ leren, omdat de koers bepaalt hoeveel invloed fout waarden hebben op ons gewicht en partijdigheid veranderingen.
De volgende grafiek laat zien hoe een verhoging van de rentevoet leren haast onze aankomst op lagere posities op de fout vierkant oppervlak, waar de fout tot een minimum beperkt.
De grafiek toont ook aan dat een verhoging van het tarief leren introduceert ook de mogelijkheid om slecht werk:
neuron_training_error1512_zoom.jpg
Korte termijn ontwikkeling van de wortel van het gemiddelde van het kwadraat (RMS) fout voor de gehele opleiding set over meerdere iteraties opleiding, voor het leren van de tarieven 0.1, 0.5, 1.0, en 2.0.
Hier is een grafiek van de wortel van het gemiddelde van het kwadraat output fout van een multi-layer-netwerk met een opleiding ingesteld met 19386 objecten die ervaren veel slechte stappen op het pad naar de beste gewicht vectoren:
neuron_training_error_spikes.jpg
Opleiding soms geconfronteerd met pieken in de wortel van het gemiddelde van het kwadraat (RMS) fout, toen fout verhogingen voor sommige herhalingen voordat een dalende tendens.
Soms is de trend is gewoon goede convergentie naar de gewenste set van gewichten:
neuron_training_error1512.jpg
Ontwikkeling van de wortel van het gemiddelde van het kwadraat (RMS) fout voor de gehele opleiding set over meerdere iteraties opleiding, voor het leren van de tarieven 0.1, 0.5, 1.0, en 2.0.

8. Voorbeeld: Exclusieve-of (xor)

„Exclusieve-of“ (xor) is een functie aanvaardt twee Booleaanse inputs en levert een enkele Booleaanse output op basis van de volgende tabel:
X1
X2
Y = xor (X1, X2)
0
0
0
0
1
1
1
0
1
1
1
0
In het algemeen, een enkele neuron heeft ingangen {x1, x2, ...}, door het invoeren van banden met gewichten {w1, w2, ...}.
Het neuron om een tussentijdse hoeveelheid d = bias + (w1*x1 + w2*x2 + ...), die kunnen worden beschouwd als het identificeren die het vliegtuig, in een oneindige reeks van parallelle vlakken, bevat een bepaald punt met coördinaten {x1, x2, ...}.
Het neuron om een output waarde, y = ActivationFunction( d ), die tot gevolg heeft dat de splitsing van de oneindige reeks van parallelle vlakken in twee sets, met een stel de productie van lage output waarden, en de andere reeks producten van hoge output waarden.
Zo heeft een enkel neuron split multidimensionale ruimte in twee regio's, gescheiden door het vliegtuig bias + w1*x1 + w2*x2 + ...  = 0, en kent een lage output waarden op de punten in de regio aan de ene kant van het vliegtuig, en kent een hoge output waarden op de punten in de regio aan de andere kant van het vliegtuig.
Dus als twee sets van de punten in meerdimensionale ruimte hebben verschillende classificaties en kan volledig worden gescheiden door een vliegtuig, dan een enkel neuron kan worden gebruikt voor het correct classificeren punten van die sets, als behorend tot een vastgesteld of het ander.
De exclusieve-of (xor) functie onderverdeeld in twee-dimensionale ruimte (met coördinaten (x1, x2)) zodanig zijn dat de punten in de set { (0,0), (1,1) } worden ingedeeld als het produceren van een productie van „0,“ en de punten in de set { (0,1), (1,0) } worden ingedeeld als het produceren van een productie van „1.“
Er is geen enkel „vliegtuig“ (in dit geval een lijn) die kunnen scheiden die vier punten in de twee sets.
Daarom is een enkel neuron niet kan worden gebruikt voor de indeling van de punten volgens de exclusieve-of (xor) functie.
Een enkel neuron kan alleen split een ruimte van de punten in twee regio's.
De exclusieve-of (xor) functie classificeert punten op een wijze die in wezen verdeelt een twee-dimensionale ruimte in de drie regio's (of, als alternatief, vier regio's).
Twee neuronen kan splitsen in twee dimensionale ruimte in de drie regio's (bijvoorbeeld door twee parallelle lijnen), en kan dus worden gebruikt voor de indeling van de punten volgens de exclusieve-of (xor) functie.
Een derde neuron kan worden gebruikt voor het combineren van de resultaten van de twee andere neuronen in naar een uitgang.
De volgende neuraal netwerk, met twee ingangen, en twee neuron instanties in een eerste laag, en een enkel neuron in een tweede laag, en een uitgang, kan worden gebruikt voor de indeling van de punten volgens de exclusieve-of (xor) functie.
De volgende neuraal netwerk kunnen worden getraind om de exclusieve-of (xor) functie, of het neurale netwerk kan gewoon haar gewicht en partijdigheid waarden die op een wijze die leidt tot de gewenste gedrag.
neuron_network_drawing.jpg
Een neuraal netwerk in staat is de indeling van de punten volgens de exclusieve-of (xor)
De computer code in verband met dit document toont de opleiding van de neurale netwerk weergegeven in de bovenstaande afbeelding om te voldoen aan de exclusieve-of (xor) functie.
De neurale netwerken soms niet om te leren van de functie, maar de software kan alleen opnieuw worden gestart om te proberen het leren met een nieuwe reeks van de initiële gewichten.
Als de software met succes leert de exclusieve-of (xor) functie, dan is de output lijkt op het volgende:
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
De output (y) is binnen 2% van de gewenste waarde voor elk van de vier combinaties van de variabelen (x1, x2).
Hoewel het netwerk is getraind om te leren output waarden voor slechts vier combinatie van variabelen (met waarden 0.0 en 1.0, ofwel Boolean values), de ingangen tot het neurale netwerk kan worden ingesteld op iedere willekeurige floating-point waarden.
De volgende afbeelding toont de output van de opgeleide neuraal netwerk voor vele combinaties van input-waarden:
neuron_xor_surface02.jpg
Een neuraal netwerk in staat is de indeling van de punten volgens de exclusieve-of (xor)
Het oppervlak is de output van het neurale netwerk voor alle mogelijke combinaties (x1, x2) input in de reeksen [ -2.0, +2.0 ].
De output is dicht bij 0.0 op het gebied van verlaging van het oppervlak, en de output is dicht bij 1.0 op het hoogste gebieden van het oppervlak.
Merk op dat het oppervlak is laag voor op de punten { (0,0), (1,1) }, en het oppervlak is hoog op de punten { (0,1), (1,0) }.
Het netwerk is alleen opgeleid om de gewenste output voor vier specifieke combinaties van input variabelen, maar het neuraal netwerk produceert ook uitgangen voor alle andere mogelijke combinaties van input-waarden.
Het vermogen van neurale netwerken om redelijke oplossingen voor algemene zaken na te zijn opgeleid voor speciale gevallen kan worden beschouwd als „generalisatie.“
Elk proces dat past bij meetgegevens met een model, zoals punten montagevoorschriften aan een lijn of een andere curve, produceert ook een „generaliserende“ effect, dus het feit dat de montage een neuraal netwerk voor de productie van de gewenste output voor specifieke lessen resultaten in een soort van generalisatie is niet buitengewone, maar het is toch interessant om te zien de mogelijkheid om te generaliseren van specifieke gevallen.

9. Voorbeeld: Tic-tac-toe „(Naughts en Crosses)“

9.1 Inleiding

Tic-tac-toe „(Naughts en kruizen)“ is een eenvoudig spel gespeeld op een 3 * 3 raster van cellen die kunnen worden gemarkeerd met „O“ of „X“.
Spelers afwisselend plaats „O“ en „X“ merken in de leegstand cellen tot een van de spelers een aanvulling op een rij, kolom of diagonaal.
Omdat er 3 rijen, kolommen en 3, en 2 diagonalen, zijn er acht winnende patronen voor elke speler.
tic_tac_toe_board_and_winning_patterns.jpg
Tic-Tac-Toe boord en het winnen van patronen
Het is triviaal voor het schrijven van een recursieve functie die verkent alle mogelijke Tic-Tac-Toe gespeeld, omdat de maximale duur van het spel is negen beweegt.
Op elk punt in de game we gewoon de resultaten van bewegen in elk van de resterende leegstand cellen.
Een dergelijke functie kan bevestigen dat een Tic-Tac-Toe spel gespeeld met „een perfecte spelers“ zal eindigen met geen winnaar.

9.2 Opleiding van een neuraal netwerk om aan te geven dat de beste beweegt

Een recursieve functie kunt u alle mogelijke spelletjes en het bepalen van de beste actie voor elke configuratie boord.
We voegen elke boord configuratie (input) en de beste verplaatsen (gewenste output), om een lijst van de opleidingen items.
We hebben vervolgens de trein het netwerk voor de productie van de gewenste output voor elke set van inputs.
Het netwerk zal hebben 9 inputs die overeenkomen met elke cel van het net, en de input-waarden zullen worden beperkt tot de volgende waarden:
0: onbezet cel
+1: protagonist speler
-1: Tegengestelde speler
Het netwerk zal hebben 9 outputs die overeenkomen met elke cel van het net, en de output waarden worden beperkt tot de volgende waarden:
0: Niet te bewegen hier
1: Zet hier
Acht output wordt ingesteld op „0,“ en een output wordt ingesteld op „1.“
Zo is na de training van de neurale netwerk, een forum configuratie kan worden opgegeven als invoer, en het neurale netwerk geeft de beste zet.
De output het dichtst bij „1“ geeft het beste verplaatsen, en van alle andere uitgangen moeten dicht bij „0.“
In het algemeen, de functie met Boolean Boolean parameters en uitgangen kunnen worden vertegenwoordigd door een neuraal netwerk met twee lagen van neuronen.
De eerste laag van neuronen kunnen verdelen de multidimensionale ruimte aan de regio's, en de tweede laag combineert de regio classificaties voor de productie van de juiste uitgang waarden.
De Tic-Tac-Toe neuraal netwerk produceert Boolean outputs, en hoewel de ingangen hebben drie staten ( -1, 0, +1 ), we kunnen, in princple, omzetten van deze enkele discrete input waarden tot een reeks van Booleaanse ingangen.
Daarom, twee lagen van neuronen zou voldoende moeten zijn om te leren Tic-Tac-Toe.
Omdat het netwerk beschikt over 9 uitgangen, zijn er 9 neuron instanties in de laatste (tweede) laag.
De enige resterende neuraal netwerk ontwerp-besluit is het bepalen van het aantal neuron instanties om in de eerste laag van het neurale netwerk.
Als je dit besluit, computer code kan genereren en de trein een neuraal netwerk met N neuronen in de eerste laag.
Het vermogen van het neuraal netwerk voor het leren van de volledige opleiding voor Tic-Tac-Toe kunnen worden weergegeven.
De volgende grafiek toont de totale opleiding ingesteld fout tijdens de opleiding voor elk van de 48 verschillende neurale netwerken, met N = 1,2,...,48 neuronen in de eerste laag.
neuron_training_tictactoe_nlayers01.jpg
Totale training set fout tijdens de opleiding, voor N = 1,2,...,48 neuronen in de eerste laag (N = 1 is aan de top, en N = 48 is aan de onderkant, en de meeste tussentijdse curves zijn lager voor de hogere waarden van N)
Een andere manier een beeld van deze trend is dat zij op een oppervlak van de opeenvolging van bochten:
neuron_training_tictactoe_surface01.jpg
Totale training set fout tijdens de opleiding, voor N = 1,2,...,48 neuronen in de eerste laag (N = 1 is aan de achterkant, en N = 48 is aan de voorkant)
Zo zien we dat als we benadering N = 48 neuronen in de eerste laag, het net lijkt te kunnen aanvaarden alle gevallen de opleiding.
Iets minder dan 48 neuronen niveaus lijkt onvoldoende om te leren de volledige reeks van gevallen.
Voor de lage aantallen van neuronen, elke extra neuron aanzienlijk reduceert de totale fout.
Echter, wanneer het aantal neuronen is dicht bij het aantal vereiste om te leren van het geheel van de lessen, die elk extra neuron alleen vermindert de fout door een relatief klein bedrag.
De volgende afbeelding toont een neuraal netwerk met 9 ingangen, en 48 neuron organen in de eerste laag, en 9 neuron organen in een tweede laag, en 9 outputs.
tic_tec_toe_network.jpg
Een neuraal netwerk in staat is om te leren spelen tic-tac-toe
De computer code in verband met dit document bevat code voor de bouw en de trein het neuraal netwerk hierboven weergegeven.
De opleiding set heeft 4520 items opleiding.
In 200 opleiding herhalingen (waarbij 3 voortplanting stappen, voor een