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

Déploiement du ML pour la sécurité vocale

Notre mission est de connecter un milliard de personnes dans un esprit d’optimisme et de civilité, ce qui nous oblige à aider les gens à se sentir véritablement proches les uns des autres. Dans les mondes immersifs en 3D, tout comme dans le monde physique, peu de choses sont plus authentiques ou plus puissantes que la voix humaine pour forger des amitiés et des liens durables. Mais comment pouvons-nous étendre l’immersion et la richesse de la communication vocale sur Roblox tout en préservant la sécurité et la civilité de notre communauté ?

Dans cet article, nous vous expliquons comment nous avons mis en place « Real-time Safety », un modèle d'apprentissage automatique (ML) de bout en bout — traitant des millions de minutes d'activité vocale par jour — qui détecte les violations de nos règles dans les communications vocales avec plus de précision que la modération humaine. Les résultats de ce système sont transmis à un autre modèle, qui détermine les sanctions appropriées. Le modèle de sanctions déclenche des notifications pour les personnes ayant enfreint nos règles, d'abord sous forme d'avertissements, puis par des mesures plus sévères si le comportement persiste.

Ce système de sécurité en temps réel de bout en bout représentait un objectif audacieux, car nous sommes parmi les premiers du secteur à proposer aux utilisateurs des fonctionnalités de sécurité vocale multilingues et quasi en temps réel. La classification vocale dépend à la fois du style audio, notamment du volume et du ton, et du contenu, notamment des mots prononcés. Nous sommes ravis de vous expliquer comment nous avons développé ce système à partir de pratiquement aucune automatisation préalable — c'est-à-dire zéro donnée étiquetée et aucun modèle — pour passer de zéro à 60 en matière de sécurité vocale en temps réel.

Enfin, nous sommes ravis de partager notre premier modèle open source, qui fait partie de nos modèles de sécurité vocale. En rendant ce modèle open source et en le rendant disponible à des fins commerciales, nous espérons fournir une référence sectorielle pour la détection des violations de politique, susceptible d’accélérer le développement de nouveaux modèles d’apprentissage automatique pour la sécurité vocale. Ce modèle open source est notre première version, et nous y avons depuis apporté des améliorations significatives que nous testons actuellement.

Surmonter la rareté des données

Nous avons commencé nos efforts en matière d'apprentissage automatique comme le font de nombreuses entreprises : en évaluant la qualité des données disponibles pour l'entraînement et l'évaluation de nos modèles. L'association idéale de données inclurait des enregistrement vocaux accompagnés d'une catégorisation de sécurité étiquetée de haute qualité pour chaque enregistrement. Cependant, lorsque nous avons commencé, nous ne disposions pratiquement d'aucune donnée du monde réel étiquetée par des humains à grande échelle. Pour entraîner un modèle de détection de la sécurité vocale de haute qualité à l'aide d'une approche supervisée, nous avions besoin de milliers d'heures d'enregistrements audio étiquetés pour chaque langue prise en charge, ce qui aurait pris des années à collecter et aurait nécessité des ressources et un temps considérables.

Au lieu de nous appuyer sur des milliers d'heures de données étiquetées manuellement, nous avons développé plusieurs méthodes plus efficaces :

  • Des données étiquetées par des machines pour l'entraînement. Au lieu de nous enliser dans la recherche de données étiquetées manuellement parfaites pour l'entraînement, nous avons opté pour un volume important de données d'entraînement issues de l'étiquetage automatique d'enoncés vocaux. L'utilisation de grandes quantités de données étiquetées par des machines avec une supervision légère a permis de générer des modèles d'entraînement robustes face à un certain niveau de bruit dans les étiquettes. Les clés du succès de cette approche ont été l’accès à d’excellentes bibliothèques open source de reconnaissance vocale et des années d’expérience dans l’utilisation du ML pour détecter les violations des Règles de la communauté dans les communications textuelles des utilisateurs. Cette approche d’étiquetage automatique nous a permis d’étiqueter le volume de données d’entraînement dont nous avions besoin pour nos modèles en quelques semaines au lieu de plusieurs années.
  • Des données étiquetées par des humains pour l'évaluation. Bien que des données étiquetées par des machines, de haute qualité mais imparfaites, aient suffi pour entraîner un modèle très performant, nous ne faisions pas confiance aux étiquettes générées par les machines pour effectuer la validation finale du modèle obtenu. La question suivante était donc de savoir où nous pourrions obtenir suffisamment de données étiquetées par des humains pour l'évaluation. Heureusement, s’il était impossible de collecter suffisamment de données étiquetées par des humains pour l’entraînement dans les délais impartis, il était possible d’en rassembler suffisamment pour l’évaluation de notre modèle en faisant appel à nos modérateurs internes, qui classaient déjà les signalements d’abus provenant des utilisateurs de Roblox afin d’appliquer manuellement des sanctions. Cela nous a permis de profiter du meilleur des deux mondes : des données d'entraînement étiquetées par des machines, suffisamment bonnes et abondantes pour produire un modèle hautement performant, et des données d'évaluation étiquetées par des humains, dont le volume était bien plus restreint mais largement suffisant pour nous donner l'assurance que le modèle fonctionnait réellement.

