Neuraal netwerk

Een neuraal netwerk, vroeger ook neuronaal netwerk genoemd, is een groep van verbonden neuronen (zenuwcellen). De twee belangrijkste vormen zijn biologische neurale netwerken, in het bijzonder het menselijk brein, en kunstmatige neurale netwerken. Dit artikel gaat in meer algemene zin in op de relatie tussen beide begrippen.

Biologische en kunstmatige neurale netwerken 
Biologische neurale netwerken zijn opgebouwd uit werkelijk bestaande zenuwcellen die in het zenuwstelsel en hersenen met elkaar zijn verbonden door middel van synapsen. In de neurowetenschap kunnen deze netwerken corresponderen met kleine groepjes neuronen met een specifieke functie, of grotere gebieden in de hersenen met een meer algemene functie. Kunstmatige neurale netwerken zijn opgebouwd uit kunstmatige eenheden of 'neuronen' die door middel van een computerprogramma de eigenschappen van echte biologische neuronen nabootsen. Kunstmatige neurale netwerken kunnen voor twee doeleinden worden toegepast: om meer inzicht te krijgen in biologische neurale netwerken, of om problemen op het terrein van kunstmatige intelligentie op te lossen. In het tweede geval is het dus niet per se de bedoeling een echt biologisch systeem te beschrijven.

Achtergrond 
Neurale netwerken zijn ontworpen naar analogie van het biologische brein, m.a.w. het zijn zeer uitgebreide en onderling verbonden netwerken van neuronen. Kunstmatige neurale netwerken zijn toe te passen in computersystemen. Een kunstmatig neuraal netwerk bestaat uit verscheidene (eventueel door software gesimuleerde) meestal zeer eenvoudige processors (neuronen) met een hoge mate van onderlinge connectie waarover simpele scalaire berichten verzonden worden. De interactie tussen de diverse onderling verbonden processors waaruit het netwerk bestaat is bovendien adaptief, zodat verbindingen tussen andere processors in het neurale netwerk kunnen ontstaan, kunnen worden versterkt, verzwakt of weer verbroken kunnen worden. Dit betekent dat een neuraal netwerk te 'trainen' is.

Vergelijking met het neuron 
Een enkelvoudige processor uit het kunstmatige neurale netwerk valt te vergelijken met zijn biologische tegenhanger, het neuron. Een dergelijk neuron in het lichaam kan wel tienduizenden verschillende verbindingen met andere neuronen hebben, en de neuronen kunnen signalen genereren, afhankelijk van de ontvangen signalen, naar andere neuronen. Deze signalen bestaan uit de aanwezigheid of afwezigheid van een elektrische potentiaal en zijn van een korte duur (in de orde van 1 milliseconde). De manier waarop dit in een biologisch neuron gebeurt is zeer overzichtelijk: als de totale stimulatie van het neuron (de som van activerende en remmende impulsen die het via synapsen ontvangt van andere neuronen) een bepaalde drempelwaarde overschrijdt, 'vuurt' het neuron, dat wil zeggen het ondergaat een depolarisatiegebeurtenis (zie hiervoor ook neuron). Deze depolarisatie vindt dan via de uitgaande verbindingen van het neuron zijn weg naar alle andere neuronen waarmee het neuron via zijn eigen uitgaande uitlopers weer verbonden is. Verbindingen tussen neuronen zijn, door de structuur van de synaps, eenrichtingverkeer: een uitloper kan een andere zenuwcel stimuleren (of remmen) maar niet zelf worden gestimuleerd of geremd door het vuren van het neuron dat het heeft beïnvloed, hoewel het vurende neuron wel zelf weer uitlopers kan hebben die een invloed hebben op de cel waardoor het tot vuren werd aangezet.
Doorgaans worden neurale netwerken softwarematig gesimuleerd, waarmee deze op de gewone computer ontwikkeld en getest kunnen worden. Werkt een bepaalde architectuur van een neuraal netwerk goed dan kan een geweldige versnelling van de berekeningen worden bereikt door deze in hardware uit te voeren.

Onderdelen van een neuraal netwerk 

