Een eenvoudig Perceptron neuraal netwerkvoorbeeld gebruiken om gegevens te classificeren
Dit artikel demonstreert de basisfunctionaliteit van een neuraal netwerk van Perceptron en legt het doel van training uit.
Dit artikel maakt deel uit van een serie over neurale netwerken van Perceptron.
Als je vanaf het begin wilt beginnen of vooruit wilt, kun je de andere artikelen hier bekijken:
- Hoe classificatie uitvoeren met behulp van een neuraal netwerk:wat is de Perceptron?
- Een eenvoudig Perceptron neuraal netwerkvoorbeeld gebruiken om gegevens te classificeren
- Een basis Perceptron neuraal netwerk trainen
- Eenvoudige neurale netwerktraining begrijpen
- Een inleiding tot trainingstheorie voor neurale netwerken
- De leersnelheid in neurale netwerken begrijpen
- Geavanceerde machine learning met de meerlaagse Perceptron
- De Sigmoid-activeringsfunctie:activering in meerlaagse Perceptron neurale netwerken
- Een meerlagig Perceptron neuraal netwerk trainen
- Trainingsformules en backpropagation voor meerlaagse perceptrons begrijpen
- Neurale netwerkarchitectuur voor een Python-implementatie
- Hoe maak je een meerlaags Perceptron neuraal netwerk in Python
- Signaalverwerking met behulp van neurale netwerken:validatie in neuraal netwerkontwerp
- Trainingsdatasets voor neurale netwerken:een neuraal netwerk met Python trainen en valideren
Wat is een enkellaags Perceptron?
In het vorige artikel zagen we dat een neuraal netwerk bestaat uit onderling verbonden knooppunten die in lagen zijn gerangschikt. De knooppunten in de invoerlaag distribueren gegevens en de knooppunten in andere lagen voeren sommatie uit en passen vervolgens een activeringsfunctie toe. De verbindingen tussen deze knooppunten worden gewogen, wat betekent dat elke verbinding de overgedragen datum vermenigvuldigt met een scalaire waarde.
Merk op dat deze configuratie een enkellaagse Perceptron wordt genoemd. Ja, ik weet het, het heeft twee lagen (invoer en uitvoer), maar het heeft slechts één laag die rekenknooppunten bevat.
Classificeren met een Perceptron
In dit artikel onderzoeken we de functionaliteit van Perceptron met behulp van het volgende neurale netwerk.
Zoals je kunt zien, is onze invoerdimensionaliteit drie. We kunnen deze Perceptron beschouwen als een hulpmiddel voor het oplossen van problemen in de driedimensionale ruimte. Laten we bijvoorbeeld het volgende probleem voorstellen:Als een punt in de driedimensionale ruimte zich onder de x-as bevindt, komt dit overeen met een ongeldig nulpunt. Als het punt op of boven de x-as ligt, komt het overeen met een geldig nulpunt dat moet worden bewaard voor verdere analyse. We hebben dit neutrale netwerk nodig om onze gegevens te categoriseren, met een uitvoerwaarde van 1 die een geldige datum aangeeft en een waarde van 0 die een ongeldige datum aangeeft.
Eerst moeten we onze driedimensionale coördinaten toewijzen aan de invoervector. Voer in dit voorbeeld0 . in is de x-component, input1 is de y-component, en input2 is de z-component. Vervolgens moeten we de gewichten bepalen. Dit voorbeeld is zo eenvoudig dat we het netwerk niet hoeven te trainen. We kunnen gewoon nadenken over de vereiste gewichten en deze toewijzen:
Het enige dat we nu hoeven te doen, is specificeren dat de activeringsfunctie van het uitvoerknooppunt een eenheidsstap is die als volgt wordt uitgedrukt:
\[f(x)=\begin{cases}0 &x <0\\1 &x \geq 0\end{cases}\]
De Perceptron werkt als volgt:Sinds w1 =0 en w2 =0, de y- en z-componenten leveren geen bijdrage aan de sommatie die wordt gegenereerd door het uitvoerknooppunt. Het enige invoergegeven dat de sommatie beïnvloedt, is de x-component, die ongewijzigd aan het uitvoerknooppunt wordt geleverd omdat w0 =1. Als het punt in de driedimensionale ruimte onder de x-as ligt, is de sommatie van het uitvoerknooppunt negatief en zal de activeringsfunctie deze negatieve waarde omzetten in uitvoer0 =0. Als het punt in de driedimensionale ruimte op of boven de x-as ligt, is de sommatie gelijk aan of groter dan nul, en de activeringsfunctie zet dit om in output0 =1.
Problemen oplossen met een Perceptron
In het vorige gedeelte heb ik onze Perceptron beschreven als een hulpmiddel om problemen op te lossen. Het is je misschien opgevallen dat de Perceptron niet veel problemen oplost—Ik loste het probleem op en gaf de oplossing aan de Perceptron door de vereiste gewichten toe te wijzen.
Op dit punt hebben we een cruciaal neuraal-netwerkconcept bereikt:ik was in staat om het valid/invalid classificatieprobleem snel op te lossen omdat de relatie tussen de invoergegevens en de gewenste uitvoerwaarden heel eenvoudig is. In veel levensechte situaties zou het voor een mens echter buitengewoon moeilijk zijn om een wiskundige relatie te formuleren tussen invoergegevens en uitvoerwaarden. We kunnen invoergegevens verkrijgen en we kunnen overeenkomstige uitvoerwaarden vastleggen of produceren, maar we hebben geen wiskundige route van invoer naar uitvoer.
Een handig voorbeeld is handschriftherkenning. Laten we zeggen dat we afbeeldingen hebben van handgeschreven karakters, en we willen die afbeeldingen categoriseren als "a", "b", "c", enz., zodat we handschrift kunnen omzetten in normale computertekst. Iedereen die weet hoe te schrijven en te lezen, kan invoerafbeeldingen genereren en vervolgens de juiste categorieën aan elke afbeelding toewijzen. Het verzamelen van invoergegevens en bijbehorende uitvoergegevens is dus niet moeilijk. Aan de andere kant zou het buitengewoon moeilijk zijn om naar de input-outputparen te kijken en een wiskundige uitdrukking of algoritme te formuleren die inputbeelden correct zou omzetten in een outputcategorie.
Handschriftherkenning en vele andere signaalverwerkingstaken stellen dus wiskundige problemen voor die mensen niet kunnen oplossen zonder de hulp van geavanceerde hulpmiddelen. Ondanks het feit dat neurale netwerken niet kunnen denken, analyseren en innoveren, stellen ze ons in staat om deze moeilijke problemen op te lossen omdat ze iets kunnen dat mensen niet kunnen, namelijk snel en herhaaldelijk berekeningen uitvoeren met potentieel enorme hoeveelheden numerieke gegevens .
Het netwerk trainen
Het proces waarmee een neuraal netwerk een wiskundig pad van input naar output kan creëren, wordt training genoemd. We geven het netwerk trainingsgegevens die bestaan uit invoerwaarden en bijbehorende uitvoerwaarden, en het past een vaste wiskundige procedure toe op deze waarden. Het doel van deze procedure is om de gewichten van het netwerk geleidelijk aan te wijzigen, zodat het netwerk de juiste uitvoerwaarden kan berekenen, zelfs met invoergegevens die het nog nooit eerder heeft gezien. Het is in wezen het vinden van patronen in de trainingsgegevens en het genereren van gewichten die bruikbare resultaten opleveren door deze patronen toe te passen op nieuwe gegevens.
Het volgende diagram toont de geldige/ongeldige classificatie die hierboven is besproken, maar de gewichten zijn verschillend. Dit zijn gewichten die ik heb gegenereerd door de Perceptron te trainen met 1000 datapunten. Zoals je kunt zien, heeft het trainingsproces de Perceptron in staat gesteld om automatisch de wiskundige relatie te benaderen die ik heb geïdentificeerd door kritisch denken in menselijke stijl.
In het volgende artikel...
Ik heb je de resultaten laten zien van het trainen van deze Perceptron, maar ik heb niets gezegd over hoe ik deze resultaten heb verkregen. Het volgende artikel beschrijft een kort Python-programma dat een enkellaags Perceptron neuraal netwerk implementeert, en ik zal ook mijn trainingsprocedure uitleggen.
Ingebed
- Hoe gebruiken we molybdeen?
- Hoe cloudtechnologie te beveiligen?
- Hoe effectief Azure DevOps gebruiken?
- Netwerkprotocollen
- Hoe analoge in-memory computing power-uitdagingen van edge AI-inferentie kan oplossen
- Hoe het netwerkecosysteem de toekomst van de boerderij verandert
- realloc() Functie in C Library:Hoe te gebruiken? Syntaxis en voorbeeld
- free() Functie in C-bibliotheek:Hoe te gebruiken? Leer met voorbeeld
- Hoe fabrikanten Analytics kunnen gebruiken voor een betere klantervaring
- Gegevens herstellen:NIST's neurale netwerkmodel vindt kleine objecten in dichte afbeeldingen
- Hoe een snijmolen te gebruiken