Le contenu de ce site a été traduit à l'aide de l'intelligence artificielle (IA) ou d'une technologie de traduction automatique, et peut contenir des erreurs.

Skip to content

Au-delà du selfie : comment le système de vérification de l'âge de Roblox permet de maintenir à jour les contrôles d'âge

Un système d'apprentissage automatique comportemental modulaire et multimodal qui privilégie la sécurité

Le système d’estimation de l’âge facial de Roblox a traité 338 millions d’enregistrements de vérification d’âge afin d’aider les utilisateurs de Roblox à débloquer des fonctionnalités de chat adaptées à leur âge et à accéder à des jeux adaptés à leur âge sur la plateforme. La vérification initiale de l’âge est nécessaire, mais la validation de l’âge ne s’arrête pas au selfie. Les comptes peuvent être partagés ou cédés à un frère ou une sœur plus jeune. Des personnes mal intentionnées pourraient tenter de tester nos défenses. Afin de faire évoluer la vérification d’âge au-delà d’un simple signal ponctuel, nous avons mis en place une couche d’apprentissage automatique à haut débit qui évalue si le comportement continu d’un compte correspond toujours à son âge estimé au fil du temps. Notre conception modulaire au niveau des caractéristiques permet des mises à jour efficaces du modèle et une adaptation rapide aux changements de comportements. 

L’exploitation fiable de notre workflow de vérification d’âge de bout en bout relève autant d’un défi lié aux systèmes distribués que d’un défi lié à l’apprentissage automatique. L’estimation de l’âge est en soi un problème complexe en apprentissage automatique, car les limites d’âge ne correspondent pas à des ruptures comportementales nettes. Les parents peuvent apprécier les mêmes expériences que leurs enfants, et le langage varie selon la culture, le contexte et la communauté, ainsi qu’en fonction de l’âge. Aucun signal comportemental isolé ne peut saisir de manière fiable des schémas comportementaux nuancés qui évoluent au fil du temps et sous la pression d’acteurs malveillants. Même nos étiquettes de référence les plus fiables proviennent d’une population sélectionnée et peuvent comporter des biais.

Opérer à l’échelle de Roblox ajoute une complexité supplémentaire. À chaque cycle d’inférence quotidien, nous rassemblons des signaux comportementaux provenant de l’ensemble de la plateforme, exécutons des sous-modèles sur la pile de calcul la mieux adaptée à chaque charge de travail, puis combinons leurs résultats pour obtenir une estimation calibrée unique. Nos modèles vont des classificateurs traditionnels d’apprentissage automatique aux transformateurs multilingues comportant plus de 300 millions de paramètres. Le système traite près de deux milliards d’enregistrements au niveau des comptes chaque jour, tandis que l’entraînement s’appuie sur près de 30 millions d’étiquettes d’âge à haut niveau de confiance.

Le fait de développer l’intégralité du système en interne nous apporte la transparence et le contrôle dont nous avons besoin pour examiner toutes les fonctionnalités et tous les signaux sous l’angle de la confidentialité, ce qui constitue une exigence centrale de conception. Nous pouvons également utiliser des signaux spécifiques à Roblox qui reflètent l’utilisation d’un compte au fil du temps — un contexte longitudinal dont un estimateur externe autonome ne disposerait pas en soi. Cela nous permet également de contrôler l’intégralité du cycle de vie de l’apprentissage automatique. Nous pouvons combiner les modalités à mesure qu’elles deviennent disponibles, et calibrer les résultats pour les workflows de sécurité de Roblox tout en surveillant, en filtrant et en mettant à jour les composants individuels à mesure que les comportements évoluent.

Choisir les bons signaux pour prédire l’âge

Les différentes tranches d’âge utilisent Roblox de manière différente en termes de jeu, de communication et d’interaction avec la plateforme. Pour saisir cette diversité de comportements, nous décomposons nos données en familles de signaux distinctes :

  • Contexte social : modèles agrégés au sein du cercle social d’un utilisateur, notamment les personnes avec lesquelles il entre en contact et la fréquence de leurs interactions.
  • Engagement dans l’expérience : modèles agrégés qui vont au-delà des jeux auxquels les utilisateurs jouent, en capturant quand ils jouent, combien de temps ils restent et comment leur engagement évolue au fil du temps.
  • Activité du compte et de la plateforme : signaux agrégés relatifs à l’utilisation de la plateforme et au cycle de vie, tels que l’ancienneté du compte, la fréquence d’activité et le comportement au niveau des sessions.
  • Modèles de communication : résumés dérivés de modèles sur l’utilisation du langage en fonction de l’âge, y compris la manière dont les modèles de communication varient selon le contexte et le temps.
  • Représentations d’utilisateurs apprises : des représentations de plus haut niveau qui capturent des tendances d’utilisation plus larges. Nous travaillons en étroite collaboration avec notre équipe de machine learning dédiée à la découverte et à la personnalisation ; ces mêmes représentations riches, qui prédisent ce avec quoi un utilisateur est susceptible de s’engager ensuite, peuvent être entraînées a posteriori pour permettre des prédictions sur de larges tranches d’âge.

