O conteúdo deste site foi traduzido usando inteligência artificial (IA) ou tecnologia de tradução automática e pode conter erros.

Skip to content

Código-fonte aberto do classificador de PII do Roblox: nossa abordagem para a detecção de PII por IA no chat

Usando o contexto para melhorar a recuperação

Todos os dias, os usuários geram uma média de 6,1 bilhões de mensagens de chat no Roblox. Utilizamos sistemas de moderação robustos, 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 consiste em conversas cotidianas, como dois amigos discutindo estratégias de jogo, mas em uma pequena porcentagem das mensagens, os usuários tentam compartilhar informações de identificação pessoal (PII) que podem ser confidenciais. As PII assumem muitas formas, e os usuários as compartilham por motivos inofensivos: um usuário pode compartilhar seu nome de usuário de outra plataforma para coordenar o jogo ou um número de telefone para construir uma amizade incipiente. No entanto, há casos raros em que pessoas mal-intencionadas buscam PII para atrair usuários para fora do Roblox e 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 rígidas contra o compartilhamento ou a busca de PII. Usamos várias ferramentas para bloquear todas as PII detectadas no chat por padrão, e flexibilizamos as restrições apenas para usuários com 18 anos ou mais e usuários de 13 a 17 anos que se verificaram mutuamente como Conexões Confiáveis. 

A detecção de PII é um desafio técnico em todo o setor. Ferramentas de detecção padrão do setor podem ser contornadas e carecem da capacidade de se adaptar a padrões de linguagem emergentes. Embora nenhuma ferramenta seja perfeita, desenvolvemos um modelo de IA, o Roblox PII Classifier, para levar em conta a natureza evolutiva da linguagem e usar o contexto para detectar situações em que os usuários estão tentando contornar filtros para solicitar ou compartilhar PII.

Estamos entusiasmados em anunciar que hoje estamos disponibilizando o PII Classifier como 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 PII Classifier no final de 2024, observamos uma melhoria rápida e contínua na taxa de recuperação, com desempenho que supera outros modelos disponíveis. A versão do nosso modelo de PII que estamos disponibilizando como código aberto hoje apresenta uma taxa de recuperação de 98% de conversas com PII em potencial em textos em inglês1 no 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 o LlamaGuard v3 8B (28%) e o Piiranha NER (14%). 

Os desafios 

A detecção eficaz de PII em grande escala resume-se a três desafios principais: 

  1. Padrões adversários: os usuários são criativos e encontram continuamente novas maneiras de contornar os filtros. Um sistema eficaz deve se adaptar à medida que a linguagem evolui e novos padrões surgem.
  2. Treinamento e avaliação: para construir o modelo mais eficaz, também precisamos criar conjuntos de dados de treinamento e métodos de medição eficazes. Como o modelo deve levar em conta padrões emergentes, os dados de produção atuais não são suficientes para o treinamento.  
  3. Desempenho: Oferecer um modelo desse tipo em grande escala requer uma arquitetura bem pensada e decisões de otimização para evitar impactos negativos na experiência do usuário.

Padrões adversários

As soluções existentes de detecção de PII dependem principalmente do reconhecimento de entidades nomeadas (NER), detecção em nível de token de certos tipos de substantivos, como nomes de usuário em redes sociais, números de telefone e endereços. Mas a detecção de substantivos é apenas parte do desafio. Criminosos experientes alteram intencionalmente sua linguagem para contornar a detecção do NER (por exemplo, usando alfa, bravo e Charlie para representar A, B e C ou referenciando uma plataforma sem nomeá-la explicitamente). É possível que um agente mal-intencionado sinalize sua intenção de se conectar em outra plataforma sem nunca compartilhar as informações confidenciais que um filtro NER detectaria. A tarefa do PII Classifier não é apenas detectar e ofuscar textos explícitos de PII compartilhados no Roblox, mas também compreender o contexto da comunicação e impedir que agentes mal-intencionados se envolvam em conversas relacionadas a PII desde o início. 

Aqui estão alguns padrões representativos de contorno usando uma plataforma social hipotética, o StarTalk:

Manipulação no nível de caracteres
  1. "você tem tipo 5tärtālk que queira ligar? criei uma conta há uns dois dias"
  2. "ggrr odeio tags. Qual é o seu nome? É S e T"
Referências implícitas a redes sociais populares
  1. “De novo, qual é o seu ppa no Rats? Reverse”
  2. "ei, você se importaria de dar uma olhada no meu nome no app yellow sun? vamos bater um papo por lá?"

A linguagem e as gírias evoluem com o tempo, e os malfeitores estão sempre procurando novas maneiras de burlar os filtros. O ponto forte do PII Classifier está na sua capacidade de se adaptar a novos padrões de linguagem e 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 de forma contínua. 

Treinamento e Avaliação 

non definito
I tre pilastri della curatela dei dati sostengono lo sviluppo di modelli, che a loro volta favoriscono una migliore curatela dei dati.

Para treinar o modelo inicialmente, revisamos e rotulamos manualmente os dados relacionados a PII. Isso nos deu um ponto de partida, mas não nos permitiria escalar rapidamente e capturar uma ampla variedade de cenários. Em vez de tentar vasculhar manualmente cada termo e permutação 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 inofensivas e focar nas conversas que continham dados relacionados a PII para reduzir a possibilidade de erros de rotulagem humana e abranger mais terreno. Dois amostradores se mostraram mais eficazes:

  1. Amostragem de incerteza usando resultados de pontuação do modelo: esse amostrador selecionou amostras que não evocavam um sinal positivo ou negativo forte, permitindo-nos refinar ainda mais os casos ambíguos.
  2. Amostras de blocos consecutivos de PII: esse amostrador selecionou amostras de usuários que haviam sido sinalizados em algumas conversas, mas não em conversas consecutivas. Essas conversas subsequentes eram mais propensas a conter linguagem atípica que havia contornado o filtro de PII atual. Na prática, isso poderia se parecer com um usuário que não consegue contornar o sistema e tenta novamente até encontrar uma brecha inteligente. 

Essa combinação de amostragem de dados e rotulagem humana em dados de produção atuais forneceu uma base sólida para treinar o modelo, mas como nosso objetivo era levar em conta padrões emergentes, precisávamos de uma maneira de treinar com dados que ainda não existiam em nossas amostras. 

Dados sintéticos gerados por IA

Confiar exclusivamente nos dados amostrados atuais poderia 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 PII mais comuns no Roblox são relacionadas a nomes de usuário de plataformas populares de mídia social. Um modelo treinado apenas com dados de produção poderia desenvolver um viés em relação às solicitações mais comuns e apresentar desempenho inferior em casos mais raros, como plataformas de mídia social menos conhecidas, endereços de e-mail e números de telefone. A comunicação dos usuários também tende a convergir para vocabulário e padrões de linguagem populares. Um modelo treinado apenas com dados de produção poderia ficar tendencioso em relação a padrões de linguagem comuns e deixar de 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 PII, persona do usuário, idioma e exemplos de frases de chat. Em seguida, geramos novas frases de chat com base nesses prompts e as alimentamos no modelo.  

Equipes vermelhas humanas e de IA

Empregamos tanto o red teaming humano quanto o de IA (onde equipes simulam ataques adversários para testar as defesas de um sistema) durante o desenvolvimento para testar a eficácia do modelo e refinar o treinamento. Convidamos moderadores para experimentar diferentes métodos de solicitar e compartilhar PII e solicitamos que os LLMs aprimorassem esses métodos de várias maneiras; em seguida, adicionamos quaisquer amostras que o modelo tenha deixado de identificar ao seu conjunto de dados de treinamento. O red teaming com IA nos ajudou a testar rapidamente muitas variações e a abranger métodos que os moderadores talvez não tivessem abordado. Por exemplo: 

Original: a senha é xxxx
Aprimorado pela IA: A SENHA É xxxx

Original: Bella, meu número de telefone é 346
Aprimorado pela IA: Bella, meu núm3ro é 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 preenchê-las. Também nos permitiu medir diferenças entre iterações do modelo, o que se torna 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 PII Classifier recebe um pico de mais de 200.000 consultas por segundo no Roblox. Lidamos com esse volume com latência P90 inferior a 100 ms. Para equilibrar o desempenho e a qualidade, escolhemos uma arquitetura apenas de codificação e ajustamos nosso modelo a partir do XLM-RoBERTa-Large2. Separamos o tokenizador e os serviços de pré e pós-processamento para rodar com eficiência na CPU e executamos a arquitetura de transformador puro na GPU para reduzir custos. Também usamos processamento em lote dinâmico nos servidores Triton para aumentar a taxa de transferência. 

Avaliação comparativa em conjuntos de dados públicos e internos 

Comparamos o PII Classifier 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 públicos de PII se concentra no próprio texto de PII, em vez do texto circundante que poderia indicar intenção, portanto, nada se alinhava perfeitamente aos requisitos da nossa plataforma para a comparação. Mesmo assim, queríamos ver como nosso modelo se comparava às soluções de detecção atuais usando conjuntos de dados de PII populares, como o Conjunto de Dados de Detecção de PII do The Learning Agency Lab³ no Kaggle.

Utilizamos pontuações F1 porque os LLMs na comparação fornecem apenas um par (recall, precisão). Para modelos que geram pontuações de classificação, relatamos a pontuação F1 ideal no conjunto de teste. Observe que nosso modelo requer um trecho das linhas de bate-papo do usuário como entrada e gera uma pontuação de PII, que usamos para tomar uma decisão binária sobre as linhas de bate-papo. Para uma comparação justa, dividimos o conjunto de dados público por frase e classificamos cada frase como positiva se ela contivesse quaisquer tokens de PII de NER positivos.

PII V1.1

LlamaGuard-v3 1B

LlamaGuard-v3 8B

LlamaGuard-v4 12B

NemoGuard 8B

Piiranha NER

Conjunto de dados PII do Kaggle

45,48%

5,90%

5,46%

3,72%

3,26%

33,20%

Avaliação do Roblox em inglês

94,34%

3,17%

27,73%

26,55%

26,29%

13,88%

Em nossos benchmarks, nosso modelo superou drasticamente outros modelos de código aberto tanto no conjunto de dados público do The Learning Agency Lab quanto em nossos dados internos de produção, que incluem mais de 47.000 amostras diversas e reais no Roblox. O foco em incorporar um contexto conversacional mais amplo e em se adaptar continuamente à natureza fluida da linguagem provou ser uma abordagem eficaz para detectar mais conversas nas quais um usuário pretende solicitar ou compartilhar PII.  

O PII Classifier é apenas um dos muitos sistemas inovadores que usamos para promover a segurança e a civilidade no Roblox. A capacidade de detectar quando uma conversa se desvia para uma solicitação de PII significa que podemos capturar solicitações enigmáticas que, de outra forma, poderiam passar despercebidas. Embora nenhum sistema seja perfeito, os resultados do nosso primeiro ano em produção já são promissores, e estamos entusiasmados em 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. 

  1. A taxa de recuperação de 98% é medida em um conjunto de testes internos da Roblox com FPR de 1%. O conjunto de dados é coletado a partir de dados de produção e é revisado várias vezes e rotulado por especialistas em segurança.
  2.  Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., e Stoyanov, V. 2019. Aprendizado de representação interlinguística não supervisionado em escala. Pré-impressão arXiv arXiv:1911.02116.
  3.  Holmes, L., Crossley, S. A., Sikka, H., e Morris, W. 2023. PIILO: Um sistema de código aberto para rotulagem e ofuscação de informações de identificação pessoal. Information and Learning Science, 124 (9/10), 266-284.