I contenuti di questo sito sono stati tradotti mediante intelligenza artificiale (IA) o tecnologia di traduzione automatica e potrebbero contenere errori.

Skip to content

Implementazione del ML per la sicurezza vocale

La nostra missione è quella di mettere in contatto un miliardo di persone con ottimismo e civiltà, il che richiederà da parte nostra aiutare le persone a sentirsi veramente unite le une alle altre. Per i mondi immersivi in 3D, proprio come nel mondo fisico, poche cose sono più autentiche o potenti della voce umana nel creare amicizie e legami duraturi. Ma come possiamo ampliare l'immersività e la ricchezza della comunicazione vocale su Roblox mantenendo la nostra comunità sicura e civile?

In questo blog, condivideremo come abbiamo dato vita a Real-time Safety, un modello di machine learning (ML) end-to-end — che opera su una scala di milioni di minuti di attività vocale al giorno — che rileva le violazioni delle politiche nella comunicazione vocale in modo più accurato rispetto alla moderazione umana. I risultati di questo sistema vengono inseriti in un altro modello, che determina le conseguenze appropriate. Il modello delle conseguenze attiva notifiche per le persone che hanno violato le nostre politiche, inizialmente con avvertimenti e poi con azioni più drastiche se il comportamento persiste.

Questo sistema end-to-end di Real-time Safety rappresentava un obiettivo audace, poiché siamo tra i primi nel settore a fornire agli utenti funzionalità di sicurezza vocale multilingue e quasi in tempo reale. La classificazione vocale dipende sia dallo stile audio, inclusi volume e tono, sia dal contenuto, comprese le parole pronunciate. Siamo entusiasti di condividere come abbiamo sviluppato questo sistema partendo praticamente da zero in termini di automazione – con dati etichettati praticamente inesistenti e nessun modello – passando da zero a 60 per la sicurezza vocale in tempo reale.

Infine, siamo entusiasti di condividere il nostro primo modello open source, che è uno dei nostri modelli di sicurezza vocale. Rendendo questo modello open source e rendendolo disponibile per uso commerciale, speriamo di fornire un punto di riferimento per il settore per il rilevamento delle violazioni delle politiche, in grado di accelerare lo sviluppo di nuovi modelli di ML per la sicurezza vocale. Questo modello open source è la nostra prima versione e da allora abbiamo apportato miglioramenti significativi che stiamo attualmente testando.

Superare la scarsità di dati

Abbiamo iniziato il nostro lavoro di ML come fanno molte aziende: valutando la qualità dei dati disponibili per l'addestramento e la valutazione dei nostri modelli. L'abbinamento ideale di set di dati includerebbe l'espressione vocale insieme a una categorizzazione di sicurezza etichettata di alta qualità per quell'espressione. Tuttavia, quando abbiamo iniziato, non avevamo quasi nessun dato del mondo reale etichettato da esseri umani su larga scala. Per addestrare un modello di rilevamento della sicurezza vocale di alta qualità utilizzando un approccio supervisionato, avevamo bisogno di migliaia di ore di audio di dati etichettati per ogni lingua supportata, il che avrebbe richiesto anni per essere raccolto e sarebbe stato proibitivo in termini di risorse e tempo.

Invece di fare affidamento su migliaia di ore di dati etichettati manualmente, abbiamo sviluppato diversi metodi più efficienti:

  • Dati etichettati automaticamente per l'addestramento. Invece di impantanarci nella ricerca di dati perfetti etichettati manualmente per l'addestramento, abbiamo optato per un grande volume di dati di addestramento provenienti dall'etichettatura automatica delle espressioni vocali. L'utilizzo di grandi quantità di dati etichettati automaticamente con una supervisione leggera ha generato modelli di addestramento robusti rispetto a un certo livello di rumore nelle etichette. Le chiavi per far funzionare questo approccio sono state l'accesso a ottime librerie open-source di sintesi vocale e anni di esperienza nell'uso del ML per rilevare violazioni delle Norme della community nelle comunicazioni testuali delle persone. Questo approccio di etichettatura automatica ci ha permesso di etichettare il volume di dati di addestramento di cui avevamo bisogno per i nostri modelli in settimane anziché in anni.
  • Dati etichettati manualmente per la valutazione. Sebbene i dati etichettati automaticamente, di alta qualità ma imperfetti, fossero sufficienti per addestrare un modello altamente performante, non ci fidavamo delle etichette automatiche per eseguire la validazione finale del modello risultante. La domanda successiva, quindi, era dove potessimo ottenere dati etichettati manualmente sufficienti per la valutazione. Fortunatamente, mentre era impossibile raccogliere in tempo utile dati etichettati manualmente sufficienti per l'addestramento, era possibile raccoglierne abbastanza per la valutazione del nostro modello utilizzando i nostri moderatori interni, che stavano già classificando le segnalazioni di abuso da parte degli utenti su Roblox per applicare manualmente le conseguenze. Questo ci ha permesso di godere del meglio di entrambi i mondi: dati di addestramento etichettati dalla macchina che erano buoni e sufficienti per produrre un modello altamente performante, e dati di valutazione etichettati dall'uomo che erano molto più piccoli in volume ma più che sufficienti per darci la certezza che il modello funzionasse davvero.

