Neurale netwerken

Hallo wereld. Dit keer ga ik jullie een inleiding geven in de wereld van neurale netwerken en machine learning.

Kunstmatige neurale netwerken zijn een onderdeel van machine learning en een van de belangrijkste programmeer constructies bij het analyseren van data. Ze zijn gebaseerd op biologische neurale netwerken, en stellen een programma in staat te leren op een vergelijkbare manier als wij dit doen. Dit is een krachtig concept. We hebben dan namelijk niet meer te maken met een programma dat wij stap voor stap moeten vertellen wat het moet doen en hoe het dat moet doen. In plaats daarvan hoeven we het neurale netwerk alleen een doel te geven en wat trainingsdata, en daarna leert het zelf om dit doel te bereiken. Afhankelijk van het type en formaat van het gebruikte netwerk en de verwerkingskracht van het systeem kan zo’n systeem dan dingen leren die wij nooit op de gebruikelijke manier hadden kunnen programmeren. Hoe schrijf je nou bijvoorbeeld een programma dat het verschil tussen het plaatje van een hond en een kat kan zien?

Hoe werkt het? Net zoals in het brein wordt er gebruik gemaakt van neuronen en verbindingen tussen die neuronen om input en output te regelen. De neuronen in kunstmatige neurale netwerken zijn echter versimpeld tot knooppunten met een aantal parameters die gevarieerd kunnen worden om het gedrag van het netwerk aan te passen.

Waarschuwing: Er komt wiskunde aan. Wil je een beetje begrijpen hoe neurale netwerken werken dan kom je daar niet omheen. Wordt echter niet al te bang, zolang je maar een beetje basiskennis van algebra hebt (variabelen, optellen, vermenigvuldigen etc.) moet je het verhaal goed kunnen volgen. Kennis van Lineaire algebra en Calculus zou ook helpen, maar ik zal linken naar wat je hiervan moet weten.

Perceptron

Een perceptron is een type kunstmatig neuron. Het neemt een aantal inputs x genereert op basis daarvan een binaire output (een 0 of een 1). Hierbij is x dikgedrukt omdat het een vector is. Om dat te doen heeft het een aantal parameters, namelijk een serie van “weights” w voor elke input x en een treshold (drempel). De weights bepalen hoe sterk de inputs x worden meegerekend en de treshold bepaalt hoe moeilijk het perceptron vuurt (een 1 genereert). Het gedrag van het perceptron kan dan beschreven worden met de volgende formule:

In de formule hierboven wordt een sommatie gebruikt. Mocht je dit niets zeggen en is de formule Chinees voor je, klik dan op de link. Maar deze formule is nog een beetje onhandig gedefinieerd. In plaats van de sommatie gebruiken we liever gewoon het inproduct. En in plaats van de treshold gebruiken we liever een bias b, die gedefinieerd is als de negatieve waarde van de treshold. Als een treshold aangeeft hoe moeilijk een perceptron vuurt, dan geeft de bias dus aan hoe makkelijk hij vuurt. Dan kunnen we de formule als volgt herschrijven.

Volg je me nog? Zo niet, stel gerust een vraag in de reacties of stuur me een email. Of bekijk gewoon de bronnen die ik gebruikt hebt en kijk of je er daarmee wel uit komt. Daarin wordt alles uitgebreider uitgelegd.

Wat is nou het nut van zo’n perceptron? Nu door de waardes van w en b te varieren krijgen we nu verschillende outputs voor de zelfde waardes van x. Een netwerk van deze perceptrons kan dus “leren” door de juiste waardes van w en b te vinden, de waardes die het netwerk het gewenste gedrag zo goed mogelijk laten benaderen. Ofwel de juiste output bij een gegeven input, bijvoorbeeld het antwoord hond (output) bij een plaatje van een hond (input).

Antwoord: Muis

Hoe doet zo’n netwerk dat? Nou, dit kan op verschillende manieren. De meest interessante en meest gebruikte manier daarvoor is waarschijnlijk deep learning. Echter, hiervoor wordt niet gebruikt van perceptrons maar van sigmoid neurons. Sigmoid neuronen lijken heel veel op perceptrons, maar in tegenstelling tot perceptrons hebben sigmoid neurons geen binaire maar een reële output die kan variëren van 0 tot 1. Dit zorgt ervoor dat het gedrag veel beter gefinetuned kan worden.

 

Ik zelf heb gebruikt gemaakt van een genetisch algoritme in mijn projecten: Text-Color-Learning en Dodger-AI. Wat voor leermethode je ook gebruikt, het is in principe gewoon een optimaliseringsprobleem.

Pfoe, wat een termen allemaal! Heeft dit meer vragen opgeleverd dan antwoorden? Nou, dat is ook mooi, toch? Om in een bericht uit te leggen hoe neurale netwerken en machine learning werkt is een beetje teveel gevraagd ben ik bang. Ik hoop echter dat je het een beetje hebt kunnen volgen en het interessant vond. Zo niet, laat het me weten. Zowel, laat het me ook weten. Dat is alles voor nu,

Tot de volgende keer!

Bronnen

http://neuralnetworksanddeeplearning.com/index.html

https://en.wikipedia.org/wiki/Artificial_neural_network

 

 

 

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd.