ID.nl logo
Van neuraal netwerk tot deep learning: experimenteren met AI
© svitlini - stock.adobe.com
Huis

Van neuraal netwerk tot deep learning: experimenteren met AI

Dagelijks hoor en lees je over artificiële intelligentie (AI). Daarbij worden vaak termen als neuraal netwerk en deep learning gebruikt. In dit artikel vertellen je hier meer over en gaan we ook zelf met AI aan de slag. We doen dit via TensorFlow Playground en Google Teachable Machine.

In dit artikel laten we zien hoe je zelf kunt experimenteren met kunstmatige intelligentie:

  • Bouw met TensorFlow Playground een neuraal netwerk
  • Maak je eigen beeldherkenningsmodel met Google Teachable Machine
  • Train de AI met foto's van jezelf via je webcam
  • Pas de AI toe in een educatieve setting, zonder programmeerkennis

Ook bijzonder interessant: Makkelijk switchen tussen AI-taalmodellen? Maak kennis met Jan

Het begrip artificiële intelligentie verwijst naar de mogelijkheid om zelfstandig kennis op te nemen, problemen op te lossen en beslissingen te nemen, net zoals een mens. Het woord ‘artificieel’ duidt erop dat deze vorm van intelligentie door mensen is ontworpen en door computers of machines wordt uitgevoerd en dus niet door een biologisch brein.

Veel AI-toepassingen, zoals beeld- en spraakherkenning en taalverwerking, maken hierbij gebruik van zogenoemde neurale netwerken. Deze zijn namelijk uitstekend geschikt voor het herkennen van complexe patronen in grote hoeveelheden ongestructureerde data.

Zo’n digitaal neuraal netwerk (DNN) is gebaseerd op de werking en structuur van het menselijke brein, maar het blijft niet meer dan een abstracte vereenvoudiging. Het menselijke brein is tenslotte (vooralsnog) aanzienlijk complexer, flexibeler en vooral ook energiezuiniger met een maximaal verbruik van circa 20 watt. Ons brein is bovendien superieur in creativiteit, contextueel begrip en emotionele verwerking. 

Biologisch neuraal netwerk

De menselijke hersenen zijn opgebouwd uit een biologisch neuraal netwerk. Dat bestaat uit tientallen miljarden neuronen of zenuwcellen. Deze sturen signalen naar elkaar door via minuscule ruimtes tussen de neuronen, synapsen genoemd. Binnen een neuron (tussen het cellichaam en het uiteinde van de zenuwvezel) gebeurt dit elektrisch. Bij de overgang naar een ander neuron verloopt dit chemisch. Er worden signaalstoffen (neurotransmitters, zoals glutamaat, dopamine en serotonine) vrijgegeven. Deze binden zich aan receptoren van het ontvangende neuron.

Laten we dit verduidelijken. Wanneer je een dier ziet, sturen je ogen het beeld via het neurale netwerk naar je hersenen, door talrijke lagen van neuronen. Elke laag zoekt naar specifieke kenmerken, zoals oren, lichaamsgrootte en vacht. Door eerdere ervaringen zijn sommige neuronen getraind om bijvoorbeeld katten te herkennen, andere honden. Herkent het netwerk meer kenmerken van een kat, dan worden de bijbehorende neuronen sterker geactiveerd. Worden in de uitvoerlaag meer ‘kat-neuronen’ dan ‘hond-neuronen’ actief, dan beslissen je hersenen dat het om een kat gaat. Vergis je je, dan onthouden je hersenen dit en passen de verbindingen tussen neuronen zich aan (neuroplasticiteit): je leert.

Neurotransmitters zetten het signaal via de synaps over naar het ontvangende neuron.

Digitaal neuraal netwerk

Een digitaal neuraal netwerk (DNN) werkt net als het biologisch brein met neuronen (zie bovenstaand tekstkader). Alleen in een DNN gaat het hierbij om wiskundige rekeneenheden die informatie verwerken. Elk neuron ontvangt invoer, vermenigvuldigt deze met een gewicht om de relevantie te bepalen en telt daar een compensatiewaarde, de zogeheten bias, bij op. Samen vormen deze gewichten en biases de ‘parameters’. GPT-4 bevat er naar schatting 1,7 biljoen.