Un'altra area in cui abbiamo dovuto affrontare la scarsità di dati è stata quella delle categorie di violazione delle politiche in cui abbiamo una prevalenza molto bassa, come i riferimenti a droghe e alcol o all'autolesionismo. Per affrontare questo problema, abbiamo combinato diverse categorie a bassa prevalenza in una categoria "altro". Di conseguenza, il nostro modello finale è stato in grado di identificare le categorie di volgarità, bullismo, discriminazione, appuntamenti e "altro". Al fine di comprendere queste categorie "altro", in modo da poter proteggere meglio la nostra comunità e garantire un dibattito sicuro e civile su Roblox, continueremo a monitorarle alla ricerca di ulteriori esempi. Nel corso del tempo, anche le sottocategorie di "altro" diventeranno categorie con un nome proprio, man mano che il numero di esempi di addestramento in tali sottocategorie raggiungerà una massa critica.

Pipeline di etichettatura automatica per i dati di addestramento

Abbiamo progettato una pipeline di etichettatura automatica per estrarre etichette di alta qualità dalle sequenze di chat vocale. La nostra pipeline si compone di tre fasi:

  1. Suddivisione in blocchi audio. La prima fase della pipeline prevede la suddivisione dell'audio in blocchi, o segmenti più brevi, ovunque rileviamo periodi di silenzio tra le frasi. Ciò ci consente di identificare ed etichettare i contenuti che violano le norme in modo più efficiente.
  2. Trascrizione audio. La seconda fase della pipeline consiste nel trascrivere questi blocchi audio in testo utilizzando un modello di riconoscimento vocale automatico (ASR). Utilizziamo modelli ASR open source disponibili pubblicamente.
  3. Classificazione del testo. La fase finale della pipeline prevede la classificazione del testo trascritto utilizzando il nostro filtro di testo interno. Questo filtro è progettato per rilevare e bloccare contenuti inappropriati nelle comunicazioni testuali. Abbiamo adattato il filtro per funzionare con i dati audio trascritti, consentendoci di etichettare i segmenti audio con classi di violazione delle politiche e parole chiave. Il filtro di testo è un modello ensemble addestrato su dati di testo che violano le politiche etichettati dall'uomo, comprendente un modello DistilBERT esteso e regole di espressioni regolari.

È importante notare che questa pipeline è stata utilizzata solo per generare dati di addestramento per il nostro modello di produzione finale. Ci si potrebbe chiedere, tuttavia, perché addestrare un modello se esiste già una pipeline che genera le etichette che stiamo cercando? La risposta è l'efficienza: dobbiamo essere incredibilmente precisi, in molto meno tempo. Su scala Roblox, ricorrere all'ASR per trascrivere tutte le comunicazioni vocali sarebbe proibitivamente lento e richiederebbe un consumo eccessivo di risorse. Tuttavia, un modello ML compatto addestrato su questi dati, progettato specificamente per rilevare le violazioni delle politiche nelle comunicazioni vocali senza effettuare una trascrizione completa, è altrettanto accurato, ma significativamente più veloce e può essere utilizzato su scala Roblox.

Scalare la pipeline di etichettatura automatica

Nella maggior parte delle grandi iniziative di IA, il meccanismo per ottenere dati di addestramento di qualità è esso stesso un sistema ML di produzione, che deve essere creato da zero. Per questo progetto, abbiamo dovuto sviluppare la nostra pipeline di etichettatura automatica come un sistema di produzione di prima classe con un tempo di attività 24 ore su 24, 7 giorni su 7, e la capacità di scalare a migliaia di CPU simultanee o un numero equivalente di GPU. Abbiamo implementato un cluster di dati di addestramento con migliaia di core di CPU che elaborano automaticamente i flussi audio in entrata in parallelo per generare etichette automatiche. Questo sistema doveva funzionare in modo impeccabile per ottenere la massima produttività, e qualsiasi errore o tempo di inattività avrebbe potuto comportare giorni o settimane di tempo perso nella generazione dei dati di addestramento.

