En ce qui concerne l’algorithme du fil d’actualité, il existe de nombreuses théories et mythes. La plupart des gens comprennent qu’il y a un algorithme au travail, et beaucoup connaissent certains des facteurs qui informent cet algorithme (que vous aimiez un article ou que vous vous y engagiez, etc.). Mais il y a encore beaucoup de choses qui sont mal comprises.
Nous partageons publiquement de nombreux détails et fonctionnalités du fil d’actualités. Mais sous le capot, le système de classement d’apprentissage automatique (ML) qui alimente le flux d’actualités est incroyablement complexe, avec de nombreuses couches. Nous partageons de nouveaux détails sur le fonctionnement de notre système de classement et les défis de la construction d’un système pour personnaliser le contenu pour plus de 2 milliards de personnes et montrer à chacun d’eux un contenu pertinent et significatif pour eux, chaque fois qu’ils viennent sur Facebook.
Qu’y A-T-Il De Si Dur À Ce Sujet ?
D’abord, le volume est énorme. Plus de 2 milliards de personnes dans le monde utilisent Facebook. Pour chacune de ces personnes, il y a plus d’un millier de messages « candidats » (ou de messages qui pourraient potentiellement apparaître dans le flux de cette personne). Nous parlons maintenant de milliards de publications sur toutes les personnes sur Facebook.
Maintenant, considérez que pour chaque personne sur Facebook, il y a des milliers de signaux que nous devons évaluer pour déterminer ce que cette personne pourrait trouver le plus pertinent. Nous avons donc des milliards de messages et des milliers de signaux — et nous devons prédire ce que chacune de ces personnes veut voir dans son flux instantanément. Lorsque vous ouvrez Facebook, ce processus se produit en arrière-plan en seulement la seconde nécessaire pour charger votre fil d’actualités.
Et une fois que tout cela fonctionne, les choses changent, et nous devons prendre en compte les nouveaux problèmes qui se posent, tels que les appâts-clics et la propagation de la désinformation. Lorsque cela se produit, nous devons trouver de nouvelles solutions. En réalité, le système de classement n’est pas un seul algorithme; ce sont plusieurs couches de modèles de ML et de classements que nous appliquons afin de prédire le contenu le plus pertinent et le plus significatif pour chaque utilisateur. Au fur et à mesure de chaque étape, le système de classement réduit ces milliers de postes de candidats aux quelques centaines qui apparaissent dans le fil d’actualité de quelqu’un à un moment donné.
Comment ça marche?
En termes simples, le système détermine quels messages apparaissent dans votre fil d’actualités et dans quel ordre, en prédisant ce qui vous intéresse le plus ou avec quoi vous vous engagez. Ces prédictions sont basées sur une variété de facteurs, y compris ce avec quoi et avec qui vous avez suivi, aimé ou engagé récemment. Pour comprendre comment cela fonctionne dans la pratique, commençons par ce qui se passe pour une personne qui se connecte à Facebook: Nous l’appellerons Juan.
Depuis la connexion de Juan hier, son ami Wei a posté une photo de son cocker spaniel. Une autre amie, Saanvi, a posté une vidéo de sa course du matin. Sa page préférée a publié un article intéressant sur la meilleure façon de voir la Voie Lactée la nuit, tandis que son groupe de cuisine préféré a publié quatre nouvelles recettes de levain.
Tout ce contenu est susceptible d’être pertinent ou intéressant pour Juan car il a choisi de suivre les personnes ou les Pages qui le partagent. Pour décider laquelle de ces choses devrait apparaître plus haut dans le fil d’actualité de Juan, nous devons prédire ce qui compte le plus pour lui et quel contenu a la plus grande valeur pour lui. En termes mathématiques, nous devons définir une fonction objective pour Juan et effectuer une optimisation à objectif unique.
Nous pouvons utiliser les caractéristiques d’un message, telles que qui est marqué sur une photo et quand il a été publié, pour prédire si Juan pourrait l’aimer. Par exemple, si Juan a tendance à interagir avec les messages de Saanvi (par ex., partager ou commenter) souvent et sa vidéo en cours d’exécution est très récente, il y a une forte probabilité que Juan aime son message. Si Juan a utilisé plus de contenu vidéo que de photos dans le passé, la prédiction similaire pour la photo de Wei de son épagneul cocker pourrait être assez faible. Dans ce cas, notre algorithme de classement classerait la vidéo en cours d’exécution de Saanvi plus élevée que la photo du chien de Wei car il prédit une probabilité plus élevée que Juan l’aimerait.
Mais aimer n’est pas la seule façon pour les gens d’exprimer leurs préférences sur Facebook. Chaque jour, les gens partagent des articles qu’ils trouvent intéressants, regardent des vidéos de personnes ou de célébrités qu’ils suivent ou laissent des commentaires réfléchis sur les publications de leurs amis. Mathématiquement, les choses deviennent plus complexes lorsque nous devons optimiser pour de multiples objectifs qui s’ajoutent tous à notre objectif principal: créer la valeur la plus à long terme pour les personnes en leur montrant un contenu significatif et pertinent pour elles.
Plusieurs modèles ML produisent plusieurs prédictions pour Juan: la probabilité qu’il s’engage avec la photo de Wei, la vidéo de Saanvi, l’article de la Voie Lactée ou les recettes de levain. Chaque modèle essaie de classer ces éléments de contenu pour Juan. Parfois, ils ne sont pas d’accord — il peut y avoir une probabilité plus élevée que Juan souhaite la vidéo en cours d’exécution de Saanvi que l’article de la Voie Lactée, mais il pourrait être plus susceptible de commenter l’article que la vidéo. Nous avons donc besoin d’un moyen de combiner ces différentes prédictions en un seul score optimisé pour notre objectif principal de valeur à long terme.
Comment mesurer si quelque chose crée de la valeur à long terme pour une personne? Nous leur demandons. Par exemple, nous sondons les gens pour leur demander dans quelle mesure ils ont trouvé une interaction significative avec leurs amis ou si un message valait leur temps afin que notre système reflète ce que les gens disent apprécier et trouvent significatif. Ensuite, nous pouvons prendre en compte chaque prédiction pour Juan en fonction des actions que les gens nous disent (via des enquêtes) sont plus significatives et valent leur temps.
Éplucher les couches
Pour classer plus d’un millier de messages par utilisateur, par jour, pour plus de 2 milliards de personnes — en temps réel — nous devons rendre le processus efficace. Nous gérons cela en différentes étapes, stratégiquement organisées pour le rendre rapide et limiter la quantité de ressources informatiques nécessaires.
Tout d’abord, le système collecte tous les postes de candidats que nous pouvons éventuellement classer pour Juan (la photo de cocker spaniel, la vidéo de course, etc.). Cet inventaire éligible comprend toute publication partagée avec Juan par un ami, un groupe ou une Page auquel il est connecté qui a été effectuée depuis sa dernière connexion et n’a pas été supprimée. Mais comment devrions-nous gérer les publications créées avant la dernière connexion de Juan qu’il n’a pas encore vues?
Pour nous assurer que les messages invisibles sont reconsidérés, nous appliquons une logique de bourrage non lu: de nouveaux messages classés pour Juan (mais non vus par lui) lors de ses sessions précédentes sont ajoutés à l’inventaire éligible pour cette session. Nous appliquons également une logique de choc d’action afin que tous les messages que Juan a déjà vus et qui ont depuis déclenché une conversation intéressante entre ses amis soient également ajoutés à l’inventaire éligible.
Ensuite, le système doit marquer chaque message pour une variété de facteurs, tels que le type de message, la similitude avec d’autres éléments et la correspondance entre le message et ce avec quoi Juan a tendance à interagir. Pour calculer cela pour plus de 1 000 messages, pour chacun des milliards d’utilisateurs — le tout en temps réel — nous exécutons ces modèles pour toutes les histoires candidates en parallèle sur plusieurs machines, appelées prédicteurs.
Avant de combiner toutes ces prédictions en un seul score, nous devons appliquer des règles supplémentaires. Nous attendons d’avoir ces premières prédictions pour pouvoir réduire le nombre de messages à classer — et nous les appliquons sur plusieurs passes pour économiser de la puissance de calcul.
Tout d’abord, certains processus d’intégrité sont appliqués à chaque publication. Ceux-ci sont conçus pour déterminer quelles mesures de détection de l’intégrité, le cas échéant, doivent être appliquées aux histoires sélectionnées pour le classement. Au prochain passage, un modèle léger réduit le bassin de candidats à environ 500 des postes les plus pertinents pour Juan. Classer moins d’histoires nous permet d’utiliser des modèles de réseaux neuronaux plus puissants pour les prochaines passes.
Vient ensuite la passe de notation principale, où la majeure partie de la personnalisation se produit. Ici, un score pour chaque histoire est calculé indépendamment, puis les 500 messages sont classés par score. Pour certains, le score peut être plus élevé pour les likes que pour les commentaires, car certaines personnes aiment s’exprimer plus par le goût que par le commentaire. Toute action dans laquelle une personne se livre rarement (par exemple, une prédiction similaire très proche de zéro) obtient automatiquement un rôle minimal dans le classement, car la valeur prévue est très faible.
Enfin, nous exécutons le passe contextuel, dans lequel des fonctionnalités contextuelles telles que des règles de diversité de type de contenu sont ajoutées pour s’assurer que le fil d’actualités de Juan a un bon mélange de types de contenu et qu’il ne voit pas plusieurs publications vidéo, l’une après l’autre. Toutes ces étapes de classement se produisent dans le temps qu’il faut à Juan pour ouvrir l’application Facebook, et en quelques secondes, il a un fil d’actualités marqué qui est prêt à être consulté et apprécié.