Een neuraal netwerk kan bestaan uit een arbitrair aantal gesimuleerde neuronen (om van een netwerk te kunnen spreken is er natuurlijk wel altijd meer dan een neuron nodig). Deze neuronen kunnen in principe op alle denkbare manieren met elkaar worden verbonden, ieder neuron kan desnoods een connectie hebben met alle andere. Niettemin zijn er in de praktijk verschillende organisatievormen die voor bepaalde toepassingen beter blijken te voldoen dan andere. Een typisch neuraal netwerk bestaat uit drie lagen neuronen, een ingangslaag, een tussenlaag en een uitgangslaag. Het aantal ingangsneuronen is gelijk aan het aantal ingangsvariabelen, het aantal uitgangsneuronen wordt bepaald door het aantal gewenste uitgangsposities. Voorbeeld is patroonherkenning voor de letters van het alfabet, de ingangslaag zal hier bijvoorbeeld 256 neuronen hebben (voor 16 x 16 pixels), het aantal uitgangsneuronen zal 26 zijn, of 36 als ook cijfers herkend moeten worden. Het aantal neuronen in de tussenlaag ligt hier ergens tussenin en wordt door experimenteren bepaald. Neurale netwerken kunnen ook uit meerdere tussenlagen bestaan.

Functioneren 
Ieder neuron uit een bepaalde laag heeft verbinding met alle neuronen uit de laag ervoor. Iedere verbinding heeft een bepaalde overdrachtsfunctie, de som van alle ingangswaarden maal hun overdrachtsfunctie bepaalt de waarde van het neuron zelf. De overdrachtsfunctie geeft het 'gewicht' van de connectie aan, hoe sterk het signaal via die connectie aankomt bij het doelneuron, en kan positief (stimulerend) of negatief (remmend) zijn. Netwerken kunnen verschillende functies hebben. Zij kunnen gebruikt worden om informatie (bijvoorbeeld kennis) op te slaan, of om de opgeslagen informatie te transformeren of te veranderen. In het eerste geval spreekt men wel van een representatie, en in het tweede geval van een computatie. In netwerken opgeslagen informatie of kennis kan ook worden aangeleerd. Het 'trainen' van het netwerk gebeurt door het aanbieden van ingangswaarden met hun bijbehorende gewenste uitgangswaarden, en dan steeds door terugrekenen de overdrachtsfuncties bij te stellen. Meestal worden de overdrachtsfuncties geleidelijk bijgesteld, en bestaat een 'trainingssessie' uit vele (duizenden) iteraties. In het bovenstaand voorbeeld zal per letter een paar honderd voorbeelden aangeboden worden, of zoveel als nodig is. Een tweede stap in het leerproces is het aanbieden van nieuwe patronen en het controleren van het resultaat dat dat oplevert. Op die manier kan bepaald worden in hoeverre het netwerk 'volleerd' is, en hoe betrouwbaar de resultaten zijn. Uiteindelijk is voor ieder paar neuronen (A,B) in het netwerk een overdrachtsfunctie gedefinieerd, in het eenvoudigste geval een simpele coëfficiënt, die aangeeft hoe het vuren van A invloed heeft op B. Coëfficiënten worden vaak genormeerd (dat wil zeggen dat gezorgd wordt dat ze in het hele netwerk ergens tussen -1 en 1 liggen.)
Het is mogelijk een neuraal netwerk te 'óvertrainen', waarbij het op de bekende trainingsinput zeer goed reageert maar niet meer in staat is nieuwe inputs correct te categoriseren. Voor een goede werking van een netwerk dat blijvend lerend geconfigureerd is het soms nodig het net een poosje in vrijloop te zetten om dit effect tegen te gaan - de analogie met het 'dromen' van het menselijke brein heeft zich aan vele onderzoekers opgedrongen.

Soorten neurale netwerken 
 Perceptron 
 Kohonen-netwerk (zelf organiserend netwerk)
 Hopfield-netwerk
 Boltzmann machine (stochastisch neuraal netwerk)
 Radial-Basis Function Networks
 Support Vector Machines
 Self-Organizing Maps