Di seguito è riportata una panoramica di alto livello dell'architettura che ha supportato la scalabilità di cui avevamo bisogno per etichettare automaticamente decine di migliaia di ore di audio nel giro di poche settimane. Il punto chiave da sottolineare è che investire in code in punti chiave della nostra elaborazione ci ha permesso di eliminare i colli di bottiglia scalando orizzontalmente i thread di lavoro su molte macchine. Questi thread di lavoro hanno eseguito le fasi di suddivisione dei blocchi audio, trascrizione audio e classificazione del testo menzionate nella sezione precedente.

Architettura ML

Un requisito fondamentale per la nostra ricerca di modelli era la bassa latenza, ovvero velocità quasi in tempo reale per l'inferenza del modello, il che ci ha portato a architetture che operano direttamente sull'audio grezzo e restituiscono un punteggio. Utilizziamo architetture basate su Transformer, che funzionano molto bene per la sintesi di sequenze e hanno riscosso grande successo nel settore dell'elaborazione del linguaggio naturale (NLP) e della modellazione audio. La nostra sfida era trovare un punto di equilibrio tra complessità e inferenza a bassa latenza, ovvero gestire più lingue e accenti, garantire la robustezza rispetto al rumore di fondo e la qualità audio, soddisfacendo al contempo i vincoli di latenza del nostro prodotto.

Selezione del modello

Una questione di progettazione immediata era determinare la dimensione della finestra di contesto necessaria per addestrare i modelli Transformer. Abbiamo esaminato l'istogramma della lunghezza delle espressioni verbali nei dati delle chat vocali raccolti in diversi giorni di utilizzo e abbiamo stabilito che una finestra di 15 secondi offriva il giusto compromesso tra latenza e contesto sufficiente necessario per la classificazione. Utilizziamo "no-violation" come categoria per rilevare l'assenza di violazioni delle politiche. Dato che un singolo clip audio può incarnare più tipi di violazioni, il compito diventa intrinsecamente multilabel piuttosto che un problema di classificazione multiclasse convenzionale. Abbiamo ottimizzato l'intera rete, inclusi i livelli di testa per questo compito, con la perdita di entropia incrociata binaria (BCE). 

Didascalia: Istogramma delle espressioni vocali dai dati delle chat, che mostra che il 75% delle espressioni dura meno di 15 secondi.

Abbiamo valutato diversi modelli di codificatori open source popolari nella comunità di ricerca audio e abbiamo ristretto la nostra scelta a WavLM e Whisper. Il nostro primo esperimento è stato quello di mettere a punto il WavLM base+ preaddestrato con 2.300 ore di dati vocali etichettati automaticamente da Roblox e valutare i risultati della classificazione su due set di dati di valutazione reali. Abbiamo ottenuto risultati di classificazione molto incoraggianti (vedi Valutazione del modello, di seguito), ma abbiamo riscontrato che la latenza era superiore alle nostre soglie per l'implementazione in produzione. Come seguito, abbiamo implementato una versione personalizzata dell'architettura WavLM con un numero inferiore di livelli Transformer e addestrato un modello end-to-end da zero su 7.000 ore di dati vocali etichettati automaticamente da Roblox. Questo modello produce classificazioni robuste in contesti conversazionali ed era più compatto rispetto al modello ottimizzato. Il nostro modello candidato finale utilizzava una configurazione di distillazione studente-insegnante, con un codificatore Whisper come rete insegnante e l'architettura end-to-end WavLM come rete studente. Quando l'abbiamo addestrato su 4.000 ore di audio, abbiamo riscontrato precisioni di classificazione simili a quelle del modello ottimizzato, ma con un miglioramento sostanziale della latenza e una riduzione delle dimensioni del modello. L'immagine sottostante riassume i parametri del modello per i tre esperimenti descritti sopra. Continuiamo a iterare le strategie di campionamento dei dati, le strategie di valutazione e gli iperparametri del modello mentre estendiamo i modelli per la classificazione multilingue della sicurezza vocale.

Dimensione del set di dati

Dimensione del modello

Latenza di inferenza/secondo di input

Fattore in tempo reale 

WavLM ottimizzato

2300h

