Laurie Bax is consultant bij Alten.

24 januari

Deep learning is niet in één keer ontstaan. Laurie Bax van Alten duikt in de geschiedenis van deze techniek, die nu eindelijk lijkt door te breken.

Een paar jaar geleden had (bijna) niemand er nog van gehoord, maar tegenwoordig kom je het overal tegen: deep learning. Veel grote bedrijven passen het al toe (zoals Facebook, Google en Nvidia) en er is veel onderzoek naar. Deep learning is inzetbaar voor veel verschillende doeleinden, zowel supervised als unsupervised, van anomaliedetectie tot natural language processing en beeldverwerking.

Op het internet doen veel definities de ronde voor deep learning: het is een onderdeel van machine learning, het is (losjes) geïnspireerd op de werking van het brein, het is (meestal) een architectuur op basis van een neuraal netwerk, het heeft meerdere niet-lineaire lagen, waarbij elke volgende laag de output van de vorige gebruikt. Dat er zo veel definities en variaties zijn, komt waarschijnlijk doordat de techniek niet in één keer is ontstaan. De grondslag werd al gelegd in de jaren veertig. Om deep learning te begrijpen, moeten we in de geschiedenis duiken.

Ai-winter

Warren McCulloch en Walter Pitts waren twee van de eerste onderzoekers die direct worden gelinkt aan deep learning. Zij maakten de thresholded logical unit. Deze zou de werking van een (biologisch) neuron nabootsen.

Frank Rosenblatt borduurde daarop voort en zette met zijn perceptron voor toen een indrukwekkende stap in ai. Een perceptron combineert meerdere inputs tot een enkele 0-of-1-output. De inputwaardes worden hiervoor elk vermenigvuldigd met een eigen gewicht, dat dus bepaalt hoeveel elk ‘inputneuron’ meetelt. Die getallen worden vervolgens bij elkaar opgeteld en vergeleken met een drempelwaarde. De training bestaat uit het vinden van de optimale set gewichten en de drempelwaarde. Doordat de input direct is gekoppeld aan de output, is dat niet meer dan het minimaliseren van de foutmarge tussen de gewenste en actuele output.

Met zijn getrainde perceptron kon Rosenblatt letters en cijfers van elkaar onderscheiden. Hij had veel vertrouwen in zijn vinding, maar er waren ook onderzoekers die de beperkingen zagen. In verschillende papers en zelfs een boek schreven zij dat het perceptron alleen lineaire problemen kon oplossen en een non-lineair probleem zoals een xor-functie niet aankon. Dit luidde de zogenoemde ‘ai-winter’ in.

Gelukkig waren daar Geoffrey Hinton, David Rumelhart en Ronald Williams, die een nieuwe doorbraak bewerkstelligden. Zij bedachten dat netwerken konden leren met meerdere lagen van non-lineaire functies. De lagen in het midden, de hidden layers, waren te trainen door de fouten terug te propageren door het netwerk (beter bekend als back propagation of backprop). Door meerdere lagen te combineren met zogeheten convolutionele lagen kon het netwerk handgeschreven tekst herkennen.

Een convolutie is het toepassen van een functie op een andere functie (of signaal). Bijvoorbeeld een filter op een plaatje. Met een enkele filter zijn alle horizontale lijnen in een beeld te detecteren. Door een aantal filters te combineren – een voor horizontale lijnen, een voor verticale, et cetera – kunnen we een plaatje coderen. Dat maakt het voor een netwerk makkelijker de juiste features te gebruiken om erachter te komen wat erop te zien is. Helaas was het niet mogelijk om dit te schalen naar grotere problemen en zo belandden neurale netwerken weer in de ijskast.

De vraag naar betere technologieën voor de automatische verwerking van plaatjes werd er niet minder om. Onderzoekers keken naar hoe het brein omgaat met beelden en trachtten dat op een andere manier dan met neurale netwerken na te bootsen. Gabor-filters voor textuuranalyses zijn bijvoorbeeld geënt op de werking van de menselijke visuele cortex.

