Neurale netwerken

Kunstmatige Intelligentie/ Technieken/ Neurale netwerken

Creative Commons License
This work is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International License
.

Inleiding

Dit hoofdstuk bevat algemene informatie over neurale netwerken en is ook de inleiding bij de verdieping neurale netwerken.

In het hoofdstuk machine learning hebben we drie categorieën leerstrategiën besproken, supervised, unsupervised en reinforcement learning. Artificiële of kunstmatige neurale netwerken (ANN) leren vooral via supervised en reinforcement learning. De reden hiervoor is dat neurale netwerken worden ingezet als de relatie tussen de gegevens en de bij een gegeven horende uitkomst, die door de AI applicatie moet worden voorspeld, niet bekend is of te ingewikkeld. Aan de hand van input-output voorbeelden moet het netwerk leren wat de relatie is. Beeldherkenning in de Quickdraw applicatie is al eerder als voorbeeld voor supervised learning aangehaald. AlphaZero (zie afbeelding) is een AI applicatie van het onderzoeksbedrijf DeepMind dat de bordspelen go, shogi en schaken onverslaanbaar kan leren. Bij al deze spellen zijn de regels van het spel precies bekend, alleen zijn het aantal mogelijke patronen zo enorm groot dat de snelste computer niet alle zetten door kan rekenen. Om toch onverslaanbaar te worden is het netwerk getraind door de computer miljoenen keren tegen zichzelf te laten spelen (reinforcement learning).


Figuur 1: Bij schaken deed AlphaZero het al na vier uur beter dan Stockfish; bij shogi deed AlphaZero het na twee uur beter dan Elmo; en bij go had AlphaZero 30 uur nodig om beter te worden dan zijn voorganger AlphaGo die de legendarische speler Lee Sedol in 2016 versloeg. N.B.: elke trainingstap representeert 4,096 bord posities. Bron: DeepMind


Toepassingen

Hieronder zijn enkele standaardtoepassingen van neurale netwerken weergegeven die aanwezig zijn in verschillende computer programma's . Dit is geenszins een uitgebreide lijst van toepassingen van neurale netwerken, maar hopelijk geeft het je een algemeen beeld van de functies en mogelijkheden.


Ontwerp

Kenmerkend voor een neuraal netwerk is dat het ontwerp gebaseerd is op het menselijk brein. De hersenen zijn eigenlijk een soort netwerk van verbindingen tussen neuronen (zenuwcellen). Neuronen zijn met elkaar verbonden door middel van synapsen (de verbindingen) en geven hierover onderling signalen door. De synapsen bij de dendrieten van een neuron vangen signalen op die door het neuron wordt verwerkt tot een signaal dat de synapsen bij de axonen afgeven. Bij het creëren van een nieuwe herinnering of het leren van nieuwe vaardigheden worden verbindingen tussen neuronen opgezet en elke keer als je gelijke of vergelijkbare situaties tegen, wordt deze verbinding sterker gemaakt. Dit is een beknopte en versimpelde uitleg over de werking van het brein, de werkelijkheid is complexer. Daarnaast is ook nog lang niet alles bekend over dit prachtige instrument dat we allemaal bezitten. Binnen de kunstmatige neurale netwerken wordt een neuron een perceptron genoemd en is in 1958 door Rosenblatt ontworpen.


Figuur 2: Grafische representatie van een biologische neuron (links) en een kunstmatige neuron ofwel perceptron (rechts)

Als mens zie je wat en gebruik je je hersens om je waarneming tot een reactie om te zetten. Jouw ogen zien de bal en je handen vangen die bal. Dat je die bal kunt vangen is een vaardigheid die je eerst hebt moeten leren. In de hersenen zijn in het vang proces vele neuronen betrokken. In deep learning wil men iets vergelijkbaars voor elkaar krijgen met een kunstmatig neuraal netwerk. Een input wordt door een verzameling perceptons (ook knopen genoemd) omgezet in een output:


Figuur 3: De verborgen lagen bevatten perceptrons die samen het neurale netwerk vormen.

Het netwerk moet net als de hersenen voldoende worden getraind om een juiste output te kunnen geven.


Verschillende lagen

Als we meer inzoomen krijgen we het de volgende schematische weergave van een AI applicatie:


Figuur 4: Schematische weergave van een verbonden ANN. De invoer in dit netwerk bestaat uit twee elementen. Er zijn twee verborgen lagen, de eerste met drie knopen en de tweede met twee knopen (perceptrons). Er is in dit voorbeeld slechts één output.

