Kako što bolje i učinkovitije pretražiti oglasnik i korisnicima poboljšati iskustvo kupnje, odnosno olakšati im da što prije pronađu točno onaj predmet koji žele? To je bio izazov koji je pred sebe postavio zagrebački tim

Marko Velic i njegov Data Science tim. Photo: Petar Glebov/PIXSELL

Willhaben.at austrijska je verzija Njuškala, dakle oglasnik na kojem korisnici kupuju i prodaju najrazličitije predmete i usluge. Ideja projekta je olakšavanje procesa predaje i pretraživanja oglasa, odnosno unaprjeđenje korisničkog iskustva. Prvi fokus zagrebačkog tima bila je moda, jer je u suradnji s Willhabenom upravo taj dio ponude identificiran kao najatraktivniji za primjenu računalnog vida. Konkretna primjena je vizualno pretraživanje postojeće ponude oglasa na temelju slike, slično onome što radi i Google Image Search ili Pinterest. Korisnik u sustav unosi fotografiju uslikanu mobitelom te potom pretražuje oglasnik pomoću vizualne sličnosti između pojedinih oglasa. Projekt je realiziran u okviru Styrijinog programa Innovation Incubator – svojevrsnog korporativnog startup inkubatora. Modeli strojnog učenja korišteni u projektu trenirani su od početka na vlastitim podacima, a cijela infrastruktura programirana je od nule i implementirana u cloudute je rezultat rada domaćih stručnjaka.

Osim na mobilnoj aplikaciji, vizualno pretraživanje moguće je i na mobilnom webu Willhabena – https://mobile.willhaben.at/

Strojno (duboko) učenje

Zagrebački tim Styrijina Data Science odjela, koji broji devet stručnjaka i znanstvenika, u posljednje dvije godine intenzivno se bavi istraživanjem i razvojem metoda strojnog učenja u području analize teksta (engl. NLP – Natural Language Processing) i slike (engl. Computer Vision). Najnoviji projekt lansiran u studenom, modul je za vizualno pretraživanje oglasa na portalu Willhaben.at.

Modeli umjetne inteligencije (a posebno strojnog učenja) postaju standard u modernim proizvodima i usluga u različitim nišama. Prirodno okruženje za razvoj takvih sustava organizacije su koje posjeduju velike količine podataka, uz poslovnu volju za provođenje takvih inicijativa gdje se najnovija znanstvena istraživanja provode u visokorizičnim, ali vrlo atraktivnim projektima. Grupa metoda koja je temelj ovog projekta je tzv. strojno učenje, posebno duboko učenje. Metode strojnog učenja su iskorak u izgradnji suvremenih ICT sustava, gdje se klasično programiranje “instrukciju po instrukciju” zamjenjuje algoritmom koji je u stanju naučiti rješavati problem iz prezentiranih mu podataka. Tako se postižu bolji rezultati u rješavanju problema koje je teško riješiti klasičnim programerskim metodama, a za koje smo navikli da ih rješavaju samo inteligentna bića.

Primjer toga su razumijevanje ljudski napisanog/izgovorenog teksta, odnosno prirodnog jezika ili raspoznavanje slika/fotografija. Posljednjih godina, napredak u tehnologiji mikročipova (posebice grafičkih procesora – GPU), dostupnost velikih količina podataka i nekoliko značajnih doprinosa iz znanstvene zajednice, omogućili su revoluciju u području istraživanja i razvoja umjetne inteligencije, posebno metoda iz skupine “neuronskih mreža”. Neuronske mreže, u suštini metode stare preko 50 godina, bile su vrlo popularne i obećavajuće 90-ih godina. No, slabi računalni resursi i nedostatak podataka, značili su nemogućnost kvalitetnog treniranja takvih modela. Posljednjih nekoliko godina, situacija se promijenila, i neuronske mreže ponovno stupaju na scenu u rješavanju najrazličitijih problema. Moderne inačice nazivamo i dubokim modelima (engl. Deep learning) jer su njihovi neuroni organizirani u sekvencijalnim slojevima, kojih može biti mnogo, ovisno o problemu. Velik broj neurona, koji su u suštini male i relativno jednostavne računalne jedinice, organizirani u niz slojeva, tvore vrlo moćan mehanizam koji je teoretski u stanju opisati bilo koju ulaznu funkciju, tj. distribuciju podataka pa ako su pravilno istrenirane, u stanju su i dobro generalizirati, odnosno biti uspješne u prepoznavanju podataka i situacija koje ranijenisu vidjele. Takva arhitektura podsjeća na način organizacije živčanog sustava živih stvorenja, i zato takvu mrežu nazivamo “neuronskom”.

U tom projektu korištene su tzv. konvolucijske neuronske mreže. One su specijalizirana vrsta neuronskih mreža s posebnom vrstom neurona i njihovim rasporedom. Umjesto jednostavnih jednodimenzionalnih neurona, koriste se dvodimenzionalni filtri koji prelaze preko slike matematičkim izračunom koji nazivamo konvolucija, pri čemu se pojedini filtri “uče” raspoznavati određene uzorke. Sličan mehanizam nalazimo i u životinjskom svijetu, u tzv. vizualnom korteksu, dijelu mozga specijaliziranom za vid. Slično kao i u vizualnom korteksu, neuroni su u konvolucijskoj mreži organizirani u slojeve, gdje se svaki sljedeći sloj specijalizira za raspoznavanje uzoraka više razine složenosti, i u konačnici apstrakcije. Niži slojevi pritom uče linije, teksture, boje i prijelaze između boja, dok viši slojevi kombiniraju ulaze iz ranijih slojeva te uče složenije oblike, detalje i teksture. Zadnji ili najviši slojevi mreže (oni najudaljeniji od ulaznog signala) u ovim mrežama često nisu konvolucijski, već jednodimenzionalni (potpuno povezani) slojevi, koji onda više nemaju zadatak učiti vizualne uzorke, već apstraktne koncepte, odnosno semantiku.

Vizualno pretraživanje

Kako je prvi cilj projekta bio omogućiti vizualno pretraživanje unutar sustavaWillhaben, zadatak je bio pronaći način na koji ćemo opisati i pohraniti slike, a da se zadrže vizualna obilježja (boja, teksture, semantika) te istovremeno omogućiti vrlo brzu međusobnu usporedbu s milijunima drugih slika u bazi, i sve to u približno realnom vremenu. Konvolucijske neuronske mreže u suštini su klasifikacijska metoda, što znači da je njihov cilj prepoznavanje onoga što je na slici. No kako su se pokazale izuzetno uspješnima u tome, logično se nametnula i mogućnost njihova korištenja u vizualnom pretraživanju, tako da se iskoristi njihova moć pronalaženja vizualnih značajki te da se pomoću njih dođe do zanimljivih reprezentacija slike koje bi mogle poslužiti za brze usporedbe.

Isprva su konvolucijske mreže istrenirane kao klasični klasifikatori, a potom su “isjeckani” pojedini slojevi koji su poslužili kao vektorska reprezentacija slike. Uz nekoliko matematičkih trikova, sačuvana je vizualna i semantička informacija, uz postizanje što manje dimenzionalnosti, kako bi se u konačnici omogućio brzi rad sustava. Metode dubokog učenja vrlo su moćne u opisivanju ulaznih distribucija podataka te je to jedan od razloga zašto su modeli trenirani na vlastitim podacima. Jednostavna primjena 3rd party modela ne bi bila odgovarajuća jer su ti modeli trenirani na podacima s drugačijom distribucijom, drugačijim klasama.

Tipična arhitektura konvolucijske neuronske mreže. Izvor: https://commons.wikimedia.org/wiki/File%3ATypical_cnn.png By Aphex34 (Own work)

Semantička vs. vizualna sličnost

