Elektrische hersenen II

'NEURALE NETWERKEN verslaan het brein van de beursanalist', kopte de Volkskrant een paar weken geleden. Nu is dat niet zo moeilijk. Beursanalisten krijgen immers ook geregeld slaag van apen, dobbelstenen en volslagen amateurs.

Maar de kop verraadt precies het belangrijkste geheim van neurale netwerken: ze beloven door die associatie met onze hersenen een geheimzinnig soort intelligentie. Vandaar dat een belegger alle resultaten ten spijt zijn portefeuille toch nooit aan een aap of dobbelsteen zal toevertrouwen, maar wel aan een hem volslagen onbekend computerprogramma dat neuraal netwerk heet.

Voor computertechneuten hebben neurale netwerken nog een tweede onweerstaanbare eigenschap: ze zijn de belichaming van het parallelle verwerken, de eerste echte grote principiële sprong voorwaarts in de computertechnologie sinds de uit Boedapest afkomstige Amerikaanse wiskundige John Von Neumann in de jaren veertig de basisarchitectuur van de computer vastlegde. Alle normale computers zijn tot op de dag van vandaag op het model van Von Neumann gebaseerd. Dat model is te vergelijken met de praktijk van een dorpsdokter. Om half acht 's morgens zit de wachtkamer vol met patiënten, dat zijn de te verwerken gegevens. Eén voor één betreden de patiënten de spreekkamer - de centrale processor, die pentium of 68-en-nog-wat van u - en verlaten na behandeling gesterkt en bepleisterd aan de andere kant het pand. Wie terugkomt voor verdere behandeling moet netjes opnieuw in de wachtkamer zijn beurt afwachten. Von Neumann computers werken, net als de dorpsdokter, lineair: je zet de gegevens in een rij en laat ze één voor één afhandelen door één centrale processor.

Voor relatief eenvoudig werk, zoals het op orde houden van de gezondheidstoestand van een klein dorp, voldoet zo'n klassieke dokterspraktijk uitstekend. Maar als de vuurwerkfabriek achter de kerk ontploft, staat de huisarts machteloos. Een plotseling aanbod van tientallen patiënten met uiteenlopende verwondingen kan hij niet aan. Dan komen de crisisteams aangerukt, met allerhande specialisten, zodat patiënten met velen tegelijk behandeld kunnen worden en elke behandeling door de juiste specialist gedaan wordt. Het probleem, de deplorabele gezondheidstoestand van de zwaar getroffen dorpsbevolking, wordt als het ware in stukjes geknipt die met grote aantallen en op verschillende manieren tegelijk worden aangepakt.

Met computers is het niet anders. Voor relatief eenvoudige opgaven voldoet een Von Neumann-computer prima. Maar voor echt ingewikkelde problemen met zeer grote aantallen elkaar beïnvloedende factoren, zoals weersverwachtingen of het interpreteren van beelden, is hij niet bijster geschikt. Anders dan gewonde patiënten gaan gegevens weliswaar niet dood, maar het één voor één afhandelen van zoveel gegevens gaat domweg te traag om praktisch te zijn.

Het crisisteam van de computerij is de parallelle computer: een apparaat met niet één, maar een hele batterij met elkaar verbonden 'centrale' processoren, die gelijktijdig stukjes van het aangeboden probleem onder handen nemen, en zo veel sneller een resultaat afleveren. Een ideaal ding, alleen, er zitten twee fikse problemen aan vast. Ten eerste bestaan er nog maar nauwelijks echte parallelle computers, en die die wel bestaan zijn niet te betalen zo duur. Een beetje in de buurt komt nog een aan elkaar geknoopt netwerk van gewone Von Neumann-computers, zoals vorig jaar gebruikt werd om onder meer de beveiligingscode van Netscape te kraken. Dat levert wel een boel parallelle rekenkracht, maar de snelheid ervan is door de traagheid van zo'n netwerk en door het feit dat elk van de computers in dat netwerk niet echt is ontworpen voor de rol van radertje in een parallel proces, maar een schijntje van wat een echte parallelle computer zou laten zien. In de meeste gevallen waarin men van parallelle verwerking spreekt, gaat het echter om een simulatie. Een computerprogramma dat een parallelle computer voorstelt, in een gewone computer. Uiteindelijk wordt dan alles, inclusief het simulatieprogramma zelf, toch weer door die Von Neumann-flessenhals geduwd.

Het tweede probleem is programmatuur. Het is geen sinecure om programma's voor een parallelle computer te schrijven. Immers, daarvoor moet je precies weten hoe je een probleem zodanig in stukjes kunt knippen, dat de onderdelen die je overhoudt tegelijkertijd verwerkt kunnen worden. Stel dat bijvoorbeeld een gegeven telkens met een bepaalde waarde moet worden opgehoogd tot het gelijk is aan een ander gegeven. Als ondertussen dat andere gegeven ook bewerkt wordt, en daardoor verandert, kunnen er rare dingen gebeuren. In eenvoudige gevallen, dat wil zeggen bij opgaven die heel nauwkeurig en overzichtelijk in wiskundige termen gevangen kunnen worden, is dat goed te doen. Maar de lol van de parallelle computer is nu juist dat hij voor ingewikkelde taken geschapen is, en dat zijn vaak ook taken die maar moeilijk of helemaal niet precies beschreven kunnen worden.

Neurale netwerken lijken op het eerste gezicht het perfecte antwoord op al deze problemen, de heilige graal van de digitale wereld. Ze passen niet alleen bij de parallelle computer als hagelslag bij Henny Huisman, ze zijn er de belichaming van. Een neuraal netwerk is een waterval van lagen van grote aantallen kris-kras met elkaar verbonden eenvoudige neuronen, waarin elk neuron een eenheid is die van andere neuronen of van buiten signalen ontvangt, en zelf een signaal afgeeft als die signalen een bepaalde drempelwaarde te boven gaan. Momenteel zijn neurale netwerken nog vrijwel altijd simulaties in een gewone computer, waarin neuronen worden voorgesteld door een regel in een overigens gewoon programma. Maar vervang in de voor-vorige zin het woord 'neuron' door 'processor', en je hebt de definitie van een heuse parallelle computer. En ook voor het programmeerprobleem lijken neurale netwerken de oplossing te leveren: we beschrijven het probleem gewoon niet! We kauwen niets meer voor, maar laten het netwerk zelf leren hoe het zijn werk moet doen. Te mooi om waar te zijn? Even geduld tot volgende week.

    • Rik Smits