als het gaat om het News Feed algoritme, zijn er veel theorieën en mythen. De meeste mensen begrijpen dat er een algoritme aan het werk is, en velen kennen enkele van de factoren die dat algoritme informeren (of je van een post houdt of ermee bezig bent, enz.). Maar er is nog steeds heel veel dat verkeerd wordt begrepen.
we delen publiekelijk veel details en functies van News Feed. Maar onder de motorkap, de machine learning (ML) ranking systeem dat de bevoegdheden van News Feed is ongelooflijk complex, met vele lagen. We delen nieuwe details over hoe ons ranking systeem werkt en de uitdagingen van het bouwen van een systeem om de inhoud voor meer dan 2 miljard mensen te personaliseren en elk van hen inhoud te tonen die relevant en zinvol is voor hen, elke keer dat ze op Facebook komen.
Wat is hier zo moeilijk aan?
Ten eerste is het volume enorm. Meer dan 2 miljard mensen over de hele wereld gebruiken Facebook. Voor elk van deze mensen zijn er meer dan duizend “kandidaat” – berichten (of berichten die mogelijk in de feed van die persoon zouden kunnen verschijnen). We hebben het nu over biljoenen berichten over alle mensen op Facebook.
bedenk nu dat voor elke persoon op Facebook, er duizenden signalen zijn die we moeten evalueren om te bepalen wat die persoon het meest relevant zou kunnen vinden. Dus we hebben biljoenen berichten en duizenden signalen — en we moeten voorspellen wat elk van deze mensen direct in hun feed wil zien. Wanneer u het openen van Facebook, dat proces gebeurt op de achtergrond in slechts de tweede of zo duurt het om uw nieuwsfeed te laden.
en zodra we dit allemaal werkend hebben, veranderen de dingen, en we moeten rekening houden met nieuwe problemen die zich voordoen, zoals clickbait en de verspreiding van desinformatie. Als dit gebeurt, moeten we nieuwe oplossingen vinden. In werkelijkheid is het ranking systeem niet slechts één enkel algoritme; het zijn meerdere lagen van ML-modellen en rankings die we toepassen om de inhoud te voorspellen die het meest relevant en zinvol is voor elke gebruiker. Terwijl we door elke fase gaan, verkleint het rangschikkingssysteem die duizenden kandidaatposten tot de paar honderd die op een gegeven moment in iemands nieuwsfeed verschijnen.
Hoe werkt het?
simpel gezegd, het systeem bepaalt welke berichten worden weergegeven in uw News Feed, en in welke volgorde, door te voorspellen wat u het meest waarschijnlijk geà nteresseerd bent in of bezig bent met. Deze voorspellingen zijn gebaseerd op een verscheidenheid aan factoren, waaronder wat en wie je hebt gevolgd, leuk vond, of bezig met onlangs. Om te begrijpen hoe dit in de praktijk werkt, laten we beginnen met wat er gebeurt voor een persoon die inlogt op Facebook: we noemen hem Juan.
Sinds Juans login gisteren heeft zijn vriend Wei een foto van zijn cocker spaniel gepost. Een andere vriend, Saanvi, postte een video van haar ochtendloop. Zijn favoriete pagina publiceerde een interessant artikel over de beste manier om de Melkweg ‘ s nachts te bekijken, terwijl zijn favoriete kookgroep vier nieuwe zuurdesemrecepten plaatste.
al deze inhoud is waarschijnlijk relevant of interessant voor Juan omdat hij ervoor heeft gekozen om de mensen of pagina ‘ s te volgen die het delen. Om te beslissen welke van deze dingen hoger in Juan ‘ S News Feed moet verschijnen, moeten we voorspellen wat het belangrijkste voor hem en welke inhoud draagt de hoogste waarde voor hem. In wiskundige termen moeten we een objectieve functie definiëren voor Juan en een single-objective optimalisatie uitvoeren.
we kunnen de kenmerken van een bericht gebruiken, zoals Wie is getagd in een foto en wanneer het werd geplaatst, om te voorspellen of Juan het leuk zou vinden. Bijvoorbeeld, als Juan de neiging heeft om te communiceren met Saanvi ‘ s berichten (bijv., delen of becommentariëren) vaak en haar lopende video is zeer recent, is er een grote kans dat Juan haar post leuk zal vinden. Als Juan zich in het verleden met meer video-inhoud heeft beziggehouden dan met foto ‘s, zou de soortgelijke voorspelling voor Wei’ s foto van zijn cocker spaniel vrij laag kunnen zijn. In dit geval zou ons ranking algoritme Saanvi ’s lopende video hoger rangschikken dan Wei’ s hondenfoto omdat het een hogere kans voorspelt dat Juan het leuk zou vinden.
maar leuk vinden is niet de enige manier waarop mensen hun voorkeuren uiten op Facebook. Elke dag delen mensen artikelen die ze interessant vinden, bekijken ze video’ s van mensen of beroemdheden die ze volgen, of laten ze doordachte opmerkingen achter op de berichten van hun vrienden. Wiskundig gezien worden de dingen complexer wanneer we moeten optimaliseren voor meerdere doelstellingen die allemaal bijdragen aan onze primaire doelstelling: het creëren van de meest lange termijn waarde voor mensen door hen inhoud te tonen die zinvol en relevant is voor hen.
meerdere ML-modellen produceren meerdere voorspellingen voor Juan: de kans dat Hij Zich zal bezighouden met Wei ’s foto, Saanvi’ s video, het Melkwegartikel of de zuurdesemrecepten. Elk model probeert deze stukken inhoud te rangschikken voor Juan. Soms zijn ze het oneens — er zou een grotere kans dat Juan zou willen Saanvi ‘ s lopende video dan de Melkweg artikel, maar hij zou meer kans om commentaar op het artikel dan op de video. We hebben dus een manier nodig om deze verschillende voorspellingen te combineren tot één score die geoptimaliseerd is voor onze primaire doelstelling van waarde op lange termijn.
hoe kunnen we meten of iets op lange termijn waarde creëert voor een persoon? We vragen het hen. We onderzoeken mensen bijvoorbeeld om te vragen Hoe zinvol ze een interactie met hun vrienden vonden of of een post hun tijd waard was, zodat ons systeem weerspiegelt wat mensen zeggen dat ze leuk vinden en zinvol vinden. Dan kunnen we rekening houden met elke voorspelling voor Juan op basis van de acties die mensen ons vertellen (via enquãates) zijn meer betekenis en de moeite waard hun tijd.
het Terugpellen van de lagen
om meer dan duizend berichten per gebruiker, per dag te rangschikken voor meer dan 2 miljard mensen — in real time — moeten we het proces efficiënt maken. We beheren dit in verschillende stappen, strategisch ingericht om het snel te maken en de hoeveelheid benodigde computerbronnen te beperken.
Ten eerste verzamelt het systeem alle kandidaten die we mogelijk kunnen rangschikken voor Juan (de foto van de cocker spaniel, de lopende video, enz.). Deze in aanmerking komende inventaris bevat elke post gedeeld met Juan door een vriend, groep, of pagina die hij is verbonden met die is gemaakt sinds zijn laatste login en is niet verwijderd. Maar hoe moeten we omgaan met berichten gemaakt voor Juan ‘ s laatste login die hij nog niet heeft gezien?
om ervoor te zorgen dat ongeziene berichten worden heroverwogen, passen we een ongelezen bumping logica toe: nieuwe berichten die voor Juan waren gerangschikt (maar niet door Hem gezien) in zijn vorige sessies worden toegevoegd aan de lijst die in aanmerking komt voor deze sessie. We passen ook een actie-bumping logica, zodat alle berichten Juan heeft al gezien die sindsdien hebben geleid tot een interessant gesprek tussen zijn vrienden worden toegevoegd aan de in aanmerking komende inventaris ook.
Vervolgens moet het systeem elke post voor een verscheidenheid van factoren, zoals het type post, gelijkenis met andere items, en hoeveel de post overeenkomt met wat Juan de neiging om te interageren met. Om dit te berekenen voor meer dan 1.000 berichten, draaien we voor elk van de miljarden gebruikers — allemaal in real time — deze modellen voor alle kandidaatverhalen parallel op meerdere machines, voorspellers genaamd.
voordat we al deze voorspellingen in een enkele score combineren, moeten we enkele extra regels toepassen. We wachten tot nadat we deze eerste voorspellingen hebben, zodat we de pool van posten kunnen verkleinen om te worden gerangschikt — en we passen ze toe over meerdere passen om rekenkracht te besparen.
Ten eerste worden bepaalde integriteitsprocessen toegepast op elke post. Deze zijn ontworpen om te bepalen welke integriteitsdetectiemaatregelen, indien van toepassing, moeten worden toegepast op de voor rangschikking geselecteerde verhalen. In de volgende pas, een lichtgewicht model verkleint de pool van kandidaten tot ongeveer 500 van de meest relevante posten voor Juan. Door minder verhalen te rangschikken kunnen we krachtigere neurale netwerkmodellen gebruiken voor de volgende passes.
volgende is de belangrijkste score pass, waar de meeste van de personalisatie gebeurt. Hier wordt een score voor elk verhaal onafhankelijk berekend, en dan worden alle 500 berichten op volgorde van score gezet. Voor sommigen kan de score hoger zijn voor likes dan voor commentaar, omdat sommige mensen zich graag meer uiten door te houden dan commentaar te geven. Elke actie die een persoon zelden onderneemt (bijvoorbeeld een soortgelijke voorspelling die heel dicht bij nul ligt) krijgt automatisch een minimale rol in de ranking, omdat de voorspelde waarde erg laag is.
ten slotte voeren we de contextuele pass uit, waarin contextuele functies zoals diversiteitsregels voor inhoudstypen worden toegevoegd om ervoor te zorgen dat Juan ‘ s News Feed een goede mix van inhoudstypen heeft en dat hij niet meerdere videoberichten ziet, de een na de ander. Al deze ranking stappen gebeuren in de tijd die het duurt voor Juan om de Facebook-app te openen, en binnen enkele seconden, hij heeft een gescoorde nieuwsfeed die klaar is voor hem om te bladeren en te genieten.