Korištenje gotovih rješenja za vizualno pretraživanje također ne bi bilo zadovoljavajuće rješenje za ovaj specifičan problem. Standardni pristupi opisani u literaturi, koriste konvolucijske modele, iz kojih su izuzeti zadnji slojevi kao vektorske reprezentacije slika za usporedbu. S obzirom na to da se zadnji slojevi specijaliziraju za učenje klasa odnosno semantike, ovakav način usporedbe rezultirao bi semantičkom sličnošću – primjerice, upit sa slikom na kojoj je majica kao rezultat, bi dao druge majice, a s hlačama – druge hlače, bez obzira na njihov izgled. “Prava” vizualna sličnost za upit sa slikom na kojoj se nalazi plava košulja kratkih rukava, vratila bi druge plave košulje kratkih rukava.

Semantički slični rezultati (1. red), vizualno slični rezultati (2. red)

Pod uvjetom da takvih slika ima u bazi, naravno. Kako je ovdje cilj bio prepoznavanje i preporuku modnih artikala, ta je razlika predstavljala značajan R&D problem. Kreirano rješenje omogućuje definiranje koliko će u konačnici rezultatibitisemantički, a koliko vizualni. Feedback korisnika u testnoj fazi korištenja sustava, bio je ključan za postizanje konačnog omjera.

Postizanje nekoliko postotnih bodova povećanja točnosti na nekom znanstvenom benchmark datasetu jedna je stvar, no pustiti model dubokog učenja u produkciju, uz mogućnost posluživanja milijuna korisnika u stvarnom vremenu, nešto je sasvim drugo. Zahtjevi glede prometa na Willhabenovom siteu, značili su nužan kompromis između ekspresivnosti modela i brzine izvođenja. Omogućavanje toga rezultiralo je dodatnim istraživanjem i razvojem u tom smjeru poput, primjerice, primjene tehnika smanjenja dimenzionalnosti ili korištenja binarnih značajki umjesto klasičnih cjelobrojnih. Cijela arhitektura sustava u potpunosti je domaći proizvod, koji je u stanju servirati stotine zahtjeva u sekundi, s prosječnim vremenom dohvaćanja ispod 100 milisekundi, uz mogućnost horizontalnog skaliranja, prema potrebi.

Daljnji razvoj

Vizualno pretraživanje mode svakako jest zanimljiv i nov način korištenja tog sustava, no razvojni tim neće na tomestati. U pripremi su još mnoge funkcionalnosti, temeljene na tehnologiji strojnog učenja, kako u obradi slike, tako i u obradi teksta. Nakon implementacija na austrijskom Willhabenu, slijede implementacije na Njuškalu i Bolhi te i na ostalim portalima Styria grupe, ali i vanjskom tržištu.

Nijedan model strojnog učenja nije savršen. Kako će sustav skupljati podatke i povratne informacije od korisnika, tako će učiti te se očekuje kontinuirano unaprjeđenje modela i funkcionalnosti.

Rezultati algoritma

Zanimljivosti o projektu

  • Broj neurona u mreži koja je temelj sustava: preko 3,2 milijuna
  • Broj težina među neuronima mreže: preko 6,1 milijuna
  • Brzina propagacije signala (propagacija unaprijed): 0,01 sekunda za jednu sliku
  • Broj slika korištenih za učenje mreže: više od 5 milijuna
  • Trajanje učenja mreže: dva tjedna na 4 TITAN X GPU-a
  • Trajanje projekta: 1,5 godina od ideje do produkcije
  • Tim: 9 Data Scientista i programera iz tima Styria Data Science te 7 Product Developera i ostalih stručnjaka iz klasteraStyria Marketplaces

Za dio algoritamskih rješenja kreiranih tijekom ovog projekta podnesena je patentna prijava, a u skladu s trendovima otvorene znanosti, razvojni tim planira i objave u stručnim i znanstvenim publikacijama.


Voditelj projekta
dr. sc. Marko Velić
Voditelj Data Science odjela
marko.velic@styria.hr
Zagreb, Croatia

Podijeli: