Over algoritmen

Over algoritmen bestaan nogal wat misverstanden. Het ergste misverstand is volgens mij dat een algoritme een computer is die onafhankelijk van mensen beslissingen neemt over allerhande zaken. Een voorbeeld daarvan is te vinden bij de toeslagenaffaire, waarbij mensen ten onrechte zijn aangemerkt als fraudeur, enkel en alleen omdat ze 'eigenschappen' hebben zoals een laag inkomen, een buitenlands klinkende naam of een gekleurde huid. Over deze schandvlek in onze geschiedenis wil ik het in dit verhaal verder niet hebben, ik gebruik het wel als kapstok om misverstanden uit de weg te ruimen.

Een algoritme is géén computer
Een computer is hardware, iets dat je beet kunt pakken. Het is een kastje waar (computer-)chips in zitten, waar vaak stroom- en/of datakabels aan vast zitten, en vaak een soort televisie (ook bekend als 'monitor'), knoppenkastjes (0.a. toetsenbord), enzovoort.

In de begintijd van de computers konden die dingen vaak maar één ding, zoals tekstverwerken, boekhouden, enz. Dit soort 'dedicated' computers bestaat nog steeds. Denk aan het besturen van een wasmachine, een vekeerslichtinstallatie, …

Een algoritme is géén computerprogramma
Een computerprogramma is software. Zonder software kan de hardware niets. Software is een reeks instructies, gecodeerd in enen en nullen.
De software (of programma's) kan andere programma's starten en/of beëindigen; Het kan zo geprogrammeerd zijn dat het zichzelf opnieuw kan opstarten. Hieronder een voorbeeld van software die als een soort rij vallende dominostenen andere software opstart.
Bij het opstarten van een computer wordt begonnen met BIOS. Dat is een programma dat niets anders doet dan de processor, de harddisk en de andere apparaten opdracht geven om op te starten. Die apparaten hebben vaak elk een eigen BIOS, die het opstarten regelen en beschikbaar maken. Dat gebeurt allemaal volgens een vaste reeks instructies, feitelijk een computerprogramma. Als daarvan moet worden afgeweken krijg je (hopelijk) een foutmelding en stopt het BIOS.

Als er een data-opslag apparaat succesvol is opgestart wordt door het BIOS gezocht naar een Operating System (OS) en start dat op: Windows, Linux, Android, iOs, … Altijd wordt het eerst gevonden OS gestart, tenzij is geprogrammeerd dat de gebruiker een keuze kan maken.
Hiermee is het BIOS klaar. Merk op dat het ene programma het andere programma start.
Het eerste wat het OS doet is instellingen ophalen en activeren, drivers voor randapparaten (printers, internetverbinding, …) starten, enz. Tenslotte wordt de gebruiker (wie of wat dat ook mag zijn) toegang gegeven en gaat het OS wachten op opdrachten (events). Events kunnen zijn: Het indrukken van een toets, bewegen van de muis, maar ook een signaal uit een detectielus in een verkeerslichteninstallatie.

Een computerprogramma is géén algoritme
Een computerprogramma is een reeks instructies aan de computer, die bestaat uit enen en nullen, die door een programmeur wordt gemaakt op basis van één of meerdere algoritmes.
De reeks enen en nullen worden gemaakt uit leesbare code. Daarvoor wordt een programmeertaal (C, Python, JavaScript, …) gebruikt. De leesbare code wordt gecompileerd (omgezet in enen en nullen en samengevoegd tot een uitvoerbaar bestand,) of geïnterpreteerd (regel voor regel omgezet in enen en nullen en meteen uitgevoerd).

Een algoritme is een recept voor een oplossing
Er is moet iets gerealiseerd worden (= het gewenste doel), een set gegevens (= de beschikbare / benodigde data) en hoe die gegevens gebruikt moeten worden om het doel te bereiken (de transactie). Als de benodigde data niet beschikbaar is, moet die beschikbaar worden gemaakt. Dat is een algoritme op zichzelf.
Denk aan een recept voor appeltaart. In het kookboek (= bibliotheek met oplossingen die iemand anders al heeft bedacht) staat een lijst met ingrediënten (= lijst met benodigde / beschikbare data) en de stappen om de appelaart te bakken. Zonodig even naar de winkel lopen.om appels te kopen. Hoe dat moet staat niet in het kookboek, maar om appels te kopen kun je wel een algoritme opstellen: Pak je jas, pak je portemonnee, loop naar de winkel, doe appels in je winkelmandje, enz. Al deze stappen zijn weer onder te verdelen in kleinere stappen, enzovoort.
Om de taart te bakken moet je: de oven aanzetten, de appels schillen en in stukjes snijden, mengen met basterdsuiker, kaneel en rozijnen. Je moet het deeg maken: Meel, eieren, water, bakpoeder en zout mengen, kneden, in de vorm doen, … Dit zijn de transacties.

"Zelflerende" computers
Kort en goed: zelflerende computers bestaan niet. Software die andere beslissingen gaat nemen "omdat het 'vroeger' ook anders moest" bestaat wel, eenvoudigweg omdat die software in staat is zijn eigen algoritmes te wijzigen.
Als voorbeeld nemen we een spam-filter voor e-mail op een PC. Een dergelijk filter kijkt naar de inhoud van een mail en vergelijkt die met bekende eigenschappen van spam-mails. Als een aantal van die eigenschappen aanwezig is, wordt de mail aangewezen als spam en naar de spam-map verplaatst. Het algoritme dat in het filter is geprogrammeerd is kan eigenschappen van spam herkennen. Maar het kan fout gaan.
Een mail kan eigenschappen hebben die niet in het filter zijn geprogrammeerd, omdat ze niet in het algoritme zitten. Maar de lezer van de mail kan vinden dat het wel spam is. De gebruiker kan het filter aangeven dat het spam is. Als dat een aantal keren is gebeurd, zal het filter in het vervolg de mail wél als spam aanmerken en het bericht in de spam-map plaatsen. Feitelijk heeft het filter zichzelf veranderd.
Andersom gebeurt het ook: mail die ten onrechte als spam wordt aangemerkt. Ook dat kan aan het filter kenbaar worden gemaakt en zal het filter zichzelf na verloop van tijd veranderen.

Bij een betrekkelijk eenvoudig algoritme als een spam-filter is het eenvoudig om in te grijpen als er een fout in is geslopen. Dat komt doordat het algoritme wordt getraind door de gebruiker van het filter, lees: een mens.
Een ander verhaal wordt het als het algoritme de mogelijkheid heeft zichzelf te veranderen zonder dat daar mensen aan te pas komen. De door een algoritme aan zichzelf aangebrachte wijzigingen kunnen er namelijk voor zorgen dat er van alles uit de hand loopt. Dat geldt zeker als de gevolgen van ongewenste veranderingen ingrijpen in de levenssfeer van mensen. Dat kan zelfs leiden tot Ongekend Onrecht zoals een toeslagenaffaire, maar daar zouden we het hier niet over hebben …

De moraal van dit verhaal:
Een computerprogramma mag NOOIT zijn eigen algoritmes wijzigen zonder tussenkomst van een mens. Aanpassingen aan algoritmes die onder toezicht van een mens zijn gedaan moeten altijd kunnen worden teruggedraaid.

Tenslotte:
In het item "Het 8-koninginnenprobleem" wordt een min-of-meer wiskundig probleem in detail uitgewerkt.

 
terug

html-681; Laatste wijziging: 23 september 2022