Algoritmen voor het trainen van neurale netwerken. Methoden voor het trainen van neurale netwerken

interne parameters voor een specifieke taak.

Werkalgoritme neuraal netwerk iteratief is, worden de stappen ervan genoemd tijdperken of cycli.

tijdperk- één iteratie in het leerproces, inclusief het presenteren van alle voorbeelden uit de trainingsset en eventueel het controleren van de kwaliteit van de training op de controleset.

Het leerproces wordt uitgevoerd op het trainingsmonster.

Trainingsset omvat invoerwaarden en de bijbehorende uitvoerwaarden van een dataset. Tijdens de training ontdekt het neurale netwerk bepaalde afhankelijkheden tussen de uitvoervelden en de invoervelden.

We worden dus geconfronteerd met de vraag welke invoervelden (functies) we moeten gebruiken. In eerste instantie wordt de selectie heuristisch gemaakt, daarna kan het aantal ingangen worden gewijzigd.

Een probleem dat zich kan voordoen is het aantal waarnemingen in de dataset. En hoewel er bepaalde regels zijn die de relatie beschrijven tussen het vereiste aantal waarnemingen en de omvang van het netwerk, is de juistheid ervan niet bewezen.

Het aantal vereiste observaties hangt af van de complexiteit van het probleem dat wordt opgelost. Naarmate het aantal kenmerken toeneemt, neemt het aantal waarnemingen niet-lineair toe; dit probleem wordt de ‘vloek van de dimensionaliteit’ genoemd. Bij onvoldoende hoeveelheden gegevens wordt aanbevolen een lineair model te gebruiken.

De analist moet het aantal lagen in het netwerk en het aantal neuronen in elke laag bepalen.

Vervolgens moet u dergelijke waarden van gewichten en biases toewijzen die de oplossingsfout kunnen minimaliseren. De gewichten en biases worden automatisch aangepast om het verschil tussen de gewenste en ontvangen uitgangssignalen te minimaliseren leerfout.

De trainingsfout voor het geconstrueerde neurale netwerk wordt berekend door de output- en doel(gewenste) waarden te vergelijken. De foutfunctie wordt gevormd uit de resulterende verschillen.

Foutfunctie- dit is een objectieve functie die minimalisering vereist in het proces van gecontroleerde training van een neuraal netwerk.

Met behulp van de foutfunctie kunt u tijdens de training de kwaliteit van het neurale netwerk evalueren. Vaak wordt bijvoorbeeld de som van de kwadratische fouten gebruikt.

De kwaliteit van de training van een neuraal netwerk bepaalt het vermogen ervan om de eraan toegewezen taken op te lossen.

Een neuraal netwerk opnieuw trainen

Bij het trainen van neurale netwerken doet zich vaak een ernstig probleem voor dat het overfitting-probleem wordt genoemd.

Omscholing, of overfitting - een overdreven nauwkeurige match van een neuraal netwerk met een specifieke reeks trainingsvoorbeelden, waarbij het netwerk zijn vermogen om te generaliseren verliest.

Overfitting ontstaat wanneer de training te lang duurt, er niet genoeg trainingsvoorbeelden zijn of de structuur van het neurale netwerk te ingewikkeld is.

Overfitting komt doordat de keuze van de trainingsset willekeurig is. Vanaf de eerste stappen van het leren neemt de fout af. In de volgende stappen, om de fout te verminderen ( objectieve functie) parameters worden aangepast aan de kenmerken van de trainingsset. In dit geval vindt er echter geen "aanpassing" plaats aan de algemene patronen van de serie, maar aan de kenmerken van het deel ervan: de trainingssubset. Tegelijkertijd nauwkeurigheid van de voorspelling neemt af.

Een van de opties om netwerkovertraining tegen te gaan, is door de trainingssteekproef in twee sets te verdelen (training en testen).

Het neurale netwerk wordt getraind op de trainingsset. Het gebouwde model wordt gecontroleerd op de testset. Deze

Nu duidelijk is geworden wat we precies willen bouwen, kunnen we verder met de vraag ‘hoe bouwen we zo’n neuraal netwerk’. Dit probleem wordt in twee fasen opgelost: 1. Het selecteren van het type (architectuur) van het neurale netwerk. 2. Selectie van gewichten (training) van het neurale netwerk. In de eerste fase moeten we het volgende kiezen: * welke neuronen we willen gebruiken (aantal inputs, overdrachtsfuncties); * hoe je ze met elkaar kunt verbinden; * wat te nemen als input en output van een neuraal netwerk. Deze taak lijkt op het eerste gezicht enorm, maar gelukkig hoeven we een neuraal netwerk niet helemaal opnieuw uit te vinden - er zijn enkele tientallen verschillende neurale netwerkarchitecturen, en de effectiviteit van veel daarvan is wiskundig bewezen. De meest populaire en bestudeerde architecturen zijn meerlaagse perceptron, neuraal netwerk met algemene regressie, neurale netwerken van Kohonen en andere. Over al deze architecturen leest u binnenkort in speciale sectie dit leerboek.

In de tweede fase moeten we het geselecteerde neurale netwerk ‘trainen’, dat wil zeggen dergelijke waarden van zijn gewichten selecteren zodat het werkt op de juiste manier. Een ongetraind neuraal netwerk is als een kind: het kan alles geleerd worden. In neurale netwerken die in de praktijk worden gebruikt, kan het aantal gewichten enkele tienduizenden bedragen, dus training is een werkelijk complex proces. Voor veel architecturen zijn speciale leeralgoritmen ontwikkeld waarmee je de gewichten van het neurale netwerk op een bepaalde manier kunt configureren. De meest populaire van deze algoritmen is de methode terugpropagatie Error Back Propagation, bijvoorbeeld gebruikt om een ​​perceptron te trainen.

Trainen van neurale netwerken

