-

AI: Hoe doen computers slimme dingen?

Het onderscheid tussen artificial intelligence en machine learning lijkt duidelijk, maar dat geldt niet voor iedereen. Het is ook complexe materie, vindt professor Maurits Kaptein. Welke vormen van machine learning zijn er eigenlijk, en wat zijn precies neurale netwerken?

Recent zat ik met collega-onderzoekers van JADS in een overleg met de data science manager van een van onze grootste supermarktketens. Insteek: hoe kunnen we ons online aanbod verder personaliseren? We bespraken veel, waaronder het gebruik van neurale netwerken – een vorm van machine learning die vanwege een ietwat oppervlakkige gelijkenis met het menselijk brein ook wel ‘kunstmatige intelligentie’ wordt genoemd. We spraken over machine learning en over nieuwe statistische methoden om te personaliseren. Het leek goed te gaan, totdat we de vraag kregen: “Dit klinkt allemaal interessant, dat machine learning en die modellen enzo, maar moeten we niet iets met AI?”

De vraag was ‘not even wrong’: we hadden het zojuist anderhalf uur over AI gehad. Jammer genoeg gebeurt dit vaker: in mijn werk als hoogleraar data science kom ik bij bedrijven, overheden, en zorginstellingen. Allen willen gebruik maken van AI, Machine Learning, of Data Science. Maar velen weten niet echt wat dat is. Dat is begrijpelijk, het is complexe stof. Maar, het is ook vervelend: doordat we de basis niet kennen kunnen we zin niet van onzin onderscheiden en maken we de verkeerde keuzes.

In een welgemeende poging om dat te veranderen geef ik les, en schreef ik het boek Hallo Wereld, Hallo Computer: Wat iedereen zou moeten weten over digitale technologie. En nu een volgende poging. In een komende serie bespreek ik verschillende vormen van machine learning, sta ik stil bij neurale netwerken en beschrijf ik wat computers nog niet kunnen. Maar eerst het begin: hoe kunnen computers überhaupt iets enigszins intelligents doen?

Stap 1: Hoe doen computers slimme dingen?

Computers voeren, met behulp van nullen-en-enen en transistoren – maar dat is te veel om hier te bespreken – in principe gewoon een lijst van, veelal vrij simpele, handelingen uit (jup, een algoritme). Doordat deze lijst van handelingen erg lang kan zijn, en doordat computers de handelingen heel snel kunnen uitvoeren, lijkt het soms alsof ze iets slims doen.

Een concreet voorbeeld van ‘iets slims’ is het uitzoeken van een film voor vanavond: een taak die computers geregeld uitvoeren. Laten we ervan uit gaan dat we de beschikking hebben over wat data die beschrijven hoe anderen, en wijzelf, een aantal films hebben gewaardeerd. De tabel hieronder geeft de scores van de films weer op een schaal van 1 (slecht) tot 5 (goed).

Naam Film a Film b Film c Film d Film e Film f Film g
Arie 5 5 4 1
Barry 5 1 1 5
Ik 4 2 4 1
Daniël 2 5
Eric 4
Femke 5 3 5 2 5 1
Gerard 5 1 5 5

Door even naar de tabel te staren zien we vrij snel hoe wij zelf ‘iets slims’ zouden doen: mijn beoordelingen komen overeen met die van Femke. Femke vond film F fantastisch dus dit lijkt een goede suggestie.

Het aanraden van een film die iemand anders met dezelfde smaak leuk vond, is een prima idee en hier begint het mee: als we een computer iets slims willen laten doen moeten we beginnen met een goed idee. Maar, het idee is voor de computer niet voldoende: we moeten nu het idee nog formaliseren: op zo’n manier beschrijven dat een computer er iets mee kan, en optimaliseren – de oplossing vinden.

De formalisatie is in dit geval niet moeilijk als we even stil staan bij hoe we dit zelf doen: Femke lijkt op mij omdat ze film A en C hoog beoordeeld (net als ik), en film B laag (net als ik). Barry lijkt niet op mij: hij vond film B goed (ik niet), en film C slecht (ik wederom niet). Dus, hoe dichter onze scores bij elkaar zitten, hoe meer we dezelfde smaak hebben. De afstand tussen scores is vrij simpel uit te rekenen: om de afstand tussen mijzelf en Femke uit te reken kan ik telkens het absolute verschil in beoordelingen van mijzelf en Femke nemen en deze bij elkaar optellen. Het absolute verschil is het verschil waarbij ik de richting negeer – veelal aangegeven met || – dus |5-4| = |4-5| = 1. De som van absolute verschillen tussen mijzelf en Femke is dan ook: |5-4| + |3-2| + |4-5| + |1-2| = 4. Als ik hetzelfde doe bij Barry, dan zie ik dat Barry en ik meer van elkaar verschillen: |5-2| + |1-4| = 6. Ik heb dus nu een simpele lijst van handelingen die een computer kan uitvoeren om “iemand met dezelfde smaak” te vinden.

De formalisatie van “dezelfde smaak” als “een klein absoluut verschil in beoordelingen” is stap 1 om een computer iets slims te laten doen. Stap 2 is het optimaliseren: het zoeken naar de persoon die daadwerkelijk het meest op mij lijkt. In dit geval is de optimalisatie conceptueel simpel: De computer rekent het verschil tussen mijn beoordelingen en die van alle anderen een-voor-een uit en kiest daarna degene die het meest op mij lijkt. De handeling “kijken of er een film is die degene met dezelfde smaak leuk vond en ik niet heb gezien” is daarna ook vrij makkelijk te programmeren.

Het bovenstaande is maar het tipje van de sluier: er moet nog een stuk meer gebeuren voordat we een goed recommender systeem hebben gemaakt. Maar, de basis is helder: we moeten van een redelijk idee (bekijken wie er op mij lijkt), naar een formalisatie (het absolute verschil in scores) en een optimalisatie (een manier om te zoeken naar het kleinste absolute verschil). Een beetje begrip van deze stappen maakt het direct mogelijk om problemen in deze “slimme” oplossing te identificeren: Wat doen we als er een nieuwe film uitkomt? Wat doen we als de data niet representatief zijn? Dergelijke vragen zijn nuttig als je nadenkt over de aanschaf en het gebruik van “slimme” computers. Daarnaast stellen ze je in staat betere beslissingen te maken.

Deel dit bericht

1 Reactie

Rick

Goed begin, maar mist er niet iets? Je beint met de vraag “Welke vormen van machine learning zijn er eigenlijk, en wat zijn precies neurale netwerken?”.

Na een goede intro (Stap 1) worden die vragen helemaal niet beantwoord. Of mis ik iets?

Plaats een reactie

Uw e-mailadres wordt niet op de site getoond