Face Id – Sådan genkender din iPhone X dig

iPhone 10 er på gaden, og med den får vi det helt nye Face Id som bruges til at låse iPhonen op. Den har fået utrolig meget omtale, men hvordan virker den egentlig.

Face Id lærer at genkende dig

Når du pakker din iPhone X ud skal du i gang med at lære den at kende dit ansigt. Men ud over enægget tvillinger er der meget få mennesker der ser ens ud. I følge Apple selv, er chancen for et forkert match (på nær ved tvillinger) 1 til en million.

Men hvordan laver man programmer der lærer, og hvordan laver man programmer der skal kunne se ligheder i ansigter når der ikke kan defineres klare regler?

Face Id simulerer hjernen

Når du ser på mennesker ved du omgående om det er et menneske du kender eller ej. Det er samme hastighed teknologien skal virke med for at det holder op med at være teknologi, og bliver til noget vi kan bruge som almindelige mennesker.

Løsningen ligger i biologien, og i simulering af det vi kalder hjernen.

Neurale netværk er indbygget i A11 Bionical

A11 chippen i iPhone X, har indbygget hardware skræddersyet til neurale netværk, og den lille cpu er i stand til at beregne over 600 millioner beregninger i sekundet, og det er på den måde din iPhone X genkender dig.

Et computer neuralt netværk simulerer vores menneskelige neurale netværk som vores hjerne består af. Via algoritmer beregnes der hele tiden nogle variabler på software neuroner (en simulering af en hjerne celle i software), og værdien af disse variabler afgør hvilken vej en forespørgsel kører i netværket.

Og ligesom vores menneskelige hjerne har aktivitet i bestemte centre af hjernen, afhængigt af hvilke indtryk hjernen modtager, ligeledes vil det neurale netværk i A11 chippen få aktivitet i forskellige områder, afhængigt af hvilket ansigt der kigger på telefonen.

Er der match i mønsteret, er dit ansigt genkendt og telefonen låser op.

Ingen regler, men indlæring

Det interessante med computer systemer der anvender neurale netværk, er at der modsat normale systemer, ikke kan defineres regler for hvad der sker i systemet. Systemet lærer og tilpasser sig selv. Både når resultatet er rigtigt, men også når det er forkert.

Og modsat almindelige computer systemers logiske regler, der altid enten skal kunne være sandt eller falskt, så kan resultatet af en behandling gennem et neuralt netværk være, 75% sandt og 67% falskt.

Der er en acceptabel fejltolerance indbygget i et neuralt netværk, og 75% sandt, kan altså godt betragtes som sandt.

Tolerancen forbedres jo flere virtuelle neuroner man indbygger i netværket. Men det er ikke ønskeligt at opnå 100% nøjagtighed i et neuralt netværk, da dette vil betyde at der er for mange neuroner, hvilket resulterer i at netværket ikke lærer men husker binært.

Og da dit ansigt ændrer sig gennem tid, er det bedre at ansigtet læres frem for huskes. Et for stort neuralt netværk vil betyde at systemet bliver mindre tolerant for om du har barberet dig eller ej, har briller eller ej

Og jeg går altså tit nogle dage uden at bruge kniven.

Er neurale netværk svært at programmere

Nej faktisk ikke. Banalt set bygger man nogle datatyper for neuroner, synapser, og kæder disse sammen som egenskaber på hinanden.

Og da datatyper kan indeholde både variabler og funktioner, så kan man simulere hvor gode neuronerne er forbundet via et simuleret synaptisk gab (du kan se i videoen hvad det er)

Så dig der deltager på Alle Kan Kode, har allerede været i gang med st studere byggestenene af hvad der skal til for at kunne lave et neuralt netværk.

Og jo, der skal noget matematik til for at justere disse synaptiske gab, men det kan man slå op. Der er masser af teorier man kan finde og indbygge i sine datatyper.

Se videoen for mere uddybning

I videoen nævner jeg en anmeldelse fra The Verge , den kan anbefales for den giver en god gennemgang af hvordan sensoren i iPhone X virker.