Een neuraal netwerk trainen betekent dat we het vertellen wat we ervan willen. Dit proces lijkt sterk op het leren van het alfabet aan een kind. Nadat we het kind een foto van de letter “A” hebben laten zien, vragen we hem: “Welke letter is dit?” Als het antwoord onjuist is, vertellen we het kind het antwoord dat we graag willen dat hij geeft: “Dit is de letter A.” Het kind onthoudt dit voorbeeld samen met het juiste antwoord, dat wil zeggen dat er enkele veranderingen in zijn geheugen optreden in de goede richting. We zullen het proces van het steeds opnieuw presenteren van de letters herhalen totdat alle 33 letters goed in het geheugen zijn opgeslagen. Dit proces wordt ‘gesuperviseerd leren’ genoemd.

Bij het trainen van een neuraal netwerk handelen we op precies dezelfde manier. We hebben een database met voorbeelden (een reeks handgeschreven afbeeldingen van letters). Door het beeld van de letter “A” aan de ingang van het neurale netwerk te presenteren, ontvangen we daarvan een antwoord, dat niet noodzakelijkerwijs correct is. We weten ook het juiste (gewenste) antwoord - in in dit geval we willen dat het signaalniveau maximaal is aan de uitgang van het neurale netwerk met het label "A". Normaal gesproken is de gewenste uitvoer bij een classificatieprobleem de set (1, 0, 0, ...), waarbij 1 bij de uitvoer met het label "A" staat en 0 bij alle andere uitvoer. Door het verschil te berekenen tussen de gewenste respons en de daadwerkelijke respons van het netwerk, krijgen we 33 getallen: de foutvector. Het fout-backpropagatie-algoritme is een reeks formules waarmee men de vereiste correcties voor de gewichten van een neuraal netwerk kan berekenen met behulp van de foutvector. We kunnen dezelfde letter (en ook verschillende afbeeldingen van dezelfde letter) vele malen aan het neurale netwerk presenteren. In die zin lijkt leren meer op het herhalen van oefeningen in sporttraining.

Het blijkt dat na herhaalde presentatie van voorbeelden de gewichten van het neurale netwerk stabiliseren en het neurale netwerk op alle (of bijna alle) voorbeelden uit de database de juiste antwoorden geeft. In dit geval zeggen ze dat ‘het neurale netwerk alle voorbeelden heeft geleerd’, ‘het neurale netwerk is getraind’ of ‘het neurale netwerk is getraind’. IN software-implementaties je kunt zien dat tijdens het leerproces de omvang van de fout (de som van de gekwadrateerde fouten over alle outputs) geleidelijk afneemt. Wanneer de fout nul of een acceptabel klein niveau bereikt, wordt de training gestopt en wordt het resulterende neurale netwerk beschouwd als getraind en klaar voor gebruik op nieuwe gegevens. Het is belangrijk op te merken dat alle informatie die een neuraal netwerk over een probleem heeft, in een reeks voorbeelden is vervat. Daarom hangt de kwaliteit van neurale netwerktraining rechtstreeks af van het aantal voorbeelden in de trainingsset, en ook van hoe volledig deze voorbeelden de gegeven taak beschrijven.

Het heeft bijvoorbeeld geen zin om een ​​neuraal netwerk te gebruiken om een ​​financiële crisis te voorspellen als crises niet in de trainingsset voorkomen. Er wordt aangenomen dat om een ​​neuraal netwerk volledig te trainen, er minstens enkele tientallen (en beter dan honderden) voorbeelden. Laten we nogmaals herhalen dat het trainen van neurale netwerken een complex en kennisintensief proces is. Algoritmen voor neurale netwerktraining hebben dat wel gedaan verschillende parameters en instellingen die inzicht vereisen in de impact ervan om te kunnen worden beheerd.


Zodra het neurale netwerk is getraind, kunnen we het gebruiken om nuttige problemen op te lossen. Belangrijkste kenmerk menselijk brein is dat hij, als hij eenmaal een bepaald proces heeft geleerd, correct kan handelen in situaties waarin hij tijdens het leerproces niet is blootgesteld. We kunnen bijvoorbeeld bijna elk handschrift lezen, zelfs als we het voor het eerst in ons leven zien. Op dezelfde manier kan een neuraal netwerk dat goed is getraind, met grote waarschijnlijkheid correct reageren op nieuwe gegevens die er nog niet eerder aan zijn gepresenteerd. We kunnen bijvoorbeeld de letter "A" in een ander handschrift tekenen en vervolgens ons neurale netwerk vragen om de nieuwe afbeelding te classificeren. De gewichten van het getrainde neurale netwerk slaan behoorlijk wat informatie op over de overeenkomsten en verschillen van letters, zodat je bij een nieuwe versie van de afbeelding op het juiste antwoord kunt rekenen. Voorbeelden van kant-en-klare neurale netwerken

De hierboven beschreven processen van het leren en toepassen van neurale netwerken kunnen nu in actie worden gezien. Ward Systems Group heeft er verschillende voorbereid eenvoudige programma's, die zijn geschreven op basis van de NeuroWindows-bibliotheek. Met elk van de programma's kan de gebruiker onafhankelijk een set voorbeelden specificeren en op deze set een specifiek neuraal netwerk trainen. Dan kun je dit neurale netwerk nieuwe voorbeelden bieden en zijn werk observeren.

Vandaag zullen we het onderwerp dus verder bespreken neurale netwerken op onze website, en, zoals ik beloofde in het eerste artikel (), zullen we erover praten netwerk opleiding. Dit onderwerp is erg belangrijk, omdat een van de belangrijkste eigenschappen van neurale netwerken juist is dat het niet alleen handelt in overeenstemming met een duidelijk gedefinieerd algoritme, maar ook verbetert (leert) op basis van ervaringen uit het verleden. En in dit artikel zullen we enkele trainingsvormen bekijken, evenals een klein praktijkvoorbeeld.

Laten we eerst uitzoeken wat het doel van leren is. En alles is eenvoudig: het aanpassen van de wegingscoëfficiënten van netwerkverbindingen. Een van de meest typische manieren is begeleid leren. Om dit uit te voeren, hebben we een set invoergegevens nodig, evenals de bijbehorende uitvoergegevens. We stellen de wegingscoëfficiënten gelijk aan enkele kleine waarden. En dan verloopt het proces als volgt...

