Foto: Canva
U prethodnim tekstovima serijala Veštačka inteligencija – diskutovali smo tehnološki fascinante AI sisteme, ali uvek iz perspektive potencijalnih pretnji koje za nas mogu da predstavljaju. Već su me čitaoci ovih članaka u diskusijama na Twitter-u podsetili da novčić ima dve strane: sistemi koji automatski generišu prirodni jezik, i koji mogu da automatizuju propagandu i potencijalno stvore haos – kao što sam razmatrao u tekstu AI i propaganda – automatska laž, haos i ciljana stvarnost – isto tako mogu da pomognu u prepoznavanju nekog netačnog ili opasnog sadržaja koji stvaraju ljudi (ili drugi AI sistemi). Ni u dva teksta koji su prethodili tom nisam pokazao više optimizma: kako mašine za preporuke (engl. recommendation engines) mogu da prodube jaz između naših stavova, razmatrao sam u tekstu Algoritmi razdora – Fejsbuk, Instagram i ekonomija sugestije, a prvi put kad sam pomenuo autonomna vozila, bavio sam se slučajem u kojem je izgubljen ljudski život, u tekstu Zašto nam je potrebna regulacija veštačke inteligencije? Uveravam vas da se ove stranice neće pretvoriti u manifest tehnološkog pesimizma: serijal planiram tako da nas određenim tokom pripremim za teme koje dolaze, a koje se odnose na to kako da odgovorno koristimo AI mašineriju koja nam se danas stavlja na raspolaganje.
Danas se okrećemo problemu koji je upravo ovih dana ponovo aktualizovan: tehnologijama prepoznavanja lica i granicama njihove primene. Facebook (ili Meta, ako hoćete, i to je novost) je upravo početkom ovog meseca saopštio da planira gašenje svog sistema za prepoznavanje lica, navodeći “mnoge brige vezane za mesto tehnologije prepoznavanja lica u društvu“, dok su poslanici Evropskog parlamenta početkom prethodnog meseca svojim glasovima podržali moratorijum na upotrebu ovakvih tehnologija u svrhe sprovođenja zakona. Ovakvoj odluci Evropskog parlamenta prethodile su zabrane u nekoliko američkih gradova. Kao i uvek, kroz diskusiju ćemo provući i uvođenje bitnih pojmova za razumevanje savremene AI, a to će ovaj put biti ključan pojam karakteristika (engl. features) i uopšte analize u prepoznavanju putem karakteristika; danas ćemo imati mali tehnički tour de force u tom smislu.
Dodatna vrednost koju očekujem od ovog teksta je sledeća: da objasnim, ako mogu, čitaocima zašto se tolika buka podigla oko priče da savremeni AI sistemi nisu transparentni, odn. da je teško ili nemoguće nekada ustanoviti zašto je neka AI donela neku odluku baš tako kao što je donela. U javnosti i medijima su opisi ovog problema veoma nejasni i tako neopravdano mistifikovani. U ovom tekstu daću konkretan, a ipak jednostavan – koliko je moguće – primer koji osvetljava taj problem potpuno.
Dakle: kako mašine uče da prepoznaju lica?
Problem prepoznavanja i klasifikacije
Kako znamo da je neko određena osoba i u stanju smo da lice povežemo sa imenom kada ga vidimo? Razmislimo prvo o tome kako bismo opisali neko lice drugoj osobi. Govorili bismo o boji i obliku očiju, možda razmaku između njih, obliku nosa, usana, jagodica, boji kože, širini brade, trepavicama, obrvama, visini čela – pa sve do i veoma složenih izraza kojima bismo pokušali da opišemo kako neko izgleda kada se smeje, kada je ljut, uplašen, tužan… Ostavljajući trenutno po strani te veoma složene izraze kojima bismo opisivali facijalne ekspresije, izraze unutrašnjih stanja i emocija, možemo da kažemo da bismo opis lica sprovodili nabrajajući, precizno koliko možemo, neke njegove karakteristike.
Karakteristike (osobine, odlike, engl. features) su definitivno jedna od centralnih ključnih reči, centralnih pojmova u kognitivnim naukama i veštačkoj inteligenciji. Ako posetite otvorenu bazu znanja Wikidata – ogromnu kolekciju mašinski čitljivih, otvorenih podataka, nastalu prikupljanjem struktuiranih informacija sa slobodne enciklopedije Wikipedia – i potražite pojam Beograd tamo (vodi se pod identifikatorom Q3711), videćete da je on opisan upravo listanjem velikog broja karakteristika (u Wikidata se konkretno nazivaju osobinama, engl. properties). Na primer, navedene su neke kategorije kojima Beograd pripada (da je grad, da je glavni grad, da je statistički region Republike Srbije, itd), njegova populacija, geografska širina i visina, ko mu je gradonačelnik, država u kojoj se nalazi i države u kojima se istorijski nalazio, u kojoj vremenskoj zoni se nalazi, koje institucije mu pripadaju… Kada razmislimo, to je prilično kao da nekome opisujemo da su vrata (1) najčešće od drveta ili metala, iako (2) mogu da budu tapacirana ili ne, (3) pravougaonog oblika, (4) širine i visine uvek većih od proporcija ogromne većine ljudskih tela, (4) montirana na šarke postavljene u zid, tako da (5) mogu da se rotiraju idući stranicom koja nije fiksirana za zid do njega i od njega, (6) imaju negde na sredini pa sa strane kvaku, objekat najčešće od metala… Primetite koliko stvari bih još morao da pokušam da nabrojim kako bih ovako objasnio nekome šta su to vrata (šta znači “otvoriti” a šta “zatvoriti”, ko su to “ljudi” i šta su “proporcije tela”, šta je “brava”, šta “pravougaonik”, šta “rotacija”, šta “većina” itd) ! Dosadno? Verovatno da, jer deluje kao nabrajanje odlika pojmova koje su nama ljudima neverovatno očigledne. Mi naše vreme više volimo da posvetimo opisu toga šta je posebno – ili za nas posebno – u nekoj osobi, nekom gradu, nekom objektu, a ne ovakve trivijalnosti. Ali, molim vas lepo: ako treba kompjuteru, koji po fabričkim setinzima nije veštački inteligentan došao na naš sto ili u AI laboratoriju – pa da sve to već zna – objasnimo šta su to “vrata”, šta je to “grad”, koji grad je “Beograd”, ili kako da sa fotografije prepozna neku osobu – kako drugačije to da uradimo nego ovako? Pogledajte kako je u bazi Wikidata reprezentovan pojam ljudske glave da biste uvideli kako ona sadrži oko, usta, obraz itd. kao svoje delove!

