Skip to content

Distribuzione di ML per la sicurezza vocale

La nostra missione è quella di collegare miliardi di persone con ottimismo e cortesia, il che ci richiederà di aiutare le persone a sentirsi veramente insieme. Nei mondi immersivi 3D, proprio come nel mondo fisico, non esiste cosa più autentica o potente della voce umana nel creare amicizie e connessioni durature. Ma come possiamo scalare 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 al sistema di sicurezza in tempo reale, un modello di machine learning 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 molto più preciso rispetto a una moderazione di tipo umano. Gli output di questo sistema vengono inseriti in un altro modello, che determina le conseguenze appropriate. Il modello delle conseguenze attiva le notifiche per le persone che hanno violato le nostre politiche, inizialmente con avvertimenti e poi con azioni più drastiche se il loro comportamento non cambia.

Questo sistema di sicurezza in tempo reale end-to-end rappresenta un obiettivo audace perché siamo tra i primi nel settore a fornire funzionalità di sicurezza vocale multilingue quasi in tempo reale agli utenti. La classificazione della voce dipende sia dallo stile dell'audio, ovvero volume e tono, sia dal contenuto, ovvero le parole pronunciate. Siamo entusiasti di condividere come abbiamo sviluppato questo sistema partendo da nessuna automazione precedente, da zero dati etichettati e nessun modello accelerato per la sicurezza vocale in tempo reale.

E infine, siamo entusiasti di condividere il nostro primo modello open source per la sicurezza vocale. Nell'open sourcing di questo modello e nel renderlo disponibile per l'uso commerciale, speriamo di fornire una linea di base del settore per il rilevamento delle violazioni delle politiche che possa accelerare lo sviluppo di nuovi modelli di machine learning per la sicurezza vocale. Questo modello open source è la nostra prima versione e da allora abbiamo apportato miglioramenti significativi che stiamo testando.

Superare la scarsità di dati

Abbiamo iniziato i nostri sforzi di ML come fanno molte aziende valutando la qualità dei dati disponibili per l'addestramento e valutando i nostri modelli. L'accoppiamento di set di dati ideale includerebbe l'espressione vocale insieme a una categorizzazione di sicurezza di alta qualità per quell'espressione. Tuttavia, quando abbiamo iniziato, non avevamo quasi nessun dato del mondo reale etichettato dall'uomo 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 dati etichettati per ogni lingua che supportavamo, che avrebbero richiesto anni per essere raccolti e sarebbero stati proibitivi in termini di risorse e tempo.

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

  • Dati etichettati dalla macchina per l'addestramento. Invece di rimanere bloccati nella ricerca di dati perfetti etichettati a mano 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 dalla macchina con una supervisione debole ha generato modelli di addestramento che erano resistenti a un certo rumore nelle etichette. La chiave per far funzionare questo approccio è stato l'accesso a grandi librerie di sintesi vocale open source e anni di esperienza nell'uso del machine learning per rilevare le violazioni delle norme comunitarie 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 dall'uomo per la valutazione. Sebbene i dati etichettati dalla macchina, di alta qualità ma imperfetti, fossero abbastanza buoni per addestrare un modello altamente performante, non ci siamo fidati abbastanza per eseguire la convalida finale del modello risultante. La domanda successiva, quindi, era: dove avremmo potuto ottenere abbastanza dati etichettati dall'uomo per questa valutazione? Fortunatamente, mentre è stato impossibile raccogliere velocemente abbastanza dati etichettati dall'uomo per l'addestramento, è stato possibile raccoglierne abbastanza per la valutazione del nostro modello utilizzando i nostri moderatori interni, che stavano già classificando le segnalazioni degli abusi da parte delle persone su Roblox per elaborare manualmente le conseguenze appropriate. Questo ci ha permesso di godere del meglio di entrambi i mondi: dati di addestramento etichettati dalla macchina che erano abbastanza buoni e sufficienti da 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 il problema della scarsità di dati è stata nelle categorie di violazione delle politiche in cui avevamo una prevalenza molto bassa, come i riferimenti a droghe e alcol o all'autolesionismo. Per risolvere questo problema, abbiamo unito diverse categorie a bassa prevalenza in una chiamata "altro". Di conseguenza, il nostro modello finale potrebbe identificare le categorie di volgarità, bullismo, discriminazione, appuntamenti e \"altro\". Al fine di comprendere queste categorie \"altro\", in modo da poter proteggere al meglio la nostra comunità e garantire un ambiente sicuro e civile su Roblox, continueremo a monitorarle per ulteriori esempi. Nel tempo, man mano che il numero di esempi di formazione in quelle sottocategorie raggiunge una massa critica, le sottocategorie in "altro" otterranno dei nomi ben precisi.

Processo di etichettatura della macchina per i dati di addestramento

Abbiamo progettato un processo di etichettatura della macchina completamente automatica per l'estrazione di etichette di alta qualità dalle sequenze di chat vocale. Il nostro processo si compone di tre fasi:

  1. Divisione dei blocchi audio. La prima fase del processo prevede la suddivisione dell'audio in blocchi o segmenti più brevi, ogni volta che rileviamo periodi di silenzio tra le frasi. Ci consente di identificare ed etichettare in modo più efficiente i contenuti che violano le politiche.

  2. Trascrizione audio. La seconda fase del processo consiste nella trascrizione di 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 del processo prevede la classificazione del testo trascritto utilizzando il nostro filtro di testo interno. Questo filtro è progettato per rilevare e bloccare i contenuti inappropriati nelle comunicazioni basate su testo. Abbiamo adattato il filtro in modo da renderlo applicabile ai dati audio trascritti, consentendoci di etichettare i blocchi audio in base a classi di violazione delle politiche e parole chiave. Il filtro di testo è un modello d'insieme addestrato a partire da dati di testo che violano le politiche ed etichettati dall'uomo comprendente un modello DistilBERT esteso e regole di espressione regolare.

È importante notare che questo processo è stato utilizzato solo per generare dei dati di addestramento per il nostro modello di produzione finale. Ci si potrebbe chiedere, tuttavia, perché addestrare un modello se esiste già un processo in grado di generare le etichette desiderate? La risposta è efficienza: dobbiamo essere incredibilmente precisi, in molto meno tempo. Su larga scala, affidarsi all'ASR per trascrivere tutte le comunicazioni vocali sarebbe proibitivamente lento e dispendioso in termini di risorse. Invece, un modello di ML compatto e addestrato sulla base di questi dati, nonché specificamente progettato per rilevare le violazioni delle politiche nelle comunicazioni vocali senza eseguire una trascrizione completa, non è solo altrettanto accurato, ma anche significativamente più veloce e fruibile su larga scala in Roblox.

Ampliamento su scala del processo di etichettatura della macchina

Come nel caso della maggior parte delle grandi iniziative di IA, il meccanismo per ottenere dei dati di addestramento di qualità risiede di per sé in un sistema ML di produzione, che deve essere creato da zero. Per questo progetto, avevamo bisogno di sviluppare il nostro processo di etichettatura delle macchine come un sistema di produzione di alto livello con tempi di attività 24 ore su 24, 7 giorni su 7, e la capacità di scalare fino a migliaia di CPU simultanee o numeri equivalenti di GPU. Abbiamo implementato un cluster di dati di addestramento con migliaia di core di CPU che elaborano automaticamente i flussi audio in ingresso in modo parallelo per generare etichette. Era necessario che questo sistema funzionasse in modo impeccabile per garantire il massimo rendimento, oltretutto 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 generale dell'architettura che ha supportato la portata necessaria per etichettare decine di migliaia di ore di audio in poche settimane. L'aspetto centrale in questo caso è stato investire nelle code nei punti chiave della nostra attività di elaborazione per rimuovere i colli di bottiglia ridimensionando 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 di ML

Un requisito centrale per la nostra ricerca di modelli era la bassa latenza, ovvero la velocità quasi in tempo reale per l'inferenza dei modelli, che ci ha consentito di sfruttare architetture in grado di operare direttamente sull'audio raw e restituire un punteggio. Utilizziamo architetture basate su trasformatori, che funzionano molto bene per il riepilogo delle sequenze e risultano molto valide nel settore dell'elaborazione del linguaggio naturale (NLP) e della modellazione audio. La nostra sfida consisteva nel trovare un punto di equilibrio tra complessità e inferenza a bassa latenza, ovvero gestire più lingue con diversi accenti, adattamento al rumore di fondo e qualità audio, soddisfacendo al contempo i nostri vincoli di latenza del prodotto.

Selezione del modello

In quanto a progettazione, è subito emersa la necessità di determinare la dimensione della finestra di contesto necessaria per addestrare i modelli Transformer. Abbiamo esaminato l'istogramma della lunghezza delle espressioni nei dati della chat vocale durante diversi giorni di utilizzo e abbiamo stabilito che una finestra di 15 secondi avrebbe fornito il compromesso tra latenza e contesto sufficiente di cui avevamo bisogno ai fini della classificazione. Usiamo l'“assenza di violazione” come categoria per rilevare l'assenza di violazioni delle politiche. Dato che una singola clip audio può includere più tipi di violazioni, l'attività si traduce intrinsecamente in un processo a etichette multiple piuttosto che limitarsi a un convenzionale problema di classificazione multi-categoria. Abbiamo messo a punto l'intera rete, compresi i livelli delle teste per questa attività, con perdita di entropia incrociata binaria (BCE). 

