Diep leren

Voltooid

Opmerking

Zie het tabblad Tekst en afbeeldingen voor meer informatie.

Deep Learning is een geavanceerde vorm van machine learning die probeert de manier te emuleren waarop het menselijk brein leert. De sleutel tot deep learning is het maken van een kunstmatig neuraal netwerk dat elektrochemische activiteit in biologische neuronen simuleert met behulp van wiskundige functies, zoals hier wordt weergegeven.

Biologisch neuraal netwerk Kunstmatig neuraal netwerk
Diagram van een natuurlijk neuraal netwerk. Diagram van een kunstmatig neuraal netwerk.
Neuronen branden in reactie op elektrochemische prikkels. Wanneer het wordt geactiveerd, wordt het signaal doorgegeven aan verbonden neuronen. Elke neuron is een functie die werkt op een invoerwaarde (x) en een gewicht (w). De functie wordt verpakt in een activeringsfunctie die bepaalt of de uitvoer moet worden doorgegeven.

Kunstmatige neurale netwerken bestaan uit meerdere lagen van neuronen- in wezen het definiëren van een diep geneste functie. Deze architectuur is de reden waarom de techniek wordt aangeduid als deep learning en de modellen die door deze techniek worden geproduceerd, worden vaak DNN's ( Deep Neural Networks ) genoemd. U kunt deep neurale netwerken gebruiken voor allerlei soorten machine learning-problemen, waaronder regressie en classificatie, evenals meer gespecialiseerde modellen voor verwerking van natuurlijke taal en computer vision.

Net als bij andere machine learning-technieken die in deze module worden besproken, omvat Deep Learning het aanpassen van trainingsgegevens aan een functie die een label (y) kan voorspellen op basis van de waarde van een of meer functies (x). De functie (f(x)) is de buitenste laag van een geneste functie waarin elke laag van het neurale netwerk functies inkapselt die op x en de gewichtswaarden (w) zijn gekoppeld. Het algoritme dat wordt gebruikt om het model te trainen, omvat iteratief het invoeren van de functiewaarden (x) in de trainingsgegevens door de lagen om uitvoerwaarden voor ŷ te berekenen, het model te valideren om te evalueren hoe ver de berekende ŷ waarden afwijken van de bekende y-waarden (waarmee het foutniveau of verlies in het model wordt gekwantificeerd), en vervolgens de gewichten (w) wijzigt om het verlies te verminderen. Het getrainde model bevat de uiteindelijke gewichtswaarden die resulteren in de meest nauwkeurige voorspellingen.

Voorbeeld: Deep Learning gebruiken voor classificatie

Laten we een voorbeeld bekijken waarin een neuraal netwerkmodel wordt gebruikt om een classificatiemodel voor pinguïnsoorten te definiëren om beter te begrijpen hoe een deep neural network werkt.

Diagram van een neuraal netwerk dat wordt gebruikt om een pinguïnsoort te classificeren.

De functiegegevens (x) bestaan uit enkele metingen van een pinguïn. De metingen zijn met name:

  • De lengte van de rekening van de pinguïn.
  • De diepte van de rekening van de pinguïn.
  • De lengte van de flippers van de pinguïn.
  • Het gewicht van de pinguïn.

In dit geval is x een vector van vier waarden, of wiskundig, x=[x1,x2,x3,x4].

Het label dat we proberen te voorspellen (y) is de soort van de pinguïn en dat er drie mogelijke soorten kunnen zijn:

  • Adelie
  • Ezelspinguïn
  • Chinstrap

Dit is een voorbeeld van een classificatieprobleem waarin het machine learning-model de meest waarschijnlijke klasse moet voorspellen waartoe een observatie behoort. Een classificatiemodel doet dit door een label te voorspellen dat bestaat uit de waarschijnlijkheid voor elke klasse. Met andere woorden, y is een vector van drie waarschijnlijkheidswaarden; één voor elk van de mogelijke klassen: [P(y=0|x), P(y=1|x), P(y=2|x)].