De informatie stroomt door een of meer verborgen lagen tussen de invoer- en uitvoerlaag. Elke verborgen laag verwerkt de gegevens verder, waardoor complexere patronen worden herkend. Hiervoor gebruikt elk neuron een zogeheten activatiefunctie, die bepaalt of en in welke mate de uitvoer wordt doorgegeven. Zonder activatiefuncties zou het netwerk alleen eenvoudige wiskundige verbanden leren, zoals rechte lijnen, terwijl het nu ook met complexe, gebogen of gelaagde patronen overweg kan.

Een eenvoudig digitaal neuraal netwerk, met één verborgen laag.

Sturing en zelflering

Mensen sturen het DNN indirect aan door het bepalen van het aantal lagen, het aantal neuronen per laag en het type activatiefunctie. Verder kiezen ze hoe het netwerk moet leren, bijvoorbeeld door te bepalen hoeveel data het ziet en hoe complex de gegevens zijn, hoe vaak het leert en hoe groot de aanpassingen mogen zijn. Tijdens deze training worden de parameters automatisch aangepast door het netwerk om optimaal patronen te herkennen en voorspellingen te doen.

Vereenvoudigd komt het hierop neer: nadat het netwerk een voorspelling heeft gedaan, wordt berekend hoe ver deze afwijkt van de juiste waarde, waartoe het netwerk tijdens de training toegang heeft. Deze afwijking wordt vervolgens teruggestuurd door het netwerk, van de uitvoer- naar de invoerlaag. Onderweg berekent het netwerk hoeveel elke verbinding (gewicht) en extra waarde (bias) heeft bijgedragen aan de fout. Daarop past het netwerk de parameters aan om de fout kleiner te maken. Dit proces herhaalt zich vele malen, zodat het netwerk steeds accurater wordt. Dit principe wordt ‘backpropagation’ genoemd (letterlijk: achterwaartse terugkoppeling) en maakt dat het netwerk grotendeels zelflerend is.

©Vallabh soni - stock.adobe.com

Backpropagation: het netwerk stuurt zelf bij op basis van de vastgestelde afwijking.

TensorFlow Playground

Spelen met werking DNN

Het wordt interessanter wanneer je zelf experimenteert met de principes en werking van een DNN. Ga naar https://playground.tensorflow.org. Hier herken je de lagen met neuronen: een invoerlaag, twee verborgen lagen en een uitvoerlaag. Bij DATA is al een specifieke dataset geselecteerd. Zodra je op Run (het pijltje) klikt, probeert het netwerk het patroon in de gekozen dataset te herkennen. Het resultaat verschijnt onder Output.

Hoe langer je het proces laat lopen, hoe hoger het aantal trainingscycli (hier epochs genoemd) en hoe accurater de ruimte-indeling of dataclassificatie in de output: blauwe achtergrond voor blauwe punten en oranje achtergrond voor oranje punten. Omdat het standaard om een eenvoudig datapatroon gaat, zal de Training loss waarschijnlijk 0.000 zijn. Dit betekent dat het netwerk het patroon vrijwel meteen correct herkent op basis van de ingestelde parameters, zodat er nauwelijks of geen backpropagation nodig is.

Met de standaardinstellingen kan dit neurale netwerk moeiteloos overweg.

Verdere aansturing

Je kunt het netwerk flink uitdagen door enkele instellingen aan te passen. We geven je enkele mogelijkheden die zeker leerzaam kunnen zijn. Activeer in de invoerlaag bijvoorbeeld alleen de bovenste eigenschap X1. Het netwerk classificeert dan uitsluitend op basis van de horizontale posities van de punten. Voor de derde dataset (linksonder) kan dit voldoende zijn, maar voor andere niet. Probeer het gerust zelf uit. Je zult ook merken dat hoe meer features je inschakelt, hoe meer informatie het netwerk gebruikt en hoe beter het complexe patronen kan herkennen.

Verhoog eens Noise (ruis) met de schuifknop om het leerproces te bemoeilijken. De datapunten worden hierdoor minder gestructureerd, wat je meteen terugziet in de Output. Verminder nu eens het aantal neuronen (via de minknop boven elke laag) om het netwerk minder complexe beslissingen te laten nemen. Minder verborgen lagen verlaagt eveneens de capaciteit om diepere datapatronen te leren.