Didascalia: istogramma delle espressioni vocali risultanti dai dati della chat, in cui si nota che il 75% delle espressioni è inferiore a 15 secondi.

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



Dimensione dei set di dati

Dimensione del modello

Latenza di inferenza/secondo di input

Fattore in tempo reale 

WavLM perfezionato

2300h

Parametri 96M

102 ms

9.80

Addestramento end-to-end

7071h

Parametri 52M

83 ms

12.08

Distillato

4080h 

Parametri 48M

50 ms

19.95



Ottimizzazione del modello 

Abbiamo impiegato metodi standard del settore, tra cui la quantizzazione di livelli Transformer selezionati per ottenere un aumento di velocità superiore al 25% senza compromettere la qualità. Il passaggio dalla fase di estrazione delle caratteristiche agli input MFCC combinati con le reti neurali convoluzionali (CNN), invece che solo delle CNN, ha comportato anche accelerazioni superiori 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 del processo complessivo, in particolare nel caso di utenti con microfoni rumorosi. Il VAD ci ha permesso di filtrare il rumore e applicare la nostra pipeline di sicurezza solo quando viene rilevato del linguaggio umano 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 siano stati utilizzati molti set di dati e metriche diversi per la valutazione, possiamo condividere le prestazioni del nostro classificatore vocale su un set di dati in lingua inglese con un'elevata prevalenza di violazioni delle politiche (come quello che troveremmo nelle segnalazioni di abusi vocali degli utenti). Questo set di dati era al 100% umano etichettato dai nostri moderatori. Combinando tutti i tipi di violazione (volgarità, bullismo, appuntamenti, ecc.) in un'unica categoria binaria, abbiamo osservato un punteggio PR-AUC (area sotto la curva di richiamo di precisione) di oltre 0,95, come mostrato di seguito. Ciò significa che su questo set di dati di valutazione, il classificatore è in genere capace di rilevare una grande maggioranza di violazioni senza contrassegnare erroneamente troppe non violazioni.

Gli importanti risultati della valutazione di cui sopra, tuttavia, non si traducono necessariamente in tutti i casi d'uso. Ad esempio, nel caso delle nostre notifiche sui discorsi che violano le politiche, il classificatore prende in esame tutte le chat vocali di Roblox e individua una minore prevalenza di violazioni, e c'è una maggiore possibilità di falsi positivi. Nel caso di segnalazioni di abusi vocali, il classificatore valuta solo il discorso che è stato contrassegnato come potenziale violazione, quindi la prevalenza è maggiore. Tuttavia, i risultati di cui sopra sono stati abbastanza incoraggianti da consentirci di avviare esperimenti con il classificatore nella produzione (a soglie conservative) per informare gli utenti quando il loro linguaggio comporta una violazione delle politiche. I risultati di questi esperimenti hanno superato di gran lunga le nostre aspettative.

Qual è il prossimo passo?

Sfruttando la nostra infrastruttura di CPU e progettando con cura il processo su larga scala, siamo stati in grado di implementare correttamente questo modello su larga scala in Roblox. Durante le ore di punta, il modello soddisfa con successo oltre 2.000 richieste al secondo (la maggior parte delle quali non contiene violazioni). Abbiamo anche osservato una significativa riduzione dei comportamenti che costituiscono una violazione delle politiche sulla piattaforma grazie all'uso del modello come strumento per avvisare gli utenti riguardo alla violazione delle politiche nel proprio linguaggio. In particolare, dal nostro lancio iniziale, stiamo assistendo a una riduzione del 15,3% delle segnalazioni di abusi vocali di livello grave e a una diminuzione dell'11,4% delle violazioni per minuto di discorso.

Stiamo estendendo i nostri modelli con dati di addestramento multilingue, che ci consentono di implementare un unico modello di classificazione su tutta la piattaforma per gestire diverse lingue e contenuti in lingua mista. Stiamo anche 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 alle persone un contesto mentre elabora le azioni che ne conseguono.

La ricerca qui descritta è il risultato di uno sforzo congiunto di molti team di Roblox. Questa è stata una grande dimostrazione del nostro valore fondamentale per il rispetto della comunità e una grande collaborazione tra più discipline.