Yaron Greif | Inginer software, clasament Homefeed

In fiecare zi, milioane de Pinners viziteaza feedul de acasa pentru a gasi inspiratie pe Pinterest. In calitate de membru al echipei de clasificare a feed-urilor la domiciliu, este de datoria mea sa nu imi dau seama doar ce pini relevanti sa arate Pinners, ci si sa ma asigur ca acei pini vor ajuta la mentinerea sanatatii ecosistemului general Pinterest. De exemplu, in raport cu clasarea doar in functie de relevanta, am putea afisa mai multi Pin-uri nou-creati pentru a ne asigura ca corpusul nostru nu devine invechit sau mai multi Pin-uri video pentru a scoate la iveala idei actionabile de la creatori.

Modelele traditionale de predictie click-through sunt concepute pentru a maximiza implicarea utilizatorilor, dar nu ajuta la atingerea celorlalte obiective de afaceri. Pentru a rezolva aceste alte obiective, echipa de clasificare a feed-urilor de acasa a introdus distributia controlabila , un sistem flexibil in timp real aplicat dupa stratul de clasare traditional pentru a controla compromisul intre domenii precum relevanta, prospetimea si obiectivele creatorilor prin cresterea si degradarea scorurilor de clasare a continutului tipuri.

Inainte de distributia controlabila, am rezolvat aceste constrangeri de afaceri printr-un numar mare de solutii speciale de cazuri din baza de cod. Cele mai comune doua solutii au fost sa inseram pur si simplu continutul pe care l-am dorit mai mult de aproximativ fiecare n spatiu sau sa mutam continutul in sus pe flux pana cand un procent minim din continutul returnat este un anumit tip.

Aceste tipuri de solutii au fost dureroase atat din motive practice, cat si din motive teoretice.

In practica, aceste cresteri reglate manual au devenit rapid imposibil de gestionat si s-au amestecat reciproc. Si mai rau, de multe ori nu mai functioneaza in timp – mai ales atunci cand modelele de clasare sunt actualizate. In mod regulat, a trebuit sa amanam noi modele foarte promitatoare de clasare, deoarece au incalcat constrangerile de afaceri.

In teorie, controlul continutului pe baza de cerere nu este de dorit, deoarece impiedica personalizarea. Daca aratam fiecarui utilizator acelasi numar de Pinuri video, nu le putem arata mai multe videoclipuri persoanelor carora le place foarte mult sa vizioneze videoclipuri sau invers.

Distributia controlabila inlocuieste constantele codificate cu un sistem in care proprietarii de companii pot specifica o tinta globala pentru procentajul de afisari dupa tipul de continut. De exemplu, daca 4% din flux este setat la video, distributia controlabila poate determina automat modul de realizare a acestei distributii, respectand in acelasi timp preferintele de continut Pinner. Important, distributia controlabila regleaza sistemul continuu in timp real, astfel incat sa nu devina invechit.

Distributia controlabila face acest lucru printr-un sistem care urmareste ce procent din feed a fost video in trecut si apoi creste sau descreste continutul in functie de cat de aproape de videoclipul tinta este. Sporul este implementat prin cresterea scorului sistemelor de clasare cu un scalar pe care il numim o „constanta de normalizare”.

Pentru a motiva constantele de normalizare putem formula setarea de clasificare Pinterest ca o problema de optimizare supusa constrangerilor impuse de distributia controlabila. Constantele de normalizare sunt apoi Lagrangienii acelei probleme de optimizare.

Pentru fiecare utilizator i slot j pair, sistemul selecteaza pinul Xij pentru a maximiza scorurile clasamentului. Distributia controlabila adauga o constrangere ca fiecare tip Pin t ar trebui sa reprezinte Pt procent din flux

Problema de optimizare devine apoi:

Forma Lagrangiana este atunci:

Λ Lagrangian este constanta noastra de normalizare. Din perspectiva economica, λ este pretul alternativ sau costul de oportunitate acceptabil pentru a selecta un Pin de tip t. Suntem dispusi sa renuntam la λ din angajamentul asteptat pentru a afisa un Pin de tip t.

Problema de optimizare de mai sus nu poate fi rezolvata in practica, deoarece nu cunoastem in prealabil setul de pini care vor fi clasati. In schimb, fara distributie controlabila, solutia este aproximata prin selectarea lacoma a Pinilor cu cel mai mare scor de clasare. Deoarece λ pentru tipul t este independent de utilizator si slot, regula de decizie de mai sus poate fi actualizata pentru a selecta Pinul cu cel mai mare scor combinat de clasare si constante de normalizare.

λ pentru tipul t este aproximat observand in timp real eroarea g (t) si ajustand λ in consecinta.

hentai en castellano videos caseros españa
sexogratis incesto retro
fiestas xxx falsos casting porno
porno amas de casa xxx prostitutas
mujeres follando gratis cine para adultos gratis
concursos nudistas porno peludas españolas
porno loco analxxx
pajas de madres asiatica forzada
videos pornos muy guarros tata_latina
porno india cerdas com gratis
maduras tocandose me follo a
tuporn laura marano nude
torbe videos completos peliculas x en castellano
maduras sex pillada follando
joven folla por dinero se folla a su cuñada
mi madre me folla chupame las tetas
porno friki gay se la chupa a hetero
follando con abuelas fontanero cachondo
pillada follando porno italiano incesto
incestos lesbicos trios x

De exemplu, in experimentul de mai jos am dorit ca procentul real de Pin-uri de un anumit tip sa fie de 15,5%. A inceput ridicat, la 20%. Cand sistemul a vazut ca continutul a fost supra-distribuit, a redus constanta si, in cele din urma, procentul convergea la aproximativ 15,5%.

Am folosit un controler PID pentru a gasi constantele de normalizare. Controlerele PID sunt utilizate pentru a controla sistemele de zi cu zi, cum ar fi termostatele si regulatorul de viteza. Au proprietatea de dorit ca nu necesita un model al spatiului problematic pentru a functiona. Termostatul dvs. nu trebuie sa stie daca fereastra dvs. este deschisa pentru a mentine temperatura in casa dvs. In mod similar, distributia scorurilor clasamentului se poate schimba brusc. Deci, ar fi foarte greu sa modelam in mod explicit relatia dintre constantele de normalizare si distributia tipurilor de continut.

In schimb, controlerele PID folosesc doar istoricul recent sau erorile dintre distributia tinta si distributia efectiva pentru a actualiza constantele de normalizare. Aceste erori sunt usor de stocat in practica. Algoritmul utilizat este:

Intuitiv, termenul i este cel mai important termen din ecuatia de mai sus. Daca exista o eroare in cat de mult continutul afisam, ne crestem constanta de normalizare proportional cu i . Cu cat mai mare i este, cu atat mai mare de actualizare noastra. Dar daca eu este prea mare, am depasire. Deci, avem nevoie de termenul p si d pentru a atenua actualizarile noastre in functie de cat de repede se diminueaza termenul de eroare.

Cea mai mare problema pe care am avut-o cu controlerele PID este ca tipurile de continut cu cresteri foarte mari necesita termeni p, i si d diferiti decat tipurile de continut cu cresteri mici. Dar reglarea termenilor p, i si d in functie de tipul de continut este greu de intretinut. In schimb, am constatat ca, daca am modificat controlul PID pentru a functiona pe spatiul jurnal, acelasi controler PID a functionat pentru toate tipurile de continut.

Un mare avantaj al utilizarii unei solutii online este ca se poate scala cu usurinta pentru a gestiona experiente de testare AB care nu au date anterioare. In schimb, solutiile offline, cum ar fi aproximarea λ utilizand datele din saptamanile anterioare, trebuie sa astepte ca aceste date sa fie generate.

Implementare

Termenii de eroare sunt urmariti prin faptul ca serviciul Counter Service se aboneaza la un flux Kafka de impresii frontend si apoi stocheaza agregatele in RocksDB. Controlerul PID citeste apoi istoricul termenilor de eroare de la Counter Service si publica constantele de normalizare rezultate in Zookeeper pentru a fi consumate de algoritmul de selectie. Controlerul PID este implementat ca un job Jenkins orar.

Cum a mers

In multe privinte, solutia a fost mai usor de implementat decat se astepta. A fost nevoie de mai putin timp decat s-a planificat pentru a crea un controler PID functional. Iar algoritmul a fost scalat cu usurinta pentru a controla mai multe tipuri de continut, ceea ce a fost o mare ingrijorare in timpul revizuirii designului.

Cu toate acestea, am constatat adesea ca nu putem controla continutul in afara unui anumit interval. De exemplu, am putea viza orice procentaj video intre 4% si 12%, dar nu am reusit sa obtinem videoclipuri sub sau peste acest interval. Depanarea acestor tipuri de probleme a fost dureroasa si plictisitoare si a fost in general cauzata de probleme de sistem sau de constante vechi codificate.

Impact

Distributia controlabila este utilizata in productie si s-a dovedit deja foarte utila. Acesta a atins cazul de utilizare initial de a permite implementarea modelelor fara intarzieri costisitoare, deoarece acestea au fost actualizate pentru a atinge constrangerile de afaceri. De asemenea, am folosit distributia controlabila pentru a deprecia sistemele vechi, cum ar fi „inserarea periodica”, simplificand codul si economisind mult timp pentru inginerie.

De asemenea, am gasit noi cazuri de utilizare pentru distributia controlabila dincolo de ceea ce a fost intentionat initial. De exemplu, am folosit distributia controlabila pentru a testa impactul diferitelor tipuri de continut asupra sistemului. Mai jos am folosit distributia controlabila pentru a regla incarcarea video pentru diferite grupuri AB.

Ce urmeaza

In mod traditional, Pinterest si site-uri similare si-au petrecut majoritatea eforturilor de modelare pe recuperare si predictia evenimentelor. Distributia controlabila este doar un exemplu al modului in care este important sa modelati si sa modificati aceste scoruri de clasare pentru a oferi cele mai bune rezultate atat pentru Pinners, cat si pentru creatori.

Pinterest va continua sa investeasca in aceasta etapa post-clasificare, pe care o numim amestec, pentru a oferi utilizatorilor un continut mai bun de inspiratie.

Multumiri: Dorim sa multumim in mod special Ruimin Zhu, Kangnan Li, Nan Zhang, Cosmin Negruseri si Ludek Cigler pentru ajutorul lor in acest proiect