Wat zijn neurale netwerken?
Neurale netwerken, ook bekend als kunstmatige neurale netwerken (ANN’s) of gesimuleerde neurale netwerken (SNN’s), zijn een subset van machine learning en vormen de kern van deep learning-algoritmen. Hun naam en structuur zijn geïnspireerd op het menselijk brein, en bootsen de manier na waarop biologische neuronen signalen aan elkaar doorgeven.
Kunstmatige neurale netwerken (ANN’s) bestaan uit een knooppuntlaag, die een inputlaag, een of meer verborgen lagen, en een outputlaag bevat. Elke node, of kunstmatige neuron, staat in verbinding met een andere en heeft een bijbehorend gewicht en drempelwaarde. Als de output van een individuele node boven de gespecificeerde drempelwaarde ligt, wordt die node geactiveerd en worden gegevens naar de volgende laag van het netwerk gestuurd. Zo niet, dan worden er geen gegevens doorgegeven aan de volgende laag van het netwerk.
Neuraal netwerken zijn afhankelijk van trainingsgegevens om te leren en hun nauwkeurigheid in de loop der tijd te verbeteren. Als deze leeralgoritmen eenmaal nauwkeurig zijn afgesteld, zijn het krachtige hulpmiddelen in de computerwetenschap en kunstmatige intelligentie, waarmee we in hoog tempo gegevens kunnen classificeren en clusteren. Taken op het gebied van spraakherkenning of beeldherkenning kunnen minuten duren in plaats van uren, vergeleken met de handmatige identificatie door menselijke deskundigen. Een van de bekendste neurale netwerken is het zoekalgoritme van Google.
Hoe werken neurale netwerken?
Denk aan elk individueel knooppunt als zijn eigen lineaire regressiemodel, bestaande uit invoergegevens, gewichten, een bias (of drempel), en een uitvoer. De formule zou er ongeveer zo uitzien:
Als eenmaal een invoerlaag is bepaald, worden gewichten toegewezen. Deze gewichten helpen bij het bepalen van het belang van een bepaalde variabele, waarbij grotere variabelen een grotere bijdrage leveren aan de uitvoer in vergelijking met andere ingangen. Alle inputs worden vervolgens vermenigvuldigd met hun respectieve gewichten en vervolgens bij elkaar opgeteld. Daarna wordt de output door een activeringsfunctie geleid, die de output bepaalt. Als die output een bepaalde drempel overschrijdt, wordt de node “geactiveerd” en worden de gegevens doorgegeven aan de volgende laag in het netwerk. Het resultaat is dat de output van een node de input van de volgende node wordt. Dit proces van gegevens doorgeven van de ene laag naar de volgende definieert dit neurale netwerk als een feedforward netwerk.
Laten we eens uitsplitsen hoe een enkele node eruit zou kunnen zien met behulp van binaire waarden. We kunnen dit concept toepassen op een concreter voorbeeld, bijvoorbeeld of je moet gaan surfen (Ja: 1, Nee: 0). De beslissing om te gaan of niet te gaan is onze voorspelde uitkomst, of y-hat. Laten we aannemen dat er drie factoren van invloed zijn op je beslissing:
- Zijn de golven goed? (Ja: 1, Nee: 0)
- Is de line-up leeg? (Ja: 1, Nee: 0)
- Is er onlangs een haaienaanval geweest? (Ja: 0, Nee: 1)
Nemen we vervolgens het volgende aan, dan krijgen we de volgende ingangen:
- X1 = 1, omdat de golven pompen
- X2 = 0, omdat het druk is
- X3 = 1, omdat er geen recente haaienaanval is geweest
Nu moeten we enkele gewichten toekennen om het belang te bepalen. Grotere gewichten geven aan dat bepaalde variabelen van groter belang zijn voor de beslissing of uitkomst.
- W1 = 5, omdat grote golven niet vaak voorkomen
- W2 = 2, omdat u gewend bent aan de drukte
- W3 = 4, omdat u bang bent voor haaien
Ten slotte gaan we ook nog uit van een drempelwaarde van 3, wat zich zou vertalen in een vertekeningswaarde van -3. Met alle verschillende inputs kunnen we waarden in de formule invoeren om de gewenste output te krijgen.
Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6
Als we de activeringsfunctie uit het begin van dit hoofdstuk gebruiken, kunnen we bepalen dat de output van dit knooppunt 1 zou zijn, omdat 6 groter is dan 0. In dit geval zou je gaan surfen; maar als we de gewichten of de drempelwaarde aanpassen, kunnen we andere uitkomsten van het model bereiken. Wanneer we één beslissing waarnemen, zoals in het bovenstaande voorbeeld, kunnen we zien hoe een neuraal netwerk steeds complexere beslissingen zou kunnen nemen, afhankelijk van de output van eerdere beslissingen of lagen.
In het bovenstaande voorbeeld hebben we perceptrons gebruikt om wat van de wiskunde die hier speelt te illustreren, maar neurale netwerken maken gebruik van sigmoïde neuronen, die zich onderscheiden doordat ze waarden tussen 0 en 1 hebben. Omdat neurale netwerken zich net zo gedragen als beslisbomen, waarbij gegevens van het ene knooppunt naar het andere worden gecascadeerd, zal het hebben van x-waarden tussen 0 en 1 de impact van een gegeven verandering van een enkele variabele op de output van een gegeven knooppunt, en vervolgens de output van het neurale netwerk, verminderen.
Als we beginnen na te denken over meer praktische gebruikscases voor neurale netwerken, zoals beeldherkenning of classificatie, zullen we gebruik maken van gesuperviseerd leren, of gelabelde datasets, om het algoritme te trainen. Terwijl we het model trainen, willen we de nauwkeurigheid ervan evalueren met behulp van een kostenfunctie (of verliesfunctie). Dit wordt ook wel de gemiddelde kwadratische fout (MSE) genoemd. In onderstaande vergelijking staat
- i voor de index van het monster,
- y-hat is de voorspelde uitkomst,
- y is de werkelijke waarde, en
- m is het aantal monsters.
Het uiteindelijke doel is onze kostenfunctie te minimaliseren om een correcte fit voor een gegeven waarneming te garanderen. Terwijl het model zijn gewichten en bias aanpast, gebruikt het de kostenfunctie en het versterkingsleren om het convergentiepunt, of het lokale minimum, te bereiken. Het algoritme past zijn gewichten aan door middel van gradiëntafdaling, waardoor het model de richting kan bepalen die het moet volgen om fouten te verminderen (of de kostenfunctie te minimaliseren). Bij elk trainingsvoorbeeld worden de parameters van het model aangepast om geleidelijk naar het minimum te convergeren.
Zie dit IBM Developer-artikel voor een diepere uitleg van de kwantitatieve concepten die bij neurale netwerken komen kijken.
De meeste diepe neurale netwerken zijn feedforward, wat betekent dat ze slechts in één richting werken, van invoer naar uitvoer. U kunt uw model echter ook trainen via backpropagatie; dat wil zeggen, in de tegenovergestelde richting van uitvoer naar invoer. Backpropagatie stelt ons in staat de fout van elk neuron te berekenen en toe te wijzen, zodat we de parameters van het model of de modellen op de juiste manier kunnen aanpassen.
Typen neurale netwerken
Neurale netwerken kunnen worden ingedeeld in verschillende typen, die voor verschillende doeleinden worden gebruikt. Hoewel dit geen uitgebreide lijst van typen is, zou het onderstaande representatief zijn voor de meest voorkomende typen neurale netwerken die je tegenkomt voor de gangbare use cases:
Het perceptron is het oudste neurale netwerk, gemaakt door Frank Rosenblatt in 1958. Het heeft een enkel neuron en is de eenvoudigste vorm van een neuraal netwerk:
Feedforward neurale netwerken, of meerlaagse perceptrons (MLP’s), zijn de netwerken waar we ons in dit artikel voornamelijk op hebben gericht. Ze bestaan uit een inputlaag, een verborgen laag of lagen, en een outputlaag. Hoewel deze neurale netwerken gewoonlijk MLP’s worden genoemd, is het belangrijk op te merken dat zij eigenlijk bestaan uit sigmoïde neuronen, geen perceptrons, aangezien de meeste problemen in de echte wereld niet-lineair zijn. Deze modellen worden gewoonlijk met gegevens gevoed om ze te trainen, en ze vormen de basis voor computervisie, natuurlijke taalverwerking en andere neurale netwerken.
Convolutionele neurale netwerken (CNN’s) zijn vergelijkbaar met feedforward netwerken, maar ze worden gewoonlijk gebruikt voor beeldherkenning, patroonherkenning, en/of computervisie. Deze netwerken maken gebruik van principes uit de lineaire algebra, met name matrixvermenigvuldiging, om patronen in een afbeelding te identificeren.
Recurrente neurale netwerken (RNN’s) zijn te herkennen aan hun terugkoppellussen. Deze leeralgoritmen worden voornamelijk gebruikt bij het gebruik van tijdreeksgegevens om voorspellingen te doen over toekomstige resultaten, zoals beursvoorspellingen of verkoopvoorspellingen.
Neurale netwerken vs. deep learning
Dep Learning en neurale netwerken worden in gesprekken vaak door elkaar gebruikt, wat verwarrend kan zijn. Daarom is het goed om te weten dat de term “deep” in deep learning alleen verwijst naar de diepte van de lagen in een neuraal netwerk. Een neuraal netwerk dat uit meer dan drie lagen bestaat – met inbegrip van de inputs en de output – kan als een diep lerend algoritme worden beschouwd. Een neuraal netwerk dat slechts twee of drie lagen heeft, is slechts een neuraal basisnetwerk.
Om meer te weten te komen over de verschillen tussen neurale netwerken en andere vormen van kunstmatige intelligentie, zoals machine learning, lees dan de blogpost “AI vs. Machine Learning vs. Deep Learning vs. Neurale netwerken: What’s the Difference?”
Geschiedenis van neurale netwerken
De geschiedenis van neurale netwerken is langer dan de meeste mensen denken. Hoewel het idee van “een machine die denkt” kan worden getraceerd tot de Oude Grieken, zullen we ons richten op de belangrijkste gebeurtenissen die hebben geleid tot de evolutie van het denken over neurale netwerken, dat in de loop der jaren in populariteit heeft geëvolueerd:
1943: Warren S. McCulloch en Walter Pitts publiceerden “A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB) (link bevindt zich buiten IBM)” Dit onderzoek trachtte te begrijpen hoe het menselijk brein complexe patronen kon voortbrengen via met elkaar verbonden hersencellen, of neuronen. Een van de belangrijkste ideeën die uit dit werk voortkwamen was de vergelijking van neuronen met een binaire drempel met Booleaanse logica (d.w.z. 0/1 of waar/onwaar uitspraken).
1958: Frank Rosenblatt wordt gecrediteerd met de ontwikkeling van de perceptron, gedocumenteerd in zijn onderzoek, “The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain” (PDF, 1.6K KB) (link bevindt zich buiten IBM). Hij gaat een stap verder in het werk van McCulloch en Pitt door gewichten aan de vergelijking toe te voegen. Gebruikmakend van een IBM 704, was Rosenblatt in staat een computer te laten leren hoe hij links gemarkeerde kaarten kon onderscheiden van rechts gemarkeerde kaarten.
1974: Hoewel tal van onderzoekers hebben bijgedragen aan het idee van backpropagation, was Paul Werbos de eerste in de VS die de toepassing ervan binnen neurale netwerken opmerkte in zijn proefschrift (PDF, 7,8 MB) (link bevindt zich buiten IBM).
1989: Yann LeCun publiceerde een paper (PDF, 5,5K KB) (link bevindt zich buiten IBM) waarin hij illustreert hoe het gebruik van beperkingen in backpropagation en de integratie ervan in de neurale netwerkarchitectuur kan worden gebruikt om algoritmen te trainen. Dit onderzoek maakte succesvol gebruik van een neuraal netwerk om handgeschreven postcodecijfers van de U.S. Postal Service te herkennen.
Neurale netwerken en IBM Cloud
MIB is al tientallen jaren een pionier in de ontwikkeling van AI-technologieën en neurale netwerken, met als hoogtepunt de ontwikkeling en evolutie van IBM Watson. Watson is nu een vertrouwde oplossing voor ondernemingen die geavanceerde natuurlijke taalverwerking en deep learning-technieken willen toepassen op hun systemen met behulp van een bewezen trapsgewijze aanpak voor AI-adoptie en -implementatie.
Watson maakt gebruik van het Apache Unstructured Information Management Architecture (UIMA)-raamwerk en IBM’s DeepQA-software om krachtige deep learning-mogelijkheden beschikbaar te maken voor applicaties. Met tools als IBM Watson Studio en Watson Machine Learning kan uw onderneming uw open-source AI-projecten naadloos in productie nemen en uw modellen op elke cloud implementeren en uitvoeren.
Voor meer informatie over hoe u aan de slag kunt met deep learning-technologie, kunt u IBM Watson Studio verkennen.
Teken in voor een IBMid en maak uw IBM Cloud-account aan.