We voeden data aan de netwerkingang, waarna het netwerk de uitgangswaarde berekent. We vergelijken deze waarde met de waarde die we hebben (ik herinner u eraan dat we voor training een kant-en-klare set invoergegevens gebruiken waarvan het uitvoersignaal bekend is) en, in overeenstemming met het verschil tussen deze waarden, passen we de wegingscoëfficiënten aan van het neurale netwerk. En deze bewerking wordt vele malen in een cirkel herhaald. Als resultaat krijgen we een getraind netwerk met nieuwe waarden van wegingscoëfficiënten.

Het lijkt erop dat alles duidelijk is, behalve hoe precies en volgens welk algoritme het nodig is om de waarde van elke specifieke gewichtscoëfficiënt te veranderen. En in het artikel van vandaag over het corrigeren van gewichten zullen we als duidelijk voorbeeld kijken Widrow-Hoff-regel, ook wel genoemd delta-regel.

Deltaregel (Widrow-Hoff-regel).

Laten we de fout definiëren:

Hier hebben we - dit is de verwachte (echte) output van het netwerk, en - dit is de echte output (activiteit) van het outputelement. Naast het uitvoerelement kunnen fouten worden bepaald voor alle elementen van de verborgen laag van het neurale netwerk, we zullen hier later over praten.

De deltaregel is als volgt: de verandering in de waarde van de wegingscoëfficiënt moet gelijk zijn aan:

Waar is de leernorm. Dit aantal stellen wij zelf vast voordat we met de training beginnen. – dit is het signaal dat naar het element komt k van element J. A – elementfout k.

Tijdens het trainingsproces voeren we dus monster na monster in op de netwerkinvoer, en als resultaat verkrijgen we nieuwe waarden van de wegingscoëfficiënten. Normaal gesproken eindigt de training wanneer de foutwaarde voor alle invoermonsters kleiner wordt dan een bepaalde waarde. Hierna wordt het netwerk getest met nieuwe gegevens die niet aan de training hebben deelgenomen. En op basis van de resultaten van deze tests is het al mogelijk om conclusies te trekken of het netwerk zijn taken goed aankan of niet.

Met het aanpassen van de gewichten is alles duidelijk; het blijft nog om te bepalen hoe en volgens welk algoritme de berekeningen zullen plaatsvinden bij het trainen van het netwerk. Laten we eens kijken naar training met behulp van het backpropagation-algoritme.

Backpropagatie-algoritme.

Dit algoritme definieert twee ‘stromen’ in het netwerk. De ingangssignalen bewegen in voorwaartse richting, wat resulteert in een uitgangssignaal waarvan we de foutwaarde krijgen. De omvang van de fout gaat naar omgekeerde richting Hierdoor worden de wegingscoëfficiënten van de netwerkverbindingen aangepast. Aan het einde van het artikel zullen we een voorbeeld bekijken dat deze processen duidelijk demonstreert.

Om de gewichten aan te passen, zullen we dus de deltaregel gebruiken die we al hebben besproken. Het is alleen nodig om een ​​universele regel te definiëren voor het berekenen van de fout van elk netwerkelement nadat het in feite door het element is gegaan (tijdens de terugpropagatie van fouten).

Ik zal waarschijnlijk geen wiskundige conclusies en berekeningen geven (ondanks mijn liefde voor wiskunde 🙂), om het artikel niet te overbelasten, zullen we ons alleen beperken tot de uiteindelijke resultaten:

Een functie is een functie van de activiteit van een element. Laten we hiervoor de logistieke functie gebruiken:

We vervangen het in de vorige formule en krijgen de foutwaarde:

In deze formule:

Zeker nu lijkt dit allemaal nog steeds niet helemaal duidelijk, maar maak je geen zorgen als je erover nadenkt praktisch voorbeeld alles zal op zijn plaats vallen 😉

Laten we er eigenlijk mee verder gaan.

Voordat u het netwerk traint, is het noodzakelijk om de beginwaarden van de gewichten in te stellen - meestal zijn ze klein van formaat willekeurige waarden, bijvoorbeeld uit het interval (-0,5, 0,5). Maar laten we voor ons voorbeeld voor het gemak gehele getallen nemen.

Laten we een neuraal netwerk beschouwen en handmatig berekeningen uitvoeren voor de voorwaartse en achterwaartse “stromen” in het netwerk.

Bij de ingang moeten we een monster verstrekken, laat het zo zijn (0.2, 0.5) . Verwachte netwerkoutput – 0.4 . Laat het leertempo gelijk zijn 0.85 . Laten we alle berekeningen stap voor stap uitvoeren. Ik ben het trouwens helemaal vergeten dat we de logistieke functie als activiteitsfunctie zullen gebruiken:

Dus laten we beginnen...

Laten we de gecombineerde invoer van elementen berekenen 2 , 3 En 4 :

De activiteit van deze elementen is:

Gecombineerde invoer van het vijfde element:

De activiteit van het vijfde element en tegelijkertijd de output van het neurale netwerk is gelijk aan:

We hebben de voorwaartse “stroom” behandeld, laten we nu verder gaan met de omgekeerde “stroom”. We zullen alle berekeningen maken volgens de formules die we al hebben besproken. Laten we dus de fout van het uitvoerelement berekenen:

Dan fouten voor elementen 2 , 3 En 4 zijn respectievelijk gelijk:

Hier zijn de waarden -0.014, -0.028 En -0.056 worden verkregen als gevolg van het doorgeven van de fout van het uitvoerelement - 0.014 langs verzwaarde verbindingen richting de elementen 2 , 3 En 4 respectievelijk.

En ten slotte berekenen we het bedrag waarmee de waarden van de wegingscoëfficiënten moeten worden gewijzigd. Bijvoorbeeld de hoeveelheid aanpassing voor de relatie tussen elementen 0 En 2 gelijk aan het product van de grootte van het signaal dat het element bereikt 2 van element 0 , elementfouten 2 en leernormen (allemaal volgens de deltaregel, die we aan het begin van het artikel bespraken):

We voeren berekeningen op een vergelijkbare manier uit voor de overige elementen:

Nu zullen de nieuwe wegingscoëfficiënten gelijk zijn aan de som van de vorige waarde en de correctiewaarde.

Op dit punt is de omgekeerde doorgang door het netwerk voltooid, het doel is bereikt. 😉 Dit is precies hoe het leerproces verloopt met behulp van het backpropagation-algoritme. We hebben dit proces voor één set gegevens bekeken, en om een ​​volledig getraind netwerk te krijgen moeten er natuurlijk veel meer van dergelijke sets zijn, maar het algoritme blijft ongewijzigd, het wordt eenvoudigweg vele malen in een cirkel herhaald voor verschillende gegevens)

Op verzoek van bloglezers heb ik besloten een kort voorbeeld toe te voegen van het trainen van een netwerk met twee verborgen lagen:

We voegen dus twee nieuwe elementen (X en Y) toe aan ons netwerk, die nu als input zullen fungeren. Wij zorgen ook voor een monster bij de ingang. (0.2, 0.5) . Laten we in dit geval het algoritme bekijken:

1. Directe netwerkpas. Hier is alles precies hetzelfde als voor een netwerk met één verborgen laag. Het resultaat is de waarde.

2. Bereken de fout van het uitvoerelement:

3. Nu moeten we de fouten van elementen 2, 3 en 4 berekenen.

MODERNE INFORMATIETECHNOLOGIEËN/2. Computerwetenschappen en programmeren

Zolotukhina Irina Andreevna, masterstudent

Kostanajski staatsuniversiteit vernoemd naar A. Baitursynov, Kazachstan.

Methoden en algoritmen voor het trainen van neurale netwerken.

Annotatie:Dit artikel analyseert neurale netwerken, waarom ze zo relevant zijn, beschouwt de soorten neurale netwerkalgoritmen en de toepassingsgebieden van netwerken.

Trefwoorden:neuron, perceptron, Rosenblatt-methode, Hebb-methode, generalisatiefout, leerfout, leeralgoritme.

Neurale netwerken(of kunstmatige neurale netwerken) is een van de meest interessante onderzoeksgebieden op dit gebied kunstmatige intelligentie, gebaseerd op de modellering en reproductie van het menselijke zenuwstelsel. Wetenschappers zijn vooral geïnteresseerd in processen als: het vermogen van het zenuwstelsel om te leren, fouten te corrigeren en beslissingen te nemen, waardoor we de werking van het menselijk brein zouden kunnen simuleren.

Kunstmatige neurale netwerken leren door positieve en negatieve invloeden te analyseren. Ze bestaan ​​uit neuronen, die naar analogie van hun biologische prototype een naam krijgen.

Het model van een kunstmatig neuron werd voor het eerst voorgesteld door de Amerikaanse wetenschappers Warren McCulloch en zijn leerling Walter Pitts in 1943.

Afhankelijk van de functies die door neuronen in het netwerk worden uitgevoerd, kunnen drie typen worden onderscheiden:

· invoerneuronen waaraan een vector wordt geleverd die codeert voor een invoereffect of afbeelding van de externe omgeving; ze voeren doorgaans geen computerprocedures uit;

· tussenliggende neuronen die de basis vormen van neurale netwerken, waarbij transformaties worden uitgevoerd volgens uitdrukkingen (1) en (1.1);

· uitgangsneuronen, waarvan de uitgangswaarden de uitgangen van het neurale netwerk vertegenwoordigen; transformaties daarin worden ook uitgevoerd volgens uitdrukkingen (1) en (1.1).

Figuur 1. Structuur van een formeel neuraal netwerk

(1)

y = f(s)(1.1)

Waar

· w ik, – gewicht van de synaps, i = 1...n;

· B– offsetwaarde;

· S– sommatieresultaat;

· X, – component van de invoervector ( ingangssignaal),

· x ik = 1...n;

· bij– neuronuitgangssignaal;

· N– aantal neuroningangen;

· F– niet-lineaire transformatie (activeringsfunctie).

Om signaal in te voeren (S) niet-lineaire converter reageert met een uitgangssignaal f(en), wat de output van het neuron vertegenwoordigt.

Voordelen van de neurale netwerkbenadering bij het oplossen van problemen informatietechnologie in tegenstelling tot anderen (bijvoorbeeld von Neumann-architectuur):

· parallellisme van informatieverwerking;

· uniform en effectief leerprincipe;

· betrouwbaarheid van de werking;

· vermogen om informele problemen op te lossen.

Toepassingen en problemen opgelost door kunstmatige neurale netwerken

Kunstmatige neurale netwerken hebben hun toepassing gevonden op verschillende technologische gebieden. Verdere verbeteringen in computerprestaties worden steeds meer geassocieerd met de ontwikkeling van deze netwerken, in het bijzonder met neurocomputers, die gebaseerd zijn op een kunstmatig neuraal netwerk.

Reeks problemen opgelost door neurale netwerken:

· patroonherkenning;

· spraakherkenning en -synthese;

· beeldherkenning in de lucht- en ruimtevaart;

· signaalverwerking in aanwezigheid van veel ruis;

· voorspellen;

· optimalisatie;

· het voorspellen van koersen en wisselkoersen van effecten;

· preventie van creditcardfraude;

· spel op de beurs;

· spamfiltering;

· taxatie van onroerend goed;

· het beoordelen van de financiële toestand van ondernemingen en het risico dat leningen niet worden terugbetaald;

· radarsignaalverwerking;

· beveiligings- en videobewakingssystemen;

· verkeersleiding op snelwegen en spoorwegen;

· diagnostiek in de geneeskunde;

· beheer van complexe objecten;

· kennis uit halen grote volumes gegevens in zakelijk, financieel en wetenschappelijk onderzoek;

· realtime controle en dat is nog niet alles.

