Usando Aprendizado de Máquina Para a Segurança da Voz

Nossa missão é conectar um bilhão de pessoas com otimismo e civilidade, e, para isso, precisamos garantir que as pessoas se sintam realmente unidas. Para mundos imersivos em 3D, de modo semelhante ao mundo físico, poucas coisas são mais autênticas e potentes do que a voz humana quando se trata de travar amizades e conexões duradouras. Mas como é possível dimensionar a imersão e a riqueza da comunicação por voz na Roblox, e, ao mesmo tempo, manter nossa comunidade segura e civilizada?

Neste artigo, vamos compartilhar como implementamos a Segurança em Tempo Real, um modelo de aprendizado de máquina de ponta a ponta que opera numa escala de milhões de minutos de atividade de voz por dia, detectando violações de regras na comunicação por voz com mais precisão do que a moderação humana. Os resultados desse sistema alimentam outro modelo que determina as consequências apropriadas. O modelo de consequências aciona notificações para quem houver violado as nossas regras, inicialmente com alertas, e, posteriormente, caso o comportamento persista, com ações mais drásticas.

Esse sistema de Segurança em Tempo Real de ponta a ponta foi um objetivo audacioso, e estamos entre os primeiros da indústria a oferecer funcionalidades de segurança de voz multilíngue e quase em tempo real aos usuários. A classificação de voz depende tanto do estilo do áudio, incluindo tanto volume e tonalidade como conteúdo, levando em conta as palavras faladas. É com empolgação que vamos compartilhar como desenvolvemos esse sistema sem, essencialmente, nenhuma automação anterior, na prática, zero dados rotulados e nenhum modelo, partindo do zero para introduzir a segurança de voz em tempo real.

E, por fim, também é uma alegria compartilhar o nosso primeiro modelo de código aberto, que é um dos nossos modelos de segurança de voz. Ao abrirmos o código desse modelo e disponibilizá-lo para uso comercial, esperamos fornecer uma base para a indústria para fins de detecção de violações de regras, capaz de acelerar o desenvolvimento de novos modelos de aprendizado de máquina para a segurança da voz. Esse modelo de código aberto é a nossa primeira versão, e, desde então, fizemos melhorias consideráveis que estamos testando.

Superação da Escassez de Dados

Iniciamos o nosso trabalho com o aprendizado de máquina como muitas companhias, avaliando a qualidade dos dados disponíveis para o treinamento e os nossos modelos. A combinação ideal de conjuntos de dados incluiria a expressão vocal e uma categorização rotulada de segurança de alta qualidade para essa expressão. Entretanto, quando começamos, praticamente não tínhamos dados do mundo real em ampla escala com rotulações humanas. Para treinar um modelo de detecção de alta qualidade para a segurança da voz usando uma abordagem supervisionada, precisávamos de milhares de horas de áudio de dados rotulados para cada idioma compatível, o que levaria anos para reunir, e demandaria recursos e um tempo inviáveis.

Em vez de contarmos com milhares de horas de dados rotulados à mão, desenvolvemos vários métodos mais eficientes:

  • Dados rotulados por máquina para treinamento. Em vez de ficarmos travados na busca por dados perfeitos rotulados à mão para o treinamento, optamos por um grande volume de dados de treinamento obtidos pela rotulação por máquina de expressões vocais. O uso de grandes quantidades de dados rotulados por máquina com uma supervisão fraca gerou modelos de treinamento que eram robustos para certo ruído nas rotulações. As chaves para fazer essa abordagem funcionar foram o acesso a grandes bibliotecas de código aberto de voz para texto, combinadas a anos de experiência com o uso de aprendizado de máquina para detectar violações das Regras da Comunidade nas comunicações textuais das pessoas. Essa abordagem de rotulação por máquina nos permitiu rotular o volume dos dados de treinamento necessário para os nossos modelos em semanas em vez de anos.

  • Dados rotulados por humanos para avaliação. Embora dados de alta qualidade rotulados por máquina, embora imperfeitos, fossem bons o suficiente para o treinamento de um modelo de alto desempenho, nós não confiávamos nos rótulos de máquina para realizar a validação final do modelo resultante. A próxima questão, portanto, era onde conseguir dados rotulados por humanos o suficiente para avaliação. Por sorte, embora fosse impossível reunir dados rotulados por humanos o bastante para realizar o treinamento num tempo viável, era possível reunir o bastante para a avaliação do nosso modelo com a ajuda de moderadores internos, que já classificavam denúncias de infrações feitas por usuários da Roblox para aplicar consequências manualmente. Isso nos permitiu contar com o melhor dos dois mundos: dados de treinamento rotulados por máquina que eram bons e abundantes o suficiente para produzir um modelo de alto desempenho, e dados rotulados por humanos para avaliação que compunham um volume muito menor, mas mais do que suficiente para nos dar a confiança de que o modelo realmente funcionava.

