donderdag 19 oktober 2017

IoT en neurale netwerken



In mijn voorgaande blogs had ik het over de boeiende ontwikkeling van kunstmatige intelligentie in relatie tot IoT, Verschillende varianten van machine learning zijn hierbij aan de orde gekomen. De meest complexe vorm van machine learning wordt deep learning genoemd. Deze technologie komt het dichts in de buurt van cognitieve intelligentie en maakt gebruik van meerlaagse neurale netwerken. Neurale netwerken kennen we in twee varianten, de biologische vorm oftewel het menselijk brein, en de kunstmatige vorm. Kunstmatige neurale netwerktechnologie is sterk in ontwikkeling en benaderd steeds meer het menselijk brein. Onderzoekers laten zich hierbij graag inspireren door biologie. Worden we langzamerhand ingehaald door onze eigen automatisering?

Kunstmatige neurale netwerken, die de basis van deep learning vormen, worden alsmaar slimmer en zijn in staat steeds meer menselijke taken over te nemen. Neurale netwerken zijn samengesteld uit een veelvoud van vaak eenvoudige processoren die parallel samenwerken. Op deze wijze worden niet lineaire systemen samengesteld waarbij een veel complexere relatie kan worden gevormd tussen input en output. Om de overeenkomst met onze hersenwerking aan te geven worden de processoren in een neuraal netwerk ook wel neuronen genoemd.


De werking van een neuraal netwerk
Een kunstmatig neuraal netwerk bestaat uit een aantal gestapelde lagen met neuronen. Een neuraal netwerk is opgebouwd uit een inputlaag, een outputlaag en een aantal tussenlagen. Via dit samenstel van lagen wordt de vraagstelling aan de inputlaag verwerkt tot een antwoord aan de outputlaag. Iedere laag heeft eigen neuronen waarin de relevante berekeningen worden uitgevoerd. Elke ontvangende neuron verwerkt zijn ingangssignaal en stuurt dit weer door naar de volgende neuron(en). Een mooi voorbeeld om de werking van neurale netwerken te verduidelijken is het proces dat bij beeldherkenning wordt gehanteerd. Een afbeelding komt binnen in de inputlaag en wordt vervolgens in iedere diepere laag verder verwerkt. Hierbij heeft elke laag zijn specifieke functie. In de eerste lagen na de inputlaag worden de basale vormen uit het beeld gefilterd om zodoende een grove interpretatie van het beeld te vormen. De laatste lagen voor de outputlaag detailleren de basale vormen uit de voorgaande lagen en bereiden de gegevens voor waarmee de outputlaag aan de slag kan gaan. In de outputlaag wordt de finale beoordeling gemaakt en wordt het antwoord geformuleerd.

Trainen van een neuraal netwerk
In bovenstaand voorbeeld zijn neurale netwerken getraind om beelden te herkennen. Aan de hand van heel veel voorbeeldbeelden worden vergelijkingen gemaakt om hieruit conclusies te trekken. Dit is redelijk complex, het systeem moet immers weten waarop het zich moet concentreren. In een beeld zijn de details nooit geïsoleerd van de omgeving, ze lopen over in andere beelden of zijn verbonden met andere objecten. Hierdoor is het voor een computersysteem erg moeilijk de vorm te herkennen. Er moet dus heel veel informatie voorhanden zijn om de algoritmes slimmer te maken. De technische trukendoos en creativiteit is veelzijdig. Er wordt bijvoorbeeld gebruik gemaakt van bewegende beelden als vergelijkingsmateriaal met gecompileerde visualisaties uit het beeldmateriaal. Uiteraard is het proces bij videoherkenning maar een van de vele voorbeelden van neurale netwerktechnologie en zijn er legio andere toepassingen die elk weer hun specifieke benadering vergen.

Zo eenvoudig is het niet…
Bovenstaand voorbeeld is redelijk simplistisch weergegeven, op de achtergrond is de techniek vele malen complexer. De interactie tussen de neuronen of processoren is adaptief. Een neuron heeft meerdere ingaande en meerdere uitgaande verbindingen. Elke verbinding heeft hierbij een gewicht dat is uitgedrukt in een reëel getal dat continue wordt bijgesteld door het lerende netwerk. De technologie van neurale netwerken staat nog aan het begin. Dat wordt duidelijk als we bedenken dat het menselijk brein bestaat uit ongeveer 100 miljard neuronen terwijl de kunstmatige neurale netwerken op dit moment ergens tussen de 10 en 1000 neuronen bevatten. Voorlopig is het menselijk brein nog veruit superieur! Volgende keer meer over deep learning.

vrijdag 6 oktober 2017

IoT en kunstmatige intelligentie (2)



In sneltreintempo zie je heel veel Internet of Things toepassingen met nieuwe mogelijkheden beschikbaar komen. De sensorische informatie wordt verzameld in platformen en voert aan de hand van slimme logica allerlei gewenste acties uit. Kunstmatige intelligentie wordt daarbij steeds vaker ingezet als een van de essentiële hulpmiddelen. Een belangrijke vorm van kunstmatige intelligentie is te vinden in machine learning. Kenmerkend aan deze fascinerende techniek is dat de ontwikkeling stamt uit de vorige eeuw en dus al ruimschoots voor het internettijdperk is begonnen. In 1946 werd het eerste computersysteem ENIAC ontwikkeld. In die tijd sprak men over een numerieke computer en werd het woord computer grofweg uitgelegd als een machine die werkt als een mens die numerieke berekeningen op papier uitvoert. Men had toen al de vooruitziende blik dat menselijk denken en leren door de computer kon worden uitgevoerd.

Kunstmatige intelligentie, we zitten er middenin
De Britse wiskundige Alan Turing ontwikkelde als computerpionier in 1950 een test om prestaties van intelligente systemen te meten. De Turing test is gebaseerd op het idee dat we alleen kunnen bepalen of een machine daadwerkelijk kan leren als we ermee kunnen communiceren zonder dat daarbij verschil wordt waargenomen met menselijke communicatie. Geen enkel systeem slaagde in die tijd voor deze ingenieuze test. Het heeft zelfs tot het huidige decennium geduurd voordat de eerste systemen door de Turing test kwamen. We zijn dus aanbeland in het tijdperk van kunstmatige intelligentie, spannend!


Van kunstmatige naar cognitieve intelligentie
Kunstmatige of Artificiële intelligentie kent zijn bron in machine learning. Het nieuwste begrip in deze technologische ontwikkeling is Cognitieve intelligentie. Dit is een doorontwikkeling die veel verder gaat dan de redelijk logische benadering van machine learning. Cognitieve systemen zijn ontworpen om problemen op te lossen op de manier waarop mensen problemen oplossen, door te denken, redeneren en onthouden. Een boeiende techniek waarbij steeds intensiever gebruik wordt gemaakt van neurale netwerken. Ik kom daar later zeker op terug, maar eerst wil ik terug naar de basis en meer vertellen over de achtergronden van machine learning.

Machine learning
Machine learning bootst niet het menselijk brein na maar is beperkt zich tot “leren” van data uit het verleden met als doel hiermee voorspellingen te maken. Er zijn een aantal manieren om een algoritme te laten “leren” uit beschikbare data. De toepassing hangt af van de wijze waarop de data werkelijk beschikbaar is. Om meer beeld bij kunstmatige intelligentie te krijgen is het goed om eerst de verschillende onderscheidingsvormen van machine learning nader te bekijken.

Supervised learning (gecontroleerd leren) maakt gebruik van goed gestructureerde en keurig gecategoriseerde data als input, vaak verzameld en gelabeld door mensen. De algoritmes worden met deze data getraind om steeds beter antwoord te geven aan de gebruikers. Het kenmerkende van supervised learning is dat de uitkomst in de ingevoerde data ligt. Een voorbeeld is de aanbeveling van producten zoals je vaak zie in webshops. Het algoritme geeft aanbevelingen op basis van bevindingen bij vergelijkbare klanten of eerdere aankopen. Supervised learning is redelijk lineair, met de voorspellingen kan weinig misgaan. Voorspellingen worden gedaan op vaste gegevens zoals het lichaamsgewicht, de leeftijd en bijvoorbeeld de activiteiten van personen.

Unsupervised learning (ongecontroleerd leren) werkt heel anders omdat de uitkomst van het algoritme buiten de ingevoerde data ligt. De data die als input dient is wel bekend maar niet gestructureerd. Het algoritme moet nu zelf structuur en verbanden in de data ontdekken en hier zijn output mee genereren. De computer zal de input verdelen in categorieën waarin elementen worden geplaatst gebaseerd op sterke gelijkenissen. Unsupervised learning wordt toegepast als er geen historische gegevens zijn. Een voorbeeld hiervan is het ontdekken van overeenkomsten in video of audio materiaal waarbij acties worden uitgezet op gedrag of bepaalde geluidsfragmenten.

Semi-Supervised learning is een combinatie van supervised en unsupervised learning. De input bestaat uit zowel gelabelde als niet gelabelde data. De keuze voor semi-supervised learning is vaak gebaseerd op een compromis, gelabelde data is immers moeilijker te verwerven en daarmee veel kostbaarder dan ongestructureerde data.

Reinforcement learning is doelgericht leren op basis van interactie met de omgeving. Veelgehoorde toepassingen zijn zelfrijdende auto’s die aan de hand van verzamelde informatie uit eerdere ritten bepaalde conclusies trekken. Je kunt dit vergelijken met mensen die conclusies trekken uit hun daden.

Opstap naar neurale netwerken
Deze laatste vorm van machine learning staat het dichts bij de doorontwikkeling van kunstmatige intelligentie naar cognitieve intelligentie. Een mooie opstap naar deep learning en neurale netwerken. Volgende keer meer!