Hoe machines leren
De belofte van kunstmatige intelligentie (AI) is al honderden jaren oud. Maar het creatieve vermogen om te redeneren, leren en plannen bleek lange tijd ongrijpbaar. De laatste decennia zijn er echter grote stappen gemaakt in de studie naar kunstmatige intelligentie. We zijn nu zelfs op het punt dat computers zelfstandig auto kunnen rijden, ziekten kunnen detecteren en kunnen voorspellen in welke producten we geïnteresseerd zijn (dat laatste overigens met wisselend succes). Het is aannemelijk dat kunstmatige intelligentie de komende jaren een alleen maar grotere rol in ons leven zal gaan spelen.
Machine learning (ML) is een vorm van kunstmatige intelligentie die zich richt op het bouwen van systemen die op basis van de ene dataset leren navigeren door een andere, onbekende dataset. Een website die je bepaalde producten aanraadt naar aanleiding van je laatste aankoopt, werkt precies zo. De website weet niet op voorhand in welke producten je geïnteresseerd bent, dat is onderdeel van de onbekende dataset. Maar op basis van de bekende set, waar het algoritme op is getraind, kan deze wel een voorspelling doen. Wie op zoek gaat naar een nieuwe stofzuiger, zal vast en zeker ook wel stofzuigerzakken willen kopen, bijvoorbeeld.
Dat is vergelijkbaar met wat je zelf doet, wanneer je in een nieuwe situatie terecht komt. Je interpreteert deze aan de hand van bekende ervaringen. Vaak zal dat goed gaan, en soms blijk je de situatie verkeerd in te schatten. Die ervaring vormt op zijn beurt opnieuw input voor de volgende keer dat je in een nieuwe situatie terechtkomt. Kortom, je leert. - Het heet niet voor niets machine learning.
Met de opkomst van AI en ML, verschijnen er ook steeds meer toolkits voor softwareontwikkelaars om met deze technieken aan de slag te gaan. (Voor .NET-ontwikkelaars is er bijvoorbeeld ML.NET.) Deze bieden handvaten waardoor ontwikkelaars op een laagdrempelige manier kennis kunnen maken met deze techniek. Zulke toolkits schermen echter - met goede reden! - veel van de achterliggende complexiteit af voor hun gebruikers. Ontwikkelaars die zich daarin willen verdiepen, zouden zich kunnen wagen aan Hui Jiangs Machine Learning Fundamentals: A Concise Introduction.
Het boek is geschreven als leerboek voor gevorderde studenten computerwetenschap. Het is prachtig vormgegeven, met veel kleurenafbeeldingen die de complexe materie behapbaar maken. Jiang begint met een zeer heldere inleiding in de basale concepten achter ML. Denk aan classificatie versus regressie, en supervised en unsupervised learning. Vervolgens legt de schrijver het wiskundig fundament voor de rest van het boek: lineaire algebra, statistiek, informatietheorie. Dit deel is zeer beknopt, want deze kennis wordt verondersteld bij de lezer. Bezint dus eer ge begint: het gros van het boek verwordt al gauw tot abracadabra voor wiskundige leken.
En ik zal maar bekennen: zelf ben ik zo’n wiskundige leek - en vanuit dat perspectief zal ik de rest van het boek dan ook benaderen. Het heldere eerste deel van het boek wordt opgevolgd door twee delen waarin Jiang respectievelijk discriminatieve en generatieve ML-modellen behandelt. Elk hoofdstuk behandelt een manier om grip te krijgen op een complexe dataset, bijvoorbeeld aan de hand van lineaire modellen of neurale netwerken. Die laatste vormt het paradigmatische voorbeeld van ML anno nu, en bevat alleen al daarom tal van interessante achtergrond voor een ontwikkelaar. Maar eerlijk is eerlijk: zonder grip op de wiskunde, is het maar moeilijk meer dan een zeer algemeen beeld van de materie te vormen.
Dat kan het boek niet aangerekend worden, en toch is het een interessante observatie. Er gaapt een kloof tussen het veelal wiskundig georiënteerde computerwetenschappen en de professionele praktijk van software ontwikkelen. De laatste beweegt meer en meer naar hogere abstracties die complexe materie toegankelijk maken voor de huis-, tuin- en keukenontwikkelaar - de bovengenoemde toolkits zijn daar een goed voorbeeld van. Dat zorgt ervoor dat het behalen van een diploma in de computerwetenschap steeds minder een vereiste wordt om een goede ontwikkelaar te zijn - en hetzelfde geldt voor het doorpluizen van een leerboek ML.
Een conclusie is dan ook dat het publiek van Machine Learning Fundamentals noodzakelijkerwijs beperkt is. Het is een boek voor studenten en ontwikkelaars die zich erop toeleggen zich te specialiseren in ML of een bepaald deelgebied daarvan. De nonchalant geïnteresseerde ontwikkelaar doet er beter aan zich eerst te verdiepen in de al bestaande toolkits, vóórdat deze de diepte induikt met dit boek. Daar is zowel de ontwikkelaar bij gebaat - de leercurve wordt er een stuk minder stijl van - als zijn opdrachtgever. Want de wiskundige achtergrond alleen levert, in tegenstelling tot een in elkaar geklikt model, nog geen businesswaarde. De ontwikkelaar niet vies is van wat wiskunde, en een bestaand model dient te optimaliseren, heeft met Machine Learning Fundamentals daarentegen goud in handen.
Deze recensie verscheen oorspronkelijk op De Leesclub Van Alles.