Kako izboljšamo kakovost in hitrost izbire priporočil

Moje ime je Pavel Parkhomenko in sem razvijalec strojnega učenja. V tem članku bi rad razložil zasnovo Yandex.Zen in delil tehnične izboljšave, ki so izboljšale kakovost priporočil. V tej objavi se boste naučili, kako v nekaj milisekundah najti najustreznejše dokumente med milijoni dokumentov; kako neprekinjeno faktorizirati veliko matriko (ki jo sestavljajo milijoni stolpcev in deset milijonov vrstic), tako da novi dokumenti prejmejo svoje vektorje v desetih minutah; in kako ponovno uporabiti faktorizacijo matrike uporabniškega članka za pridobitev dobre vektorske predstavitve za videoposnetke.

Kako izboljšamo kakovost in hitrost izbire priporočil

Naša baza priporočil vsebuje milijone dokumentov različnih formatov: besedilne članke, ustvarjene na naši platformi in vzete z zunanjih spletnih mest, videoposnetke, pripovedi in kratke objave. Razvoj takšne storitve predstavlja številne tehnične izzive. Tukaj je nekaj izmed njih:

  • Razdelite računske naloge: vse zahtevne operacije izvajajte brez povezave, v realnem času pa le hitro uporabo modela, tako da so odzivni časi znotraj 100–200 ms.
  • Hitro vključite uporabniška dejanja. To zahteva, da so vsi dogodki takoj dostavljeni priporočitelju in vplivajo na delovanje modelov.
  • Oblikujte vir tako, da se bo hitro prilagodil vedenju novih uporabnikov. Novi uporabniki bi morali imeti občutek, da njihove povratne informacije vplivajo na priporočila.
  • Hitro razumejte, komu priporočiti nov članek.
  • Hitro se odzovite na nenehno pojavljanje novih vsebin. Vsak dan je objavljenih več deset tisoč člankov, mnogi od njih (na primer novice) pa imajo omejeno življenjsko dobo. To jih razlikuje od filmov, glasbe in drugih dolgoživih in drago produciranih vsebin.
  • Prenos znanja iz ene domene v drugo. Če ima sistem priporočil usposobljene modele za besedilne članke in dodamo videoposnetke, lahko ponovno uporabimo obstoječe modele za izboljšanje uvrstitve novih vrst vsebin.

Povedal vam bom, kako smo rešili te težave.

Izbor kandidatov

Kako lahko v nekaj milisekundah zmanjšamo število obravnavanih dokumentov za faktor tisoč, ne da bi to praktično vplivalo na kakovost uvrstitve?

Recimo, da smo naučili več modelov strojnega učenja, na podlagi njih ustvarili funkcije in naučili še en model, ki razvršča dokumente za uporabnika. To bi bilo vse lepo in prav, vendar ne moremo preprosto izračunati vseh funkcij za vse dokumente v realnem času, če jih je na milijone, priporočila pa je treba ustvariti v 100–200 ms. Cilj je izbrati podmnožico milijonov, ki bodo razvrščeni za uporabnika. Ta faza se običajno imenuje izbira kandidatov. Ima več zahtev. Prvič, izbira mora biti zelo hitra, tako da mora za postopek razvrščanja ostati čim več časa. Drugič, z znatnim zmanjšanjem števila dokumentov za razvrščanje moramo ohraniti čim več ustreznih dokumentov.

Naš postopek izbire kandidatov se je sčasoma razvijal in zdaj smo dosegli večstopenjski pristop:

Kako izboljšamo kakovost in hitrost izbire priporočil

Najprej so vsi dokumenti razdeljeni v skupine in iz vsake skupine so izbrani najbolj priljubljeni dokumenti. Skupine so lahko spletna mesta, teme ali skupine. Za vsakega uporabnika so izbrane najustreznejše skupine na podlagi njegove zgodovine, iz teh skupin pa so izbrani najboljši dokumenti. Za izbiro najustreznejših dokumentov za uporabnika v realnem času uporabljamo tudi indeks kNN. Obstaja več metod za izdelavo indeksa kNN, vendar naša deluje najbolje. HNSW (Hierarhični navigacijski grafi majhnega sveta). To je hierarhični model, ki nam omogoča, da v nekaj milisekundah iz baze podatkov milijonov najdemo N najbližjih vektorjev za uporabnika. Najprej indeksiramo celotno bazo dokumentov brez povezave. Ker je iskanje po indeksih precej hitro, lahko v primeru več močnih vdelav ustvarimo več indeksov (en indeks za vsako vdelavo) in do vsakega od njih dostopamo v realnem času.

Za vsakega uporabnika nam ostanejo deset tisoči dokumentov. To je še vedno preveliko število za izračun vseh značilnosti, zato na tej stopnji uporabljamo lahko razvrščanje – lahek model težkega razvrščanja z manj značilnostmi. Cilj je napovedati, kateri dokumenti bodo na vrhu težkega modela. Dokumenti z najvišjo napovedno vrednostjo bodo uporabljeni v težkem modelu, ki je zadnja faza razvrščanja. Ta pristop nam omogoča, da v desetih milisekundah zmanjšamo bazo podatkov dokumentov, ki se upoštevajo za uporabnika, z milijonov na tisoče.

