Wat zijn Kunstmatige Neurale Netwerken?

Veel van de vorderingen in AI zijn nieuwe statistische modellen, maar de overgrote meerderheid van de vorderingen zijn tijdens een technologie die kunstmatige neurale netwerken (ANN) wordt genoemd. Als je er al eens eerder over hebt gelezen, zul je hebben gelezen dat deze ANN’s een echt ruw model zijn van hoe het menselijk brein is gestructureerd. Merk op dat er een verschil is tussen kunstmatige neurale netwerken en neurale netwerken. Hoewel de meeste mensen de synthetische laten vallen omwille van de beknoptheid, werd het woord kunstmatig geprepareerd om de term te gebruiken zodat mensen in de computationele neurobiologie nog steeds de term neuraal netwerk kunnen gebruiken om hun werk te vragen. Hieronder kan een diagram van de werkelijke neuronen en synapsen in de hersenen in vergelijking met kunstmatige.

Vrees niet als het diagram niet erg duidelijk lijkt. Wat belangrijk is om te weten is dat we in onze ANN’s deze eenheden van berekening genaamd neuronen hebben. Deze kunstmatige neuronen zijn verbonden door synapsen die eigenlijk alleen maar gewogen waarden zijn. Wat dit suggereert is dat een bepaalde variëteit, een neuron een soort berekening zal uitvoeren (bijvoorbeeld de sigmoid functie), dan zullen de resultaten van deze berekening worden vermenigvuldigd met een gewicht omdat het “reist”. Het gewogen resultaat kan soms de output van je neurale netwerk zijn, of zoals ik binnenkort zal vermelden, zul je meer neuronen geconfigureerd hebben in lagen, wat is dat het basisconcept tot een gedachte die we deep learning noemen.

Waar zijn ze verkrijgbaar?

https://miro.medium.com/max/362/1*iKcFg_tho1ByDfQjF9hXPg.jpeg

Kunstmatige neurale netwerken zijn geen vervangend concept. In feite noemden we ze niet eens altijd neurale netwerken en dat ze er nu zeker niet hetzelfde uitzien als bij hun ontstaan. In de jaren zestig van de vorige eeuw hadden we een zogenaamde perceptron. Perceptrons werden gemaakt van McCulloch-Pitts neuronen. We hadden zelfs bevooroordeelde perceptrons, en uiteindelijk zijn mensen begonnen met het creëren van meerlagige perceptrons, wat synoniem is met het totale kunstmatige neurale netwerk waarover we nu horen.

Maar wacht eens even, als we al sinds de jaren zestig neurale netwerken hebben, waarom worden die dan nu pas groot? Het is een uitgebreid verhaal, en dat ik u aan te moedigen om zich te concentreren op de huidige podcast aflevering te concentreren op de “vaders” van de recente ANNs noemen hun perspectief van het onderwerp . Om snel samen te vatten, is er een handje vol met factoren die ANN’s niet populairder werden. We hadden de pc-verwerkingskracht niet en dat we de info niet hadden om ze te coachen. Het gebruik ervan werd afgekeurd dankzij het feit dat ze een schijnbaar willekeurig vermogen hadden om goed te presteren. Al die factoren zijn aan het veranderen. Onze computers worden sneller en krachtiger, en met het web hebben we alle soorten kennis gedeeld om te gebruiken.

Hoe werken ze?

Zie je , ik heb hierboven besproken dat de neuronen en synapsen berekeningen uitvoeren . De vraag die je je moet stellen is : “Hoe leren ze welke berekeningen ze moeten uitvoeren?” Had ik gelijk? De oplossing is dat we ze in wezen een buitenproportionele hoeveelheid vragen willen stellen, en ze antwoorden willen geven. Dit is vaak een vakgebied dat begeleid leren wordt genoemd. Met voldoende voorbeelden van vraag-antwoordparen worden de berekeningen en waarden die bij elk neuron en elke synaps zijn opgeslagen langzaam aangepast. Meestal gebeurt dit door middel van een proces dat backpropagatie wordt genoemd.

https://miro.medium.com/max/337/1*uIVBAMYTtX-3nU14_jhTSA.jpeg

