In een vorig blog heb ik met ObsIdentify (NIA) software (hierna met O aangeduid) in waarneming.nl wat verkennende experimenten uitgevoerd. O is een ideale, geduldige en onvermoeibare proefpersoon. Maar, hoe goed is het programma in het herkennen van soorten? Is het bestand tegen onscherpte, kleurafwijkingen, manipulatie?
Hoe meer de afbeelding afweek van de natuur, hoe onzekerder O werd.
Steeds bleef O binnen de soortgrenzen (Atalanta in dit geval) wanneer
je de vlinder zelf modificeerde.
Nu heb ik een reeks experimenten gedaan waarbij O een verkeerde soort
voorspelde op basis van zeer subtiele maar totaal irrelevante manipulaties
in de achtergrond van de vlinder. Ik noem dat een hack. Dit alles binnen
het kader van de ethische hacker want mijn bedoeling is meer
inzicht en misschien zelfs het programma verbeteren.
Voor de volgende tests heb ik een Atalanta uit de
Elseviers vlindergids genomen [1]. Een geïdealiseerde vlinder met
alle karakteristieke kenmerken van zijn soort tegen een schone, witte
achtergrond. Alles begon met deze afbeelding:
Atalanta (Elseviers vlindergids, 1971)
O: 61,3% 750 x 556 pixels |
O herkent deze Atalanta met 61,3% zekerheid. De lage zekerheid komt waarschijnlijk door subtiele kleurafwijkingen. Bijvoorbeeld: het wit op de vleugel is niet wit genoeg. Maar deze afbeelding is wel een goed uitgangspunt om uit te proberen hoe je de zekerheid omhoog kunt krijgen. Bij de eerste test had ik het percentage in de afbeelding gezet en ter controle testte ik de vlinder nog een keer:
Atalanta met zekerheid 73,4% |
Tot mijn verbazing steeg het zekerheidspercentage van 61,3% naar 73,4%! Dat
kan toch niet waar zijn! Aan de vlinder zelf was niets gewijzigd. Is
O echt zo onbetrouwbaar? Is dit een reproduceerbaar effect of een
toevallige variatie?
Atalanta met zekerheid 95,2% |
Als je het getal er 4x in zet (zie afbeelding) dan stijgt de zekerheid tot
95,2% ! Een gigantisch effect! Wat is hier aan de hand? Totaal irrelevante
informatie verhoogt de zekerheid. O moet die getallen aanzien voor kleine
vlekjes. Dus ik begon met zwarte, rode en gele stippen te experimenteren. En
steeds was er merkbaar effect op het zekerheidspercentage. Hier met twee
gele cirkels in de achtergrond:
Atalanta 60,5% (2 gele stippen size: 30) |
Toen ik de 2 gele stippen stapsgewijs groter maakte van 30 naar 35 pixels,
zag O plotseling een Kleine vos met een zekerheid 52,4%! Zie
hieronder:
Kleine Vos 52,4% (2 gele stippen size: 35) |
Ten overvloede: zo ziet een Kleine vos er uit:
Kleine vos (ObsIdentify: 100.0% zeker) ©wikipedia |
Het omslagpunt ligt exact bij de overgang van 34 naar 35 pixels. Dus O gaat
van een Atalanta naar een Kleine Vos door 1 pixel verschil!
Een verschil dat met het blote oog niet te zien is. En bovendien pixels die
zich buiten de vlinder zelf bevinden. Dat O gevoelig is voor zeer
subtiele verschillen is prima, maar stippen in de achtergrond van de vlinder
kan niet de bedoeling zijn. Maak je nog grotere zwarte stippen dan weet O
voor 88% zeker dat een Atalanta een Kleine vos is! [2]. En
voor de duidelijkheid: O weet met 100% zekerheid hoe een
Kleine Vos er uitziet.
Dit was wel het allerlaatste wat ik verwacht had. Als er ergens het
onderscheid tussen vlinder en achtergrond duidelijk is, dan is het wel in
deze afbeeldingen. Dit zou nooit mogen gebeuren. Wat zegt dit over de
werking van de software? Hoe kan O überhaupt vlinders op naam brengen als
hij dit soort bizarre fouten maakt? En tòch kan hij/zij het.
Computer says: Kleine Vos 99,6%
[ 10 Nov 2019 ] Fout! het is nog steeds een Atalanta! |
Ik heb nog andere manieren ontdekt om O op een dwaalspoor te brengen. Het is me gelukt om de zekerheid voor Kleine vos op te voeren tot 99,6% met louter toevoegingen in de achtergrond! (zie afbeelding). Geen mens twijfelt er aan dat dit nog steeds een Atalanta is. Computer says: Kleine Vos 99,6%.
Conclusie
Als je weet hoe je software subtiel moet manipuleren om een fout antwoord
te genereren, noem ik dat een hack. Je hebt een zwakke plek in de software
gevonden. Dat simpele stippen in de achtergrond voldoende zijn om de ene
soort in de andere soort te transformeren, betekent dat de software geen
flauw idee heeft wat het verschil is tussen vlinder en de achtergrond. Met
andere woorden: hij weet domweg niet wat een vlinder is! Dat is best
verbazingwekkend als je bedenkt dat een achtergrond van een vlinder altijd
verschillend is. Een indicatie dat O moeite heeft met een verwarrende
achtergrond is de vaak herhaalde aanbeveling: "Probeer de foto bij te snijden."
Ik heb nog vele andere aanvallen uitgevoerd, en er zijn nog vele andere
denkbaar. In dit blog heb ik me beperkt tot de meest spectaculaire die ik
tot nu toe gevonden heb. Ondanks dit alles werkt O in de dagelijkse
praktijk prima. Maar: O is een black box: je stopt er foto's in, en er
komen namen uit, maar wat er precies in het hoofd van O omgaat is voor ons
een groot mysterie.
Een recente publicatie in Nature [3] constateert dat zelfs de
beste machine learning AI programma's gevoelig zijn voor hacks en
dat het zeer moeilijk is om AI programma's te beveiligen tegen iedere
denkbare aanval. Nu ligt niemand –behalve misschien sommige biologen–
wakker van het feit dat software een vlinder fout identificeert. Maar als
de onderliggende software ook gebruikt wordt in beveiliging van
smartphones met gezichts- iris-, stem- of vingerafdrukherkenning, of de
toegang tot je bankrekening, dan is dit zeer verontrustend nieuws. Denk
ook aan de recent door de politie ingevoerde automatische herkenning van
bellende automobilisten. Of denk aan autopilot software in Tesla's die
alle mogelijke objecten zoals tegenliggers, fietsers, voetgangers,
overstekende wilde zwijnen razend snel met 100% zekerheid moet kunnen
herkennen om botsingen te voorkomen. Letterlijk dodelijk zijn de
aanvalsdrones die zelf het slachtoffer uitzoeken op basis van
gezichtsherkenning. Als je op de hoogte bent van de zwakheden van
'intelligente software', dan zet ik mijn leven niet op het spel.
Update 10 Nov 2019: Atalanta toegevoegd:
99,6%
Postscript
27 Okt 2019Het blijkt dat de auteur van ObsIdentify Laurens Hogeweg is. Volgens zijn Linkedin profiel is hij Senior Software Engineer at Naturalis Biodiversity Center, en is hij tevens verbonden aan de Radboud Universiteit Nijmegen. Recentelijk heeft hij gepubliceerd over ObsIdentify: Machine Learning Model for Identifying Dutch/Belgian Biodiversity (20 Aug 2019)
Noten
- In die gids staan samengestelde vlinders: de bovenkant van de vleugels links en de onderkant rechts. Om de vlinder compleet te maken heb ik de rechtervleugel vervangen door een gespiegelde kopie van de linkervleugel.
- Deze bug kan te maken hebben met de beginsituatie van minder dan 100% zekerheid (60%). Maak je het wit in de vleugels witter, dan is O veel zekerder en maakt het de fout niet meer. Maar in de natuur zijn de omstandigheden ook nooit ideaal! Lichtval is steeds anders.
- Douglas Heaven (2019) Why deep-learning AIs are so easy to fool, Nature, 9 Oct 2019 (gratis toegang)
Alle ObsIdentify blogs
- 30 Sep 2019 Test van ObsIdentify algoritme voor automatische identificatie van dieren en planten. deel 1.
- 21 Okt 2019 ObsIdentify software gekraakt! Vlinders identificeren zonder te weten wat een vlinder is.... deel 2
- 19 Nov 2019: ObsIdentify (3) Who is afraid of red, yellow and blue? De Vlinder Turing test voor mens en AI doe ik o.a. het voorstel voor een Turing test tussen mens en ObsIdentify: wie kan het snelst 1000 soorten correct identificeren aan de hand van foto's? deel 3
- 04 Dec 2019 : ObsIdentify (4). ObsIdentify herkent Kuifeend, Kikker, Kiekendief en vele andere soorten in plaatjes van 1 pixel. deel 4
- 23 Dec 2019: ObsIdentify (5) Hoe zeker is 100%? Soorten met 100% zekerheid herkennen in random pixels. deel 5
- 04 Feb 2020 : Hacken voor dummies en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden (deel 6)
- 18 Mar 2020: ObsIdentify geeft ALTIJD foute antwoorden buiten zijn eigen domein. Ook met hoge zekerheden deel 7
- 30 Mei 2020: Obsidentify voorspelt Wespendief, Buizerd en Ruigpootbuizerd op basis van foto's van dezelfde vogel. deel 8
- 26 Jun 2020: Toch nog een wespendief! deel 9
- 22 Jul 2020: Tesla beeldherkenning en ObsIdentify beeldherkenning: steeds beter, maar maken nog steeds klassieke fouten deel 10
- 11 Jan 2021: ObsIdentify herkent Cetti's zanger op tegenlicht foto met 99% zekerheid deel 11
- 4 Mar 2021 : Perfecte camouflage citroenvlinder misleidt ObsIdentify software. deel 12.
- 25 mei 2021: Onwaarschijnlijk goede prestaties van ObsIdentify met blauwborst en ree. deel 13.
- 21 juni 2021: ObsIdentify en het mysterie van de Gouden Loopkever. Het Randblindheid effect bewezen. deel 14.
- Voor alle volgende blogs over ObsIdentify klik op label ObsIdentify.