Het proces voor het deducteren van een voorspelde pinguïnklasse met behulp van dit netwerk is:

  1. De functievector voor een pinguïnobservatie wordt ingevoerd in de invoerlaag van het neurale netwerk, die bestaat uit een neuron voor elke x-waarde . In dit voorbeeld wordt de volgende x-vector gebruikt als invoer: [37.3, 16.8, 19.2, 30.0]
  2. De functies voor de eerste laag van neuronen berekenen elk een gewogen som door de x-waarde en het w-gewicht te combineren en door te geven aan een activeringsfunctie die bepaalt of deze voldoet aan de drempelwaarde die moet worden doorgegeven aan de volgende laag.
  3. Elke neuron in een laag is verbonden met alle neuronen in de volgende laag (een architectuur die ook wel een volledig verbonden netwerk wordt genoemd), zodat de resultaten van elke laag worden doorgegeven via het netwerk totdat ze de uitvoerlaag bereiken.
  4. De uitvoerlaag produceert een vector van waarden; in dit geval gebruikt u een softmax of een vergelijkbare functie om de waarschijnlijkheidsverdeling voor de drie mogelijke klassen pinguïn te berekenen. In dit voorbeeld is de uitvoervector: [0.2, 0.7, 0.1]
  5. De elementen van de vector vertegenwoordigen de waarschijnlijkheden voor klassen 0, 1 en 2. De tweede waarde is de hoogste, dus het model voorspelt dat de soort pinguïn 1 (Gentoo) is.

Hoe leert een neuraal netwerk?

De gewichten in een neuraal netwerk zijn centraal in de wijze waarop voorspelde waarden voor labels worden berekend. Tijdens het trainingsproces leert het model de gewichten die resulteren in de meest nauwkeurige voorspellingen. Laten we het trainingsproces eens nader bekijken om te begrijpen hoe deze training plaatsvindt.

Diagram van een neuraal netwerk dat wordt getraind, geëvalueerd en geoptimaliseerd.

  1. De gegevenssets voor training en validatie worden gedefinieerd en de trainingsfuncties worden ingevoerd in de invoerlaag.
  2. De neuronen in elke laag van het netwerk passen hun gewichten toe (die in eerste instantie willekeurig worden toegewezen) en voeren de gegevens via het netwerk in.
  3. De uitvoerlaag produceert een vector met de berekende waarden voor ŷ. Bijvoorbeeld, een uitvoer voor een voorspelling voor de klasse pinguïn kan zijn [0,3. 0,1. 0,6].
  4. Een verliesfunctie wordt gebruikt om de voorspelde ŷ-waarden te vergelijken met de bekende y-waarden en het verschil te aggregeren (dit wordt het verlies genoemd). Als de bekende klasse voor de case die de uitvoer in de vorige stap heeft geretourneerd bijvoorbeeld Chinstrap is, moet de y-waarde[0.0, 0,0, 1,0] zijn. Het absolute verschil tussen deze en de vector ŷ is [0.3, 0.1, 0.4]. In werkelijkheid berekent de verliesfunctie de cumulatieve variantie voor meerdere gevallen en geeft deze een overzicht als één verlieswaarde .
  5. Omdat het hele netwerk in wezen één grote geneste functie is, kan een optimalisatiefunctie differentiële calculus gebruiken om de invloed van elk gewicht in het netwerk op het verlies te evalueren en te bepalen hoe ze kunnen worden aangepast (omhoog of omlaag) om de totale hoeveelheid verlies te verminderen. De specifieke optimalisatietechniek kan variëren, maar meestal omvat een benadering van gradiëntafname waarbij elk gewicht wordt verhoogd of verlaagd om het verlies te minimaliseren.
  6. De wijzigingen in de gewichten worden teruggepropageerd naar de lagen in het netwerk, waarbij de eerder gebruikte waarden worden vervangen.
  7. Het proces wordt herhaald over meerdere iteraties (ook wel epochs genoemd) totdat het verlies wordt geminimaliseerd en het model voorspelt acceptabel nauwkeurig.

Opmerking

Hoewel het gemakkelijker is om elk geval te bedenken in de trainingsgegevens die één voor één via het netwerk worden doorgegeven, worden de gegevens in werkelijkheid in matrices gebatcheerd en verwerkt met behulp van lineaire algebraïsche berekeningen. Daarom wordt neurale netwerktraining het beste uitgevoerd op computers met grafische verwerkingseenheden (GPU's) die zijn geoptimaliseerd voor vector- en matrixmanipulatie.