Stel je voor dat je over een stoep loopt en je ziet een lantaarnpaal. Je hebt nog nooit een lantaarnpaal gezien, dus je loopt er recht in en zegt “ouch.” De volgende keer dat je een lantaarnpaal ziet, scoot je een paar centimeter opzij en blijf je lopen. Dit punt raakt je schouder tegen de lantaarnpaal en weer zeg je “auw”. De derde keer dat je een lantaarnpaal ziet, ga je helemaal door om er zeker van te zijn dat je de lantaarnpaal niet raakt. Behalve dat er nu iets vreselijks aan de hand is – nu ben je direct in het spoor van een brievenbus gelopen, en je hebt nog nooit een brievenbus gezien. Je loopt er in en daarom gebeurt het hele proces weer. Uiteraard is dit vaak een oversimplificatie, maar het is effectief wat backpropogatie doet. Een door de mens gemaakt neuraal netwerk krijgt een puinhoop van voorbeelden en probeert dan een gelijkwaardig antwoord te geven omdat het gegeven voorbeeld. Als het fout is, wordt er een fout berekend en daarom worden de waarden bij elk neuron en elke synaps achterwaarts door het ANN gepropageerd voor de volgende keer. Dit proces vergt tonnen voorbeelden. Voor wereldtoepassingen ligt het aantal voorbeelden vaak binnen de miljoenen.

Nu we een begrip hebben van kunstmatige neurale netwerken en een beetje van de werking ervan, is er nog een andere vraag die aan de orde moet komen. Hoe kunnen we veel neuronen die we zouden willen gebruiken, beheersen? En waarom heb je het woord lagen eerder gewaagd? Lagen zijn gewoon sets van neuronen. We hebben een invoerlaag die is dat de data die we aanbieden aan de ANN. We hebben de verborgen lagen, dat is waar de magie gebeurt. Tot slot hebben we de uitvoerlaag, dat is waar de voltooide berekeningen van het netwerk worden geplaatst voor ons om te gebruiken.

https://miro.medium.com/max/300/1*f0hA2R652htmc1EaDrgG8g.png

Lagen zelf zijn gewoon sets van neuronen. Binnen de jeugd van de meerlaagse perceptoren dachten we oorspronkelijk dat het hebben van slechts één invoerlaag, één verborgen laag en één uitvoerlaag voldoende was. Het is verstandig, toch? Bij sommige getallen heb je maar één set berekeningen nodig, dan krijg je een uitgang. Als je ANN niet de juiste waarde berekende, voegde je alleen maar meer neuronen toe aan de enige verborgen laag. Uiteindelijk hebben we geleerd dat we hiermee eigenlijk alleen maar een lineaire mapping maken van elke invoer naar de uitvoer. Met andere woorden, we leerden dat een bepaalde input altijd naar een bepaalde output zou verwijzen. We hadden geen flexibiliteit en konden eigenlijk alleen maar inputs aan die we eerder hadden gezien. Dit was absoluut niet wat we wilden.

Nu introduceren we deep learning, dat is als we eenmaal een hele verborgen laag hebben. Dit is vaak een van de verklaringen dat we nu betere ANN’s hebben, omdat we veel knooppunten met tientallen of minder lagen willen hebben. Dit resulteert in een enorme hoeveelheid variabelen die we graag in de gaten willen houden. Door de vooruitgang in de parallelle programmering kunnen we ook nog grotere ANN’s in batches uitvoeren. Onze kunstmatige neurale netwerken worden nu zo groot dat we niet één tijdperk, dat is een iteratie door het hele netwerk, in één keer zullen draaien. We willen graag alles in batches proberen die slechts subsets zijn van het hele netwerk, en als we eenmaal een heel tijdperk hebben doorlopen, dan passen we de backpropagatie toe.

Welke soorten zijn er?

Naast het gebruik van deep learning is het nu belangrijk om te begrijpen dat er een puinhoop is van verschillende architecturen van kunstmatige neurale netwerken. De standaard ANN is opgezet tijdens een manier waarop elk neuron met elkaar verbonden is binnen de volgende laag. Deze worden specifiek feed forward kunstmatige neurale netwerken genoemd (hoewel ANN’s over het algemeen allemaal feed forward zijn). We hebben geleerd dat door neuronen in bepaalde patronen met andere neuronen te verbinden, we nog betere aanknopingspunten krijgen voor specifieke scenario’s.

Terugkerende neurale netwerken