Dakle, ako ima njušku, šape, brkove, dlaku, malo je, mekano, mjauče i prede – mačka je. Celokupan opis pristupa prepoznavanju putem karakteristika je ovde i namerno i nužno pojednostavljen. Pre svega, karakteristike uopšte ne moraju da budu toliko samoočigledne kao što su to puki delovi od kojih se neki objekti sastoje. Videćemo tako da je opis lica u algoritmima za njegovo prepoznavanje daleko apstraktniji od toga da ono ima dva oka određene boje i pravu liniju nosa. Dalje, savremeni matematički modeli u AI i kognitivnoj psihologiji zapravo sami izdvajaju karakteristike bitne za prepoznavanje iz vizuelnog materijala, ne koriste neki “rečnik karakteristika” koji je predefinisan (kao što Wikidata koristi jedan formalno određen jezik i razvija upravo jednu vrstu složenog “rečnika” – nešto što se tehnički naziva ontologijom u kompjuterskim naukama – ali za namene sasvim drugačije od prepoznavanja vizuelnih objekata).
Karakteristike za prepoznavanje lica
Proces kojim matematički modeli prepoznavanja ustanovljavaju kakve vrste opisa stvari u svetu su im potrebne, kako bi efikasno i tačno prepoznavale te stvari se naziva ekstrakcija karakteristika (engl. feature extraction). Sada ćemo na primerima fotografija ljudskog lica pogledati jedan jednostavan primer ovakvog procesa.