Door de natuur los te laten en slimme heuristieken te gebruiken, ontstonden andere technieken, zoals scale-invariant feature transform (sift) en speeded up robust features (surf) om kenmerken uit beelden te halen. Gecombineerd met template matching is het mogelijk om te classificeren wat er zoal aanwezig is op een plaatje. Nadeel is dat je erachter moet zien te komen welke features belangrijk zijn en welke je beter kunt weglaten omdat het matchen anders te complex wordt.

Omdat het veel tijd en expertise kostte om een robuust algoritme te maken, hield de zoektocht naar andere, goedkopere technieken aan. Ondanks hun beperkingen vereisten neurale netwerken geen specialistische kennis, alleen maar genoeg data. Toch bleef de aandacht ervoor marginaal. Tot ze in 2006 een rebranding kregen als deep learning, in de hoop er zo nieuw enthousiasme voor te kweken. En dat werkte …

De belangrijkste factor die heeft bijgedragen aan het huidige succes van deep learning is Imagenet, een publiek toegankelijke database met meer dan veertien miljoen gelabelde afbeeldingen. Gekoppeld hieraan is de ‘Imagenet challenge’, waar jaarlijks vele teams tegen elkaar strijden om de plaatjes zo goed mogelijk te herkennen. Toen het aantal fouten in 2012 ineens drastisch daalde, raakte iedereen geïnteresseerd in deep learning.

Altijd spannend

Een deep learning-netwerk bestaat uit meerdere lagen, die aan elkaar zijn verbonden. De meeste architecturen beginnen met een aantal convolutionele lagen. Deze leren de features in de invoer en encoderen de input in feature maps. Om een efficiënte encodering af te dwingen, volgen er vaak een paar subsampling (pooling)-lagen. De hoeveelheid beschikbare informatie wordt per laag kleiner. De laatste lagen genereren de gewenste output, bijvoorbeeld door de features te combineren met een volledig verbonden laag, zoals traditionele neurale netwerken met voor elke klasse één outputneuron. De neuron die het hardste wordt geactiveerd, bepaalt de outputklasse van de input.

Dat de convolutionele lagen features leren, kunnen we zien door naar de geleerde filters te kijken. Deze zijn getraind om zo optimaal mogelijk de informatie door te geven die nuttig is om een uiteindelijke classificatie te maken. In de eerste laag zien ze er vaak uit als Gabor-filters: in eerste instantie probeert het netwerk in het plaatje korte lijnstukjes te vinden, in meerdere oriëntaties. Die stukjes zijn in de volgende laag te combineren tot hoeken. Hoe dieper in het netwerk, hoe complexer de filters omdat ze informatie uit alle voorgaande lagen kunnen gebruiken. De laatste (paar) lagen zijn vaak volledig verbonden en kunnen meerdere complexe filters met elkaar combineren om zo een gewenste output te genereren.

Het blijft altijd spannend of we het netwerk goed hebben getraind. Leert het om echt dingen te herkennen of werkt het alleen op de trainingsset? Het is heel lastig om ‘in’ een netwerk te kijken en erachter te komen wat het ‘denkt’. Vaak is bij de eerste paar lagen nog te reconstrueren waarop individuele filters reageren, maar hoe dieper in het netwerk, hoe moeilijker dit wordt. Deep learning heeft in elk geval nog volop geheimen om te onderzoeken.

Dat wil niet zeggen dat deep learning niet nu al goed bruikbaar is. Het succes van een netwerk hangt vooral af van de kwaliteit van de input. Zorg voor een representatieve dataset met een zo groot mogelijke variatie aan (goed gelabelde) voorbeelden en let op mogelijke bias. Test je algoritme op een onafhankelijke set om er zeker van te zijn dat het ook werkt op nieuwe data. Mits goed gebruikt, biedt deep learning veel mogelijkheden om snel nieuwe en robuuste beeldverwerkingsalgoritmes te maken.

Redactie Nieke Roos