Kunstmatig neuraal netwerk | een soort computersoftware, geïnspireerd op biologische neuronen
Een neuraal netwerk (ook wel ANN of kunstmatig neuraal netwerk genoemd) is een soort computersoftware, geïnspireerd op biologische neuronen. Biologische hersenen zijn in staat moeilijke problemen op te lossen, maar elk neuron is slechts verantwoordelijk voor het oplossen van een zeer klein deel van het probleem. Op dezelfde manier bestaat een neuraal netwerk uit cellen die samenwerken om een gewenst resultaat te produceren, hoewel elke individuele cel slechts verantwoordelijk is voor het oplossen van een klein deel van het probleem. Dit is één methode om kunstmatig intelligente programma's te maken.
Neurale netwerken zijn een voorbeeld van machinaal leren, waarbij een programma kan veranderen terwijl het leert om een probleem op te lossen. Een neuraal netwerk kan worden getraind en met elk voorbeeld worden verbeterd, maar hoe groter het neuraal netwerk, hoe meer voorbeelden het nodig heeft om goed te presteren; in het geval van deep learning zijn vaak miljoenen of miljarden voorbeelden nodig.
Overzicht
Een neuraal netwerk modelleert een netwerk van neuronen, zoals die in het menselijk brein. Elk neuron voert eenvoudige wiskundige bewerkingen uit: het ontvangt gegevens van andere neuronen, wijzigt ze en stuurt ze naar andere neuronen. Neuronen worden in "lagen" geplaatst: een neuron van een laag ontvangt gegevens van de neuronen van andere lagen, wijzigt deze en zendt gegevens naar de neuronen van andere lagen. Een neuraal netwerk bestaat uit één of meer lagen.
De eerste laag wordt de "inputlaag" genoemd en ontvangt gegevens van de buitenwereld (bijvoorbeeld: een afbeelding of tekst). De laatste laag wordt de "uitgangslaag" genoemd. De gegevens van de neuronen in de uitgangslaag worden gelezen en gebruikt als uitgang van het netwerk. De andere lagen worden de "verborgen lagen" genoemd.
In een eenvoudig "feed-forward" netwerk zijn de gegevens die de neuronen verwerken getallen. Elk neuron maakt een gewogen som van de waarde van de neuronen van de vorige laag (wiskundige functie toe op deze waarde, die de "activeringsfunctie" wordt genoemd. De activeringsfunctie is gewoonlijk een functie die een waarde tussen 0 en 1 oplevert, zoals tanh. Het resultaat van de activeringsfunctie ( in de onderstaande vergelijking) wordt vervolgens naar de neuronen van de volgende laag gestuurd.
in de onderstaande vergelijking). Vervolgens wordt daar een constante waarde aan toegevoegd (de "bias" genoemd). Ten slotte past het een
Voor het netwerk wordt een verliesfunctie gedefinieerd. De verliesfunctie probeert in te schatten hoe goed het neurale netwerk het doet in zijn toegewezen taak. Ten slotte wordt een optimalisatietechniek toegepast om de output van de kostenfunctie te minimaliseren door de gewichten en biases van het netwerk te wijzigen. Dit proces wordt training genoemd. Training gebeurt stap voor stap. Na duizenden stappen is het netwerk doorgaans in staat om de toegewezen taak vrij goed uit te voeren.
Voorbeeld
Denk aan een programma dat controleert of een persoon in leven is. Het controleert twee dingen - de polsslag en de ademhaling. Als een persoon een hartslag heeft of ademt, geeft het programma "levend", anders "dood". In een programma dat niet na verloop van tijd leert, zou dit worden geschreven als:
functie isAlive(pols, ademhaling) { if(pols || ademhaling) { return true; } else { return false; } }
Een zeer eenvoudig neuraal netwerk, bestaande uit slechts één neuron dat hetzelfde probleem oplost, ziet er als volgt uit:
De waarden voor polsslag, ademhaling en leven zijn 0 of 1, wat staat voor vals en waar. Dus, als dit neuron de waarden (0,1), (1,0) of (1,1) krijgt, moet het 1 uitzenden, en als het (0,0) krijgt, moet het 0 uitzenden. Het neuron doet dit door een eenvoudige wiskundige bewerking toe te passen op de invoer - het telt de waarden die het heeft gekregen bij elkaar op, en voegt dan zijn eigen verborgen waarde toe, die een "bias" wordt genoemd. Om te beginnen is deze verborgen waarde willekeurig, en we passen hem na verloop van tijd aan als het neuron niet de gewenste output geeft.
Als wij waarden zoals (1,1) bij elkaar optellen, kunnen wij uitkomen op getallen groter dan 1, maar wij willen dat onze output tussen 0 en 1 ligt! Om dit op te lossen, kunnen wij een functie toepassen die onze feitelijke output beperkt tot 0 of 1, zelfs als het resultaat van de wiskunde van het neuron niet binnen het bereik lag. In ingewikkelder neurale netwerken passen wij een functie (zoals sigmoïde) toe op het neuron, zodat de waarde ervan tussen 0 en 1 ligt (zoals 0,66), en dan geven wij deze waarde door aan het volgende neuron, totdat wij onze output nodig hebben.
Leermethoden
Er zijn drie manieren waarop een neuraal netwerk kan leren: leren onder toezicht, leren zonder toezicht en leren met versterking. Deze methoden werken allemaal door het minimaliseren of maximaliseren van een kostenfunctie, maar elke methode is beter in bepaalde taken.
Onlangs heeft een onderzoeksteam van de Universiteit van Hertfordshire, Verenigd Koninkrijk, gebruik gemaakt van reinforcement learning om een iCub humanoïde robot eenvoudige woorden te laten leren zeggen door te brabbelen.
Vragen en antwoorden
V: Wat is een neuraal netwerk?
A: Een neuraal netwerk (ook ANN of kunstmatig neuraal netwerk genoemd) is een soort computersoftware, geïnspireerd op biologische neuronen. Het bestaat uit cellen die samenwerken om een gewenst resultaat te bereiken, hoewel elke individuele cel slechts verantwoordelijk is voor het oplossen van een klein deel van het probleem.
V: Hoe verhoudt een neuraal netwerk zich tot biologische hersenen?
A: Biologische hersenen zijn in staat moeilijke problemen op te lossen, maar elk neuron is slechts verantwoordelijk voor het oplossen van een zeer klein deel van het probleem. Evenzo bestaat een neuraal netwerk uit cellen die samenwerken om een gewenst resultaat te bereiken, hoewel elke individuele cel slechts verantwoordelijk is voor het oplossen van een klein deel van het probleem.
V: Welk type programma kan kunstmatig intelligente programma's maken?
A: Neurale netwerken zijn een voorbeeld van machinaal leren, waarbij een programma kan veranderen terwijl het leert om een probleem op te lossen.
V: Hoe kunt u met elk voorbeeld trainen en verbeteren om deep learning te gebruiken?
A: Een neuraal netwerk kan met elk voorbeeld worden getraind en verbeterd, maar hoe groter het neuraal netwerk, hoe meer voorbeelden het nodig heeft om goed te presteren; in het geval van deep learning zijn vaak miljoenen of miljarden voorbeelden nodig.
V: Wat is er nodig om deep learning succesvol te laten zijn?
A: Om deep learning succesvol te laten zijn, hebt u miljoenen of miljarden voorbeelden nodig, afhankelijk van de grootte van uw neuraal netwerk.
V: Hoe verhoudt machinaal leren zich tot het creëren van kunstmatig intelligente programma's?
A: Machinaal leren houdt verband met het maken van kunstmatig intelligente programma's omdat het programma's in staat stelt te veranderen terwijl ze leren hoe ze problemen moeten oplossen.