96 milioni di parametri

102 ms

9,80

Addestrato end-to-end

7071 ore

52 milioni di parametri

83 ms

12,08

Distillato

4080h 

48 milioni di parametri

50 ms

19,95

Ottimizzazione del modello 

Abbiamo utilizzato metodi standard del settore, tra cui la quantizzazione di livelli selezionati di Transformer, per ottenere un aumento della velocità superiore al 25% senza compromettere la qualità. Il passaggio della fase di estrazione delle caratteristiche agli input MFCC combinati con reti neurali convoluzionali (CNN) anziché solo alle CNN ha inoltre comportato un aumento della velocità superiore al 40% durante l’inferenza. Inoltre, l'introduzione di un modello di rilevamento dell'attività vocale (VAD) come fase di pre-elaborazione ha aumentato significativamente la robustezza dell'intera pipeline, specialmente per gli utenti con microfoni rumorosi. Il VAD ci ha permesso di filtrare il rumore e di applicare la nostra pipeline di sicurezza solo quando rileviamo la voce umana nell'audio, il che ha ridotto il volume complessivo dell'inferenza di circa il 10% e ha fornito input di qualità superiore al nostro sistema. 

Valutazione del modello

Sebbene abbiamo utilizzato molti set di dati e metriche diverse per la valutazione, possiamo condividere le prestazioni del nostro classificatore vocale su un set di dati in lingua inglese con un'alta prevalenza di violazioni delle politiche (come quelle che troveremmo nelle segnalazioni di abuso vocale da parte degli utenti). Questo set di dati è stato etichettato al 100% da esseri umani tramite i nostri moderatori. Quando abbiamo combinato tutti i tipi di violazione (parolacce, bullismo, appuntamenti, ecc.) in un'unica categoria binaria, abbiamo osservato un punteggio PR-AUC (area sotto la curva di precisione-richiamo) superiore a 0,95, come mostrato di seguito. Ciò significa che su questo set di dati di valutazione, il classificatore è in grado di rilevare la grande maggioranza delle violazioni senza segnalare erroneamente troppe non violazioni.

I risultati positivi della valutazione sopra riportati, tuttavia, non si traducono necessariamente in modo diretto in tutti i casi d'uso. Ad esempio, nel caso delle nostre notifiche relative a discorsi che violano le norme, il classificatore valuta tutte le chat vocali di Roblox e rileva una minore prevalenza di violazioni, con una maggiore probabilità di risultati falsi positivi. Nel caso delle segnalazioni di abuso vocale, il classificatore valuta solo i discorsi che sono stati segnalati per potenziali violazioni, quindi la prevalenza è più alta. Tuttavia, i risultati sopra riportati sono stati sufficientemente incoraggianti da consentirci di avviare esperimenti con il classificatore in produzione (con soglie conservative) per notificare agli utenti i loro contenuti che violano le norme. I risultati di questi esperimenti hanno superato di gran lunga le nostre aspettative.

Quali sono i prossimi passi?

Sfruttando la nostra infrastruttura CPU e progettando con cura la pipeline su larga scala, siamo riusciti a implementare con successo questo modello su scala Roblox. Durante le ore di punta, il modello gestisce con successo oltre 2.000 richieste al secondo (la maggior parte delle quali non contiene violazioni). Abbiamo inoltre osservato una significativa riduzione dei comportamenti che violano le politiche sulla piattaforma grazie all'uso del modello per avvisare le persone in merito a un linguaggio che viola le politiche. In particolare, dal nostro lancio iniziale, stiamo assistendo a una riduzione del 15,3% delle segnalazioni di abuso verbale di livello grave e a una diminuzione dell'11,4% delle violazioni per minuto di discorso.

Stiamo ampliando i nostri modelli con dati di addestramento multilingue, il che ci permette di implementare un unico modello di classificazione su tutta la piattaforma per gestire diverse lingue e anche la commistione linguistica. Stiamo inoltre esplorando nuove architetture multitasking per identificare parole chiave selezionate oltre all'obiettivo di classificazione senza ricorrere all'ASR completo. Il rilevamento di queste parole chiave, oltre alle etichette di violazione, migliora la qualità della classificazione e offre l'opportunità di fornire un contesto agli utenti mentre si applicano le conseguenze.

La ricerca qui descritta è stata il risultato di uno sforzo congiunto di molti team di Roblox. È stata una grande dimostrazione del nostro valore fondamentale di rispetto della comunità e un'ottima collaborazione tra diverse discipline.