Chaque famille de signaux dispose d’un modèle adapté à la structure de ses données. Les signaux agrégés, clairsemés et de haute dimension, sont traités par des arbres de décision à renforcement par gradient (par exemple, les classificateurs XGBoost) ; le texte est traité par un encodeur Transformer multilingue finement ajusté (mmBERT) ; et les représentations des utilisateurs alimentent des réseaux neuronaux compacts (perceptron multicouche). 

Chaque sous-modèle prédit la même cible : une distribution de probabilité sur un ensemble de tranches d’âge. Un méta-apprenant à renforcement par gradient combine ensuite ces vecteurs de probabilité pour obtenir l’estimation finale calibrée. 

Nous avons délibérément privilégié cette approche de fusion au niveau des décisions plutôt qu’un modèle monolithique au niveau des caractéristiques, pour des raisons de modularité, de rapidité et d’explicabilité. La modularité du système nous permet d’ajouter, de réentraîner ou de retirer un sous-modèle sans avoir à reconstruire l’ensemble du système. Elle nous permet également de réagir plus rapidement lorsque les schémas de comportement évoluent, que ce soit en raison d’une évolution naturelle ou d’une pression antagoniste. La couche de fusion lit la dernière sortie promue de chaque sous-modèle afin de pouvoir utiliser les meilleurs signaux disponibles et de se dégrader en douceur lorsqu’un signal est absent ou retardé. Comme chaque modalité est traitée comme une entrée distincte, nous pouvons identifier quelles familles de signaux sont à l’origine des changements de décision, et appliquer des contrôles d’étalonnage et de qualité avant que les sorties ne soient utilisées en aval.

Nous imposons l’étalonnage au niveau de la couche de fusion car, dans un système de sécurité, la prévisibilité prime sur la précision pure. Nous étalonnons les modèles afin qu’ils fournissent des scores de confiance fiables. Ainsi, si une action en aval est susceptible d’avoir un impact important sur un utilisateur, nous pouvons exiger des preuves plus solides et un niveau de confiance plus élevé avant de prendre une décision.

Biais de sélection dans les étiquettes

Nos étiquettes les plus fiables proviennent d’utilisateurs ayant effectué une vérification d’âge rigoureuse. Ces étiquettes sont utiles, mais elles ne constituent pas un échantillon aléatoire des utilisateurs de Roblox. Pour un système susceptible d’affecter l’accès des utilisateurs, la représentativité est un élément central de l’objectif d’apprentissage. 

La population étiquetée n’est pas la population cible. Les utilisateurs qui effectuent des vérifications d’âge plus rigoureuses diffèrent systématiquement de la population générale. Un modèle naïf entraîné sur ce groupe risque d’apprendre autant qui choisit d’effectuer le processus que l’âge lui-même. Pour réduire ce biais de sélection, nous rééquilibrons les données d’entraînement et d’évaluation afin que l’échantillon étiqueté reflète mieux la population que nous souhaitons évaluer. 

Nous travaillons de manière transversale avec l’équipe de recherche sur les utilisateurs, en utilisant les résultats agrégés d’enquêtes pour définir les populations cibles utilisées pour la pondération. À partir de là, nous utilisons des techniques telles que la pondération par propension inverse et l’ajustement proportionnel itératif — ou « raking » — pour aligner l’échantillon pondéré sur plusieurs dimensions à la fois, plutôt que de corriger un facteur isolément. 

Toutes les sources hautement fiables ne produisent pas nécessairement un exemple d’entraînement exploitable. La fiabilité d’une étiquette dépend entièrement des événements de vérification qui la sous-tendent. Certains événements peuvent comporter des signaux qui les rendent peu adaptés à l’entraînement du modèle, tels que des schémas de vérification inhabituels ou des problèmes d’intégrité du compte. 

Nous nous efforçons de nettoyer les étiquettes avant l’entraînement à l’aide de filtres tenant compte de l’intégrité ou d’approches d’identification des erreurs d’étiquetage telles que « Confident Learning », afin d’éliminer les exemples qui semblent hors distribution pour la modélisation comportementale. Les premières expériences montrent que ce type de nettoyage aide à éviter le surapprentissage du modèle et apporte des gains de performance constants.

Entraînement, inférence et prévention des biais à l’échelle de Roblox

L'inférence doit être exécutée suffisamment souvent pour que les signaux restent à jour, mais la cadence d'entraînement peut varier selon la famille de signaux. Nous choisissons les calendriers de réentraînement en fonction de la dérive des caractéristiques, de la stabilité du modèle et du coût du modèle. Un signal qui change ou se dégrade rapidement peut faire l'objet d'un réentraînement plus fréquent ; un modèle plus lourd dont les performances évoluent plus lentement peut être réentraîné moins souvent ou à la demande. 