Nog steeds te makkelijk? Verlaag dan de Learning rate naar bijvoorbeeld 0.0001. Een lagere leerratio betekent tenslotte kleinere stappen bij het aanpassen van de gewichten (wat zich hier visueel vertaalt als minder snel aangepaste lijndiktes tussen de neuronen), waardoor het netwerk langzamer leert.

Experimenteer gerust verder met andere, ook meer geavanceerde instellingen om het netwerk – en jezelf – uit te dagen.

Met deze instellingen wordt de training van het neurale netwerk nagenoeg onmogelijk.

Deep learning

Een DNN is een van de meest effectieve methoden of algoritmen binnen machine learning (ML), waarbij computers leren van data zonder ze expliciet te moeten programmeren. Het is vooral geschikt voor complexe taken zoals beeldherkenning, spraakherkenning en taalverwerking.

Eenvoudige ML-modellen hebben meestal een of enkele verborgen lagen. Bij een complexere architectuur met meerdere verborgen lagen, die in staat is complexere patronen en relaties te herkennen, spreekt men van deep learning (DL). Deep learning is daarmee een subonderdeel van machine learning, al is het onderscheid niet altijd scherp te maken.

Bij DL gebruikt het neurale netwerk logischerwijze meer parameters, wat meteen ook een grotere hoeveelheid data vereist om het effectief te kunnen trainen. Meer data en parameters vereisen uiteraard ook meer rekenkracht, waarvoor vaak talrijke gpu’s (Graphics Processing Units) of gespecialiseerde processors als Googles TPU’s (Tensor Processing Units) nodig zijn.

Een Google TPU op een PCIe-kaart.

Google Teachable Machine

Experimenten met AI

Het zal je nauwelijks verbazen dat je, behalve geavanceerde kennis, frameworks als TensorFlow of PyTorch nodig hebt om een DL-model te ontwikkelen. Wil je hier desondanks toch mee experimenteren, dan biedt Googles Teachable Machine een uitstekende omgeving. Dit project heeft namelijk een interface waarmee je zonder technische expertise toch een AI-model kunt trainen.

Het platform is gebaseerd op DL-technieken en gebruikt neurale netwerken om patronen en kenmerken in diverse datasets te herkennen. Het werkt met voorgetrainde modellen, maar je kunt ook eigen gegevens toevoegen om een aangepast model te trainen. Na training kun je het model exporteren in verschillende formaten en inzetten in een web-app, mobiele app of op toestellen als Raspberry Pi, Arduino of IoT-apparaten.

Via deze GitHub-pagina vind je talrijke leuke projecten met Teachable Machine (van Bananameter tot Snake Game), evenals tutorials. Maar laten we nu vooral zelf aan de slag gaan met een bescheiden project.

Dit model heeft meteen door dat deze banaan overrijp is.

Starten met project

Surf naar https://teachablemachine.withgoogle.com. Hier leer je een computer trainen om je eigen afbeeldingen, geluiden en houdingen te herkennen. Klik op Aan de slag om een nieuw project te starten en kies uit drie modelopties: Projectafbeelding, Audioproject of Project met houdingen.

Wij nemen het eerste model als voorbeeld. Dit opent een venster waarin je kunt kiezen tussen een Model voor standaard afbeelding (kleur, 224 × 224 pixels) of een Model voor ingesloten afbeelding (grijswaarden, 96 × 96 pixels). Dit laatste, een embedded model, is geschikt voor microcontrollers. Wij kiezen hier voor het wat grotere standaardmodel.

Teachable Machine laat je uit drie grote trainingsmodellen kiezen.

Dataset en klassen aanmaken

Je komt nu terecht op een webpagina waar je eerst je dataset moet aanmaken. In dit geval bestaat deze uit afbeeldingen. Je deelt deze op in twee of meer categorieën, die je ook labelt. Teachable Machine heeft standaard twee categorieën (klassen), maar via +Een klasse toevoegen kun je eenvoudig meer klassen toevoegen.