Je ziet in de figuur drie verschillende secties typisch voor de opbouw van een neuraal netwerk:

  1. De input layer (invoerlaag):

    De eerste sectie is wat men de input layer noemt. Deze laag kun je beschouwen als de sensoren (b.v. ogen) van het netwerk. De knopen in deze laag (neuronen, perceptrons) vormen de invoer van het netwerk . De knopen uit deze laag krijgen een waarde toebedeeld. Deze waarden kunnen van de gebruiker van de applicatie komen of van de trainer tijdens de training van het netwerk.

  2. De hidden layer (verborgen laag):

    De tweede sectie wordt de hidden layer genoemd en dit de laag is waar ‘the magic happens’. In tegenstelling tot het menselijk brein kunnen geen nieuwe knopen en verbindingen worden aangemaakt in het leerproces. De vorm van de verborgen laag moet voor het trainen door de ontwikkelaar worden bepaald. Wat wel gebeurd is het aanpassen van de sterkte van de verbindingen. Iedere pijl in het schema is een gerichte verbinding tussen knopen. Informatie uit één knoop wordt in de richting van de pijlen doorgegeven aan de volgende knopen. Iedere bij een knoop binnenkomende informatie wordt voorzien van een gewicht. In tegenstelling tot de input layer en de output layer, kunnen er meerdere hidden layers zijn. Wanneer het netwerk complexere taken moet uitvoeren, zoals beeldherkenning, zijn meerdere hidden layers nodig. Het bepalen van de juiste vorm van dit deel van het neurale netwerk is een lastige opgave. Zijn er te weinig knopen of te weinig lagen voor een probleem dan kan het netwerk het niet leren. Maar teveel is ook weer niet goed, het probleem overfitting kan dan makkelijk optreden. Overfitting is het verschijnsel dat er te specifiek voor de trainingsdata wordt geleerd. Een net iets ander datapunt dat wel tot de te leren groep zou moeten horen wordt dan door het netwerk buitengesloten.

  3. De output layer (uitvoerlaag):

    Neuronen die zich in de output layer bevinden, zijn bedoeld om de ‘bevindingen’ van het netwerk op te vangen en het terug te geven aan de gebruiker, vandaar de naam ‘output’.


Perceptron: input → output

De bouwstenen van het netwerk zijn dus de perceptrons ofwel de neuronen ofwel de knopen.


Figuur 5: De gewichten in de perceptron.

De perceptron in het schema hierboven heeft $n$ verschillende inputs $x_{1},\cdots,x_{n}$. $x_{0}$ is een extra input, de bias, die altijd gelijk aan 1 is. De $n+1$ gewichten $w_{0},\cdots,w_{n}$ moeten worden geleerd. Dit aan de hand van de uitvoer die deze perceptron levert.

De output wordt als volgt berekend. Eerst wordt input van de perceptron wordt met behulp van de gewichten via een gewogen optelling omgezet in een som:

$$ \text{Som}=w_{0}+w_{1}\cdot x_{1}+w_{2}\cdot x_{2}+\cdots+w_{n}\cdot x_{n} $$

Vervolgens wordt deze som aangeboden aan een activeringsfunctie . Deze activeringsfunctie bepaalt de uitvoer. Er worden verschillende activeringsfuncties gebruikt, afhankelijk van het probleem wat met de AI applicatie moet worden opgelost.

$$ \text{uitvoer}=\text{activeringsfunctie}(\text{Som}) $$

Als het netwerk wordt getraind met trainingsdata dan worden de gewichten van alle perceptrons in het netwerk zodanig aangepast dat het netwerk na training de trainingsdata voldoende voorspelt. Wat voldoende is, is afhankelijk van de kwaliteit van de trainingsdata en de gewenste nauwkeurigheid van de voorspellingen door het netwerk. De trainingsdata bestaat uit invoer-uitvoer paren, bij een bepaalde invoer hoort een bepaalde uitvoer (b.v. deze tekening hoort bij een kat, de volgende tekening is een huis, ...). In het algemeen moeten de zelfde trainingsdata herhaaldelijk aan het netwerk worden aangeboden. Na iedere herhaling wordt bepaald of de training voldoende is. Zo niet dan worden in de nieuwe ronde eerste de gewichten op een slimme manier aangepast en wordt opnieuw de uitvoer bepaald. Zo'n reeks herhalingen noemt men, net als bij het trainen bij associatie- en clusteranalyse, recursie.

Hoeveel gewichten moeten er in de training van een neuraal netwerk worden bepaald? We kijken in figuur 6 naar het eerdere voorbeeld. Perceptron h11 ontvangt 2 inputs en bevat dan 3 gewichten evenals de knopen h12 en h2. Knoop h21 ontvangt van de vorige laag 3 inputs en bevat dan 4 gewichten evenals knoop h22. De enige uitvoer perceptron ontvangt 2 inputs en bevat dan 3 gewichten. In totaal $3 \times 3 + 2 \times 4 + 1 \times 3 =20$ gewichten. Je ziet, het aantal te bepalen gewichten is al snel groot.


Figuur 6: perceptron h11 ontvangt 2 inputs en bevat dan 3 gewichten, perceptron h21 ontvangt van de vorige laag 3 inputs en bevat dan 4 gewichten. De uitvoer perceptron ontvangt 2 inputs en bevat dan 3 gewichten. In totaal 3×3 + 2×4 + 1×3 = 20 gewichten.

Vragen
  1. Noem drie toepassingsgebieden van neurale netwerken.
    antwoord
    Zie Toepassingen boven in deze paragraaf.
  2. Beschrijf hoe een perceptron tot een output komt.
    antwoord
    Een perceptron ontvangt invoersignalen. Ieder invoersignaal en de bias invoer 1 wordt vermenigvuldigd met de gewichten en opgeteld tot een som. De activeringsfunctie berekent met deze som de uitvoer.
  3. Een plaatje heeft 600x800 beeldpunten. Ieder beeldpunt is een input in een neuraal netwerk. Dit netwerk bevat slechts 1 verborgen laag met 4 knopen en heeft 2 output knopen in de output layer. Hoeveel gewichten bevat dit netwerk?
    antwoord
    Input laag: 600x800 = 48000
    Dus 4 x 480001 = 1930004 gewichten in de verborgen laag
    Iedere output knoop krijgt input van de 4 knopen uit de verborgen laag dus 2 x 5 = 10.
    Dus in totaal 1930014 gewichten.
  4. Teken een netwerk met 3 inputs 2 verborgen lagen met in de eerste verborgen laag 4 knopen in de tweede 3 en twee uitvoer knopen.
    antwoord

  5. Welke lagen worden getraind?
    antwoord
    De verborgen lagen en de output laag.


Ecologische voetafdruk

In vraag 3 hierboven heb je gezien dat er al snel veel parameters geschat moeten worden. Het recursief bepalen van de beste waarden voor parameters is rekenkracht nodig op computers. In de verdieping [Neurale netwerken](https://www.notion.so/N-Neurale-netwerken-a0cfa2a90fc244f98f28bf75a7dd10d9) gaan we op het leren van neurale netwerken in en kun je ervaren dat die rekenkracht al merkbaar is bij kleine projecten. Een computer verbruikt energie en hoe meer een computer moet rekenen hoe hoger het energieverbruik wordt. Er zijn een flink aantal artikelen te vinden op het internet die laten zien dat dat verbruik behoorlijk groot kan zijn. Hoe complexer het neurale netwerk hoe groter het aantal parameters en hoe groter het aantal gegevens moet zijn om die parameters te schatten. Hieronder staan twee artikelen, waarvan wij de informatie niet hebben gecontroleerd, die zorgen over het energieverbruik van AI uitspreken.

In het artikel"It takes a lot of energy for machines to learn – here’s why AI is so power-hungry" wordt verteld wat de oorzaken zijn van het enorme verbruik van energie in AI gebruikt in tekstanalyse. Als voorbeeld wordt het model "Bidirectional Encoder Representations from Transformers (BERT)" gegeven. Om Bert te trainen werden 3,3 miljard woorden uit Engelstalige boeken en Wikipedia artikelen. In een training van BERT moet deze verzameling niet één keer maar wel liefst 40 keer worden gelezen. In vergelijking een kind dat leert praten hoort ongeveer 45 miljoen woorden in de eerste 5 levensjaren, 3,000 keer minder dan BERT. BERT één keer trainen kost net zoveel energie als één persoon verbruikt voor een retourvlucht New York - San Fransisco. En voor dat het juiste model is gevonden zijn vele trainingen nodig. Een zeer accurate opvolger van BERT, genaamd GPT-3 heeft een onderliggend neuraal netwerk met maar liefst 175 miljard parameters en verbruikt nog veel meer energie.

Ook het artikel "AI Can Do Great Things—if It Doesn't Burn the Planet" gaat in op het grote energieverbruik van het trainen van AI. Als eerste voorbeeld geven zij het trainen van een robothand om een Rubricscube op te lossen. Volgens de auteurs hebben hiervoor 1000 desktop computers en een flink aantal computers met veel grafische processors voor het rekenwerk maanden gerekend om de training af te ronden. Een ruwe schatting is dat hier 2.8 gigawatt-uren elektriciteit voor is verbruikt, ongeveer gelijk aan de opwekking van elektriciteit gedurende 1 uur door drie kernenergiecentrales.

Omdat steeds meer organisaties AI modellen maken voor toepassingen binnen deze bedrijven is dit energieverbruik een serieus probleem.

Opdracht (verdiepend)
  1. Hoe betrouwbaar vind jij de informatie die te vinden is in de artikelen. Zoek daarvoor de bronnen bij de beweringen die worden gedaan.
  2. Zijn er artikelen te vinden die oplossingen voor dit probleem aandragen?
  3. Verdieping: Onderzoek het probleem van het energieverbruik van AI diepgaander en schrijf er een essay over volgens de richtlijnen bij de verdieping.

Het grotendeels complete overzicht van neurale netwerken

Om een indruk te geven van de complexiteit van de op dit moment bedachte neurale netwerken tonen we je onderstaande figuur. Het verschil in de netwerken zit in de verbindingen tussen de knopen en de wiskundige manier waarop het signaal wordt doorgegeven naar een volgende knoop. In de verdieping concentreren we ons slechts op de typen perceptron (P), feed forward (FF) en deep feed forward (DFF). Meer uitleg over deze figuur vindt je op de website towardsdatascience.com ).