Quando si tratta di algoritmo News Feed, ci sono molte teorie e miti. La maggior parte delle persone capisce che c’è un algoritmo al lavoro e molti conoscono alcuni dei fattori che informano quell’algoritmo (se ti piace un post o interagisci con esso, ecc.). Ma c’è ancora un bel po ‘ che è frainteso.
Condividiamo pubblicamente molti dei dettagli e delle caratteristiche del News Feed. Ma sotto il cofano, il machine learning (ML) sistema di classificazione che alimenta News Feed è incredibilmente complesso, con molti strati. Stiamo condividendo nuovi dettagli su come funziona il nostro sistema di classificazione e le sfide della costruzione di un sistema per personalizzare i contenuti per più di 2 miliardi di persone e mostrare a ciascuno di essi contenuti rilevanti e significativi per loro, ogni volta che vengono su Facebook.
Cosa c’è di così difficile in questo?
In primo luogo, il volume è enorme. Più di 2 miliardi di persone in tutto il mondo utilizzano Facebook. Per ognuna di queste persone, ci sono più di mille post “candidati” (o post che potrebbero potenzialmente apparire nel feed di quella persona). Ora stiamo parlando di trilioni di post in tutte le persone su Facebook.
Ora considera che per ogni persona su Facebook, ci sono migliaia di segnali che dobbiamo valutare per determinare ciò che quella persona potrebbe trovare più rilevante. Quindi abbiamo trilioni di post e migliaia di segnali — e abbiamo bisogno di prevedere ciò che ciascuna di queste persone vuole vedere nel loro feed istantaneamente. Quando si apre Facebook, tale processo avviene in background in appena il secondo o giù di lì ci vuole per caricare il tuo News Feed.
E una volta che tutto questo funziona, le cose cambiano e dobbiamo considerare i nuovi problemi che sorgono, come clickbait e la diffusione della disinformazione. Quando ciò accade, dobbiamo trovare nuove soluzioni. In realtà, il sistema di classificazione non è solo un singolo algoritmo; è più livelli di modelli ML e classifiche che applichiamo al fine di prevedere il contenuto che è più rilevante e significativo per ogni utente. Mentre ci muoviamo attraverso ogni fase, il sistema di classificazione restringe quelle migliaia di post candidati alle poche centinaia che appaiono nel News Feed di qualcuno in un dato momento.
Come funziona?
In parole povere, il sistema determina quali post vengono visualizzati nel tuo feed di notizie e in quale ordine, prevedendo ciò a cui è più probabile che tu sia interessato o con cui interagisci. Queste previsioni si basano su una varietà di fattori, tra cui cosa e chi hai seguito, apprezzato o coinvolto di recente. Per capire come funziona in pratica, iniziamo con ciò che accade per una persona che accede a Facebook: lo chiameremo Juan.
Dal login di Juan ieri, il suo amico Wei ha pubblicato una foto del suo cocker spaniel. Un altro amico, Saanvi, ha pubblicato un video dalla sua corsa mattutina. La sua pagina preferita ha pubblicato un interessante articolo sul modo migliore per visualizzare la Via Lattea di notte, mentre il suo gruppo di cucina preferito ha pubblicato quattro nuove ricette a lievitazione naturale.
Tutto questo contenuto è probabilmente rilevante o interessante per Juan perché ha scelto di seguire le persone o le Pagine che lo condividono. Per decidere quale di queste cose dovrebbe apparire più alta nel News Feed di Juan, abbiamo bisogno di prevedere ciò che conta di più per lui e quale contenuto porta il valore più alto per lui. In termini matematici, dobbiamo definire una funzione oggettiva per Juan ed eseguire un’ottimizzazione a singolo obiettivo.
Possiamo usare le caratteristiche di un post, come chi è taggato in una foto e quando è stato pubblicato, per prevedere se a Juan potrebbe piacere. Ad esempio, se Juan tende a interagire con i post di Saanvi (ad esempio, condividendo o commentando) spesso e il suo video in esecuzione è molto recente, c’è un’alta probabilità che Juan piacerà il suo post. Se Juan si è impegnato con più contenuti video rispetto alle foto in passato, la previsione simile per la foto di Wei del suo cocker spaniel potrebbe essere piuttosto bassa. In questo caso, il nostro algoritmo di classificazione classificherebbe il video in esecuzione di Saanvi più in alto della foto del cane di Wei perché predice una maggiore probabilità che Juan lo gradisca.
Ma il gradimento non è l’unico modo in cui le persone esprimono le loro preferenze su Facebook. Ogni giorno, le persone condividono articoli che trovano interessanti, guardano video di persone o celebrità che seguono o lasciano commenti riflessivi sui post dei loro amici. Matematicamente, le cose diventano più complesse quando abbiamo bisogno di ottimizzare per più obiettivi che si sommano al nostro obiettivo primario: creare il valore più a lungo termine per le persone mostrando loro contenuti che siano significativi e rilevanti per loro.
Più modelli ML producono più previsioni per Juan: la probabilità che si impegnerà con la foto di Wei, il video di Saanvi, l’articolo della Via Lattea o le ricette di pasta madre. Ogni modello cerca di classificare questi contenuti per Juan. A volte non sono d’accordo — potrebbe esserci una maggiore probabilità che Juan gradisca il video in esecuzione di Saanvi rispetto all’articolo della Via Lattea, ma potrebbe essere più propenso a commentare l’articolo che sul video. Quindi abbiamo bisogno di un modo per combinare queste previsioni variabili in un punteggio ottimizzato per il nostro obiettivo primario di valore a lungo termine.
Come possiamo misurare se qualcosa crea valore a lungo termine per una persona? Chiediamo loro. Ad esempio, esaminiamo le persone per chiedere quanto sia significativa l’interazione con i loro amici o se un post valga la pena il loro tempo in modo che il nostro sistema rifletta ciò che le persone dicono di apprezzare e trovino significativo. Quindi possiamo prendere in considerazione ogni previsione per Juan in base alle azioni che le persone ci dicono (tramite sondaggi) sono più significative e valgono il loro tempo.
Peeling indietro i livelli
Per classificare più di mille messaggi per utente, al giorno, per più di 2 miliardi di persone — in tempo reale — abbiamo bisogno di rendere il processo efficiente. Gestiamo questo in vari passaggi, disposti strategicamente per renderlo veloce e per limitare la quantità di risorse di calcolo necessarie.
Innanzitutto, il sistema raccoglie tutti i post candidati che possiamo classificare per Juan (la foto del cocker spaniel, il video in esecuzione, ecc.). Questo inventario idoneo include qualsiasi post condiviso con Juan da un amico, un gruppo o una pagina a cui è collegato e che è stato creato dopo il suo ultimo accesso e non è stato eliminato. Ma come dovremmo gestire i post creati prima dell’ultimo login di Juan che non ha ancora visto?
Per essere sicuri che i post non visti vengano riconsiderati, applichiamo una logica di bumping non letta: i nuovi post classificati per Juan (ma non visti da lui) nelle sessioni precedenti vengono aggiunti all’inventario idoneo per questa sessione. Applichiamo anche una logica di urto dell’azione in modo che tutti i post che Juan ha già visto che da allora hanno innescato un’interessante conversazione tra i suoi amici vengano aggiunti all’inventario idoneo.
Successivamente, il sistema deve segnare ogni post per una varietà di fattori, come il tipo di post, la somiglianza con altri elementi e quanto il post corrisponde a ciò con cui Juan tende a interagire. Per calcolare questo per più di 1.000 post, per ciascuno dei miliardi di utenti – tutti in tempo reale-eseguiamo questi modelli per tutte le storie candidati in parallelo su più macchine, chiamati predittori.
Prima di combinare tutte queste previsioni in un unico punteggio, dobbiamo applicare alcune regole aggiuntive. Aspettiamo fino a quando non avremo queste prime previsioni in modo da poter restringere il pool di post da classificare — e li applichiamo su più passaggi per risparmiare potenza computazionale.
Innanzitutto, alcuni processi di integrità vengono applicati a ogni post. Questi sono progettati per determinare quali misure di rilevamento dell’integrità, se del caso, devono essere applicate alle storie selezionate per la classifica. Nel passaggio successivo, un modello leggero restringe il pool di candidati a circa 500 dei posti più rilevanti per Juan. Classifica un minor numero di storie ci permette di utilizzare più potenti modelli di rete neurale per i prossimi passaggi.
Il prossimo è il passaggio di punteggio principale, dove avviene la maggior parte della personalizzazione. Qui, un punteggio per ogni storia viene calcolato in modo indipendente, quindi tutti i 500 post vengono messi in ordine per punteggio. Per alcuni, il punteggio potrebbe essere più alto per i Mi piace che per i commenti, poiché ad alcune persone piace esprimersi più attraverso il mi piace che commentando. Qualsiasi azione in cui una persona si impegna raramente (ad esempio, una previsione simile molto vicina allo zero) ottiene automaticamente un ruolo minimo nella classifica, poiché il valore previsto è molto basso.
Infine, eseguiamo il pass contestuale, in cui vengono aggiunte funzionalità contestuali come le regole di diversità del tipo di contenuto per assicurarsi che il News Feed di Juan abbia un buon mix di tipi di contenuto e che non veda più post video, uno dopo l’altro. Tutti questi passaggi di classifica avvengono nel tempo necessario per Juan per aprire l’app Facebook, e in pochi secondi, ha un feed di notizie segnato che è pronto per lui a navigare e godere.