Het aantal klassen dat je nodig hebt, hangt af van je project. Voor het onderscheiden van bijvoorbeeld QR-codes en zebrapatronen volstaan twee klassen (QR en Zebra). Wil je echter overrijpe, rijpe en rauwe bananen classificeren, dan heb je er minstens drie nodig. Zorg eerst dat het juiste aantal klassen beschikbaar is. Via de knop met drie stippen verwijder je desnoods overtollige klassen. Klik bij elke klasse op het potloodicoon en geef de categorie een zinvolle naam.

Daarna voeg je data toe aan elke klasse via de knop Uploaden of Webcam. Bij gebruik van de webcam moet je de pagina toegang geven tot de aangekoppelde camera. Door op Ingedrukt houden om op te nemen te klikken, stuur je continu snapshots naar Teachable Machine. De afbeeldingen verschijnen vervolgens in de betreffende klasse.

Vul je dataset met voldoende en gevarieerde afbeeldingen, via webcam en/of uploads.

Trainen en testen

Zodra je voldoende en gevarieerde data hebt toegevoegd, kun je het AI-model trainen. Klik op Model trainen om direct te starten of pas eerst enkele instellingen aan via het pijlknopje bij Geavanceerd. Hier kun je Tijdvakken, Batchgrootte en Leersnelheid aanpassen, vergelijkbaar met Epochs, Batch size en Learning rate in TensorFlow Playground. Klik op het vraagteken voor meer uitleg. Bij Geavanceerde opties kun je in een apart venster interessante statistieken over het trainingsproces bekijken. Na afloop verschijnt de melding Model getraind.

Klik rechts op Voorbeeld bekijken, zet Invoer op AAN en kies of je via Webcam of Bestand data wilt aanleveren. Wij kozen voor Webcam en testten met verschillende afbeeldingen van QR-codes en zebra’s. Bij Uitvoer toont Teachable Machine een percentage dat de zekerheid van de classificatie weergeeft.

Een QR-code op de rug van een zebra: daar heeft Teachable Machine niet van terug.

Export

Als alles goed werkt en je het model buiten de Teachable Machine-omgeving wilt gebruiken, klik je op Model exporteren. Kies voor Tensorflow.js, selecteer Downloaden en klik op Mijn model downloaden. Pak het gedownloade zip-bestand uit in een lege submap \my_model. Deze bevat een drietal bestanden, maar niet je trainingsdata. Dit komt doordat de neurale netwerkarchitectuur, geoptimaliseerde gewichten en modelconfiguratie kunnen volstaan voor nieuwe voorspellingen.

Ga vervolgens naar het tabblad Javascript, klik op Kopiëren en plak de code in een teksteditor, zoals Kladblok of Notepad++. Sla dit op als een html-bestand in de map net boven de submap \my_model.

Om lokaal te kunnen testen zonder browserfoutmeldingen zet je eerst een eenvoudige webserver op. Wij gebruikten de gratis Abyss Web Server (voor Windows, macOS en Linux). Plaats het html-bestand samen met de submap \my_model in de standaardmap C:\Abyss Web Server\htdocs. Dubbelklik erop om het in je browser te starten. Als het goed is, kun je nu meteen je AI-model testen. Succes.

Je kunt het model bijvoorbeeld testen via een lokale webserver.

▼ Volgende artikel
Zo laat je je huis schoon en fris achter als je op vakantie gaat
© ID.nl
Huis

Zo laat je je huis schoon en fris achter als je op vakantie gaat

Koffer? Check. Opladers? Check. Paspoort voor de derde keer gecontroleerd? Ook check. Maar voordat je de deur achter je dichttrekt: zorg dat je je huis fris achterlaat. En nee, dat betekent niet dat je een grote schoonmaak hoeft te houden. Maar loop even door elke kamer en doe een paar kleine dingen – dan kun je straks bij thuiskomst dat vakantiegevoel nog wat langer vasthouden. Fijne vakantie!

Vakantie-schoonmaak-checklist

Terugkomen in een fris huis zit hem vooral in kleine dingetjes. In dit artikel lees je wat je per kamer kunt doen om daarvoor te zorgen. 🛋️ Woonkamer 🥘 Keuken 🛌 Slaapkamer 🛁 Badkamer