Outra área onde enfrentamos a escassez de dados foi nas categorias de violações de regras em que temos uma prevalência muito baixa, como referências a drogas, álcool ou automutilação. Para resolver esse problema, combinamos várias categorias de baixa prevalência em uma "outra" categoria. O resultado foi um eventual modelo capaz de identificar as categorias de palavrões, bullying, discriminação, namoro, entre outras. Para entender essas \"outras\" categorias, com o intuito de proteger melhor a nossa comunidade e garantir um discurso seguro e civilizado na Roblox, continuaremos monitorando-as para obter mais exemplos. Com o tempo, as subcategorias de "outras" categorias também vão se tornar categorias com seus próprios nomes à medida que o número de exemplos de treinamento dessas subcategorias alcançar um volume crítico.

Processo de Rotulação por Máquina Para Dados de Treinamento

Desenvolvemos um processo completamente automático de rotulação por máquina para a extração de rótulos de alta qualidade de sequências de chat de voz. Nosso processo é composto por três etapas:

  1. Divisão do áudio em porções. A primeira etapa do processo envolve a divisão do áudio em porções, ou segmentos menores, sempre que detectamos períodos de silêncio entre as frases. Isso nos permite identificar e rotular conteúdo que viole regras com mais eficiência.

  2. Transcrição de áudio. A segunda etapa do processo consiste na transcrição dessas porções de áudio para texto por meio do uso de um modelo de reconhecimento automático de fala (ASR, do termo em inglês). Usamos modelos de ASR de código aberto de acesso público.

  3. Classificação do texto. A etapa final do processo envolve a classificação do texto transcrito por meio do nosso filtro de texto interno. O objetivo desse filtro é detectar e bloquear conteúdo inapropriado em comunicações baseadas em texto. Nós adaptamos o filtro para operar nos dados de áudio transcritos, o que nos permitiu rotular as porções de áudio com classes de violações de regras e palavras-chave. O filtro de texto é um modelo combinado, treinado com base em dados de texto de violações de regras com rotulações humanas, formado por um modelo DistilBERT ampliado e regras de expressões regulares.

É importante observar que esse modelo foi usado apenas para a geração de dados de treinamento para o nosso modelo de produção final. Mas você pode se perguntar por que treinar um modelo se já existe um processo que gera os rótulos que procuramos. A resposta é eficiência. Precisamos ser extremamente precisos em bem menos tempo. Na escala Roblox, usar o ASR para transcrever todas as comunicações por voz seria um procedimento inviavelmente lento, com altíssimo consumo de recursos. Entretanto, um modelo compacto de aprendizado de máquina treinado a partir desses dados, especificamente designado para detectar violações de regras em comunicações por voz sem fazer uma transcrição completa, é igualmente preciso, e, ao mesmo tempo, consideravelmente mais rápido, podendo ser usado na escala Roblox.

Escalonando o Processo de Rotulação por Máquina

Na maioria das grandes empreitadas com IA, o mecanismo de obtenção de dados de treinamento de qualidade é, em si, um sistema de aprendizado de máquina de produção, que precisa ser criado do zero. Para esse projeto, nós precisávamos desenvolver o nosso processo de rotulação por máquina como um sistema de produção de primeira classe, operando 24h por dia, 7 dias por semana, e com a capacidade de escalonar para milhares de CPUs concorrentes ou números equivalentes de GPUs. Nós implementamos um bloco de dados de treinamento com milhares de núcleos de CPU que processam automaticamente os fluxos de áudio recebidos em paralelo para gerar rótulos de máquina. O sistema precisava funcionar perfeitamente para alcançar rendimento máximo, e quaisquer erros ou períodos inoperantes resultariam em dias, ou semanas de tempo perdido na geração de dados de treinamento.

