amikor a hírcsatorna algoritmusáról van szó, sok elmélet és mítosz létezik. A legtöbb ember megérti, hogy van egy algoritmus a munkahelyen, és sokan ismerik azokat a tényezőket, amelyek tájékoztatják az algoritmust (akár tetszik egy bejegyzés, akár foglalkozik vele stb.). De még mindig sok mindent félreértenek.
nyilvánosan megosztjuk a hírcsatorna számos részletét és funkcióját. De a motorháztető alatt a hírcsatornát működtető gépi tanulás (ML) rangsorolási rendszer hihetetlenül összetett, sok réteggel. Új részleteket osztunk meg arról, hogyan működik a rangsorolási rendszerünk, és milyen kihívásokkal jár egy olyan rendszer kiépítése, amely személyre szabja a tartalmat több mint 2 milliárd ember számára, és mindegyiküknek releváns és értelmes tartalmat jelenít meg számukra, minden alkalommal, amikor a Facebook-ra jönnek.
mi olyan nehéz ebben?
először is, a kötet hatalmas. Világszerte több mint 2 milliárd ember használja a Facebook-ot. Ezen emberek mindegyikénél több mint ezer” jelölt ” bejegyzés található (vagy olyan bejegyzések, amelyek potenciálisan megjelenhetnek az adott személy hírcsatornájában). Most billió hozzászólásról beszélünk a Facebook összes emberén.
most vegye figyelembe, hogy a Facebook minden egyes személyére több ezer jel van, amelyeket értékelnünk kell annak meghatározásához, hogy az adott személy mit találhat a legrelevánsabbnak. Tehát több billió üzenetünk és több ezer jelünk van — és meg kell jósolnunk, hogy ezek az emberek azonnal mit akarnak látni a hírcsatornájukban. Amikor megnyitja a Facebook-ot, ez a folyamat a háttérben történik, körülbelül egy másodperc alatt, amíg betölti a hírcsatornát.
és amint mindez működik, a dolgok megváltoznak, és figyelembe kell vennünk az új kérdéseket, mint például a clickbait és a félretájékoztatás terjedését. Amikor ez megtörténik, új megoldásokat kell találnunk. A valóságban a rangsorolási rendszer nem csak egyetlen algoritmus, hanem több réteg ML modell és rangsor, amelyet azért alkalmazunk, hogy megjósoljuk az egyes felhasználók számára leginkább releváns és értelmes tartalmat. Ahogy haladunk az egyes szakaszokon, a rangsorolási rendszer szűkíti a jelölt állások ezreit arra a néhány százra, amelyek egy adott pillanatban megjelennek valaki hírcsatornájában.
hogyan működik?
egyszerűen fogalmazva, a rendszer meghatározza, hogy mely bejegyzések jelennek meg a hírcsatornában, és milyen sorrendben, megjósolva, hogy mi érdekli vagy foglalkozik. Ezek az előrejelzések számos tényezőn alapulnak, beleértve azt is, hogy mit és kivel követtél, tetszett vagy részt vett a közelmúltban. Ahhoz, hogy megértsük, hogyan működik ez a gyakorlatban, kezdjük azzal, hogy mi történik egy személynél, aki bejelentkezik a Facebook-ba: Juannak hívjuk.
Juan tegnapi bejelentkezése óta barátja, Wei fotót tett közzé cocker spánieléről. Egy másik barát, Saanvi, közzétett egy videót a reggeli futásáról. Kedvenc oldala érdekes cikket tett közzé a Tejút éjszakai megtekintésének legjobb módjáról, míg kedvenc szakácscsoportja négy új kovász receptet tett közzé.
Ez a tartalom valószínűleg releváns vagy érdekes Juan számára, mert úgy döntött, hogy követi az azt megosztó embereket vagy oldalakat. Annak eldöntéséhez, hogy ezek közül a dolgok közül melyik jelenjen meg magasabban Juan hírcsatornájában, meg kell jósolnunk, mi a legfontosabb neki, és melyik tartalom hordozza a legnagyobb értéket számára. Matematikai értelemben meg kell határoznunk egy objektív függvényt Juan számára, és végre kell hajtanunk egy objektív optimalizálást.
felhasználhatjuk egy bejegyzés jellemzőit, például azt, hogy ki van címkézve egy fotón, és mikor tették közzé, hogy megjósoljuk, hogy Juan tetszhet-e neki. Például, ha Juan hajlamos kapcsolatba lépni Saanvi bejegyzéseivel (pl., megosztása vagy kommentálása) gyakran futó videója nagyon friss, nagy a valószínűsége annak, hogy Juan tetszeni fog neki. Ha Juan a múltban több videotartalommal foglalkozott, mint fotókkal, akkor Wei cocker spániel fényképének hasonló előrejelzése meglehetősen alacsony lehet. Ebben az esetben a rangsorolási algoritmusunk saanvi futó videóját magasabbra rangsorolja, mint Wei kutyafotóját, mert nagyobb valószínűséggel jósolja meg, hogy Juan szeretné.
de a kedvelés nem az egyetlen módja annak, hogy az emberek kifejezzék preferenciáikat a Facebook-on. Az emberek minden nap megosztják érdekesnek talált cikkeiket, videókat néznek az általuk követett emberektől vagy hírességektől, vagy átgondolt megjegyzéseket hagynak barátaik bejegyzéseire. Matematikailag a dolgok összetettebbé válnak, amikor több olyan célra kell optimalizálnunk, amelyek mind összeadják az elsődleges célunkat: a leghosszabb távú érték megteremtése az emberek számára azáltal, hogy értelmes és releváns tartalmat jelenítenek meg nekik.
több ML modell több előrejelzést készít Juan számára: annak valószínűsége, hogy kapcsolatba lép Wei fotójával, Saanvi videójával, a Tejút cikkével vagy a kovász receptjeivel. Minden modell megpróbálja rangsorolni ezeket a tartalmakat Juan számára. Néha nem értenek egyet — nagyobb a valószínűsége annak, hogy Juan szeretné Saanvi futó videóját, mint a Tejút cikk, de valószínűleg nagyobb valószínűséggel kommentálja a cikket, mint a videót. Tehát szükségünk van egy módra, hogy ezeket a különböző előrejelzéseket egyetlen pontszámba egyesítsük, amelyet a hosszú távú érték elsődleges céljához optimalizáltunk.
hogyan mérhetjük, hogy valami hosszú távú értéket teremt-e egy ember számára? Megkérdezzük őket. Például felmérjük az embereket, hogy megkérdezzük, mennyire értelmesnek találták a barátaikkal való interakciót, vagy hogy egy bejegyzés megéri-e az idejüket, hogy rendszerünk tükrözze azt, amit az emberek azt mondják, hogy élvezik és értelmesnek találják. Ezután minden egyes előrejelzést figyelembe vehetünk Juan számára azon cselekedetek alapján, amelyekről az emberek azt mondják nekünk (felmérések útján), hogy értelmesebbek és megérik az idejüket.
a rétegek visszahúzása
ahhoz, hogy naponta több mint ezer bejegyzést rangsoroljunk felhasználónként, több mint 2 milliárd ember számára — valós időben — hatékonyabbá kell tennünk a folyamatot. Ezt különböző lépésekben kezeljük, stratégiailag elrendezve, hogy gyors legyen, és korlátozzuk a szükséges számítási erőforrások mennyiségét.
először is, a rendszer összegyűjti az összes jelölt posztot, amelyet esetleg Rangsorolhatunk Juan számára (a cocker spániel fotó, a futó videó stb.). Ez a jogosult leltár magában foglal minden olyan bejegyzést, amelyet egy barátja, csoportja vagy oldala osztott meg Juannal, amelyhez csatlakozik, és amelyet az utolsó bejelentkezése óta készítettek, és amelyet nem töröltek. De hogyan kezeljük a Juan utolsó bejelentkezése előtt létrehozott bejegyzéseket, amelyeket még nem látott?
annak érdekében, hogy a láthatatlan hozzászólásokat átgondoljuk, egy olvasatlan ütközési logikát alkalmazunk: a Juan számára rangsorolt (de általa nem látott) friss hozzászólásokat hozzáadjuk a munkamenet támogatható készletéhez. Akció-ütköző logikát is alkalmazunk, hogy minden olyan bejegyzés, amelyet Juan már látott, amely azóta érdekes beszélgetést váltott ki barátai között, bekerüljön a támogatható leltárba is.
ezután a rendszernek meg kell szereznie az egyes bejegyzéseket különböző tényezők alapján, például a bejegyzés típusa, a többi elemhez való hasonlóság és az, hogy a bejegyzés mennyiben egyezik azzal, amivel Juan hajlamos kölcsönhatásba lépni. Ennek kiszámításához több mint 1000 bejegyzés esetén a felhasználók milliárdjai számára — mindezt valós időben — ezeket a modelleket futtatjuk az összes jelölt történethez párhuzamosan több gépen, az úgynevezett prediktorokon.
mielőtt ezeket az előrejelzéseket egyetlen pontszámba egyesítenénk, további szabályokat kell alkalmaznunk. Megvárjuk, amíg megkapjuk ezeket az első előrejelzéseket, hogy szűkítsük a rangsorolandó Hozzászólások körét — és több lépésben alkalmazzuk őket a számítási teljesítmény megtakarítása érdekében.
először is, bizonyos integritási folyamatokat alkalmaznak minden bejegyzésre. Ezek célja annak meghatározása, hogy mely integritás-észlelési intézkedéseket kell alkalmazni a rangsorolásra kiválasztott történetekre, ha vannak ilyenek. A következő lépésben egy könnyű modell szűkíti a jelöltek körét Juan számára a legrelevánsabb álláshelyek körülbelül 500-ra. A kevesebb történet rangsorolása lehetővé teszi számunkra, hogy erősebb neurális hálózati modelleket használjunk a következő lépésekhez.
A következő a fő pontozási lépés, ahol a személyre szabás nagy része megtörténik. Itt az egyes történetek pontszámát függetlenül számítják ki, majd mind az 500 hozzászólást pontszám szerint rendezik. Néhány, a lájkok pontszáma magasabb lehet, mint a kommentálásoké, mivel egyesek inkább a tetszés, mint a kommentálás révén szeretik kifejezni magukat. Minden olyan művelet, amelyet egy személy ritkán végez (például egy hasonló előrejelzés, amely nagyon közel van a nullához), automatikusan minimális szerepet kap a rangsorban, mivel az előre jelzett érték nagyon alacsony.
végül lefuttatjuk a kontextuális passzt, amelyben olyan kontextuális funkciók kerülnek hozzáadásra, mint a tartalomtípus sokféleségére vonatkozó szabályok, hogy megbizonyosodjunk arról, hogy Juan hírcsatornájában a tartalomtípusok jó keveréke van, és nem lát több videó bejegyzést egymás után. Mindezek a rangsorolási lépések abban az időben történnek, amíg Juan megnyitja a Facebook alkalmazást, és másodperceken belül van egy pontozott hírcsatorna, amely készen áll arra, hogy böngészhessen és élvezhesse.