Uw auto is eigenlijk een rijdende supercomputer. Het bevat tientallen grotere en kleinere computers, onderling verbonden met een netwerk. En die computers controleren en besturen alles wat er in uw auto gebeurt. Meestal zijn we ons daar niet van bewust. Wie van u weet dat in veel auto’s het rempedaal niet langer direct mechanisch de remblokken op de remschijf drukt, maar dat het rempedaal één van die computers daarvoor de opdracht geeft?
Soms komt de boodschap luid en duidelijk over. Bijvoorbeeld als blijkt dat de uitstoot van schadelijke gassen beperkt wordt door de computer als die merkt dat de auto aan een emissie test wordt onderworpen. Of als op YouTube een video viraal gaat van een auto die bij een parkeer test een paar mensen aanrijdt, omdat de software die voetgangers detecteert niet geïnstalleerd was. Die software is een optie, die meer geld kost.
Al die beslissingen worden genomen door algoritmes. En dat soort algoritmes zitten overal. Google gebruikt ze om de meest relevante zoekresultaten terug te geven. Facebook gebruikt ze om de berichten op je tijdlijn te optimaliseren. In de financiële wereld worden aandelen portfolio’s beheerd door algoritmen. En al die algoritmen nemen beslissingen zonder tussenkomst van mensen.
Dat roept een aantal vragen op.
Zo is het de vraag wie er verantwoordelijk is voor eventuele fouten die een algoritme maakt. Zo’n fout kan het gevolg zijn van een aantal oorzaken. Misschien was de invoer fout. Of misschien werd het algoritme gebruikt voor iets waar het niet voor bedoeld was. Misschien was het algoritme gehackt. Of misschien zit er een ontwerpfout in het algoritme zelf. Dat laatste is vaak lastig te bepalen, omdat de algoritmes niet te ‘zien’ zijn. Soms zijn algoritmes geheim. Zoals bijvoorbeeld Google’s zoekalgoritme. Soms zijn de algoritmen zelf-lerend. Dat wil zeggen dat ze ooit met een aantal voorbeelden en daar bij horende juiste beslissingen getraind zijn, maar dat niemand weet hoe het uiteindelijke algoritme echt werkt. Zelfs de makers niet.
Een andere vraag is wat die algoritmes mogen of moeten beslissen. Een interessant voorbeeld is de zelfrijdende auto. Zo’n auto zal op onverwachte verkeerssituaties adequaat moeten reageren. Als er plotseling een voetganger oversteekt moet hij remmen, bijvoorbeeld. Zoiets moet niet een optie zijn, maar standaard zijn. Maar wat nu als vlak achter uw auto een grote truck rijdt. Moet de auto dan remmen voor de voetganger, met als gevolg dat u wordt overreden door de truck? Of moet de auto koste wat kost voorkomen dat u wordt overreden? Zelfs als dat het leven van de voetganger kost. Als eigenaar van zo’n auto zou u graag willen weten welke beslissing uw auto in dit geval maakt. En de voetganger natuurlijk ook, zodat hij weet voor welke auto’s hij extra uit moet kijken.
Nog lastiger wordt het dilemma als auto’s van verschillende merken ieder met hun eigen algoritmes zijn uitgerust. Dan zou er zomaar een soort recht van de slimste op de snelweg kunnen ontstaan: het slimste algoritme weet er voor te zorgen dat ‘zijn’ eigenaar nooit schade zal krijgen. Dat zijn concrete voorbeelden van eeuwenoude ethische dillema’s, waar nu echter wel een knoop over moet worden doorgehakt.
De vraag is: hoe?
Een eerste stap in de goede richting is er voor te zorgen dat iedereen weet, of kan weten, hoe de algoritmes werken. Bijvoorbeeld door de algoritmes zelf op een controleerbare manier te ontwerpen en verifieerbaar te maken. De algoritmes moeten zogezegd ‘accountable’ worden. Één manier is om ze als open source te publiceren. Dan zou iedereen, dat wil zeggen onafhankelijke programmeurs of hackers, precies kunnen zien hoe ze werken. Dat is alleen wel een probleem voor algoritmes die voor bedrijven als Google van enorme waarde zijn en een zwaar beschermd bedrijfsgeheim zijn. Zo’n bedrijf zal pertinent weigeren haar algoritmes openbaar te maken. Een middenweg zou zijn om de algoritmes in een soort van zwarte doos ter beschikking te stellen en testbaar te maken. Dat roept dan wel weer de vraag op of we zeker weten dat het algoritme wat we testen hetzelfde algoritme is dat gebruikt wordt. En ook of het algoritme, net als bij een emissietest, niet kan detecteren dat hij getest wordt, om in dat geval de sociaal wenselijke antwoorden te geven.
In een wereld die dreigt door algoritmes geregeerd te worden moeten we streven naar transparantie en controleerbaarheid van algoritmes. Als tegenwicht tegen een recht van de slimste.
Deze column verscheen op 10 oktober in het FD.
Dat blackbox testen van een algoritme en of je dan wel zeker weet of je in de auto hetzelfde algoritme hebt: wanneer je van de code van het algoritme een hash zou maken, kun je daarmee toch vaststellen of jehetzelfde algoritme gebruikt?
Dan moet je er wel voor zorgen dat de vertaalslag van broncode naar executeerbare code verifieerbaar is en geen achterdeurtjes plaatst. Zie het klassieke paper van Ken Thompson over ‘trusting trust’. Lastig is bijvoorbeeld dat je om die hash te berekenen exact dezelfde build unvironment nodig hebt als de systeemontwikkelaar (die mag je zelf die hash natuurlijk niet uit laten rekenen!). Daarnaast maakt software gebruik van (veel) libraries, die vaak zonder controle dynamisch meegelinkt worden en achteraf veranderd kunnen worden. De vraag is dus: wat neem je mee in de hash, en hoe bereken je die? Overigens: by blackbox testen heb je de code van het algoritme juist niet - dat heb je alleen bij whitebox testen.
een derde zou de hash kunnen berekenen en via TLSNotary bewijzen dat hij te vertrouwen is (input=output)? Zoiets doet oraclize.it