când vine vorba de algoritmul News Feed, există multe teorii și mituri. Cei mai mulți oameni înțeleg că există un algoritm la locul de muncă, și mulți știu unii dintre factorii care informează că algoritmul (dacă vă place un post sau să se angajeze cu ea, etc.). Dar există încă destul de multe lucruri care sunt înțelese greșit.
împărtășim Public multe dintre detaliile și caracteristicile News Feed. Dar sub capotă, sistemul de clasare machine learning (ML) care alimentează fluxul de știri este incredibil de complex, cu multe straturi. Împărtășim noi detalii despre modul în care funcționează sistemul nostru de clasare și provocările construirii unui sistem de personalizare a conținutului pentru mai mult de 2 miliarde de oameni și de a arăta fiecăruia conținut relevant și semnificativ pentru ei, de fiecare dată când vin pe Facebook.
ce este atât de greu în asta?
în primul rând, volumul este enorm. Peste 2 miliarde de oameni din întreaga lume folosesc Facebook. Pentru fiecare dintre acești oameni, există mai mult de o mie de postări „candidate” (sau postări care ar putea apărea în feedul acelei persoane). Acum vorbim despre trilioane de postări pe toți oamenii de pe Facebook.
acum luați în considerare faptul că pentru fiecare persoană de pe Facebook, există mii de semnale pe care trebuie să le evaluăm pentru a determina ce ar putea găsi acea persoană cea mai relevantă. Deci avem trilioane de postări și mii de semnale — și trebuie să prezicem ce vrea fiecare dintre acești oameni să vadă în feedul lor instantaneu. Când deschideți Facebook, acest proces se întâmplă în fundal în doar a doua sau cam asa ceva este nevoie pentru a încărca fluxul de știri.
și odată ce toate acestea funcționează, lucrurile se schimbă și trebuie să luăm în considerare noi probleme care apar, cum ar fi clickbait și răspândirea dezinformării. Când se întâmplă acest lucru, trebuie să găsim noi soluții. În realitate, sistemul de clasificare nu este doar un singur algoritm; este mai multe straturi de modele ML și clasamente pe care le aplicăm pentru a prezice conținutul cel mai relevant și semnificativ pentru fiecare utilizator. Pe măsură ce parcurgem fiecare etapă, sistemul de clasare restrânge acele mii de posturi candidate la câteva sute care apar în fluxul de știri al cuiva la un moment dat.
cum funcționează?
mai simplu spus, sistemul determină ce postări apar în fluxul dvs. de știri și în ce ordine, prezicând ceea ce este cel mai probabil să vă intereseze sau să interacționați. Aceste predicții se bazează pe o varietate de factori, inclusiv CE și cu cine ați urmat, v-ați plăcut sau v-ați angajat recent. Pentru a înțelege cum funcționează acest lucru în practică, să începem cu ceea ce se întâmplă pentru o persoană care se conectează la Facebook: îl vom numi Juan.
de la autentificarea lui Juan ieri, prietenul său Wei a postat o fotografie cu cocker spaniel-ul său. Un alt prieten, Saanvi, a postat un videoclip de la alergarea ei de dimineață. Pagina sa preferată a publicat un articol interesant despre cel mai bun mod de a vedea Calea Lactee noaptea, în timp ce grupul său preferat de gătit a postat patru rețete noi de aluat.
tot acest conținut este probabil să fie relevant sau interesant pentru Juan, deoarece a ales să urmeze persoanele sau paginile care îl împărtășesc. Pentru a decide care dintre aceste lucruri ar trebui să apară mai sus în fluxul de știri al lui Juan, trebuie să prezicem ce contează cel mai mult pentru el și ce conținut are cea mai mare valoare pentru el. În termeni matematici, trebuie să definim o funcție obiectivă pentru Juan și să efectuăm o optimizare cu un singur obiectiv.
putem folosi caracteristicile unei postări, cum ar fi cine este etichetat într-o fotografie și când a fost postat, pentru a prezice dacă lui Juan i-ar putea plăcea. De exemplu, dacă Juan tinde să interacționeze cu postările lui Saanvi (de ex., partajarea sau comentarea) de multe ori și videoclipul ei de rulare este foarte recent, există o mare probabilitate ca Juan să-i placă postarea. Dacă Juan s-a angajat cu mai mult conținut video decât fotografii în trecut, predicția similară pentru fotografia lui Wei cu cocker spaniel-ul său ar putea fi destul de scăzută. În acest caz, algoritmul nostru de clasare ar clasifica videoclipul lui Saanvi mai mare decât fotografia câinelui lui Wei, deoarece prezice o probabilitate mai mare ca Juan să-i placă.
dar a-ți plăcea nu este singurul mod în care oamenii își exprimă preferințele pe Facebook. În fiecare zi, oamenii împărtășesc articole pe care le consideră interesante, vizionează videoclipuri de la persoane sau celebrități pe care le urmăresc sau lasă comentarii atent la postările prietenilor lor. Din punct de vedere matematic, lucrurile devin mai complexe atunci când trebuie să optimizăm pentru mai multe obiective care se adaugă la obiectivul nostru principal: crearea celei mai mari valori pe termen lung pentru oameni, arătându-le conținut semnificativ și relevant pentru ei.
Mai multe modele ML produc mai multe predicții pentru Juan: probabilitatea ca el să se angajeze cu fotografia lui Wei, videoclipul lui Saanvi, articolul Calea Lactee sau rețetele sourdough. Fiecare model încearcă să clasifice aceste bucăți de conținut pentru Juan. Uneori nu sunt de acord — ar putea exista o probabilitate mai mare ca Juan să-i placă videoclipul lui Saanvi decât articolul Calea Lactee, dar ar putea fi mai probabil să comenteze articolul decât videoclipul. Deci, avem nevoie de o modalitate de a combina aceste predicții diferite într-un singur scor care este optimizat pentru obiectivul nostru principal de valoare pe termen lung.
cum putem măsura dacă ceva creează valoare pe termen lung pentru o persoană? Îi întrebăm. De exemplu, cercetăm oamenii pentru a întreba cât de semnificativ au găsit o interacțiune cu prietenii lor sau dacă o postare a meritat timpul lor, astfel încât sistemul nostru să reflecte ceea ce spun oamenii că le place și găsesc semnificativ. Apoi, putem lua în considerare fiecare predicție pentru Juan pe baza acțiunilor pe care oamenii ne spun (prin sondaje) că sunt mai semnificative și merită timpul lor.
Peeling înapoi straturile
pentru a rang mai mult de o mie de posturi pe utilizator, pe zi, pentru mai mult de 2 miliarde de oameni — în timp real — avem nevoie pentru a face procesul eficient. Gestionăm acest lucru în diferite etape, aranjate strategic pentru a-l face rapid și pentru a limita cantitatea de resurse de calcul necesare.
în primul rând, sistemul colectează toate posturile candidate pe care le putem clasifica pentru Juan (fotografia cocker spaniel, videoclipul care rulează etc.). Acest inventar eligibil include orice postare partajată cu Juan de un prieten, grup sau pagină la care este conectat, care a fost făcută de la ultima sa autentificare și nu a fost ștearsă. Dar cum ar trebui să gestionăm postările create înainte de ultima autentificare a lui Juan pe care nu le-a văzut încă?
pentru a ne asigura că postările nevăzute sunt reconsiderate, aplicăm o logică bumping necitită: postările proaspete care au fost clasate pentru Juan (dar nu au fost văzute de el) în sesiunile sale anterioare sunt adăugate la inventarul eligibil pentru această sesiune. De asemenea, aplicăm o logică de lovire a acțiunii, astfel încât orice postări pe care Juan le-a văzut deja care au declanșat de atunci o conversație interesantă între prietenii săi să fie adăugate și la inventarul eligibil.
în continuare, sistemul trebuie să înscrie fiecare postare pentru o varietate de factori, cum ar fi tipul de postare, similitudinea cu alte articole și cât de mult se potrivește postarea cu ceea ce Juan tinde să interacționeze. Pentru a calcula acest lucru pentru mai mult de 1.000 de postări, pentru fiecare dintre miliardele de utilizatori — toate în timp real — rulăm aceste modele pentru toate poveștile candidate în paralel pe mai multe mașini, numite predictori.
înainte de a combina toate aceste predicții într-un singur scor, trebuie să aplicăm câteva reguli suplimentare. Așteptăm până după ce avem aceste prime predicții, astfel încât să putem restrânge grupul de postări care urmează să fie clasificate — și le aplicăm pe mai multe treceri pentru a economisi puterea de calcul.
în primul rând, anumite procese de integritate sunt aplicate fiecărui post. Acestea sunt concepute pentru a determina ce măsuri de detectare a integrității, dacă există, trebuie aplicate poveștilor selectate pentru clasare. În următoarea trecere, un model ușor restrânge grupul de candidați la aproximativ 500 dintre cele mai relevante posturi pentru Juan. Clasarea mai puține povești ne permite să folosim modele de rețele neuronale mai puternice pentru următoarele treceri.
Următorul este pasul principal de notare, unde se întâmplă cea mai mare parte a personalizării. Aici, un scor pentru fiecare poveste este calculat independent, iar apoi toate cele 500 de postări sunt puse în ordine prin scor. Pentru unii, scorul poate fi mai mare pentru Aprecieri decât pentru comentarii, deoarece unora le place să se exprime mai mult prin plăcere decât prin comentarii. Orice acțiune în care o persoană se angajează rar (de exemplu, o predicție asemănătoare care este foarte aproape de zero) primește automat un rol minim în clasare, deoarece valoarea prezisă este foarte scăzută.
în cele din urmă, rulăm trecerea contextuală, în care sunt adăugate caracteristici contextuale precum regulile de diversitate a tipurilor de conținut pentru a ne asigura că fluxul de știri al lui Juan are un amestec bun de tipuri de conținut și nu vede mai multe postări video, una după alta. Toți acești pași de clasare se întâmplă în timpul necesar pentru ca Juan să deschidă aplicația Facebook și, în câteva secunde, are un flux de știri marcat, care este pregătit pentru el să navigheze și să se bucure.