AI-basisprincipes

Wat is Backpropagation?

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Wat is Backpropagation?

Diepe leer systemen zijn in staat om extreem complexe patronen te leren, en ze doen dit door hun gewichten aan te passen. Hoe worden de gewichten van een diep neuronaal netwerk precies aangepast? Ze worden aangepast door middel van een proces dat backpropagation wordt genoemd. Zonder backpropagation zouden diepe neurale netwerken niet in staat zijn om taken uit te voeren zoals het herkennen van afbeeldingen en het interpreteren van natuurlijke taal. Het begrijpen van hoe backpropagation werkt is essentieel om diepe neurale netwerken in het algemeen te begrijpen, dus laten we backpropagation bespreken en zien hoe het proces wordt gebruikt om de gewichten van een netwerk aan te passen.

Backpropagation kan moeilijk te begrijpen zijn, en de berekeningen die worden gebruikt om backpropagation uit te voeren kunnen vrij complex zijn. Dit artikel zal proberen om u een intuïtief begrip van backpropagation te geven, met zo min mogelijk complexe wiskunde. Echter, enige discussie over de wiskunde achter backpropagation is nodig.

Het Doel van Backpropagation

Laten we beginnen met het definiëren van het doel van backpropagation. De gewichten van een diep neuronaal netwerk zijn de sterkte van de verbindingen tussen eenheden van een neuronaal netwerk. Wanneer het neuronaal netwerk wordt opgericht, worden er aannamen gedaan over hoe de eenheden in een laag zijn verbonden met de lagen die eraan zijn verbonden. Terwijl de gegevens door het neuronaal netwerk stromen, worden de gewichten berekend en worden er aannamen gedaan. Wanneer de gegevens de laatste laag van het netwerk bereiken, wordt een voorspelling gedaan over hoe de kenmerken zijn gerelateerd aan de klassen in de dataset. Het verschil tussen de voorspelde waarden en de werkelijke waarden is de verlies/fout, en het doel van backpropagation is om de verlies te verminderen. Dit wordt bereikt door de gewichten van het netwerk aan te passen, waardoor de aannamen meer overeenkomen met de werkelijke relaties tussen de invoerkenmerken.

Trainen van een Diep Neuronaal Netwerk

Voordat backpropagation kan worden uitgevoerd op een neuronaal netwerk, moet de reguliere/voorwaartse trainingspass van een neuronaal netwerk worden uitgevoerd. Wanneer een neuronaal netwerk wordt gemaakt, wordt een set gewichten geïnitialiseerd. De waarde van de gewichten zal worden gewijzigd terwijl het netwerk wordt getraind. De voorwaartse trainingspass van een neuronaal netwerk kan worden opgevat als drie afzonderlijke stappen: neuronactivatie, neuronautputting en voorwaartse propagatie.

Wanneer we een diep neuronaal netwerk trainen, moeten we gebruik maken van meerdere wiskundige functies. Neuronen in een diep neuronaal netwerk bestaan uit de inkomende gegevens en een activatiefunctie, die bepaalt welke waarde nodig is om de knoop te activeren. De activatiewaarde van een neuron wordt berekend met meerdere componenten, namelijk een gewogen som van de invoer. De gewichten en invoerwaarden zijn afhankelijk van de index van de knopen die worden gebruikt om de activatie te berekenen. Een andere waarde moet worden meegenomen in de berekening van de activatiewaarde, namelijk een biaswaarde. Biaswaarden fluctueren niet, dus ze worden niet vermenigvuldigd met het gewicht en de invoer, maar worden gewoon toegevoegd. Dit betekent dat de volgende vergelijking kan worden gebruikt om de activatiewaarde te berekenen:

Activatie = som(gewicht * invoer) + bias

