Innovatie & Strategie

Wetenschap
Digitaal netwerk

De basics van deep learning

Google, IBM, Microsoft, iedereen is bezig met deep learning. Maar hoe werkt het eigenlijk?

© Shutterstock
29 juli 2016

Deep learning is een hot topic. Grote spelers als Google, Microsoft en IBM tuigen steeds vaker projecten rond deep learning op. Hun doel is neurale netwerken te ontwikkelen die zich Autonoom tot een steeds hoger kennisniveau ontwikkelen. Hoe werkt het?

Spamfilters weten al behoorlijk goed ongewenste e-mail uit je mailbox te houden. Hoe wordt de spam eruit gepikt? Simpelweg op afzender filteren werkt niet, omdat er constant nieuwe adressen en domeinnamen ontstaan. Ook komt spam vaak van onschuldige e-mailadressen die zijn overgenomen door derden. De beste manier om spam te filteren is door te kijken naar de inhoud van de mail. De meest effectieve technieken om dit te doen komen uit de machine learning.

Machine learning [link 1 op pagina 67] is een discipline die zich bezig houdt met het ontwikkelen van zelflerende systemen. Deze systemen zoeken op automatische wijze naar structuur in data. Op deze manier ‘leert’ het systeem een model die de data verklaart en waarmee voorspellingen kunnen worden gedaan over data die het systeem nog nooit heeft gezien. Bekende voorbeelden van machine-learningsystemen zijn gezichtsherkenning, stemherkenning en het vertalen van tekst. Ook de zelfrijdende auto van Google zit vol met machine-learningsystemen om andere auto’s, personen en verkeersborden op de weg te herkennen.

 

Het principe

Het principe achter machine learning is vrij simpel. Stel je voor dat we een machine willen bouwen die appels en peren van elkaar onderscheidt en labelt. Er wordt een foto van een object gemaakt en twee waarden, ook wel features genoemd, worden geëxtraheerd door een stukje handgeschreven code; namelijk de kleur van het object in het plaatje van rood naar groen, en de vorm van het object van appel naar peervormig. Stel je dan voor dat we een set van plaatjes van appels en peren hebben waarvan we de labels kennen. Deze set wordt ook wel de trainingset genoemd. Als we de features van de plaatjes uit de trainingset berekenen en grafisch weergeven in een grafiek krijgen we de bovenste grafiek in figuur 1 te zien.

 

We zien dat appels en peren grotendeels in hun eigen gebied liggen. De twee zijn dan ook grotendeels te onderscheiden door de ruimte in twee stukken te delen [blauwe lijn in de tweede grafiek]. Als we het systeem nu een nieuwe appel of peer aanbieden kunnen we deze zodanig categoriseren door te kijken aan welke kant van de blauwe hij ligt (derde grafiek in figuur 1). In essentie heeft het algoritme uit de data ‘geleerd’ onderscheid te maken tussen appels en peren.

We zien echter dat het systeem ook fouten kan maken als het fruit vlakbij de blauwe lijn ligt. Dit komt omdat er ook groenachtige ovale appels bestaan en ronde roodachtige peren. De accuraatheid van het algorithme is dan ook afhankelijk van het aantal voorbeelden (samples) in de trainingset en van de mate waarin de klassen van elkaar te onderscheiden zijn. Dit laatste is afhankelijk van de kwaliteit van de features. We hadden bijvoorbeeld een derde feature kunnen bedenken die de textuur van het object aangeeft. Dan hadden we misschien ook wel de fout gelabelde appels en peren correct kunnen classificeren. Het proces is nogmaals grafisch weergegeven in figuur 2.

 

Deep learning

De hierboven beschreven methode is de essentie van machine learning en wordt al jaren zo toegepast. Het belangrijkste element is het bedenken en construeren van goede features waardoor de verschillende categorieën scheidbaar zijn. De vraag die opkomt is of het mogelijk is om ook het construeren van de features onderdeel te maken van het leerproces.

