Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Equipment >> Industriële robot

Bias-knooppunten opnemen in uw neurale netwerk

Dit artikel laat zien hoe u bias-waarden kunt toevoegen aan een meerlaagse Perceptron die is geïmplementeerd in een programmeertaal op hoog niveau, zoals Python.

Welkom bij de All About Circuits-serie over neurale netwerken, gemaakt door technisch directeur Robert Keim. Voordat u doorgaat met deze les over bias-knooppunten, kunt u overwegen om de rest van de onderstaande serie in te halen:

  1. Hoe classificatie uitvoeren met behulp van een neuraal netwerk:wat is de Perceptron?
  2. Een eenvoudig Perceptron neuraal netwerkvoorbeeld gebruiken om gegevens te classificeren
  3. Een basis Perceptron neuraal netwerk trainen
  4. Eenvoudige neurale netwerktraining begrijpen
  5. Een inleiding tot trainingstheorie voor neurale netwerken
  6. De leersnelheid in neurale netwerken begrijpen
  7. Geavanceerde machine learning met de meerlaagse Perceptron
  8. De Sigmoid-activeringsfunctie:activering in meerlaagse Perceptron neurale netwerken
  9. Een meerlagig Perceptron neuraal netwerk trainen
  10. Trainingsformules en backpropagation voor meerlaagse perceptrons begrijpen
  11. Neurale netwerkarchitectuur voor een Python-implementatie
  12. Hoe maak je een meerlaags Perceptron neuraal netwerk in Python
  13. Signaalverwerking met behulp van neurale netwerken:validatie in neuraal netwerkontwerp
  14. Trainingsdatasets voor neurale netwerken:een neuraal netwerk met Python trainen en valideren
  15. Hoeveel verborgen lagen en verborgen knooppunten heeft een neuraal netwerk nodig?
  16. De nauwkeurigheid van een neuraal netwerk met verborgen lagen vergroten
  17. Bias-knooppunten opnemen in uw neurale netwerk

Bias-knooppunten, die kunnen worden toegevoegd aan de invoerlaag of verborgen laag van een Perceptron, produceren een constante waarde die wordt gekozen door de ontwerper.

We hebben bias-waarden besproken in deel 11, en ik moedig je aan om het relevante gedeelte van dat artikel te lezen (of opnieuw te lezen) als je niet duidelijk bent over wat bias-knooppunten zijn of hoe ze de functionaliteit van een neuraal netwerk wijzigen en mogelijk verbeteren.

In dit artikel zal ik eerst twee methoden uitleggen om bias-waarden in uw netwerkarchitectuur op te nemen, en daarna zullen we een experiment uitvoeren om te zien of bias-waarden de nauwkeurigheidsprestaties kunnen verbeteren die we in het vorige artikel (deel 16) hebben verkregen.

Vooringenomenheid opnemen via de spreadsheet

Het volgende diagram toont een netwerk met een bias-knooppunt in de invoerlaag, maar niet in de verborgen laag.

Als dit de configuratie is die u zoekt, kunt u een biaswaarde toevoegen met behulp van de spreadsheet die uw trainings- of validatiegegevens bevat.

Het voordeel van deze methode is simpelweg dat er geen substantiële codewijzigingen nodig zijn. De eerste stap is om een ​​kolom in uw spreadsheet in te voegen en deze te vullen met uw bias-waarde:

Nu hoeft u alleen nog maar de dimensionaliteit van uw invoerlaag met één te vergroten:

Bias integreren in de code

Als je een bias-knooppunt in de verborgen laag wilt, of als je niet graag met spreadsheets werkt, heb je een andere oplossing nodig.

Laten we aannemen dat we een bias-knooppunt willen toevoegen aan zowel de invoerlaag als de verborgen laag. Eerst moeten we I_dim . verhogen en H_dim , aangezien het ons doel is om de bias-knooppunten zo te integreren dat ze functioneren als normale knooppunten, maar met een vooraf gewogen waarde die door de ontwerper wordt gekozen en die nooit verandert.

Ik doe dit als volgt:


Het invoerlaag-biasknooppunt maken

Zoals u zich wellicht herinnert, gebruiken we de volgende code om de trainingsgegevensset samen te stellen, de doeluitvoerwaarden te scheiden en het aantal trainingsvoorbeelden te extraheren.

Na deze uitspraken, het aantal kolommen in de tweedimensionale array training_data zal gelijk zijn aan het aantal invoerkolommen in het werkblad. We moeten het aantal kolommen met één verhogen om rekening te houden met het bias-knooppunt in de invoerlaag, en terwijl we toch bezig zijn, kunnen we deze extra kolom vullen met de gewenste bias-waarde.

De volgende code laat zien hoe dit kan.