Un autre domaine où nous avons été confrontés à une pénurie de données concernait les catégories de violations de la politique où la prévalence est très faible, telles que les références aux drogues et à l’alcool ou à l’automutilation. Pour remédier à ce problème, nous avons regroupé plusieurs catégories à faible prévalence dans une catégorie « Autres ». En conséquence, notre modèle final a pu identifier les catégories suivantes : grossièretés, harcèlement, discrimination, rencontres amoureuses et « Autres ». Afin de mieux comprendre ces catégories « autres », et ainsi mieux protéger notre communauté et garantir des échanges sûrs et courtois sur Roblox, nous continuerons à les surveiller pour recueillir davantage d’exemples. Au fil du temps, les sous-catégories de « autres » deviendront également des catégories nommées, à mesure que le nombre d’exemples d’entraînement dans ces sous-catégories atteindra une masse critique.

Pipeline d'étiquetage automatique pour les données d'entraînement

Nous avons conçu un pipeline d'étiquetage automatique pour extraire des étiquettes de haute qualité à partir de séquences de chat vocal. Notre pipeline comprend trois étapes :

  1. Découpage en segments audio. La première étape du pipeline consiste à découper l'audio en segments, ou en morceaux plus courts, chaque fois que nous détectons des périodes de silence entre les phrases. Cela nous permet d'identifier et d'étiqueter plus efficacement les contenus enfreignant les règles.
  2. Transcription audio. La deuxième étape du pipeline consiste à transcrire ces segments audio en texte à l'aide d'un modèle de reconnaissance vocale automatique (ASR). Nous utilisons des modèles ASR open source accessibles au public.
  3. Classification du texte. La dernière étape du pipeline consiste à classer le texte transcrit à l'aide de notre filtre de texte interne. Ce filtre est conçu pour détecter et bloquer les contenus inappropriés dans les communications textuelles. Nous avons adapté le filtre pour qu'il fonctionne avec les données audio transcrites, ce qui nous permet d'étiqueter les segments audio avec des classes de violation de politique et des mots-clés. Le filtre de texte est un modèle d'ensemble entraîné sur des données textuelles en violation de politique étiquetées par des humains, comprenant un modèle DistilBERT étendu et des règles d'expressions régulières.

Il est important de noter que ce pipeline a été utilisé uniquement pour générer des données d'entraînement pour notre modèle de production final. Vous vous demandez peut-être pourquoi entraîner un modèle alors qu'il existe déjà un pipeline qui génère les étiquettes que nous recherchons ? La réponse est l'efficacité : nous devons être extrêmement précis, en beaucoup moins de temps. À l'échelle de Roblox, faire appel à l'ASR pour transcrire toutes les communications vocales serait d'une lenteur prohibitive et nécessiterait des ressources considérables. Cependant, un modèle ML compact entraîné à partir de ces données, spécialement conçu pour détecter les violations de la politique dans les communications vocales sans effectuer de transcription complète, est tout aussi précis, mais nettement plus rapide et peut être utilisé à l'échelle de Roblox.

Mise à l'échelle du pipeline d'étiquetage automatique

Dans la plupart des grandes initiatives d'IA, le mécanisme permettant d'obtenir des données d'entraînement de qualité est lui-même un système d'apprentissage automatique de production, qui doit être créé de toutes pièces. Pour ce projet, nous devions développer notre pipeline d’étiquetage automatique en tant que système de production de premier ordre, disponible 24 h/24 et 7 j/7, et capable de s’adapter à des milliers de processeurs (CPU) simultanés ou à un nombre équivalent de cartes graphiques (GPU). Nous avons mis en place un cluster de données d’entraînement doté de milliers de cœurs de processeurs qui traitent automatiquement et en parallèle les flux audio entrants afin de générer des étiquettes automatiques. Ce système devait fonctionner sans faille pour un débit maximal, et toute erreur ou interruption de service pouvait entraîner des jours, voire des semaines, de retard dans la génération des données d’entraînement.