Onderwijs

Training verwijst naar het verbeteren van de systeemprestaties door invoergegevens te analyseren. Bovendien vindt het trainen plaats volgens bepaalde regels.

Er zijn twee hoofdbenaderingen van leren: ‘met een leraar’ en ‘zonder leraar’ (zelflerend). Bij trainen met een leraar het neurale netwerk heeft voor elk de juiste antwoorden (netwerkuitgangen). invoer voorbeeld. Samen worden ze een trainingspaar genoemd. De gewichten worden zo aangepast dat het netwerk antwoorden produceert die zo dicht mogelijk bij de bekende juiste antwoorden liggen, waardoor fouten worden geminimaliseerd. De vectoren van de trainingsset worden opeenvolgend gepresenteerd, fouten worden berekend en de gewichten worden voor elke vector aangepast totdat de fout over de gehele trainingsset een acceptabel niveau bereikt. Ongecontroleerd leren vereist geen kennis van de juiste antwoorden op elk voorbeeld van de trainingssteekproef. In dit geval wordt het onthuld interne structuur gegevens of afhankelijkheden tussen patronen in een gegevenssysteem waarmee patronen kunnen worden gecategoriseerd.

Begeleide opleiding

Veel inputneuronen worden geleverd aan de input van het kunstmatige neurale netwerkX- invoervector voor het getrainde neurale netwerk.

Laten we de foutfunctie definiëren E. Meestal is dit de gemiddelde kwadratische fout,

,

Waar

· P- aantal voorbeelden verwerkt door het neurale netwerk;

· j ik-Uitgang;

· d ik- gewenste (ideale) output van het neurale netwerk.

De procedure voor het trainen van een neuraal netwerk wordt gereduceerd tot de procedure voor het corrigeren van verbindingsgewichten. Het doel van de gewichtscorrectieprocedure is het minimaliseren van de foutfunctie E.

Algemeen schema van training met een leraar:

1 Voordat u met de training begint, worden de gewichtscoëfficiënten op de een of andere manier ingesteld, bijvoorbeeld willekeurig.

2 In de eerste fase worden trainingsvoorbeelden in een bepaalde volgorde aan de input voorgelegd. Bij elke iteratie wordt de fout berekend voor het trainingsvoorbeeld E L(leerfout) en de gewichten worden gecorrigeerd met behulp van een bepaald algoritme. Het doel van de gewichtscorrectieprocedure is om de fout te minimaliseren E L.

3 In de tweede trainingsfase wordt de juiste werking gecontroleerd. Bij de ingang worden ze in een bepaalde volgorde geserveerd. testgevallen. Bij elke iteratie wordt de fout voor het testgeval berekend E G(generalisatiefout is een fout die het getrainde model laat zien bij voorbeelden die niet aan het trainingsproces hebben deelgenomen). Als het resultaat onbevredigend is, worden veel trainingsvoorbeelden aangepast en wordt de trainingscyclus herhaald.

Als na verschillende iteraties van het leeralgoritme de leerfout optreedt E L daalt bijna tot nul, terwijl de generalisatiefout E G aanvankelijk afneemt en vervolgens begint te stijgen, is dit een teken van het omscholingseffect. In dit geval moet de training worden stopgezet.

Figuur 2. Overfitting-effect

Op basis van dit algoritme is neurale netwerktraining gebaseerd op de Rosenblatt-methode.

Rosenblatt-methode

Deze methode werd in de jaren 60 voorgesteld door F. Rosenblatt XX eeuw Voor een neuraal netwerk dat een perceptron wordt genoemd. De perceptron heeft een drempelactiveringsfunctie; het diagram wordt getoond in figuur 1.

Figuur 3. Enkellaags perceptron

De Rosenblatt-trainingsprocedure voor een enkellaags perceptron kan als volgt worden weergegeven:

,

Waar

· x ik- i-de input van het neurale netwerk;

· dj- gewenst (ideaal) J-de output van het neurale netwerk;

· A - coëfficiënt (leersnelheid) 0< A≤1

De wegingscoëfficiënten worden alleen gewijzigd als de werkelijke uitvoerwaarde niet overeenkomt met de ideale uitvoerwaarde. Hieronder vindt u een beschrijving van het perceptron-trainingsalgoritme.

1. We stellen alle gewichten gelijk aan nul.

2. We voeren een cyclus uit waarin we voorbeelden presenteren. Voor elk voorbeeld wordt de volgende procedure uitgevoerd.

2.1. Als het netwerk het juiste antwoord heeft gegeven, ga dan naar stap 2.4.

2.2. Als er een eenheid werd verwacht aan de uitgang van de perceptron, maar er werd een nul ontvangen, dan worden de gewichten van de verbindingen waar het eenheidssignaal doorheen ging met één verminderd.

2.3. Als er een nul werd verwacht aan de uitgang van de perceptron, maar er werd een eenheid ontvangen, dan worden de gewichten van de verbindingen waar een enkel signaal doorheen gaat met één verhoogd.

2.4. Laten we verder gaan met het volgende voorbeeld. Als het einde van de trainingsset is bereikt, ga dan naar stap 3, anders keren we terug naar stap 2.1.

3. Als tijdens de uitvoering van de tweede stap van het algoritme ten minste één keer stap 2.2 of 2.3 is uitgevoerd en er geen looping heeft plaatsgevonden, ga dan verder met stap 2. Anders is de training voltooid.

Dit algoritme heeft geen leerlus-volgmechanisme. Dit mechanisme kan op verschillende manieren worden geïmplementeerd. Het meest economisch in termen van het gebruik van extra geheugen is als volgt.

4. k=1; M=0. We onthouden de gewichten van de verbindingen.

5. Na de cyclus van beeldpresentaties vergelijken we de gewichten van de verbindingen met de onthouden. Als de huidige gewichten samenvallen met de onthouden gewichten, ontstaat er een lus. Ga anders naar stap 3.

6. M=M+1. Als M<k en ga vervolgens verder met de tweede stap.