De np.ones() functie maakt een array met één kolom waarvan het aantal rijen gelijk is aan training_count , en het wijst een waarde van +1 toe aan elk element in deze array. Dan gebruiken we de np.hstack() functie om de array met één kolom toe te voegen aan de rechterkant van de originele training_data array.

Merk op dat ik deze procedure heb uitgevoerd voor zowel de trainingsgegevens als de validatiegegevens. Het is belangrijk om te onthouden dat het doel niet echt is om de trainings- of validatiegegevens te wijzigen; in plaats daarvan wijzigen we de gegevens om de gewenste netwerkconfiguratie te implementeren.

Als we naar een blokdiagram van de Perceptron kijken, verschijnen de bias-knooppunten als elementen van het netwerk zelf; dus alle monsters die door het netwerk worden verwerkt, moeten deze wijziging ondergaan.

Het Hidden-Layer Bias-knooppunt maken

We kunnen een bias toevoegen aan de feedforward-verwerking door de for-lus te wijzigen die de postactivatiewaarden van de verborgen laag berekent en vervolgens handmatig de biaswaarde in te voegen voor het laatste verborgen knooppunt (wat eigenlijk een bias-knooppunt is).

De eerste wijziging wordt hieronder getoond:


Als het netwerk is geconfigureerd om geen bias-knooppunt voor verborgen lagen te hebben, hidden_bias is gelijk aan 0 en de uitvoering van de for-lus is ongewijzigd.

Als we daarentegen hebben besloten om een ​​bias-knooppunt met verborgen laag op te nemen, berekent de for-lus geen postactiveringswaarde voor het laatste knooppunt in de laag (d.w.z. het bias-knooppunt).

De volgende stap is om de knooppuntvariabele te verhogen zodat deze toegang krijgt tot het biasknooppunt in de postActivation_H array, en wijs vervolgens de bias-waarde toe.

Merk op dat deze wijzigingen ook moeten worden toegepast op het validatiegedeelte van de code.

Bias-waarden anders dan +1

In mijn ervaring is +1 de standaard bias-waarde en ik weet niet of er een solide rechtvaardiging is voor het gebruik van andere nummers. De bias wordt aangepast door gewichten, dus het kiezen van +1 legt geen strikte beperkingen op aan de manier waarop de bias samenwerkt met de algehele functionaliteit van het netwerk.

Als u echter met andere biaswaarden wilt experimenteren, kunt u dat eenvoudig doen. Voor de verborgen bias, verander je gewoon het nummer dat is toegewezen aan postActivation_H[node] . Voor de invoerbias kun je de nieuwe_kolom . vermenigvuldigen array (die aanvankelijk +1 heeft voor elk element) met de gewenste biaswaarde.

Het effect van bias testen

Als je Deel 16 hebt gelezen, weet je dat mijn Perceptron wat moeite had met het classificeren van de monsters in Experiment 3, wat het probleem van de "hoge complexiteit" was.

Laten we eens kijken of de toevoeging van een of meer bias-knooppunten een consistente en significante verbetering biedt.

Mijn veronderstelling was dat verschillen in classificatienauwkeurigheid vrij subtiel zouden zijn, dus voor dit experiment nam ik gemiddeld tien runs in plaats van vijf. De trainings- en validatiegegevenssets zijn gegenereerd met behulp van dezelfde zeer complexe relatie tussen invoer en uitvoer, en de dimensie van de verborgen laag was 7.

Dit zijn de resultaten:

Conclusie

Zoals je kunt zien, hebben de bias-knooppunten niet geleid tot een significante verandering in de classificatieprestaties.

Dit verbaast me eigenlijk niet:ik denk dat bias-knooppunten soms een beetje overdreven worden benadrukt, en gezien de aard van de invoergegevens die ik in dit experiment heb gebruikt, zie ik geen reden waarom bias-knooppunten zouden helpen.

Desalniettemin is biasing een belangrijke techniek in sommige toepassingen; het is een goed idee om code te schrijven die bias-node-functionaliteit ondersteunt, zodat deze er is wanneer je hem nodig hebt.


Industriële robot

  1. Je gameplan heroverwegen voor netwerkmonitoring
  2. Hoe u uw apparaten kunt beveiligen om cyberaanvallen te voorkomen
  3. Een draadloos sensornetwerk in uw huis bouwen
  4. Lokale minima in neurale netwerktraining begrijpen
  5. De nauwkeurigheid van een neuraal netwerk met verborgen lagen vergroten
  6. Hoeveel verborgen lagen en verborgen knooppunten heeft een neuraal netwerk nodig?
  7. Het beheer van reserveonderdelen integreren in uw CMMS
  8. [Interview] Experts uit de branche over het kiezen van uw IoT-netwerk
  9. Hoe u robotica succesvol kunt integreren in uw faciliteit
  10. Uw supply chain transformeren in een kansencentrum
  11. Hoe veilig is uw winkelvloernetwerk?