Logo abaixo, você encontrará uma visão geral de alto nível da arquitetura que possibilitou a escala de que precisávamos para rotular por máquina dezenas de milhares de horas de áudio em questão de semanas. A principal lição aqui foi que o investimento em filas em pontos cruciais do nosso processamento nos permitiu remover gargalos por meio do escalonamento horizontal de threads de trabalhador entre várias máquinas. Essas threads de trabalho executavam as etapas de divisão do áudio em porções, transcrição do áudio e classificação em texto mencionadas na seção anterior.

Arquitetura do Aprendizado por Máquina

Um requisito central para a busca do nosso modelo era a baixa latência, ou seja, velocidades quase em tempo real para a inferência do modelo, o que nos levou a arquiteturas que operam diretamente em áudio bruto e produzem uma pontuação. Nós usamos arquiteturas baseadas em transformadores, que funcionam muito bem para o resumo de sequências e são muito bem-sucedidas na indústria de processamento de linguagem natural (PLN) e modelagem de áudio. Nosso desafio era encontrar o equilíbrio ideal entre complexidade, inferência de baixa latência, compatibilidade com vários idiomas e sotaques, robustez em relação ao ruído de fundo e qualidade de áudio, ao mesmo tempo, satisfazendo as nossas restrições de latência de produto.

Seleção de Modelo

Uma questão de desenvolvimento imediata era determinar o tamanho da janela de contexto necessária para treinar os modelos baseados em transformadores. Analisamos o histograma do comprimento da expressão vocal nos dados do chat de voz ao longo de vários dias de uso e chegamos à conclusão de que uma janela de 15 segundos oferecia o equilíbrio entre latência e contexto suficiente necessário para a classificação. Nós usamos "sem violação" como uma categoria para detectar a ausência de violações de regras. Levando em conta que um único trecho de áudio pode conter vários tipos de violações, a tarefa torna-se inerentemente a rotulação múltipla em vez de um problema convencional de classificação multiclasse. Nós ajustamos a rede inteira, incluindo as camadas superiores, para essa tarefa, com perda de entropia cruzada.

Legenda: Histograma de expressões vocais de dados de chat, mostrando que 75% das expressões duram menos do que 15 segundos.

Nós avaliamos inúmeros modelos populares de codecs de código aberto da comunidade de pesquisa de áudio, e chegamos às opções do WavLM e do Whisper. Nossa primeira experiência foi um ajuste fino do pré-treinado WavLM base+ com 2.300 horas de dados de voz rotulados por máquina da Roblox e a avaliação dos resultados de classificação em dois conjuntos de dados de avaliação do mundo real. Obtivemos resultados de classificação muito encorajadores (vide a Avaliação de Modelo abaixo), mas descobrimos que a latência era maior do que os nossos limites para implementação de produção. Em seguida, implementamos uma versão personalizada da arquitetura do WavLM com menos camadas de transformadores e treinamos um modelo de ponta a ponta do zero com base em 7.000 horas de dados de voz rotulados por máquina da Roblox. Esse modelo produz classificações robustas em configurações de conversas, e era mais compacto em comparação ao modelo com ajustes finos. O nosso candidato a modelo final usava uma configuração de destilação professor-aluno, com o codec Whisper como a rede professora e a arquitetura ponta a ponta do WavLM como a rede aluna. Quando treinamos o modelo com base em 4.000 horas de áudio, vimos precisões de classificação semelhantes ao modelo com ajustes finos, mas com uma melhoria considerável na latência e um ruído reduzido no modelo. A imagem abaixo resume os parâmetros do modelo para as três experiências acima descritas. Ainda estamos iterando as estratégias de amostragem, as estratégias de avaliação e os hiperparâmetros do modelo à medida que ampliamos os modelos para classificação da segurança de voz multilíngue.



Tamanho do conjunto de dados

Tamanho do modelo