7. k=2k; M=0. Onthoud de gewichten van de verbindingen en ga verder met stap 2.

Omdat de lengte van de cyclus eindig is, is deze dus voldoende groot k looping zal worden gedetecteerd.

Leren zonder leraar.

Het belangrijkste kenmerk dat leren zonder leraar aantrekkelijk maakt, is de ‘onafhankelijkheid’. Het leerproces bestaat, net als bij begeleid leren, uit het aanpassen van de gewichten van synapsen. Sommige algoritmen veranderen echter de structuur van het netwerk, dat wil zeggen het aantal neuronen en hun relaties, maar dergelijke transformaties zouden beter een bredere term kunnen worden genoemd: zelforganisatie, en ze zullen niet binnen de reikwijdte van dit onderzoek worden beschouwd. artikel. Het is duidelijk dat de aanpassing van synapsen alleen kan worden uitgevoerd op basis van de informatie die beschikbaar is in het neuron, dat wil zeggen de toestand ervan en de reeds bestaande gewichtscoëfficiënten. Op basis van deze overweging en, nog belangrijker, naar analogie met de bekende principes van zelforganisatie van zenuwcellen, werden Hebbiaanse leeralgoritmen geconstrueerd.

In wezen stelde Hebb voor dat de synaptische verbinding tussen twee neuronen wordt versterkt als beide neuronen worden opgewonden. Dit kan worden gezien als de versterking van een synaps volgens de correlatie van de niveaus van exciterende neuronen die door een bepaalde synaps zijn verbonden. Om deze reden wordt het Hebb-leeralgoritme ook wel een correlatie-algoritme genoemd.

Het idee van het algoritme wordt uitgedrukt door de volgende gelijkheid:

,

Waar

· yi(n-1)– uitgangswaarde van het neuron i laag (n-1),

· jj(n)– uitgangswaarde van het neuron J laag N;

· wij(t)en w ij(t-1) is de wegingscoëfficiënt van de synaps die deze neuronen bij iteraties verbindt T En t-1 respectievelijk;

· A– leersnelheidscoëfficiënt.

Er is ook een differentiële Hebbiaanse leermethode, weergegeven door de formule

,(2)

Hier y ik (n-1) (t) En y ik (n-1) (t-1)– uitgangswaarde van respectievelijk neuron i van laag n-1, bij iteraties t en t-1;

y j (n) (t)En y j (n) (t-1)– hetzelfde voor het neuron J laag N.

Zoals uit formule (2) blijkt, leren de synapsen die de neuronen verbinden waarvan de output het meest dynamisch is veranderd in de richting van een toename, het sterkst.

Het volledige leeralgoritme met behulp van de bovenstaande formules ziet er als volgt uit:

1. In de initialisatiefase worden aan alle wegingscoëfficiënten kleine willekeurige waarden toegewezen.

2. Er wordt een invoerbeeld aan de netwerkinvoer geleverd en excitatiesignalen worden over alle lagen verdeeld volgens de principes van klassieke feedforward-netwerken, dat wil zeggen dat voor elk neuron een gewogen som van zijn invoer wordt berekend, waarop de activering ( transfer) functie van het neuron wordt vervolgens toegepast, waardoor de uitgangswaarde wordt verkregen yi(n), i=0...M ik-1, waar M ik– aantal neuronen in een laag i; N=0...N-1, een N– aantal lagen in het netwerk.

3. Op basis van de verkregen uitgangswaarden van neuronen, volgens formule (1) of (2), worden de gewichtscoëfficiënten gewijzigd.

4. Loop vanaf stap 2 totdat de netwerkuitvoerwaarden stabiliseren met de opgegeven nauwkeurigheid. Het gebruik van deze nieuwe methode voor het bepalen van de voltooiing van de training, die verschilt van die gebruikt voor het backpropagatienetwerk, is te wijten aan het feit dat de synapswaarden die kunnen worden aangepast in wezen onbeperkt zijn.

In de tweede stap van de cyclus worden alle beelden uit de invoerset afwisselend gepresenteerd.

Opgemerkt moet worden dat het type reacties op elke klasse invoerbeelden niet van tevoren bekend is en een willekeurige combinatie zal zijn van toestanden van neuronen in de uitvoerlaag, vanwege de willekeurige verdeling van gewichten in de initialisatiefase. Tegelijkertijd kan het netwerk vergelijkbare afbeeldingen generaliseren en in dezelfde klasse indelen. Door het getrainde netwerk te testen, kunt u de topologie van de klassen in de uitvoerlaag bepalen. Om de reacties van het getrainde netwerk tot een handige weergave te brengen, kun je het netwerk aanvullen met één laag, die bijvoorbeeld volgens het trainingsalgoritme van een enkellaags perceptron gedwongen moet worden om de uitgangsreacties van het netwerk in kaart te brengen in de gewenste afbeeldingen.

Opgemerkt moet worden dat onbegeleid leren veel gevoeliger is voor de keuze van optimale parameters dan begeleid leren. Ten eerste hangt de kwaliteit ervan sterk af van de initiële waarden van synapsen. Ten tweede is leren van cruciaal belang voor de keuze van de leerradius en de snelheid waarmee deze verandert. En ten slotte is natuurlijk de aard van de verandering in de leercoëfficiënt zelf erg belangrijk. In dit opzicht zal de gebruiker hoogstwaarschijnlijk voorbereidend werk moeten uitvoeren om optimale netwerktrainingparameters te selecteren.

Ondanks enkele implementatieproblemen hebben onbewaakte leeralgoritmen een wijdverbreide en succesvolle toepassing gevonden. In feite werken de meest complexe kunstmatige neurale netwerken die we vandaag de dag kennen – de cognitron en neocognitron – ook volgens het onbewaakte leeralgoritme. Ze konden heel goed omgaan met de taak om beelden te herkennen die onderhevig zijn aan verplaatsingen in positie, ruis en vormvervorming. De neocognitron kon de taak echter niet aan als het beeld onder een bepaalde hoek werd gedraaid.