Recurrent Neural Networks (RNN) zijn opgericht om het gebrek aan kunstmatige neurale netwerken aan te pakken die geen beslissingen namen die de voorgaande kennis ondersteunden. Een typisch ANN had geleerd om beslissingen te vormen ondersteunde context in de training, maar toen het eenmaal beslissingen had genomen om deze te gebruiken, werden de keuzes onafhankelijk van alle andere gemaakt.

https://miro.medium.com/max/504/1*nPz3TnsVZvFdgG8LQ8cwuA.png

Wanneer zouden we zoiets willen? Nou, geloof dat je een spelletje Blackjack speelt. Als je een 4 en een 5 hebt om te beginnen, herken je dat er 2 lage kaarten uit het spel zijn. Informatie als deze kan je helpen om te bepalen of je wel of niet moet slaan. RNN’s zijn zeer nuttig in de tongverwerking omdat voorafgaande woorden of tekens nuttig zijn om de context van een ander woord te begrijpen. Er zijn veel verschillende implementaties, maar de bedoeling is meestal een equivalent. We willen graag informatie behouden. We zullen dit bereiken door bi-directionele RNN’s te hebben, of we zullen een terugkerende verborgen laag implementeren die bij elke feedforward wordt aangepast. Als je meer wilt weten over RNNs, bekijk dan deze tutorial waarin je een RNN in Python implementeert of deze blogpost waarin het gebruik van een RNNN nader wordt uitgelegd.

Een vermelding gaat naar Memory Networks. Het concept is dat we meer informatie willen bewaren dan wat een RNN of LSTM bewaart als we iets willen weten over een soort film of boek waarin tonnen gebeurtenissen kunnen voorkomen die op elkaar rusten.

Sam loopt de keuken in.

Sam pakt een appel op.

Sam loopt de slaapkamer binnen.

Sam laat de appel vallen.

V: Waar is die appel.

A: Slaapkamer

Een voorbeeld uit deze krant.

Convolutionele Neurale Netwerken

Convolutionele Neurale Netwerken (CNN), ook wel LeNets genoemd (naar Yann LeCun), zijn kunstmatige neurale netwerken waarbij de verbindingen tussen de lagen enigszins willekeurig lijken. Echter, de reden voor de synapsen om te worden opgezet zoals ze zijn, is om de hoeveelheid parameters die moeten worden geoptimaliseerd te helpen verminderen. Dit wordt vaak gedaan door een bepaalde symmetrie te noteren in de manier waarop de neuronen verbonden zijn, dan zul je in wezen neuronen “hergebruiken” om identieke kopieën te bezitten zonder noodzakelijkerwijs een equivalent aantal synapsen nodig te hebben. CNN’s worden vaak gebruikt bij het werken met afbeeldingen vanwege hun vermogen om patronen in omringende pixels te herkennen. Er zit overtollige informatie in als je elke individuele pixel bekijkt in vergelijking met de omringende pixels, en je comprimeert een aantal van deze informatie vanwege hun symmetrische eigenschappen. Lijkt me de juiste situatie voor een CNN als je navraag doet bij mij. Christopher Olah heeft een geweldige blogpost over het begrijpen van CNN’s ook als andere soorten ANN’s die je hier vindt. Een andere grote bron voor het begrijpen van CNNs is dat deze blogpost.

Versterking Leren

Het laatste ANN-type dat ik ga noemen is het type dat Reinforcement Learning heet. Reinforcement Learning kan een algemene term zijn die gebruikt wordt voor het gedrag dat computers vertonen wanneer ze proberen een bepaalde beloning te maximaliseren, wat suggereert dat het op zich geen door de mens gemaakte neurale specificatie is. U zult echter wel versterkingsleren of genetische algoritmen toepassen om een door de mens gemaakte neurale specificatie te creëren die u gewoonweg niet eerder zult hebben gedacht te gebruiken. Een uitstekend voorbeeld en uitleg zijn vaak te vinden tijdens deze video, waar YouTube-gebruiker SethBling een versterkingsleersysteem creëert dat een door de mens gemaakte neurale specificatie bouwt die een Mario-spel volledig op zichzelf speelt. Een ander succesvol voorbeeld van versterkingsleren is vaak te zien tijdens deze video, waar het bedrijf DeepMind klaar was om een programma te leren om verschillende Atari-games onder de knie te krijgen.