Nadat de neuron is geactiveerd, wordt een activatiefunctie gebruikt om te bepalen wat de uitvoer van de werkelijke uitvoer van de neuron zal zijn. Verschillende activatiefuncties zijn optimaal voor verschillende leertaak, maar veel gebruikt activatiefuncties zijn de sigmoidfunctie, de Tanh-functie en de ReLU-functie.

Nadat de uitvoer van de neuron is berekend door de activatiewaarde door de gewenste activatiefunctie te voeren, is de voorwaartse propagatie voltooid. Voorwaartse propagatie is simpelweg het nemen van de uitvoer van een laag en deze als invoer voor de volgende laag te gebruiken. De nieuwe invoer wordt vervolgens gebruikt om de nieuwe activatiefuncties te berekenen, en de uitvoer van deze bewerking wordt doorgegeven aan de volgende laag. Dit proces gaat door tot het einde van het neuronaal netwerk.

Backpropagation in het Netwerk

Het proces van backpropagation neemt de finale beslissingen van een modeltraining en bepaalt vervolgens de fouten in deze beslissingen. De fouten worden berekend door de uitvoer/beslissingen van het netwerk te vergelijken met de verwachte/gewenste uitvoer van het netwerk.

Nadat de fouten in de beslissingen van het netwerk zijn berekend, wordt deze informatie teruggepropageerd door het netwerk en worden de parameters van het netwerk aangepast onderweg. De methode die wordt gebruikt om de gewichten van het netwerk bij te werken is gebaseerd op calculus, specifiek op de kettingregel. Echter, een begrip van calculus is niet nodig om het idee achter backpropagation te begrijpen. U moet alleen weten dat wanneer een uitvoerwaarde wordt verstrekt van een neuron, de helling van de uitvoerwaarde wordt berekend met een overdrachtsfunctie, waardoor een afgeleide uitvoer wordt geproduceerd. Wanneer backpropagation wordt uitgevoerd, wordt de fout voor een specifiek neuron berekend volgens de volgende formule:

fout = (verwachte_uitvoer – werkelijke_uitvoer) * helling van neuronuitvoer

Wanneer we werken met de neuronen in de uitvoerlaag, wordt de klassewaarde gebruikt als de verwachte waarde. Nadat de fout is berekend, wordt de fout gebruikt als invoer voor de neuronen in de verborgen laag, wat betekent dat de fout voor deze verborgen laag de gewogen fouten van de neuronen in de uitvoerlaag zijn. De foutberekeningen reizen achterwaarts door het netwerk langs de gewichten van het netwerk.

Nadat de fouten voor het netwerk zijn berekend, moeten de gewichten in het netwerk worden bijgewerkt. Zoals eerder vermeld, houdt het berekenen van de fout het bepalen van de helling van de uitvoerwaarde in. Nadat de helling is berekend, kan een proces dat gradient descent wordt genoemd, worden gebruikt om de gewichten in het netwerk aan te passen. Een gradient is een helling, waarvan de hoek/steilheid kan worden gemeten. De steilheid wordt berekend door “y over” of de “stijging” over de “loop” te plotten. In het geval van het neuronaal netwerk en de foutsnelheid is de “y” de berekende fout, terwijl de “x” de parameters van het netwerk zijn. De parameters van het netwerk hebben een relatie met de berekende foutwaarden, en terwijl de gewichten van het netwerk worden aangepast, neemt de fout toe of af.

“Gradient descent” is het proces van het bijwerken van de gewichten zodat de foutsnelheid afneemt. Backpropagation wordt gebruikt om de relatie tussen de parameters van het neuronaal netwerk en de foutsnelheid te voorspellen, waardoor het netwerk wordt ingesteld voor gradient descent. Het trainen van een netwerk met gradient descent houdt het berekenen van de gewichten door middel van voorwaartse propagatie, het terugpropageren van de fout en het bijwerken van de gewichten van het netwerk in.

Blogger en programmeur met specialisaties in Machine Learning en Deep Learning onderwerpen. Daniel hoopt anderen te helpen de kracht van AI te gebruiken voor het sociale goede.