Concluderend kunnen we zeggen dat wetenschappers momenteel kunstmatige neurale netwerken en de stabiliteit van bepaalde configuraties onderzoeken, maar dat niet alle problemen door neurale netwerken kunnen worden opgelost. Ondanks het feit dat een kunstmatig neuron een model is van een biologisch neuron, is het verre van perfect en vereist het aanzienlijk werk en nieuwe ontdekkingen op het gebied van kunstmatige intelligentie. Neurale netwerken kunnen niet leren zoals mensen.Op basis van het bovenstaande materiaal is het echter mogelijk om real-life systemen te creëren voor patroonherkenning, informatiecompressie, geautomatiseerde controle, deskundige beoordelingen en nog veel meer.

Literatuur:

1. V.V. Kruglov, V.V. Borisov “Kunstmatige neurale netwerken”, 2002.

2. Rumelhart D.E., Hinton G.E., Williams R.D. Interne representatie leren door foutvoortplanting in parallel gedistribueerde verwerking. – Cambrige: MA: MIT Press, 1986. – 91 p.

Trainen van neurale netwerken

Neurale netwerken worden gebruikt om kennis te vertegenwoordigen. In tegenstelling tot conventionele berekeningen zoekt kennisrepresentatie in neurale netwerken op inhoud in plaats van op adres van de opgeslagen gegevens. Bovendien wordt kennisrepresentatie in neurale netwerken uitgevoerd door middel van benaderende in plaats van absoluut exacte correspondentie. De kennisrepresentatie in neurale netwerken bestaat uit netwerk-, verbindingsgewichten en semantische interpretaties gekoppeld aan knooppuntactivaties. In de context van managementclassificatie is het bijvoorbeeld mogelijk om met behulp van een getraind neuraal netwerk te voorspellen of een klant een nieuw product zal kiezen op basis van numerieke gegevens over de klant, zoals het laatst gekochte merk, interesse in pre-exposure, mogelijkheid voor extra exposure en interesse daarin. Deze attribuutkwantificatoren zijn de input voor het getrainde neurale netwerk. Activering “+1” ontvangen van het neurale netwerk kan erop duiden dat de klant een nieuw product zal kiezen, en “-1” - omgekeerd.

Generalisatie van kennis in neurale netwerken wordt bereikt door middel van training. Het leerproces in neurale netwerken stimuleert gewenste activeringspatronen en blokkeert ongewenste patronen op basis van beschikbare gegevens. Om een ​​zekere generalisatie van kennis in een neuraal netwerk te bereiken, wordt een leeralgoritme ontwikkeld. De foutfunctie die wordt bepaald aan de uitgang van het neurale netwerk, of de energiefunctie die wordt bepaald bij het activeren van netwerkelementen, karakteriseert de kwaliteit van het neurale netwerk bij het generaliseren van kennis. De trainingsdataset moet in dit geval bestaan ​​uit kennisrepresentatiemonsters die op het neurale netwerk moeten worden getraind. Het leeralgoritme werkt door het veranderen van de gewichten (dat wil zeggen de sterkte van verbindingen tussen knooppunten), de output van het neurale netwerk of de structuur van het neurale netwerk, met als doel minimale fouten of energie op basis van de trainingsgegevens.

Er zijn een groot aantal leerparadigma's in neurale netwerksystemen. Begeleid leren (onder toezicht leren) en onbegeleid leren (onbegeleid leren of zelfleren) zijn de twee belangrijkste paradigma's die vaak worden gebruikt bij het ontwerpen van leeralgoritmen. Er is ook sprake van een gemengd paradigma.

In het leerparadigma met de leraar het neurale netwerk heeft voor elk invoervoorbeeld de juiste antwoorden (netwerkuitgangen). Het trainingsproces probeert de "afstand" tussen de werkelijke en gewenste output van het neurale netwerk te minimaliseren. De gewichten worden zo aangepast dat het netwerk antwoorden produceert die zo dicht mogelijk bij de bekende juiste antwoorden liggen. De verbeterde versie van begeleid leren gaat ervan uit dat alleen een kritische beoordeling van de juistheid van de neurale netwerkuitvoer bekend is, maar niet de juiste uitvoerwaarden zelf.

Het tegenovergestelde van begeleid leren is lesgeven zonder leraar. In tegenstelling tot begeleid leren is er geen a priori set van gewenste outputwaarden en is kennis van de juiste antwoorden op elk voorbeeld van de trainingsset niet vereist. Wanneer een dergelijk paradigma wordt gebruikt, worden meerdere invoerpatronen geïmpliceerd. Er wordt aangenomen dat het neurale netwerk tijdens het trainingsproces significante kenmerken van de invoer detecteert (de interne structuur van de gegevens of correlaties tussen monsters in het datasysteem wordt onthuld, wat het mogelijk maakt monsters in categorieën te verdelen). Het neurale netwerk moet zijn eigen representatie van de inputstimuli ontwikkelen zonder de hulp van een leraar.

Bij gemengd Bij training wordt een deel van de gewichten bepaald door begeleid leren, terwijl de rest wordt verkregen door zelfleren.

De leertheorie beschouwt drie fundamentele eigenschappen die verband houden met leren door het goede voorbeeld te geven: capaciteit, monstercomplexiteit en computationele complexiteit.

Capaciteit verwijst naar hoeveel samples het netwerk kan onthouden, en welke functies en beslissingsgrenzen erop kunnen worden gevormd.

De complexiteit van de steekproef bepaalt het aantal trainingsvoorbeelden dat nodig is om het generalisatievermogen van het netwerk te bereiken. Te weinig voorbeelden kunnen ervoor zorgen dat het netwerk ‘overtraind’ raakt, waarbij het goed presteert op voorbeelden uit de trainingsset, maar slecht op testvoorbeelden die onderworpen zijn aan dezelfde statistische verdeling.

Er zijn vier hoofdtypen leerregels: foutcorrectie, Boltzmann-machine, Hebb's regel en competitief leren.