Lees ook: Zo maak je je koelkast klaar voor vakantie

Woonkamer

Begin met opruimen. Losse spullen op tafel, de afstandsbediening, lege glazen of rondslingerende post: leg ze op hun plek of berg ze tijdelijk op in een lade of mand. Stofzuig nog even goed, vooral onder de bank, waar kruimels zich graag verzamelen. Een schone vloer helpt ook tegen zilvervisjes of ander ongedierte.

Vergeet ook de stofzuiger zelf niet: vervang de zak of leeg de stofcontainer en controleer het filter. Als je een geurstaafje (Een wát? Kijk hier) in je stofzuiger gebruikt, doe er dan meteen een nieuwe in. Zo blijft je stofzuiger ook tijdens je afwezigheid lekker ruiken.

Laat de gordijnen niet helemaal open, maar doe ze ook niet helemaal dicht. Een beetje daglicht voorkomt mufheid en kan tegelijkertijd inbrekers afschrikken, omdat het dan lijkt of er gewoon iemand thuis is.  Zet eventueel een timer op een lamp om 's avonds licht te laten branden. Planten kun je bij elkaar zetten, dat houdt de luchtvochtigheid lokaal iets hoger en voorkomt uitdroging. Vraag iemand ze één keer water te geven als je langer dan een week wegblijft.

Je wilt natuurlijk niet je ramen open laten staan wanneer je er niet bent, maar het is wel belangrijk dat er wat frisse lucht in je huis kan komen. Heb je ventilatieroosters boven de ramen, zet die dan open (dat geldt voor alle kamers) Heb je die niet, zet dan in ieder geval de deuren in huis open, zodat er in ieder geval nog een beetje luchtcirculatie is.

Keuken

Ruim je koelkast op en gooi alles weg wat kan bederven tijdens je afwezigheid. Een bakje met baking soda of een halve citroen helpt tegen nare luchtjes. Check of er geen kruimels meer in de oven of magnetron liggen. Maak ook de prullenbak leeg en doe er een nieuwe zak erin. Je kunt daar wat waspoeder in doen of een paar wattenschijfjes gedrenkt in schoonmaakmiddel om te zorgen dat het fris blijft ruiken.

Laat geen vaat staan – ook geen koffiekopjes of pannen 'voor later'. Draai nog een laatste afwas en laat de deur van de vaatwasser daarna op een kier staan, zo voorkom je schimmel. Haal ook nog even een doekje door de gootsteen en spoel die goed door met heet water.

Slaapkamer

Verschoon je bed net voordat je weggaat. Er is weinig zo fijn als thuiskomen en meteen onder frisse lakens kunnen kruipen. Laat kleding niet los over een stoel hangen, maar leg het in de kast of gooi het in de wasmand. Kijk of je losse rommeltjes op je nachtkastje ergens in een la kwijt kunt of in een mandje. Haal even een stofdoek over de meubels en doe een snelle stofzuigbeurt.

Over wasmand gesproken: gooi daar geen natte spullen meer in. Dat gaat gegarandeerd muf ruiken. Draai eventueel nog een laatste was en hang die uit op een plek waar goed lucht circuleert, of gebruik een droogrek dat je in een goed geventileerde ruimte zet.

Badkamer

Maak je toilet en wastafel goed schoon. Controleer het doucheputje en haal eventueel haren of vuil weg. Stilstaand water in een verstopt putje kan snel muf worden. Heb je een bad? Giet dan wat warm water door de afvoer en verwijder vuil van de randen. Let ook op de randen van de douchedeur of -wand, waar vaak zeepresten blijven zitten. Alles wat je nu weghaalt, kan straks niet gaan stinken of aankoeken.

Giet daarna een scheutje chloor of ander wc-reinigingsmiddel in het toilet en laat dat gewoon staan. Dat voorkomt geurtjes. Zet ook hier zéker het ventilatierooster open (want: vochtige ruimte. Dat helpt zowel tegen schimmel als tegen vieze luchtjes.

Liggen er nog natte handdoeken? Draai dan nog even een laatste was en gooi daar ook meteen de badmat bij. Tot slot kun je in het badkamermeubel kun je een klein geurzakje leggen, bijvoorbeeld met lavendel of eucalyptus. Een natuurlijke luchtverfrisser, zodat je na je vakantie niet meteen begroet wordt door een muffe badkamerlucht.

Tot slot

Controleer nog één keer: zijn alle prullenbakken geleegd, staat er geen vieze vaat meer, zijn alle apparaten uitgeschakeld? Haal stekkers uit het stopcontact van apparaten die je niet nodig hebt – dat is veiliger én scheelt energie. Laat rolluiken of gordijnen gedeeltelijk open, zodat het huis een bewoonde indruk maakt. Zo, jij bent klaar om te gaan. Fijne vakantie!

 

▼ Volgende artikel
Nieuwe en verbeterde spraakopdrachten voor je iPhone: zo gebruik je ze
© andranik123 - stock.adobe.com
Huis

Nieuwe en verbeterde spraakopdrachten voor je iPhone: zo gebruik je ze

Iedereen weet dat je aan een iPhone via Siri allerlei dingen kunt vragen. In iOS 18 zijn de stembedieningscommando’s nog verder verbeterd en kun je onder meer elementen op het scherm bedienen, gebaren uitvoeren en op knoppen drukken.

In drie stappen laten we zien hoe je aangepaste spraakopdrachten instelt op je iPhone:

  • Schakel spraakopdrachten in via Instellingen > Toegankelijkheid
  • Spreek je gekozen commando driemaal in om het te activeren
  • Voeg acties toe die moeten gebeuren na het uitspreken van een spraakcommando

Lees ook: 4 dingen die mogelijk zijn op je iPhone vanaf iOS 18.2

Spraakopdrachten configureren

Voordat je stembediening inschakelt, zorg je dat je iPhone verbinding heeft met internet. Als alles straks geconfigureerd is, heb je geen internetverbinding meer nodig. Ga naar Instellingen / Toegankelijkheid, zodat je bij Spraakopdrachten komt. Schakel Spraakopdrachten in door het schuifje groen te maken. Vervolgens kom je in het scherm Configureer gesproken opdrachten. Tik op Ga door. Nu start een bestandsdownload. Als die klaar is, ga je verder. Om alvast even te proberen, scrol je door de opdrachten en kies je er eentje, bijvoorbeeld Schermafbeelding. Tik op deze opdracht. In het scherm Aangepaste zin typ je de naam van deze opdracht. In ons voorbeeld kiezen we het woord Screenshot als commandonaam.

Geef iedere opdracht een herkenbare naam.

Driemaal uitspreken

In het volgende scherm moet je drie keer een zelfbedacht commando uitspreken dat als trigger voor de spraakopdracht zal dienen. Daarna zie je het scherm Taak is gereed. Klik op de knop Ga door of gebruik de knop Voeg er nog een toe. Wanneer je nu bijvoorbeeld tijdens het browsen het woord Screenshot uitspreekt, zal de iPhone meteen een schermafbeelding maken en opslaan, zonder dat je verder iets hoeft te doen.

Uiteraard kun je meerdere spraakopdrachten vastleggen. Ze worden in het scherm van spraakopdrachten bij Handelingen opgeslagen. Als je rechtsboven op de knop Wijzig tikt, kun je zo’n gemaakte spraakopdracht selecteren en verwijderen. Wat nog niet lukt met de spraakopdrachten is in het Nederlands tekst dicteren, bijvoorbeeld in een e-mailbericht. De dicteerfunctie ondersteunt verschillende talen, maar nog geen Nederlands.

Spreek driemaal de trigger voor de spraakopdracht uit.

Deelopdrachten

Soms moet je na zo’n spraakopdracht nog extra handelingen uitvoeren, zoals bij: Maak QR code aan. Tik op Voeg taak toe en bij de opdrachten kies je Maak QR-code aan. Vervolgens geef je het commando een naam en spreek je de opdracht uit. Wanneer je bijvoorbeeld een website bezoekt en je zegt Maak QR-code, dan zal de iPhone vragen wat je met die QR-code wilt doen: een website openen, een bericht versturen, een e-mail versturen, een contact toevoegen, een activiteit toevoegen of een draadloos netwerk configureren.

Wat is de functie van de QR-code die de iPhone zal maken?

Watch on YouTube