La pile informatique s’adapte à la nature de la charge de travail. Nous utilisons Apache Spark pour les transformations structurées à grande échelle, le framework Ray pour les charges de travail s’appuyant sur des GPU, et des workers de production pour le traitement des signaux en temps réel. 

À l’échelle de Roblox, reconstruire chaque jour l’historique complet de chaque compte ne serait pas non plus envisageable. Notre framework interne de traitement des données conserve des historiques limités et glissants pour les signaux à haut volume et matérialise les transformations coûteuses par étapes. Cela nous permet de traiter et d’agréger chaque jour des millions d’enregistrements au niveau des comptes tout en faisant évoluer indépendamment les expansions, les jointures et les agrégations de caractéristiques à grande échelle. Cette conception de production hybride nous offre une intégration directe avec notre entrepôt de données, une exécution reproductible à travers les composants du modèle et un accès à une puissance de calcul accélérée là où cela est nécessaire.

Afin de garantir la stabilité à notre échelle, nous appliquons deux choix de conception stricts à l’ensemble de nos pipelines de caractéristiques :

  • Stockage des caractéristiques dérivées : nous stockons des caractéristiques dérivées plutôt que des flux d’activité bruts dans la mesure du possible. Nous conservons le signal dont nous avons besoin pour la modélisation, et non l’historique complet qui le sous-tend.
  • Contrats de données unifiés : les mêmes contrats de données alimentent à la fois l’entraînement et l’inférence. Cela réduit l’un des modes de défaillance les plus courants dans les systèmes d’apprentissage automatique : le décalage entre ce qui a été entraîné et ce qui est servi.

Nous utilisons un système de contrôle à deux étapes du cycle de vie en production. Premièrement, la promotion d’un modèle est distincte de son apprentissage. Un modèle candidat doit passer des contrôles de sécurité avant de pouvoir être utilisé pour l’inférence en production. Si un candidat échoue à ces contrôles, le pipeline bloque la promotion et nous continuons à servir la dernière version valide déjà promue. 

Ensuite, le résultat de l’inférence est soumis à un contrôle avant d’être publié en aval. Des contrôles automatisés recherchent les régressions de qualité et les changements importants dans la distribution des prédictions. Si un contrôle échoue, l’étape de publication est bloquée. Dans un système d’apprentissage automatique associé à des workflows de sécurité destinés aux utilisateurs, « ne rien faire aujourd’hui » est souvent un mode de défaillance plus sûr que de diffuser un changement de distribution inexpliqué.

Évaluation du système 

Pour un système comme celui-ci, un simple chiffre de précision n’est pas très significatif. Nous évaluons la qualité du modèle en fonction de la qualité du classement, de l’étalonnage, de la stabilité dans le temps et du comportement à proximité des limites importantes entre les tranches d’âge. Nous considérons également la représentativité des données d’évaluation comme faisant partie intégrante du problème de mesure, car une amélioration globale n’est utile que si elle reflète la population que le système est censé servir.

Le modèle fusionné atteint une précision moyenne supérieure à 0,9 sur ces données d’évaluation pondérées et mises de côté. Ses estimations à haut niveau de confiance sont également cohérentes d’un jour à l’autre. Plus de 99 % des cas restent dans la même tranche d’âge générale au cours de jours consécutifs. 

Nous comparons également le modèle à des données de référence indépendantes produites par des évaluateurs humains formés dans le cadre de nos processus « Trust and Safety ». À un niveau de confiance élevé, l’estimation de la tranche d’âge fournie par le modèle concorde avec l’étiquette consensuelle attribuée par les humains pour les adultes dans plus de 80 % des cas. 

L’évaluation hors ligne ne constitue qu’une étape parmi d’autres. En production, le comportement des utilisateurs évolue en fonction de la saisonnalité, des lancements de produits et des pressions adverses. C’est pourquoi nous associons les indicateurs d’évaluation du modèle à une surveillance continue des distributions de prédiction, de la dérive et de la stabilité avant que les résultats ne soient utilisés en aval. Nous surveillons également les résultats des contrôles d’âge de suivi, afin que les retours d’expérience en production puissent éclairer la fiabilité du modèle et indiquer où les seuils ou les parcours de vérification doivent être ajustés.

Prochaines étapes

Le fait de disposer de ce système en interne nous permet d’exploiter en toute sécurité les signaux spécifiques à Roblox, de fonctionner avec une rigueur extrême et d’itérer en continu.

À l’avenir, nous nous concentrerons sur l’optimisation de nos sous-modèles, de l’inférence et des mesures. Nous poussons chaque couche plus loin tout en restant fidèles à nos principes opérationnels de modularité, d’étalonnage, de confidentialité et de garde-fous de production.