Foutcorrectieregel. Bij begeleid leren krijgt elk invoervoorbeeld een gewenste output d. De werkelijke netwerkuitvoer y valt mogelijk niet samen met de gewenste. Het principe van foutcorrectie tijdens de training is om het signaal (d-y) te gebruiken om de gewichten aan te passen, waardoor een geleidelijke vermindering van de fouten wordt gegarandeerd. Leren vindt alleen plaats als de perceptron een fout maakt. Er zijn verschillende modificaties van dit leeralgoritme bekend.

Boltzmann-opleiding. Vertegenwoordigt een stochastische leerregel die volgt uit informatietheoretische en thermodynamische principes. Het doel van de Boltzmann-training is om de gewichten zo aan te passen dat de toestanden van de zichtbare neuronen voldoen aan de gewenste waarschijnlijkheidsverdeling. Boltzmann-leren kan worden beschouwd als een speciaal geval van foutcorrectie, waarbij fouten worden opgevat als de divergentie van toestandscorrelaties in de twee modi.

De heerschappij van Hebb. De oudste leerregel is het Hebbiaanse leerpostulaat. Hebb baseerde zich op de volgende neurofysiologische observaties: als neuronen aan beide zijden van een synaps gelijktijdig en regelmatig vuren, neemt de sterkte van de synaptische verbinding toe. Een belangrijk kenmerk van deze regel is dat de verandering in synaptisch gewicht alleen afhangt van de activiteit van neuronen die verbonden zijn door een bepaalde synaps. Dit vereenvoudigt de leerketens in VLSI-implementaties aanzienlijk.

Trainen via competitie. In tegenstelling tot het Hebbiaanse leren, waarbij veel outputneuronen tegelijkertijd kunnen vuren, concurreren bij competitief leren de outputneuronen met elkaar om te vuren. Dit fenomeen staat bekend als de ‘winner-take-all’-regel. Soortgelijk leren vindt plaats in biologische neurale netwerken. Leren door concurrentie maakt clustering van invoergegevens mogelijk: vergelijkbare voorbeelden worden door het netwerk gegroepeerd op basis van correlaties en weergegeven als een enkel element.

Tijdens de training worden alleen de gewichten van het ‘winnende’ neuron aangepast. Het effect van deze regel wordt bereikt door het in het netwerk opgeslagen monster (de vector van verbindingsgewichten van het winnende neuron) te veranderen, waardoor het iets dichter bij het invoervoorbeeld komt te liggen. In afb. Figuur 3 geeft een geometrische illustratie van training met behulp van de wedstrijdmethode. De invoervectoren worden genormaliseerd en weergegeven door punten op het oppervlak van een bol. De gewichtsvectoren voor de drie neuronen worden geïnitialiseerd met willekeurige waarden. Hun begin- en eindwaarden na de training zijn gemarkeerd met X in Fig. 3a en 3b respectievelijk. Elk van de drie groepen voorbeelden wordt gedetecteerd door een van de uitgangsneuronen, waarvan de gewichtsvector is afgestemd op het zwaartepunt van de gedetecteerde groep.


Rijst. N.
Een voorbeeld van training waarbij gebruik wordt gemaakt van de competitieve methode: (a) vóór de training; b) na de training

Er kan worden opgemerkt dat het netwerk nooit stopt met leren, tenzij de parameter voor de leersnelheid 0 is. Een invoermonster kan een ander uitvoerneuron activeren in daaropvolgende iteraties in het leerproces. Dit roept de vraag op naar de duurzaamheid van het opleidingssysteem. Het systeem wordt als stabiel beschouwd als geen van de voorbeelden in het trainingsvoorbeeld van categorielidmaatschap verandert na een eindig aantal iteraties van het trainingsproces. Eén manier om stabiliteit te bereiken is door de leersnelheidsparameter geleidelijk te verlagen naar 0. Deze kunstmatige remming van het leren veroorzaakt echter een ander probleem dat plasticiteit wordt genoemd en dat verband houdt met het vermogen om zich aan te passen aan nieuwe gegevens. Deze kenmerken van competitief leren staan ​​bekend als het stabiliteits-plasticiteitsdilemma van Grossberg.

Tabel 2 presenteert verschillende leeralgoritmen en de bijbehorende netwerkarchitecturen (de lijst is niet uitputtend). In de laatste kolom worden de taken vermeld waarvoor elk algoritme kan worden toegepast. Elk leeralgoritme is gericht op een netwerk met een specifieke architectuur en is bedoeld voor een beperkte klasse van taken. Naast de besproken algoritmen moeten nog enkele andere algoritmen worden genoemd:

Adaline en Madaline,

lineaire discriminantanalyse], Sammon-projecties,

hoofdbestanddeel methode/analyse .

Tabel 2. Bekende leeralgoritmen.

Paradigma Leerregel Architectuur Leeralgoritme Taak
Met leraar Foutcorrectie Enkellaags en meerlaags perceptron Perceptron-trainingsalgoritmen Backpropagation Adaline en Madaline
Boltzmann Terugkerend Boltzmann-leeralgoritme Classificatie van afbeeldingen
Heb Lineaire discriminantanalyse Classificatie van gegevensanalysepatronen
Concurrentie Concurrentie Vectorkwantisering Categorisering binnen een klasse Datacompressie
KUNST Netwerk ARTkaart Classificatie van afbeeldingen
Zonder leraar Foutcorrectie Meerlaagse directe voortplanting Sammons projectie Categorisering binnen een klasse Data-analyse
Heb Directe distributie of concurrentie Hoofdcomponentenanalyse Gegevensanalyse Gegevenscompressie
Hopfield-netwerk Associatieve geheugentraining Associatief geheugen
Concurrentie Concurrentie Vectorkwantisering Categorisering Datacompressie
SOM Kohonen SOM Kohonen Categorisatie Gegevensanalyse
KUNST netwerken KUNST1, KUNST2 Categorisering
Gemengd Foutcorrectie en concurrentie RBF-netwerk RBF-leeralgoritme Classificatie van beelden Functiebenadering Voorspelling, controle