Dit is inderdaad mogelijk. Al sinds de jaren zeventig bestaan er methodes die dit kunnen. Onder meer met behulp van  Artificial Neural Networks, gebaseerd op een zeer overgesimplificeerd model van de hersenen.

 

Artificial Neural Networks bestaan uit zogeheten artificial neurons die enkele hersencellen modelleren. Deze artificiële neurons representeren één enkele simpele berekening. Een artificial neuron krijgt verschillende waarden als invoer binnen, bijvoorbeeld van andere neurons, en voert een simpele berekening uit om tot één uitvoerwaarde te komen. Deze uitvoerwaarde kan vervolgens weer als invoer dienen voor andere neurons. Zie de linker illustratie in figuur 3 op de volgende pagina voor een grafische weergaven. Door neuronen in lagen aan elkaar te verbinden ontstaat er een groot artificiëel neuraal netwerk. Hoewel individuele neuronen een simpele berekening uitvoeren, voert het neurale netwerk als een geheel een complexe berekening uit. Figuur 3 (rechts) geeft dit idee grafisch weer waar de neuronen als cirkels en de invoer-uitvoerverbindingen tussen neuronen als lijntjes getekend worden. Het interessante aan neurale netwerken is dat de neuronen zelf features leren. Zo kunnen we ons een neuraal netwerk voorstellen die appels en peren onderscheidt met neuronen die voor kleur en vorm features coderen.

 

De term deep learning refereert aan het aantal lagen in het neurale netwerk, ook wel de diepte van het netwerk genoemd. De diepte van het netwerk speelt een belangrijke rol in het vormen van goeie features. Elke laag leert namelijk een set features gebaseerd op de features van de laag daarvoor. Hoe dieper het netwerk hoe complexer de features die geleerd worden.

Een leuke demo die meer inzicht biedt in het functioneren van neurale netwerken kan men vinden via de link playground.tensorflow.org.

Hoewel neurale netwerken zelf de benodigde features leren zijn zij in de praktijk niet vaak toegepast. De twee belangrijkste redenen hiervoor zijn dat een neuraal netwerk zowel een groot aantal trainingsamples nodig heeft als veel lagen met veel neuronen per laag om goeie features te kunnen leren. Vanwege een tekort aan data en aan rekenkracht codeerde men de features daarom met de hand.

Met de komst van Big Data en ongekende rekenkracht is het in de laatste jaren ­mogelijk geworden om met grote hoeveelheden data, grote neurale netwerken te trainen. Hierdoor leert het systeem veel betere features dan met de hand te programmeren valt.

 

Toepassingen

Machine learning en deep learning zijn breed toepasbaar. Het blijft niet beperkt bij onderscheid maken tussen appels en peren voor bijvoorbeeld de industriële landbouw. In plaats van appels en peren kunnen we systemen ook leren om in medische scans kankercellen van gezonde cellen te onderscheiden.

De accuratie van systemen voor classificatie is de laatste jaren enorm gegroeid. Zo heeft de onderzoeksgroep van Facebook bijvoorbeeld een Siri-achtige app gebouwd die plaatjes inhoudelijk analyseert en vragen over de inhoud van deze plaatje kan beantwoorden [link 2]. Hoewel dit soort algemene systemen nog niet beter presteren dan mensen zijn er meer specifieke systemen die dit wel al kunnen. Bijvoorbeeld een applicatie van Microsoft die hondenrassen kan onderscheiden [link 3]. Door een foto van je hond te maken kan de applicatie het ras van de hond herkennen.

Machine learning wordt niet alleen gebruikt voor classificatie maar kan ook gebruikt worden voor het analyseren van tekst. Zo kan een neuraal netwerk bijvoorbeeld aangeven hoe positief of negatief de inhoud van een tekst is. Hierdoor wordt het mogelijk om te analyseren wat grote hoeveelheden mensen op het internet vinden van een bepaald onderwerp of product.

De meest indrukwekkende toepassing van machine learning is in combinatie met andere technieken voor artificial intelligence. Bijvoorbeeld de combinatie van deep learning en reinforcement learning. Door deze twee te combineren kunnen intelligente systemen worden gebouwd die geheel autonoom beslissingen nemen en leren welke beslissingen tot het beste resultaat leiden. Het beste voorbeeld hiervan is een systeem van Google Deepmind dat geheel zelfstandig leert Atari-videospelletjes te spelen zoals Pong en Breakout [link 4]. Het systeem heeft alleen toegang tot het beeldscherm en het toetsenbord, net als een mens, en leert geheel autonoom de juiste knoppen in te drukken zodanig dat het een hoge score krijgt. Bij veel spelletjes scoort het systeem zelfs beter dan mensen.

 

Anomaly detectie

Een van de gebieden waar ik momenteel onderzoek naar doe is het toepassen van deep learning om ongebruikelijk gedrag binnen signalen (streams) te herkennen, dit wordt ook wel ‘anomaly detection’ genoemd.

Het bedrijf waarvoor ik dit onderzoek doe is StackState. Zij bouwen een IT-operationsplatform voor DevOps dat in één grafisch overzicht het totale IT-landschap toont. De software geeft bij calamiteiten direct weer waar in het IT-landschap de crash zich voordoet zodat er snel ingegrepen kan worden. Hoe sneller ingegrepen wordt hoe korter het systeem offline is. Het zou natuurlijk helemaal mooi zijn als er ingegrepen kan worden voordat het systeem überhaupt crasht. Met anomaly detection kan gedrag dat mogelijk tot een crash leidt wellicht vroegtijdig worden onderkend. Daarmee kan een systeencrash door vroegtijdig ingrijpen voorkomen worden.

 

Anomaly detection & deep learning

Een manier om anomaly detectie in te zetten is door gebruik te maken van deep learning. Het idee is dat we een neuraal netwerk construeren dat een signaal als invoer krijgt en ditzelfde signaal vervolgens reconstrueert als de uitvoer. Op deze manier leert het neurale netwerk features die de signalen in kwestie karakteriseren. Deze features representeren dus het normaal gedrag van het signaal.

Op het moment dat we een signaal invoeren dat afwijkt van het normale gedrag zal het neurale netwerk niet in staat zijn om dit signaal goed te reproduceren in de uitvoer, dit omdat het netwerk niet over de correcte features beschikt. In plaats daarvan zal zij een signaal produceren dat lijkt op een normaal signaal maar zo dicht mogelijk in de buurt komt van het afwijkende signaal. Door het verschil tussen het afwijkende signaal en de reconstructie van het signaal te meten (ook wel de reconstruction error genoemd) krijgen we een indicatie van de mate waarin het signaal afwijkt van normaal gedrag.

Stel je een neuraal netwerk voor dat getraind is op het herkennen van sinusoïdes. Op het moment dat we een afwijkend signaal aan het netwerk presenteren, bijvoorbeeld een blok golf, zal het netwerk proberen dit signaal te reconstrueren. Omdat het netwerk alleen beschikt over features die karakteristiek zijn voor sinusgolven zal het netwerk dus ook alleen een sinusgolf als uitvoer kunnen produceren. Door het verschil tussen de invoer en uitvoer (reconstructie) te meten krijgen we een indicatie in hoeverre het signaal afwijkt (reconstruction error). Figuur 4 geeft het idee grafisch weer.

links uit het artikel

https://youtu.be/l95h4alXfAA

https://youtu.be/U_Wgc1JOsBk

https://youtu.be/qsThhdCNwpU

https://youtu.be/WdhSqmO2Dy0

 
Lees het hele artikel
Je kunt dit artikel lezen nadat je bent ingelogd. Ben je nieuw bij AG Connect, registreer je dan gratis!

Registreren

  • Direct toegang tot AGConnect.nl
  • Dagelijks een AGConnect nieuwsbrief
  • 30 dagen onbeperkte toegang tot AGConnect.nl

Ben je abonnee, maar heb je nog geen account? Neem contact met ons op!