Vous trouverez ci-dessous un aperçu général de l'architecture qui a permis d'atteindre l'échelle nécessaire pour étiqueter automatiquement des dizaines de milliers d'heures d'audio en quelques semaines seulement. Le principal enseignement à retenir ici est que l'investissement dans des files d'attente à des points clés de notre traitement nous a permis d'éliminer les goulots d'étranglement en étendant horizontalement les threads de travail sur de nombreuses machines. Ces threads de travail ont effectué les étapes de découpage des segments audio, de transcription audio et de classification de texte mentionnées dans la section précédente.

Architecture ML

Une exigence centrale pour notre recherche de modèles était la faible latence, c'est-à-dire des vitesses proches du temps réel pour l'inférence des modèles, ce qui nous a conduits à des architectures qui opèrent directement sur l'audio brut et renvoient un score. Nous utilisons des architectures basées sur Transformer, qui fonctionnent très bien pour la synthèse de séquences et connaissent un grand succès dans l'industrie pour le traitement du langage naturel (NLP) et la modélisation audio. Notre défi consistait à trouver le juste équilibre entre complexité et inférence à faible latence, c'est-à-dire à gérer plusieurs langues et accents, à garantir une robustesse face au bruit de fond et à assurer une bonne qualité audio, tout en respectant les contraintes de latence de notre produit.

Sélection du modèle

Une question de conception immédiate consistait à déterminer la taille de la fenêtre de contexte nécessaire pour entraîner les modèles Transformer. Nous avons examiné l’histogramme de la longueur des énoncés dans les données de chat vocal sur plusieurs jours d’utilisation et avons déterminé qu’une fenêtre de 15 secondes offrait le bon compromis entre la latence et le contexte suffisant nécessaire à la classification. Nous utilisons la catégorie « aucune violation » pour détecter l'absence de violations de la politique. Étant donné qu'un seul clip audio peut comporter plusieurs types de violations, la tâche devient intrinsèquement une classification multi-étiquettes plutôt qu'un problème de classification multiclasses classique. Nous avons affiné l'ensemble du réseau, y compris les couches de tête pour cette tâche, à l'aide de la perte d'entropie croisée binaire (BCE). 

Légende : Histogramme des énoncés vocaux issus des données de chat, montrant que 75 % des énoncés durent moins de 15 secondes.

Nous avons évalué plusieurs modèles d'encodeurs open source populaires issus de la communauté de recherche audio et avons réduit notre choix à WavLM et Whisper. Notre première expérience a consisté à affiner le modèle WavLM base+ pré-entraîné à l'aide de 2 300 heures de données vocales étiquetées automatiquement par Roblox, puis à évaluer les résultats de classification sur deux ensembles de données d'évaluation réels. Nous avons obtenu des résultats de classification très encourageants (voir Évaluation du modèle, ci-dessous), mais avons constaté que la latence était supérieure à nos seuils pour un déploiement en production. Dans la foulée, nous avons implémenté une version personnalisée de l'architecture WavLM avec moins de couches Transformer et formé un modèle de bout en bout à partir de zéro sur 7 000 heures de données vocales étiquetées automatiquement par Roblox. Ce modèle produit des classifications robustes dans des contextes conversationnels et s'est avéré plus compact que le modèle finement ajusté. Notre modèle final candidat a utilisé une configuration de distillation élève-enseignant, avec un encodeur Whisper comme réseau enseignant et l'architecture de bout en bout WavLM comme réseau élève. Lorsque nous l'avons entraîné sur 4 000 heures d'audio, nous avons observé des précisions de classification similaires à celles du modèle finement ajusté, mais avec une amélioration substantielle de la latence et une taille de modèle réduite. L'image ci-dessous résume les paramètres des modèles pour les trois expériences décrites ci-dessus. Nous continuons à itérer les stratégies d'échantillonnage des données, les stratégies d'évaluation et les hyperparamètres des modèles à mesure que nous étendons les modèles à la classification multilingue de la sécurité vocale.

Taille de l'ensemble de données

Taille du modèle

Latence d'inférence / seconde d'entrée

Facteur temps réel 

WavLM optimisé

2 300 h

96 millions de paramètres

102 ms

9,80

Formé de bout en bout

7 071 h

52 millions de paramètres

83 ms

12,08

Distillé

4080 h 

48 millions de paramètres

50 ms

19,95

Optimisation du modèle 

Nous avons utilisé des méthodes standard de l'industrie, notamment la quantification de certaines couches du Transformer, pour obtenir un gain de vitesse de plus de 25 % sans compromettre la qualité. Le passage de l'étape d'extraction de caractéristiques à des entrées MFCC combinées à des réseaux neuronaux convolutifs (CNN) au lieu de CNN seuls a également permis d'obtenir des gains de vitesse de plus de 40 % lors de l'inférence. De plus, l'introduction d'un modèle de détection d'activité vocale (VAD) comme étape de prétraitement a considérablement accru la robustesse de l'ensemble du pipeline, en particulier pour les utilisateurs disposant de microphones bruyants. Le VAD nous a permis de filtrer le bruit et d'appliquer notre pipeline de sécurité uniquement lorsque nous détectons de la parole humaine dans l'audio, ce qui a réduit le volume global d'inférence d'environ 10 % et a fourni des entrées de meilleure qualité à notre système. 

Évaluation du modèle

Bien que nous ayons utilisé de nombreux ensembles de données et indicateurs différents pour l'évaluation, nous pouvons partager les performances de notre classificateur vocal sur un ensemble de données en anglais présentant une forte prévalence de violations des règles (comme celles que l'on trouve dans les signalements d'abus vocaux des utilisateurs). Cet ensemble de données a été étiqueté à 100 % par nos modérateurs. Lorsque nous avons regroupé tous les types de violations (langage grossier, harcèlement, sollicitation de rendez-vous, etc.) en une seule catégorie binaire, nous avons observé un score PR-AUC (aire sous la courbe précision-rappel) supérieur à 0,95, comme indiqué ci-dessous. Cela signifie que, sur cet ensemble de données d'évaluation, le classificateur est généralement capable de détecter la grande majorité des violations sans signaler à tort un trop grand nombre de cas non litigieux.

Les excellents résultats d'évaluation ci-dessus ne s'appliquent toutefois pas nécessairement à tous les cas d'utilisation. Par exemple, dans le cas de nos notifications concernant les propos enfreignant les règles, le classificateur évalue l'ensemble des discussions vocales sur Roblox et constate une prévalence plus faible des infractions, ce qui augmente le risque de faux positifs. Dans le cas des signalements d'abus vocaux, le classificateur n'évalue que les propos signalés comme potentiellement contraires aux règles, ce qui explique une prévalence plus élevée. Néanmoins, les résultats ci-dessus étaient suffisamment encourageants pour que nous lancions des expériences avec le classificateur en production (avec des seuils prudents) afin d'avertir les utilisateurs de leurs propos enfreignant les règles. Les résultats de ces expériences ont largement dépassé nos attentes.

Et maintenant ?

En tirant parti de notre propre infrastructure CPU et en concevant soigneusement le pipeline pour une utilisation à grande échelle, nous avons pu déployer avec succès ce modèle à l'échelle de Roblox. Pendant les heures de pointe, le modèle traite avec succès plus de 2 000 requêtes par seconde (dont la majorité ne contient aucune violation). Nous avons également observé une réduction significative des comportements contraires à la politique sur la plateforme grâce à l’utilisation du modèle pour signaler aux utilisateurs les propos contraires à la politique. En particulier, depuis notre déploiement initial, nous constatons une réduction de 15,3 % des signalements d’abus verbaux graves et une diminution de 11,4 % des violations par minute de conversation.

Nous enrichissons nos modèles avec des données d'entraînement multilingues, ce qui nous permet de déployer un modèle de classification unique sur l'ensemble de la plateforme pour traiter plusieurs langues ainsi que le mélange de langues. Nous explorons également de nouvelles architectures multitâches pour identifier certains mots-clés en plus de l'objectif de classification, sans recourir à une reconnaissance vocale automatique (ASR) complète. La détection de ces mots-clés, en plus des étiquettes de violation, améliore la qualité de la classification et offre la possibilité de fournir un contexte aux utilisateurs lors de l'application de sanctions.

Les recherches décrites ici sont le fruit d'un effort conjoint de nombreuses équipes chez Roblox. Cela a été une belle illustration de notre valeur fondamentale, le respect de la communauté, et une excellente collaboration entre plusieurs disciplines.