Korak izvajanja ALS

Kako upoštevati povratne informacije uporabnikov takoj po kliku?

Ključni dejavnik pri priporočilih je odzivni čas na povratne informacije uporabnikov. To je še posebej pomembno za nove uporabnike: ko nekdo prvič začne uporabljati sistem priporočil, se mu predstavi nepersonaliziran vir dokumentov o različnih temah. Takoj ko opravi prvi klik, je treba to takoj upoštevati in se prilagoditi njegovim interesom. Če se vsi dejavniki izračunajo brez povezave, hiter odziv sistema zaradi zakasnitve ne bo mogoč. Zato je treba dejanja uporabnikov obdelovati v realnem času. V ta namen med izvajanjem uporabljamo korak ALS za izgradnjo vektorske predstavitve uporabnika.

Predpostavimo, da imamo vektorsko predstavitev za vse dokumente. Na primer, lahko konstruiramo vdelave brez povezave na podlagi besedila članka z uporabo ELMo, BERT ali drugih modelov strojnega učenja. Kako lahko dobimo vektorsko predstavitev uporabnikov v istem prostoru na podlagi njihovih interakcij v sistemu?

Splošno načelo oblikovanja in dekompozicije matrike uporabnik-dokumentRecimo, da imamo m uporabnikov in n dokumentov. Za nekatere uporabnike so njihova stališča do določenih dokumentov znana. Te informacije lahko nato predstavimo kot matriko m x n: vrstice ustrezajo uporabnikom, stolpci pa dokumentom. Ker uporabnik večine dokumentov ni videl, bo večina celic matrike ostala prazna, druge pa bodo zapolnjene. Za vsak dogodek (všeč mi je, ni mi všeč, klik) ima matrika vrednost – vendar si poglejmo poenostavljen model, v katerem všeček ustreza 1, nevšeček pa 1.

Razdelimo matriko na dve: P (m x d) in Q (d x n), kjer je d dimenzionalnost vektorske predstavitve (običajno majhno število). Vsak objekt bo nato ustrezal d-dimenzionalnemu vektorju (uporabnik je vrstica v matriki P, dokument pa stolpec v matriki Q). Ti vektorji bodo vgradnje ustreznih objektov. Če želite napovedati, ali bo uporabniku dokument všeč, lahko preprosto pomnožite njihove vgradnje.

Kako izboljšamo kakovost in hitrost izbire priporočil
Ena od možnih metod faktorizacije matrik je ALS (izmenični najmanjši kvadrati). Optimizirali bomo naslednjo funkcijo izgub:

Kako izboljšamo kakovost in hitrost izbire priporočil

Tukaj je rui interakcija uporabnika u z dokumentom i, qi je vektor dokumenta i, pu pa je vektor uporabnika u.

Nato se optimalni uporabniški vektor glede na povprečno kvadratno napako (s fiksnimi vektorji dokumentov) analitično poišče z reševanjem ustrezne linearne regresije.

Temu pravimo "korak ALS". Algoritem ALS sam po sebi sestoji iz izmenične popravitve ene od matrik (uporabnikov in člankov) in posodabljanja druge, s čimer se najde optimalna rešitev.

Na srečo je iskanje uporabnikove vektorske predstavitve dokaj hitra operacija, ki jo je mogoče izvesti med izvajanjem z uporabo vektorskih ukazov. Ta trik omogoča, da se uporabniške povratne informacije takoj upoštevajo pri razvrščanju. Enako vgrajevanje se lahko uporabi v indeksu kNN za izboljšanje izbire kandidatov.

Porazdeljeno sodelovalno filtriranje

Kako izvesti inkrementalno porazdeljeno faktorizacijo matrik in hitro najti vektorske predstavitve novih člankov?

Vsebina ni edini vir priporočilnih signalov. Drug pomemben vir so skupni podatki. Dobre značilnosti uvrstitve je mogoče tradicionalno izpeljati iz dekompozicije matrike uporabnik-dokument. Vendar smo pri poskusu izvedbe takšne dekompozicije naleteli na več težav:

1. Imamo milijone dokumentov in več deset milijonov uporabnikov. Celotna matrika se ne prilega enemu samemu stroju in razgradnja bo trajala zelo dolgo.
2. Večina vsebine v sistemu ima kratko življenjsko dobo: dokumenti ostanejo relevantni le nekaj ur. Zato je treba čim hitreje zgraditi njihovo vektorsko predstavitev.
3. Če dekompozicijo zgradite takoj po objavi dokumenta, ga ne bo imelo časa oceniti zadostno število uporabnikov. Zato bo njegova vektorska predstavitev najverjetneje slaba.
4. Če je uporabnik všečkal ali ni všečkal objave, tega ne bomo mogli takoj upoštevati pri razčlenitvi.

