Abertura do acesso ao código do classificador de IIP da Roblox: nossa abordagem para a detecção de IIP por IA em chats
Uso do contexto para aprimorar o recall
Todos os dias, os usuários geram uma média de 6,1 bilhões de mensagens de chat na Roblox. Usamos sistemas de moderação consistentes, definimos restrições baseadas na idade e oferecemos controles parentais para ajudar a manter a comunicação segura e civilizada. A grande maioria das mensagens na plataforma são conversas cotidianas, como dois amigos discutindo estratégias de jogo — no entanto, em uma pequena porcentagem das mensagens, os usuários tentam compartilhar informações de identificação pessoal (IIP) que podem ser confidenciais. As IIP assumem muitas formas, e os usuários as compartilham por muitas razões inofensivas: um usuário pode compartilhar seu nome de usuário de outra plataforma para coordenar a jogabilidade ou um número de telefone para construir uma amizade. No entanto, há casos raros em que pessoas de má-fé buscam IIP para atrair usuários da Roblox para outras plataformas, onde pode haver um risco maior de danos no mundo real. Na prática, essas diferenças de intenção são difíceis de discernir, e é por isso que temos políticas rigorosas contra o compartilhamento ou a busca de IIP. Usamos várias ferramentas para bloquear de modo padrão todas as IIP detectadas no chat, e só relaxamos as restrições para usuários com 18 anos ou mais e usuários de 13 a 17 anos que verificaram uns aos outros como Conexões Confiáveis.
A detecção de IIP é um desafio técnico para todo o setor. As ferramentas de detecção padrão do setor podem ser contornadas e não têm a capacidade de se adaptar aos padrões de linguagem que surgem. Embora nenhuma ferramenta seja perfeita, desenvolvemos um modelo de IA — o classificador de IIP da Roblox — que leve em conta a natureza evolutiva da linguagem e use o contexto para identificar situações em que os usuários estejam tentando contornar os filtros para solicitar ou compartilhar IIP.
É uma satisfação anunciar hoje que estamos disponibilizando nosso classificador de IIP em código aberto, juntamente com as outras ferramentas do nosso kit de ferramentas de segurança de código aberto. Desde a implementação do Classificador de IIP no final de 2024, vimos uma melhoria rápida e contínua no recall, com um desempenho que supera outros modelos disponíveis. A versão do nosso modelo de IIP que estamos disponibilizando hoje em código aberto tem um recall de 98% de possíveis conversas de IIP em inglês1 na Roblox. O modelo também alcançou uma pontuação F1 de 94% em nossos dados de produção, superando outros modelos de segurança de última geração, como LlamaGuard v3 8B (28%) e Piiranha NER (14%).
Os desafios
A identificação eficaz de IIP em grande escala se resume a três desafios principais:
-
Padrões adversários: os usuários são criativos e encontram constantemente novas maneiras de contornar os filtros. Um sistema eficaz deve se adaptar à medida que a linguagem evolui e novos padrões surgem.
-
Treinamento e avaliação: para construir o modelo mais eficaz, também devemos criar conjuntos de dados de treinamento e métodos de medição eficazes. Como o modelo deve levar em conta os padrões emergentes, os dados de produção atuais não são suficientes para o treinamento.
-
Desempenho: para servir esse modelo em grande escala, é necessário ter uma arquitetura e decisões de otimização bem pensadas, para evitar um impacto negativo na experiência do usuário.
Padrões adversários
As soluções de detecção de IIP existentes dependem principalmente do reconhecimento de entidade nomeada (NER), detecção em nível de token de certos tipos de substantivos, como identificadores de redes sociais, números de telefone e endereços. No entanto, a detecção de substantivos é só parte do desafio. Pessoas experientes de má-fe alteram intencionalmente sua linguagem para contornar a detecção de NER (por exemplo, usando alfa, bravo e charlie para representar A, B e C, ou fazendo referência a uma plataforma sem nomeá-la explicitamente). É possível que uma pessoa de má-fé sinalize sua intenção de se conectar em outra plataforma sem nunca compartilhar as informações confidenciais que um filtro de NER capturaria. A tarefa do Classificador de IIP não é apenas detectar e ofuscar o texto explícito de IIP compartilhado na Roblox, mas também entender o contexto da comunicação e impedir que pessoas de má-fé se envolvam em conversas relacionadas a IIP.
Aqui estão alguns padrões de evasão que representam o uso de uma plataforma social hipotética, a StarTalk:
Manipulação no nível de caracteres
- "vc tem tipo 5tärtālk q vc quer ligar? eu fiz uma cnt 4Lguns d14s atrás"
- "ggrr eu odeio isso tags Qual é seu nome Isso é S e T"
Referências implícitas a redes sociais populares
- "de novo, qual é seu ppa reverso"
- "ei, me procure no aplicativo do sol amarelo. vamos conversar lá?"
A linguagem e as gírias evoluem ao longo do tempo, e pessoas de má-fé estão constantemente procurando novas maneiras de escapar dos filtros. A força do Classificador de IIP está na sua capacidade de se adaptar a novos padrões de linguagem e a soluções alternativas à medida que surgem. Quando detectamos padrões adversários do mundo real, nós os incorporamos de volta ao modelo para ajudar a treiná-lo constantemente.
Treinamento e avaliação
Para treinar o modelo inicialmente, revisamos e rotulamos manualmente os dados relacionados a IIP. Isso nos deu um ponto de partida, mas não nos permitiu ampliar nosso escopo e capturar rapidamente uma ampla variedade de cenários. Em vez de tentar vasculhar manualmente todos os termos e permutações encontrados em bilhões de mensagens de chat por dia e aplicar o rótulo apropriado, criamos e testamos amostradores de dados para selecionar amostras relevantes para o treinamento. Nosso objetivo era excluir conversas inócuas e focar em conversas que continham dados relacionados a IIP para reduzir a possibilidade de erros de rotulagem humana e cobrir um terreno mais amplo. Dois amostradores provaram ser mais eficazes:
- Amostragem de incerteza usando resultados de pontuação do modelo: este amostrador selecionou amostras que não evocavam um forte sinal positivo ou negativo, permitindo-nos refinar ainda mais os casos ambíguos.
- Amostras de blocos de IIP consecutivos: este amostrador selecionou amostras de usuários que foram sinalizados em algumas conversas, mas não em conversas consecutivas. Essas conversas posteriores tinham maior propensão a conter linguagem atípica que havia contornado o filtro de IIP atual. Na prática, poderia parecer um usuário não conseguiu contornar o sistema e tentou novamente até encontrar uma lacuna inteligente.
Essa combinação de amostragem de dados e rotulagem humana nos dados de produção atuais forneceu uma base sólida para o treinamento do modelo — mas, como nosso objetivo era explicar os padrões emergentes, precisávamos de uma maneira de treinar em dados que ainda não existiam em nossas amostras.
Dados sintéticos gerados por IA
Confiar apenas nos dados amostrados atuais pode introduzir vieses e limitar a capacidade do modelo de se adaptar, à medida que novos padrões de comunicação evoluem. Por exemplo, as solicitações de IIP mais comuns na Roblox são para identificadores de plataformas de redes sociais populares. Um modelo treinado apenas em dados de produção poderia desenvolver um viés em relação às solicitações mais comuns e ter um desempenho inferior nas mais raras, como plataformas de redes sociais, endereços de e-mail e números de telefone menos conhecidos. A comunicação do usuário também tende a convergir para o vocabulário e os padrões de linguagem populares. Um modelo treinado apenas em dados de produção poderia se tornar tendencioso em relação a padrões de linguagem comuns e não conseguir identificar violações expressas de maneiras atípicas ou emergentes.
Para eliminar esses e outros vieses, projetamos um pipeline de geração de dados de IA que visa quaisquer pontos fracos herdados do conjunto de dados de treinamento inicial. Primeiro, geramos prompts usando uma combinação de variáveis, incluindo contexto, tipo de IIP, persona do usuário, idioma e exemplos de frases de chat. Em seguida, geramos novas frases de chat com base nessas solicitações e as inserimos no modelo.
Red teaming humano e de IA
Durante o desenvolvimento, empregamos o red teaming humano e de IA (no qual as equipes simulam ataques adversários para testar as defesas de um sistema) para testar a eficácia do modelo e refinar o treinamento. Convidamos os moderadores a experimentar diferentes métodos de solicitação e compartilhamento de IIP e solicitamos que os LLMs aumentassem esses métodos de várias maneiras. Em seguida, adicionamos quaisquer amostras que o modelo perdeu ao seu conjunto de dados de treinamento. O red teaming de IA nos ajudou a testar rapidamente muitas variações e cobrir métodos que os moderadores podem não ter coberto. Por exemplo:
Original: a senha é xxxx
IA aumentada: A SEM NHA É xxxx
Original: Bella, meu número de telefone é 346
IA aumentada: Bella, meu núm3r0 é na verdade trêsquatro6
O red teaming nos ajudou a entender melhor as lacunas em nossos dados de treinamento atuais e a adaptar nossos dados sintéticos para fechá-las. Isso também nos permitiu medir as diferenças entre as iterações do modelo, o que fica cada vez mais difícil à medida que duas versões de um modelo começam a saturar o conjunto de avaliação. Utilizamos várias versões do modelo na ferramenta de red teaming para comparar diretamente as taxas de contorno no mesmo ambiente e determinar qual modelo era estatisticamente mais eficaz.
Desempenho
Com uma média de 6,1 bilhões de mensagens de chat trocadas por dia, o Classificador de IIP recebe um pico de mais de 200 mil consultas por segundo na Roblox. Processamos esse volume com latência P90 de <100 ms. Para equilibrar a distribuição e a qualidade, escolhemos a arquitetura somente de codificação e ajustamos nosso modelo do XLM-RoBERTa-Large2. Separamos o tokenizador e os serviços de pré e pós-processamento para executar de forma eficiente na CPU e servir a arquitetura de transformador puro na GPU para reduzir os custos. Usamos também o loteamento dinâmico em servidores Triton para aumentar a taxa de transferência.
Comparação em conjuntos de dados públicos e internos
Comparamos o Classificador de IIP com outros modelos de última geração usando nossos próprios dados de produção e conjuntos de dados públicos. A maioria dos conjuntos de dados de IIP públicos se concentra no próprio texto de IIP, em vez do texto ao redor que poderia sinalizar intenção — portanto, nada alinhado com os requisitos da nossa plataforma para comparação. No entanto, queríamos ver como nosso modelo se comparava às soluções de detecção atuais usando conjuntos de dados de IIP populares, como o conjunto de dados de detecção de dados de PII de The Learning Agency Lab3 no Kaggle.
Usamos pontuações F1 porque os LLMs na comparação fornecem apenas um par (recall, precisão). Para modelos que produzem pontuações de classificação, reportamos a pontuação F1 ideal no conjunto de testes. Observe que nosso modelo requer um trecho de frases de chat do usuário como entrada e gera uma pontuação de IIP, que usamos para tomar uma decisão binária sobre as frases de chat. Para uma comparação justa, dividimos o conjunto de dados público por frase e rotulamos cada frase como positiva se ela contivesse algum token de IIP de NER positivo.
| PII V1.1 | LlamaGuard-v3 1B | LlamaGuard-v3 8B | LlamaGuard-v4 12B | NemoGuard 8B | Piiranha NER | |
| Conjunto de dados de IIP do Kaggle | 45,48% | 5,9% | 5,46% | 3,72% | 3,26% | 33,20% |
| Avaliação da Roblox em inglês | 94,34% | 3,17% | 27,73% | 26,55% | 26,29% | 13,88% |
Em nossas comparações, nosso modelo superou drasticamente outros modelos de código aberto no conjunto de dados público de The Learning Agency Lab e em nossos dados de produção interna, que incluem mais de 47 mil amostras diversas do mundo real na Roblox. O foco na incorporação de um contexto de conversação mais amplo e na adaptação constante à natureza fluida da linguagem provou ser uma abordagem eficaz para identificar mais conversas em que um usuário pretende solicitar ou compartilhar IIP.
O Classificador de IIP é apenas um dos muitos sistemas inovadores que usamos para promover a segurança e a civilidade na Roblox. A capacidade de identificar quando uma conversa se volta para uma solicitação de IIP significa que podemos capturar solicitações enigmáticas que, de outra forma, podem contornar a detecção. Embora nenhum sistema seja perfeito, os resultados do nosso primeiro ano de produção já são promissores, e estamos empolgados para compartilhar a ferramenta com a comunidade de código aberto, juntamente com as outras ferramentas do nosso kit de ferramentas de segurança de código aberto.
- The 98% recall is measured on a Roblox internal test set at 1% FPR. The dataset is collected from production data and is multireviewed and labeled by safety experts.
- Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., and Stoyanov, V. 2019. Unsupervised cross-lingual representation learning at scale. arXiv preprint arXiv:1911.02116.
- Holmes, L., Crossley, S. A., Sikka, H., and Morris, W. 2023. PIILO: An open-source system for personally identifiable information labeling and obfuscation. Information and Learning Science, 124 (9/10), 266-284.