Come funzionano gli algoritmi dei news feed?
Allacciatevi, questo è entrare in tutti i tipi di dettagli ma spero che vi lasci con una panoramica completa perché questi algoritmi sono davvero importanti per internet ma ho trovato molto poco scritto su come funzionano effettivamente.
Lavorerò attraverso Facebook come esempio ma la maggior parte funziona allo stesso modo. Non ho lavorato su newsfeed quindi non sto divulgando nessuna conoscenza interna, ma il funzionamento di questi sistemi è molto condiviso all'interno dell'industria.
Facebook vuole che tu continui a tornare e diventi un'utilità quotidiana nella tua vita. Per tenerti impegnato, hanno bisogno di offrirti contenuti interessanti da leggere. Questo contenuto deve provenire in gran parte da un pool di post, foto, ecc. creati dai tuoi amici e dalle pagine che ti piacciono. Chiamiamole tutte storie per semplificare. Il pool di storie che hai diritto a vedere sono le tue storie candidate. Facebook ha dei principi di selezione dei candidati intorno a ciò che è considerato un candidato, per esempio la storia deve provenire da o essere piaciuta a qualcuno nel tuo grafico amici o segui e per mantenere la freschezza c'è una finestra temporale da cui le storie sono considerate.
Quando qualcuno crea un post, un riferimento a quella storia viene spinto in un indice /candidate stream. Quando un amico accede, Newsfeed itera su tutti gli indici dei suoi amici per estrarre le storie che potrebbero essere interessanti per loro e poi procede a classificarle. Per quelli di voi interessati all'infrastruttura, c'è qualche discussione qui, ma andrò avanti. Inoltre, si noti che le persone con un background di ricerca spesso chiamano tutto ciò che precede il ranking la fase di recupero.
Il ranking è il pane e burro di questi prodotti. Per tenervi impegnati, si ha bisogno di storie coinvolgenti, che sono principalmente determinate da segnali come la vostra probabilità di fare clic, di mettere "mi piace", di commentare o di condividere. Questi segnali sono anche chiamati azioni, e possono essere espliciti (ad esempio, il gradimento) o impliciti (il tempo trascorso su una pagina prima di tornare al feed).
L'idea centrale dei newsfeed è quella di utilizzare il Machine Learning (ML) sul comportamento passato per prevedere le probabilità di azione al fine di determinare le storie più coinvolgenti e metterle in cima.
Con un po' di familiarità con il ML, è possibile inquadrare questo come un problema di ottimizzazione in cui la funzione obiettivo (chiamata anche funzione di perdita, funzione di valore) da massimizzare è quanto accuratamente si stanno prevedendo le azioni, sulla base di caratteristiche come il tasso di clickthrough passato su un autore, caratteristiche linguistiche, tipo di contenuto, ecc. Di solito ci sono da migliaia a decine di migliaia di caratteristiche, ed è qui che avviene il grosso del lavoro di ingegneria e l'intuizione del prodotto è codificata.
Recap, estraiamo le storie in tempo reale dai flussi candidati e le classifichiamo per un certo punteggio di previsione delle azioni basato su molte molte caratteristiche. Spesso, la funzione obiettivo è composta da previsioni di azioni multiple, ad esempio aP(like) +bP(share) - cP(report).
Spero che stiate cominciando a vedere i limiti della previsione delle azioni e l'emergere del clickbait come problema. Ora, si può fare l'argomento ingenuo che massimizzare i clic => massimizzare le impressioni => massimizzare i dollari di pubblicità, e questo è il modo in cui l'industria ha più o meno operato per un po'.
Ma il burnout è reale e la maggior parte dei soldi è nella pubblicità ad alto intento (viaggi, matrimoni, ecc.) e non solo nei clic, quindi le aziende stanno cercando di trovare modi per ottimizzare le metriche a lungo termine rispetto a quelle a breve termine. Il problema con le metriche a lungo termine è che sono troppo nebulose e scarse per eseguire un machine learning efficace, ad esempio un sondaggio di soddisfazione o un rapporto di feedback qualitativo, o peggio, un utente che abbandona il tuo prodotto per sempre.
Così, approssimiamo l'impegno a lungo termine con indicatori principali a breve termine (e spesso solo l'intuizione dalla conoscenza del comportamento umano), e li codifichiamo nel ranking usando incrementi strategici (ad esempio, un moltiplicatore sul punteggio di click previsto per le storie postate dagli amici) o vincoli (ad esempio, mostrare sempre in cima la storia di un evento importante della vita di un amico). Possiamo anche codificare questo nella funzione di valore, per esempio dando un peso extra alle storie valutate bene dai valutatori manuali o viceversa.
Spesso è necessario classificare storie in un feed che sono diversi tipi di contenuto, per esempio video e testo. Per esempio, la funzione obiettivo di un video può essere il tempo trascorso a guardare, ma questo sarà sempre diverso e spesso sarà più del testo, quindi possiamo o calibrare il punteggio del modello normalizzando artificialmente le distribuzioni dei punteggi per ogni tipo di storia, o fare affidamento su una composizione/template fissa, dove per un utente si determina che il modello ottimale per mostrare le storie è per esempio (testo, video, foto, foto), ecc.
E questo è come la salsiccia è fatta. È importante notare che i sistemi moderni non si limitano a classificare in base a cose come il coefficiente o edgerank, ma usano queste cose come caratteristiche. È anche importante notare che questa è solo la punta dell'iceberg e ci sono un sacco di dettagli affascinanti che variano pesantemente da un'azienda all'altra che portano uno di questi sistemi dall'essere adeguato a fare grandi esperienze utente.
Articoli simili
- Quali sono i 10 algoritmi che si devono conoscere per risolvere la maggior parte dei problemi di algoritmi?
- Quali sono le migliori pratiche per costruire qualcosa come un news feed?
- Come funzionano gli algoritmi dei giochi di Scarabeo per computer?
- Come spiegheresti gli algoritmi dei grafi in termini profani?