Kako su, i zašto, generisane slike koje ovde predstavljamo? One kao da predstavljaju “kombinaciju” većeg broja različitih ljudskih lica. Ovakve slike se nazivaju svojstvenim licima (eng. eigenfaces) i koriste se u danas prevaziđenoj metodi za mašinsko učenje prepoznavanja lica, ali su dobro polazište da se razume kako to računari uopšte pokušavaju da urade. Fotografije ljudskih lica dolaze iz Yale Face Database, malog dataseta, za svrhe istraživanja, u kome su različite fotografije 15 ljudskih lica od kojih sam iskoristio samo neke, i dodao im jednu moju fotografiju (sa razlogom, videćemo). Sve fotografije su crno-bele, i sve su istog formata: 320 x 243 piksela. Pošto koristimo samo crno-bele fotografije, sve možemo da ih predstavimo kao matrice formata 320 x 243, u čijim ćelijama se nalazi samo intenzitet (svetlina) odgovarajuće tačke. Da koristimo fotografije u boji, mogli bismo da ih, kao na monitoru, “razbijemo” u tri kanala (RGB – engl. red, green, blue) i ponovo predstavimo svaki piksel kao kombinaciju inteziteta tri boje RGB modela. Ako bih svaku matricu predstavio kao niz brojeva onda, uzimajući jedan po jedan njen red i ređajući redove jedne iza drugih, svaku fotografiju bih predstavio kao ono što se u matematici naziva vektor. To je zaista samo jedan običan niz brojeva! Ako poređamo vektore koji predstavljaju svaku fotografiju, dobijamo ponovo matricu, “tabelu” koja ima redova koliko ima fotografija, sa brojem kolona koje tačno određuju koji piksel – uvek u istom redosledu za svaku fotografiju – ima koju vrednost. Osnovna intuicija, koja ne bi trebalo da je mnogo teška za razumeti, je sledeća: sličnost između dve fotografije, dva lica, je određena time koliko su slični, bliski brojevi na tačno određenim mestima u ovakvoj matrici, i koji uvek odgovaraju istim pikselima.
U matematici, konkretno u oblasti linearne algebre, postoje metodi kojima skup vektora može da se predstavi određenim manjim skupom vektora. Rekli smo da je svaka fotografija predstavljena kao vektor, odn. niz brojeva koji daju intenzitete tačno određenih piksela. Metod koji sam koristio da bih našao novi način da predstavim ove fotografije je nešto što se zove analiza glavnih komponenti (engl. PCA – Principal Components Analysis). Da se malo sačuvam od kritike da uvodim previše tehničkih pojmova u naučno-popularnu diskusiju: PCA je u osnovi faktorske analize koju studenti psihologije uče na osnovnim studijama – podsećam ih da na njoj počiva ogroman broj naučnih radova i teorija u domenima psihologije ličnosti, inteligencije, i diferencijalne psihologije uopšte. Njenom primenom ćemo dobiti nešto ovako: (1) novi skup vektora (tzv. svojstvenih vektora) kojima se predstavljaju fotografije lica koje analiziramo, i (2) skup brojeva – tzv. svojstvenih vrednosti, koje nam govore – grubo pojednostavljujem tehničke detalje ovde – o tome koliko je svaki novi vektor koji smo otkrili u stanju da pokrije raznolikost svih vektora piksela kojima smo u početku opisali svaku fotografiju. Zvuči komplikovano? Nije jednostavno, priznajem – svojevremeno mi je trebalo dosta dok nisam razumeo kako i zašto PCA radi. Ali ovaj metod je, u odnosu na savremene modele prepoznavanja lica, ništa za kompleksnost matematičke mašinerije koja se koristi.
Čemu služe dobijeni svojstveni vektori i njihove svojstvene vrednosti na osnovu kojih su konstruisana svojstvena lica na slici? Pokazuje se da je njihovom kombinacijom (i to jednostavnom, tzv. linearnom kombinacijom) moguće u potpunosti rekonstruisati fotografije svih lica na osnovu čije analize smo i došli do skupa svojstvenih lica – ona su, dakle, samo jedan alternativan način da opišemo fotografije lica koje imamo. Međutim, mnogo značajnije: moguće je kombinacijom ne svih, već manjeg broja svojstvenih lica, rekonstruisati polazne fotografije prilično precizno, uz tek male greške. Na slici sam prikazao svih šesnest svojstvenih lica – proizvoda svojstvenih vektora i vrednosti koje sam dobio izvođenjem PCA – koje je uopšte moguće izvući iz šesnaest polaznih fotografija, ali je njih sasvim dobro moguće reprodukovati i preko samo jedanaest svojstvenih lica, na primer. Nije velika ušteda, ali skup fotografijama sa kojima sam radio je mali; ako uspete da ovim metodom desetine hiljada fotografija lica opišete skupom od nekoliko stotina svojstvenih lica, ušteda je ogromna. Svojstvena lica su onda one karakteristike koje sistem mašinskog učenja koristi da bi reprezentovao potencijalno veliki broj fotografija lica koja uči da prepoznaje – rekli smo da mogu da budu veoma apstraktne, zar ne?
Svako lice se onda prepoznaje mašinski tako što se neka nova fotografija tog lica matematičkom operacijom projektuje na otkriveni skup svojstvenih lica, i na osnovu njenog opisa u tom skupu se izračunava kom od polaznih lica je ona najsličnija. Razmišljate o tome na sledeći način: uporedićemo novu fotografiju nekog lica sa svim svojstvenim fotografijama koje je sistem već naučio, i ocenićemo je prema tome koliko je slična sa svakom od njih; onda ćemo potražiti poznatu fotografiju lica koja je na sličan način slična svojstvenim licima kao nova fotografija koju ispitujemo i tvrditi da je na novoj fotografiji osoba sa te već sistemu poznate fotografije. Tako je moguće prepoznati neko lice sa fotografije koju sistem prethodno nije video. AI uči da izvuče ono što je karakteristično u svakom licu, u odnosu na sva druga lica na kojima je trenirano, i onda koristi tu informaciju da je uporedi sa novim fotografijama koje joj pokazujemo!
Da pokušam da pojednostavim još jednom. Polazeći od nekog skupa fotografija lica koje mašina treba da nauči da prepoznaje, algoritam PCA će otkriti način da ih kombinuje tako da dobije ono što zovemo svojstvenim licima (eigenfaces): svaka ta nova reprezentacija polaznih lica će sadržati u izvesnoj meri doprinos svake od polaznih fotografija lica (up. sliku) na kojima mašinu treniramo. Svaka novoprikazana fotografija se onda opisuje određenom kombinacijom svojstvenih lica, a iz tog opisa onda može da se izračuna sličnost te nove fotografije sa svim polaznim fotografijama. Mašina prepoznaje lice tako što tvrdi da je na fotografiji osoba najsličnija nekoj od onih čije je fotografije već “videla”.
Problemi
Naravno, ništa ne ide bez problema u oblasti AI. Rekao sam da sam osnovnom datasetu fotografiju dodao jednu moju fotografiju: ona se razlikovala od drugih po tome što su sve fotografije iz Yale Face Database date sa uniformno belom pozadinom, dok je moja fotografija na pozadini gradijenta sive. Ako pogledamo prvu svojstvenu fotografiju u prvom redu na slici, videćemo da ona prilično “čisto” nosi informaciju o jednom jedinom licu: mom. Dakle, bilo je dovoljno imati markantno drugačiju pozadinu, da bi se mašinsko učenje navelo da taj jedan jedini primer, koji je grubo odstupao od drugih, nauči skoro kao izuzetak – jer to prvo svojstveno lice očigledno nosi karakterističnu informaciju samo jednog lica. Ako pogledate bolje sva svojstvena lica na slici videćete da se razlikuju u meri u kojoj “naginju” ka predstavljanju neke određene fotografije – izuzeci, karakteristična lica u kontekstu svih drugih na kojima sistem uči, se u ovoj metodi očigledno i predstavljaju karakteristično, odn. posvećuje im se više resursa sistema kako bi specifične informacije o njima bile što preciznije naučene. U datasetu postoji samo jedna fotografija ženske osobe, karakteristične ženske frizure: lako ćete uočiti svojstveno lice koje kao da je posvećeno upravo njoj.
Videli smo da je ovakav sistem prepoznavanja lica veoma osetljiv na male varijacije u fotografijama na kojima ga treniramo. Šta ako je isto lice nasmejano na jednoj, a namršteno na drugoj fotografiji? A ako je padala kiša kada je fotografija uzeta, ili su uslovi osvetljenja bili loši, ili jednostavno drugačiji od uslova prilikom uzimanja fotografija na kojima treniramo AI? Šta ako u trening setu fotografija imamo 10% lica jedne, 35% lica druge, i 55% lica treće rase – hoće li AI svejedno naučiti da ih podjednako dobro prepoznaje? Šta ako fotografije nisu dobro “centrirane”, odn. da se pozicija lica na fotografijama razlikuje? A ako je problem prepoznati lice u kompletno prirodnom setingu, pod ma kojim uglom i ma kakvim ambijentalnim svetlom? Problem u tome koliko mogu da variraju uslovi vizuelne scene u kojoj se nešto prepoznaje zagoračavaju život naučnicima i inženjerima u ovoj oblasti AI, kojima se iskreno divim na njihovim postignućima. Savremene zveri su, videćemo sada, mnogo kompleksnije i moćnije od PCA koju sam koristio da bih demonstrirao apstraktne karakteristike koje se koriste u prepoznavanju lica.
Deep Face
DeepFace – to je model prepoznavanja lica za koji je Facebook odn. Meta ove godine obećao da više neće da ga koristi (kao do sada; nisu obećali da model neće imati druge primene). U pitanju je tzv. duboka neuronska mreža, dakle u suštini model asocijativnog učenja sa izuzetno inteligentom fazom ekstrakcije i inženjeringa karakteristika koje se koriste u učenju ljudskog lica u najrazličitijim uslovima. Pošto nemamo baš nikakve šanse da ovde uđemo u njegove matematičke i tehničke pojedinosti, hajde da pokušamo da damo makar pregled operacija kroz koje prolazi analiza lica u DeepFace-u, modelu koji prepoznaje ljudska lica sa tačnošću od 97.35% (koja ponekad prevazilazi ljudsku – pogledajte naučni rad u kome je 2014 objavljen ovaj model):
– DeepFace je baziran na normalizaciji, odn. “poravnjanju” fotografija ljudskih lica iz ogromnih baza podataka takvih fotografija, kako bi mogao da na svakoj novoprikazanoj fotografiji pronađe šest pivotalnih tačaka: pozicije očiju, nosa, ivice usta i sredine usana; te informacije su mu potrebne u početnoj fazi transformacije fotografije koja je još uvek u dve dimenzije, koriste se da bi se iz date fotografije “isekla” (“kropovala” je tehnički termin) odgovarajuća površina koja dominantno sadrži samo informacije o licu;
– u sledećoj fazi se umesto šest pronalazi 67 pivotalnih tačaka, odn. karakterističnih tačaka na licu, kako bi se omogućilo da se 2D fotografija lica “namota” na prethodno razvijen 3D model lica po njima; 3D model je generički, što znači da se isti 3D model koristi za svako lice, i opet razvijen na osnovu ogromne količine prethodno proučenih fotografija;
– pošto je fotografija lica namotana na 3D model, ona se rotira tako da lice gleda pravo prema nama (“u kameru”, recimo); takva rotacija nije moguća ako se razmatra samo 2D reprezentacija lica, a prilikom nje se čuvaju distinktivne vizuelne informacije svakog lica, kako ga namotavanje na 3D model ne bi zbog generičke prirode samog modela, učinilo sličnim drugima;
– tek onda počinje trening duboke neuronske mreže koja prvo provlači fotografiju kroz niz filtera – tzv. konvolucijskih slojeva, engl. convolutional layers, koji su u DeepFace nestandardni; njima se izdvajaju različite (apstraktne) karakteristike, a sami filteri su osetljivi na kontekst (okolinu) svakog piksela koji fotografija sadrži, a zatim
– nove opise fotografija u izdvojenim (apstraktnim) karakteristikama prosleđuje tzv. back-propagation algortimu (algortimu povratne propagacije signala greške – klasičan algoritam kojim uče neuronske mreže kao sistemi asocijativnog učenja), tokom čijeg rada se podešava (udahnite)
– oko 120 miliona parametara koji karakterišu ovaj sistem prepoznavanja lica; možete da razmišljate ovako: svaka razlitiča kombinacija parametara predstavlja jedan matematički model, a samo manji broj kombinacija daje onaj model koji sa visokom tačnošću prepoznaje lica – te parametre, u suštini, model “podešava”, odn. pokušava da otkrije, nauči tokom treninga – i u tome uspeva.
U radu ovakvog sistema koristi se čitav niz “podmodela”, “modula” koji sprovode statističko učenje potrebno u određenoj fazi njegovog rada. Većina najmoćnijih AI sistema danas, u različitim oblastima, je hibridna u tom smislu reči: oni su uglavnom kompoziti, složene konstrukcije koje počivaju na više principa, eklektične prirode, trudeći se da izvuku najbolje od nekoliko različitih pristupa koje bismo prethodno sve možda posmatrali kao fundamentalne pokušaje da se jedan problem – na primer problem prepoznavanja lica – reši.
Da ne počinjemo o Google modelu FaceNet koji na istim testovima šije DeepFace, sa 99.63% tačnosti u prepoznavanju lica?
Ljudski i veštački pogled na svet
Jedna od najbitnijih stvari za koju se nadam da će ostati posle ovih redova je sledeća: način na koji sistemi AI opisuju svet oko nas kako bi prepoznavali ili kategorisali objekte u njemu, znali kako prema čemu da reaguju, koju odluku da donesu ili šta da preporuče, nemaju nužno nikakve veze sa time kako mi, ljudi, opisujemo taj svet. Počeli smo pitanjem kako bismo mi opisali nečije lice; sumnjam da je neko ko nije ekspert u AI i kognitivnim naukama pomislio na svojstvena lica izvučena primenom analize glavnih komponenti, a kamoli zamislio sistem složenosti poput DeepFace-a. Ovo je važno razumeti iz sledećeg razloga: dosta se danas debatuje o transparentnosti AI sistema, odn. toga da je za ljude i naše zaključke o tome da li određeni AI sistem treba da se reguliše i kako, značajno da razumemo kada je koju odluku (da npr. neku fotografiju poveže sa jednom a ne sa drugom osobom) sistem doneo i zašto ju je doneo baš tako. Ali mi vidimo da to nije lako: “interni jezik” karakteristika koje AI sistem može da koristi u opisu sveta, ima slabu, ili čak nikakvu korespondenciju sa našim intuitivnim, svakodnevnim opisima tog sveta: primer bi bila svojstvena lica koja se razvijaju u PCA što smo videli na primeru (ponovo: jednostavnom primeru). To uveliko otežava približavanje kriterijumu transparentnosti. Pretpostavimo da nekim matematičkim analizama i možemo da pratimo sve što se dešava u dinamici rada jednog toliko složenog sistema kao što je DeepFace, mada je to ponekad na ivici nemogućeg. Da li ćemo u terminima toliko složenih matematičkih struktura, od kojih smo tek neke osnovne sreli u današnjoj diskusiji, objašnjavati i zainteresovanim stranama na sudu kako je i zašto neki AI sistem odlučio da uradi šta je uradio? Teško. Tu počinju ozbiljni društveni, pravni i politički problemi koje AI tehnologije postavljaju pred nas.
Reference
Belhumeur, J. Hespanha, D. Kriegman, Eigenfaces vs. Fisherfaces: Recognition Using Class Specific Linear Projection, IEEE Transactions on Pattern Analysis and Machine Intelligence, July 1997, pp. 711-720.
Yale Face Database: dataset je prezet sa Kaggle, URL: https://www.kaggle.com/olgabelitskaya/yale-face-database, pristupljeno 7. novembra 2021. godine.