Za rešitev teh težav smo implementirali porazdeljeno dekompozicijo matrike uporabnik-dokument s pogostimi inkrementalnimi posodobitvami. Kako točno to deluje?

Recimo, da imamo gručo N strojev (N je v stotinah) in želimo izvesti porazdeljeno dekompozicijo matrike po njih, ki ne ustreza enemu samemu stroju. Vprašanje je: kako lahko izvedemo to dekompozicijo tako, da ima vsak stroj na eni strani dovolj podatkov, izračuni pa so neodvisni?

Kako izboljšamo kakovost in hitrost izbire priporočil

Uporabili bomo zgoraj opisani algoritem dekompozicije ALS. Razmislimo, kako izvesti en korak ALS na porazdeljen način – preostali koraki bodo podobni. Recimo, da imamo fiksno matriko dokumentov in želimo sestaviti uporabniško matriko. Da bi to naredili, jo bomo razdelili na N delov po vrsticah, pri čemer bo vsak del vseboval približno enako število vrstic. Neprazne celice ustreznih vrstic bomo porazdelili na vsak računalnik, kot tudi celotno matriko vdelave dokumentov. Ker ti podatki niso zelo veliki in so matrike uporabnik-dokument običajno zelo redke, bodo ti podatki ustrezali tipičnemu računalniku.

Ta trik se lahko ponavlja več epoh, dokler model ne konvergira, pri čemer se izmenično spreminja fiksna matrika. Toda tudi takrat lahko razgradnja matrike traja več ur. In to ne reši problema hitrega pridobivanja vgradenj za nove dokumente in posodabljanja vgradenj tistih, o katerih je bilo pri gradnji modela na voljo malo informacij.

Pomagalo nam je z implementacijo hitrih inkrementalnih posodobitev modela. Predpostavimo, da imamo trenutno naučen model. Od njegovega učenja so bili dodani novi članki, s katerimi so naši uporabniki komunicirali, pa tudi članki, ki so imeli med učenjem malo interakcij. Za hitro pridobitev vdelav za te članke uporabimo vdelave uporabnikov, pridobljene med prvim obsežnim učenjem modela, in izvedemo en sam korak ALS za izračun matrike dokumenta s fiksno matriko uporabnikov. To nam omogoča, da vdelave pridobimo dokaj hitro – v nekaj minutah po objavi dokumenta – in pogosto posodabljamo vdelave novih dokumentov.

Da bi zagotovili, da priporočila takoj temeljijo na človeških dejanjih, ne uporabljamo uporabniških vdelav, pridobljenih brez povezave med izvajanjem. Namesto tega izvedemo korak ALS in pridobimo trenutni uporabniški vektor.

Prenos na drugo domensko območje

Kako uporabiti povratne informacije uporabnikov o besedilnih člankih za izdelavo vektorske predstavitve videa?

Sprva smo priporočali le besedilne članke, zato je veliko naših algoritmov prilagojenih tej vrsti vsebine. Vendar pa smo pri dodajanju drugih vrst vsebine naleteli na potrebo po prilagoditvi naših modelov. Kako smo to težavo rešili na primeru videa? Ena od možnosti je bila, da vse modele ponovno usposobimo iz nič. Vendar je to zamudno, nekateri algoritmi pa so zahtevni glede velikosti učnega vzorca, ki še ni na voljo v zadostni količini za nove vrste vsebine v zgodnjih fazah njihove življenjske dobe v storitvi.

Uporabili smo drugačen pristop in ponovno uporabili besedilne modele za videoposnetke. Isti trik ALS nam je pomagal ustvariti vektorske predstavitve videoposnetkov. Vzeli smo vektorsko predstavitev uporabnika na podlagi besedilnih člankov in izvedli korak ALS z uporabo podatkov o ogledu videoposnetka. Na ta način smo preprosto dobili vektorsko predstavitev videoposnetka. Med izvajanjem preprosto izračunamo podobnost med vektorjem uporabnika, pridobljenim iz besedilnih člankov, in vektorjem videoposnetka.

Zaključek

Razvoj jedra sistema za priporočila v realnem času vključuje številne izzive. Zahteva hitro obdelavo podatkov in uporabo metod strojnega učenja za njihovo učinkovito uporabo; gradnjo kompleksnih porazdeljenih sistemov, ki so sposobni obdelati uporabniške signale in nove vsebinske enote v minimalnem času; in številne druge naloge.

V trenutnem sistemu, katerega zasnovo sem opisal, se kakovost priporočil za uporabnika povečuje skupaj z njegovo aktivnostjo in trajanjem uporabe. Seveda pa je tu tudi glavni izziv: sistemu je težko takoj razumeti interese nekoga, ki ni veliko komuniciral z vsebino. Izboljšanje priporočil za nove uporabnike je naš ključni cilj. Še naprej bomo optimizirali algoritme, da bi zagotovili, da ustrezna vsebina hitreje doseže uporabnikov vir in da se ne prikazuje neustrezna vsebina.

Vir: www.habr.com

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster