Gepubliceerd op: vrijdag 4 december 2020

EI 247: Willemijn Kranendonk – Objectief wiskundig model

 

find_max().
 

Problem: given a list of positive numbers,
return the largest number on the list.
Inputs: a list L of positive numbers.
The list must contain at least one number.
(Asking for the largest number in a list
of no numbers is not a meaningful question.)
 
[[Het enige wat wij doen
is het voorspellen
van voorspelbaar
gedrag]]
Outputs: A number n, which will be the largest
number of the list.
[[Wij kunnen er niets aan
doen dat uw naam keer
op keer opduikt]]
 
Algorithm:
Set max to 0.
For each number x in the list L,
compare it to max. If x is larger, set max to x.
max is now set to the largest number in the list.
An implementation in Python:
def find_max(L):
    max = 0
    for x in L:
       if x > max:
          max = x
   return max
[[U heeft een afwijkende
achternaam]]

 

 

 

 

 

[[Kunnen we nog iets anders
voor u doen?]]

 
____
Het is niet heel gebruikelijk, maar het komt wel vaker voor dat een gedicht meerdere talen in zich verenigt. Dit gedicht heeft er drie: de natuurlijke talen Engels en Nederlands en de programmeertaal Python. Misschien is er zelfs sprake van vier talen, als we de manier waarop het ‘wiskundig model’ in de linkerkolom wordt beschreven een aparte taal vinden.

Die linkerkolom beschrijft eerst het probleem in de natuurlijke taal Engels. Wat het algoritme moet gaan doen. Het betreft een uiterst eenvoudig algoritme dat het hoogste getal moet bepalen van een reeks getallen.
Je kunt je afvragen hoe nuttig dat is. Als je eenmalig het hoogste getal moet vinden in een reeks van 10 getallen, dan kun je je de moeite van het schrijven van het algoritme besparen. Dat zie je in een oogopslag, zeker als de reeks een beetje overzichtelijk gepresenteerd wordt. Maar als je dat vaak moet doen, en zeker als de reeks uit duizenden of miljoenen getallen bestaat, dan loont het zeker de moeite het algoritme te schrijven.

Na de beschrijving in het Engels van de bedoeling, volgt een beschrijving van het algoritme in min of meer wiskundige termen, met variabelen als ‘x’ en ‘max’. Daarna volgt een implementatie in Python.

Waarom Python? Mogelijk om een relatie te maken naar de machine learning algoritmen waar we vandaag de dag vooral aan denken als we het hebben over algoritmen. Python wordt veel gebruikt in de data science en de machine learning.
Een ander interessant aspect aan Python is dat de opmaak betekenis heeft binnen de taal. Het inspringen van de regels van de code is noodzakelijk. Dat is in de meeste programmeertalen niet zo.
Dezelfde functie in Javascript kan er bijvoorbeeld op beide manieren hieronder uitzien:

function find_max(L){
    var max = 0;
    for (x of L){
       if (x > max){
          max = x;
       }
    }
   return max;
}
function find_max(L){ var max = 0; for (x of L){ if (x > max){ max = x; } } return max; }

Deze implementaties doen exact hetzelfde. De opmaak links is overzichtelijker en daarmee makkelijker te begrijpen is voor menselijke programmeurs. Maar in Python kun je dus niet zomaar de opmaak veranderen.

Afijn, waar de linker kolom dus van de beschrijving van de bedoeling van een algoritme via de (enigszins wiskundige) beschrijving van het algoritme naar een mogelijke implementatie van dat eenvoudige algoritme gaat, doorloopt de rechterkolom enkele stadia van de gevolgen van het gebruik van een (veel complexer) algoritme.

De rechterkant gaat dus over de menselijke kant van het gebruik van algoritmen. Dit deel is in het Nederlands geschreven. Een andere taal dan de talen die in de linkerkolom gebruikt worden. Het contrast tussen de twee werelden wordt zo nog groter.
Het lijkt een (telefoon-)gesprek tussen een medewerker van een bedrijf of instelling dat een algoritme gebruikt om uitzonderingen te identificeren, en een persoon die daar last van heeft, omdat ij door ‘een afwijkende achternaam’ steeds als uitzondering wordt aangemerkt. Denkend aan algoritmen, kunnen we gaan vermoeden dat dit gesprek niet met een natuurlijk persoon gevoerd wordt, maar met een chatbot. Veel inleving in de situatie van de benadeelde spreekt in ieder geval niet uit de tekst. Het woord ‘anders’ aan het einde krijgt zelfs een wrange smaak, omdat duidelijk is dat de spreker helemaal niet van plan is wat dan ook ‘anders’ te gaan ‘doen’ om de benadeelde te helpen.

Machine learning algoritmes zijn goed in het identificeren van uitzonderingen. Of dat nu om mensen gaat of getallen of plaatjes of iets anders. Wat dit gedicht ons laat zien, is dat als je naar uitzonderingen zoekt, je die altijd vindt. Maar niet alle uitzonderingen zijn relevant. Er is een check nodig of de gevonden uitzondering eigenlijk wel het antwoord is op een ‘meaningful question’.

Ironisch genoeg kunnen we de programmeertaal Python waarmee veel machine learning algoritmen worden gemaakt zelf als een uitzondering tussen de programmeertalen beschouwen.
Doe met deze kennis wat u wilt.

 

 

ALGO RITMES
kluger hans #39
www.klugerhans.net

 

 

 

 

 

Over de auteur

Jeroen van den Heuvel

- Jeroen vertaalt poëzie en kinderboeken. Daarnaast schrijft hij essays over poëzie. Hij is redacteur van ooteoote.nl.