Hersenen en neurale netwerken 
Netwerken van zenuwcellen in de hersenen bestaan uit lokale gebieden met clusters van zenuwcellen (ook wel knopen, cortex of grijze stof genoemd), en de korte of langere bundels van zenuwvezels die deze gebieden onderling verbinden en die samen witte stof worden genoemd. Voorbeelden van het laatste zijn het corpus callosum (hersenbalk) die de linker- en rechterhersenhelft met elkaar verbindt, en het cingulum dat de achterste en voorste delen van de hersenen met elkaar verbindt. Het totale patroon van neurale circuits wordt ook wel met de term neurale connectiviteit aangeduid. De term connectoom slaat op de complete kaart van neurale verbindingen van een bepaald individu. Een belangrijk onderscheid is ten slotte dat tussen structurele connectiviteit en functionele connectiviteit. Het eerste wil zeggen: het totale netwerk van verbindingen en structuren in de hersenen. Het tweede: de functies of processen die binnen het structurele netwerk gerealiseerd worden. Een voorbeeld van functionele connectiviteit is de mate van coherentie (samenhang in de tijd) tussen patronen van activiteit van specifieke gebieden van de hersenen. Netwerken in de hersenen worden verondersteld een rol te spelen bij de opslag en van informatie en kennis, zoals in het langetermijngeheugen (zie ook representaties), maar ook bij het efficiënt verwerken van informatie zoal bij denken en intelligentie of bij dagdromen. In de hersenen zijn in het begin van de 21ste eeuw met behulp van technieken als fMRI en tractografie grootschalige structurele en functionele netwerken geïdentificeerd, waarin lokale structuren verbonden zijn of samenwerken met andere lokale structuren. Voorbeelden hiervan zijn het saliencenetwerk en het defaultnetwerk. Gebrekkige verbindingen tussen hersengebieden, ook wel aangeduid als disconnectiesyndroom kunnen daarentegen ten grondslag liggen aan stoornissen in de waarneming, taalbegrip en hallucinaties

Toepassingen

Handschriftherkenning 
Pda's en tablet-pc's waarbij informatie middels handschriftherkenning ingevoerd kan worden.

Neurale netwerken blinken uit in het interpreteren van niet-eenduidige informatie, zoals een handschrift. Een handschrift zal in ieder geval overeenkomsten vertonen, maar er zullen altijd subtiele afwijkingen optreden. De manier waarop een kunstmatig neuraal netwerk werkt, is uitermate geschikt voor dit soort taken. Vanwege deze eigenschappen worden kunstmatige neurale netwerken ook toegepast bij spraakherkenning.

Virtuele sensoren 
In de procesindustrie zijn er eigenschappen van het te maken product die niet 'real-time' tijdens de productie gemeten kunnen worden. De hardheid of melt-index van een plastic kan bijvoorbeeld alleen achteraf in een laboratorium worden bepaald, maar dan is het te laat om het proces nog bij te regelen, en zal het gemaakte plastic niet verkocht kunnen worden. Om nu vooraf toch een idee te krijgen van deze parameters kan een neuraal netwerk gebruikt worden dat als ingangen alle parameters heeft die wel gemeten kunnen worden, zoals drukken, temperaturen en hoeveelheden van de in de reactie gebruikte stoffen. Dit netwerk wordt getraind met gegevens uit de archieven van het laboratorium en kan, als het goed werkt, tijdens de productie al een voorspelling van de gewenste eigenschappen doen.

Kunstmatige intelligentie 
Een ander toepassingsgebied van neurale netwerken is in de kunstmatige intelligentie, hierbij worden deze netwerken softwarematig geëmuleerd. Dit netwerk wordt opgebouwd uit verschillende (meestal zeer eenvoudige) processoren met een zeer uitgebreide onderlinge connectie. Doordat deze connecties niet standaard dezelfde blijven, maar kunnen worden verzwakt, versterkt, aangemaakt of verbroken, kan dit kunstmatig neuraal netwerk zichzelf 'trainen' en lijkt het ook veel meer op een biologisch neuraal netwerk. Er zijn bijvoorbeeld beslissingsmodellen voor de interpretatie van schommelingen in beurskoersen, op basis waarvan voorspellingen kunnen worden gedaan van toekomstige beurskoersen. Een probleem bij de toepassing van neurale netwerken in de praktijk is het feit dat het werkt via het Black Box-principe; een neuraal netwerk is niet in staat een uitleg te geven van de reden voor de gegeven uitvoer. De 'kennis' van het getrainde netwerk bestaat uit de exacte configuratie van een groot aantal coëfficiënten waaraan verder niet zoveel waar te nemen is. Men moet het model alsook simplificeren om aan de mogelijkheden van de computer tegemoet te komen, en daardoor wordt het beeld van de realiteit sterk vervormd.

Kunstmatige intelligentie
Automatisch leren
Regeltechniek
Computernetwerk