Latência de inferência/ segundo da entrada

Fator tempo real

WavLM com ajustes finos

2300 h

Parâmetros 96M

102 ms

9.80

Treinado de ponta a ponta

7071 h

Parâmetros 52M

83 ms

12.08

Destilado

4080 h

Parâmetros 48M

50 ms

19.95



Otimização do Modelo

Nós empregamos métodos padrões da indústria, inclusive quantizando camadas selecionadas de transformadores para alcançar uma aceleração de mais de 25% sem comprometer a qualidade. A troca da etapa de extração da funcionalidade para entradas de MFCCs combinadas a redes neurais convolucionais (CNNs, do termo em inglês) em vez de apenas CNNs resultou em acelerações superiores a 40% durante a inferência. Além disso, a introdução de um modelo de detecção de atividade de voz (VAD, do termo em inglês) como etapa pré-processamento aumentou consideravelmente a robustez do processo em geral, especialmente para usuários com microfones barulhentos. A VAD nos permitiu filtrar o ruído e aplicar o nosso processo de segurança apenas quando detectarmos uma voz humana no áudio, o que reduziu o volume geral de inferência em aproximadamente 10% e ofereceu entradas de maior qualidade para os nossos sistemas.

Avaliação do Modelo

Embora tenhamos usado muitos conjuntos de dados e métricas diferentes para a avaliação, podemos compartilhar como o nosso classificador de voz se saiu em um conjunto de dados no idioma inglês com uma prevalência elevada de violações de regras (a exemplo do que encontraríamos em denúncias de abusos por parte de usuários). O conjunto de dados era 100% humano, rotulado pelos nossos moderadores. Quando combinamos todos os tipos de violação (palavrões, bullying, namoro etc.) em uma única categoria binária, observamos uma pontuação da área sob a curva de recall de precisão (PR-AUC, do termo em inglês) de mais de 0,95, conforme exibido abaixo. Isso significa que, nesse conjunto de dados de avaliação, o classificador em geral pode capturar a grande maioria das violações sem muitos falsos positivos.

Os fortes resultados da avaliação acima, no entanto, não necessariamente se aplicam a todos os casos de uso. Por exemplo, no caso das nossas notificações sobre falas com violações de regras, o classificador avalia todos os chats de voz da Roblox e identifica uma prevalência menor de violações, havendo uma chance maior de falsos positivos. No caso das denúncias de abuso por voz, o classificador avalia apenas falas identificadas por violações em potencial, então a prevalência é maior. Ainda assim, os resultados acima eram encorajadores o suficiente para iniciarmos experiências com o classificador em produção (com limites conservadores) para notificar usuários sobre suas falas que violam às regras. Os resultados dessas experiências superaram consideravelmente as nossas expectativas.

E Então?

Tirando vantagem da nossa própria infraestrutura de CPUs e desenvolvendo meticulosamente o processo para ampla escala, conseguimos empregar esse modelo com sucesso na escala Roblox. Durante horários de pico, o modelo está atendendo com sucesso a mais de 2.000 solicitações por segundo (a maioria das quais não contém violações). Também observamos uma redução significativa no comportamento de violação de regras na plataforma em virtude do uso do modelo para a notificação de usuários sobre falas que violam às regras. Em particular, desde o lançamento inicial, vimos uma redução de 15,3% das denúncias de abusos de nível grave por voz e uma redução de 11,4% das violações por minuto de fala.

Estamos ampliando os nossos modelos com dados de treinamento multilíngue, o que nos permite implementar um único modelo de classificação em toda a plataforma para lidar com vários idiomas e com combinações de idiomas. Também estamos explorando novas arquiteturas multitarefas para identificar palavras-chave selecionadas em conjunto com o objetivo de classificação sem recorrer ao ASR total. Combinada aos rótulos das violações, a detecção dessas palavras-chave melhora a qualidade da classificação e oferece a oportunidade de darmos contexto às pessoas ao aplicarmos consequências.

A pesquisa aqui descrita foi um trabalho conjunto de vários departamentos da Roblox Isso foi uma grande demonstração da nossa prioridade de respeitar a comunidade e uma grande colaboração entre diversas disciplinas.