Abrimos el acceso al código para Roblox PII Classifier: nuestro enfoque para la detección de PII mediante IA en el chat
Cómo usar el contexto para mejorar la recuperación
Todos los días, los usuarios generan un promedio de 6,100 millones de mensajes de chat en Roblox. Utilizamos sistemas de moderación sólidos, establecemos restricciones basadas en la edad y proporcionamos controles parentales para ayudar a mantener la comunicación segura y civilizada. La gran mayoría de los mensajes en la plataforma son conversaciones cotidianas, como dos amigos que hablan sobre la estrategia de juego; pero en un pequeño porcentaje de los mensajes, los usuarios intentan compartir información de identificación (PII) que podría ser confidencial. La PII toma muchas formas y los usuarios la comparten por muchas razones inofensivas: un usuario podría compartir su nombre de usuario de otra plataforma para coordinar el juego o un número de teléfono para fortalecer una amistad. Sin embargo, existen casos poco comunes en los que actores maliciosos buscan obtener información personal (PII) para invitar a otros usuarios a salir de Roblox y dirigirlos a otras plataformas, donde podría haber un mayor riesgo de daño en el mundo real. En la práctica, estas diferencias de intención son difíciles de discernir, por lo que tenemos políticas estrictas contra el intercambio o la búsqueda de PII. Utilizamos varias herramientas para bloquear toda la PII detectada en el chat de forma predeterminada y solo suavizamos las restricciones para los usuarios mayores de 18 años y los usuarios de 13 a 17 años que se hayan verificado mutuamente como Conexiones de confianza.
La detección de PII es un desafío técnico para toda la industria. Las herramientas de detección estándar de la industria pueden eludirse y carecen de la capacidad de adaptarse a los patrones de lenguaje emergentes. Si bien ninguna herramienta es perfecta, desarrollamos un modelo de IA, Roblox PII Classifier, para tener en cuenta la naturaleza evolutiva del lenguaje y usar el contexto para detectar situaciones en las que los usuarios intentan eludir los filtros para solicitar o compartir PII.
Nos complace anunciar que hoy estamos abriendo el acceso al código de PII Classifier junto con las otras herramientas de nuestro kit de herramientas de seguridad de código abierto. Desde la implementación de PII Classifier a finales de 2024, hemos visto una mejora rápida y continua en la recuperación, con un rendimiento que supera otros modelos disponibles. La versión del modelo de PII que estamos poniendo a disposición del público hoy tiene un 98% de recuperación de posibles conversaciones de PII en texto en inglés1 en Roblox. El modelo también ha logrado una puntuación F1 del 94% en nuestros datos de producción, superando a otros modelos de seguridad de última generación, como LlamaGuard v3 8B (28%) y Piiranha NER (14%).
Los desafíos
La detección efectiva de PII a escala se reduce a tres desafíos principales:
-
Patrones adversarios: los usuarios son creativos y encuentran continuamente nuevas formas de eludir los filtros. Un sistema eficaz debe adaptarse a medida que el lenguaje evoluciona y surgen nuevos patrones.
-
Capacitación y evaluación: para construir el modelo más efectivo, también debemos crear conjuntos de datos de capacitación y métodos de medición efectivos. Dado que el modelo debe tener en cuenta los patrones emergentes, los datos de producción actuales no son suficientes para el entrenamiento.
-
Rendimiento: ofrecer un modelo de este tipo a escala requiere una arquitectura cuidadosa y decisiones de optimización para evitar un impacto negativo en la experiencia del usuario.
Patrones adversarios
Las soluciones de detección de PII actuales se basan principalmente en el reconocimiento de entidades nombradas (NER), la detección a nivel de token de ciertos tipos de sustantivos, como identificadores de redes sociales, números de teléfono y direcciones. Pero la detección de sustantivos es solo una parte del desafío. Actores maliciosos y astutos alteran intencionalmente su lenguaje para eludir la detección por NER (por ejemplo, usando alfa, bravo y charlie para representar A, B y C, o haciendo referencia a una plataforma sin nombrarla explícitamente). Es posible que un actor malicioso exprese su intención de conectarse en otra plataforma sin compartir la información confidencial que capturaría un filtro NER. La tarea del Clasificador de PII no es solo detectar y ofuscar el texto explícito de PII compartido en Roblox, sino también comprender el contexto de la comunicación y evitar que los actores maliciosos participen en conversaciones relacionadas con PII desde un inicio.
A continuación, se muestran algunos patrones de omisión representativos utilizando una plataforma social hipotética, StarTalk:
Manipulación a nivel de caracteres
- "¿tienes como 5tärtālk para platicar? hice una cta hc uns días"
- "ggrr lo odio tags ¿Cómo te llamas? Eso es S y T"
Referencias implícitas a redes sociales populares
- “de nuevo, ¿cuál es tu allertse ppa inversa?”
- "oye, ¿por qué no ves mi nombre en la app del sol amarillo? ¿hablamos ahí?"
El lenguaje y la jerga evolucionan con el tiempo, y los actores maliciosos buscan constantemente nuevas formas de evadir los filtros. La fortaleza del Clasificador de PII radica en su capacidad para adaptarse a los nuevos patrones de lenguaje y soluciones a medida que surgen. Cuando detectamos patrones adversos del mundo real, los incorporamos de nuevo en el modelo para ayudar a entrenarlo de forma continua.
Capacitación y evaluación
Para entrenar el modelo inicialmente, revisamos y etiquetamos manualmente los datos relacionados con la PII. Eso nos dio un punto de partida, pero no nos permitiría escalar y capturar rápidamente una amplia variedad de escenarios. En lugar de tratar de revisar manualmente cada término y permutación que se encuentran en miles de millones de mensajes de chat por día y aplicar la etiqueta adecuada, construimos y probamos muestras de datos para seleccionar muestras relevantes para el entrenamiento. Nuestro objetivo era excluir las conversaciones inofensivas y centrarnos en las conversaciones con datos relacionados con la PII para reducir la posibilidad de errores de etiquetado humano y cubrir más terreno. Dos muestreadores han demostrado ser más efectivos:
- Muestreo de incertidumbre con resultados de puntuación del modelo: este muestreador seleccionó muestras que no evocaban una fuerte señal positiva o negativa, lo que nos permitió refinar aún más los casos ambiguos.
- Muestras de bloques de PII consecutivos: este muestreador seleccionó muestras de usuarios que habían sido marcados en algunas conversaciones, pero no en conversaciones consecutivas. Estas conversaciones de seguimiento tenían una mayor probabilidad de contener lenguaje atípico pasado por alto en el filtro de PII actual. En la práctica, un ejemplo podría ser un usuario que no logra eludir el sistema y lo intenta de nuevo hasta que encuentra una manera ingeniosa.
Esta combinación de muestreo de datos y etiquetado humano en los datos de producción actuales proporcionó una base sólida para entrenar el modelo, pero dado que nuestro objetivo era tener en cuenta los patrones emergentes, necesitábamos una forma de entrenar con datos que aún no existían en las muestras.
Datos sintéticos generados por IA
Confiar únicamente en los datos muestreados actuales podría introducir sesgos y limitar la capacidad del modelo para adaptarse a medida que evolucionan los nuevos patrones de comunicación. Por ejemplo, las solicitudes de PII más comunes en Roblox son para identificadores de plataformas de redes sociales populares. Un modelo entrenado solo con datos de producción podría desarrollar un sesgo hacia las solicitudes más comunes y tener un rendimiento inferior en las más inusuales, como plataformas de redes sociales, direcciones de correo electrónico y números de teléfono menos conocidos. La comunicación del usuario también tiende a converger en el vocabulario popular y los patrones de lenguaje. Un modelo entrenado solo con datos de producción podría volverse sesgado hacia patrones de lenguaje comunes y no identificar infracciones expresadas de manera atípica o emergente.
Para eliminar estos y otros sesgos, diseñamos un canal de generación de datos de IA que se dirige a cualquier debilidad heredada del conjunto de datos de entrenamiento inicial. Primero, generamos indicaciones utilizando una combinación de variables, como el contexto, el tipo de PII, la persona del usuario, el idioma y las líneas de chat de ejemplo. Luego, generamos nuevas líneas de chat basadas en estas indicaciones y las introdujimos en el modelo.
Equipo rojo humano y de IA
Empleamos equipos rojos humanos y de IA (donde los equipos simulan ataques de confrontación para poner a prueba las defensas de un sistema) durante el desarrollo para probar la efectividad del modelo y refinar el entrenamiento. Invitamos a los moderadores a experimentar con diferentes métodos para solicitar y compartir PII e impulsamos a los LLM a aumentar estos métodos de varias maneras, luego agregamos cualquier muestra que el modelo omitiera a su conjunto de datos de entrenamiento. El equipo rojo de IA nos ayudó a probar rápidamente muchas variaciones y cubrir métodos que los moderadores pueden no haber cubierto. Por ejemplo:
Original: la contraseña es xxxx
IA aumentada: LA CONTR SN ES xxxx
Original: Bella, mi número de teléfono es 346
IA aumentada: Bella, mi nm3r0 es en realidad trescuatro6
El equipo rojo nos ayudó a comprender mejor las brechas en nuestros datos de entrenamiento actuales y a adaptar nuestros datos sintéticos para cerrarlas. También nos permitió medir las diferencias entre las iteraciones del modelo, lo que se vuelve cada vez más difícil a medida que dos versiones de un modelo comienzan a saturar el conjunto de evaluación. Presentamos varias versiones del modelo bajo la herramienta del equipo rojo para comparar directamente las tasas de omisión en el mismo entorno y determinar el modelo estadísticamente más efectivo.
Rendimiento
Con un promedio de 6,100 millones de mensajes de chat intercambiados por día, el clasificador de PII recibe un pico de más de 200,000 consultas por segundo en Roblox. Manejamos este volumen con una latencia P90 de <100 ms. Para equilibrar el servicio y la calidad, elegimos la arquitectura de solo codificación y ajustamos nuestro modelo de XLM-RoBERTa-Large2. Separamos los servicios de tokenizador y de pre y posprocesamiento para que se ejecuten de manera eficiente en la CPU y sirvan a la arquitectura de transformador puro en la GPU para reducir los costos. También utilizamos el procesamiento por lotes dinámico en los servidores Triton para aumentar el rendimiento.
Evaluación comparativa en conjuntos de datos públicos e internos
Comparamos PII Classifier con otros modelos de última generación con nuestros propios datos de producción y conjuntos de datos públicos. La mayoría de los conjuntos de datos de PII públicos se centran en el texto de PII en sí mismo en lugar del texto circundante que podría indicar intención, por lo que nada está perfectamente alineado con los requisitos de nuestra plataforma para la evaluación comparativa. Sin embargo, queríamos ver cómo se comparaba nuestro modelo con las soluciones de detección actuales utilizando conjuntos de datos de PII populares, como el conjunto de datos de detección de datos de PII deThe Learning Agency Lab3 en Kaggle.
Utilizamos las puntuaciones F1 porque los LLM en la comparación solo proporcionan un par (recuperación, precisión). Para los modelos que generan puntuaciones de clasificación, informamos la puntuación F1 óptima en el conjunto de pruebas. Ten en cuenta que nuestro modelo requiere un fragmento de líneas de chat del usuario como entrada y genera una puntuación de PII, que utilizamos para tomar una decisión binaria en las líneas de chat. Para una comparación justa, dividimos el conjunto de datos públicos por oración y etiquetamos cada oración como positiva si contenía algún token de PII de NER positivo.
| PII V1.1 | LlamaGuard-v3 1B | LlamaGuard-v3 8B | LlamaGuard-v4 12B | NemoGuard 8B | Piiranha NER | |
| Conjunto de datos de PII de Kaggle | 45.48% | 5.90% | 5.46% | 3.72% | 3.26% | 33.20% |
| Evaluación de Roblox en inglés | 94.34% | 3.17% | 27.73% | 26.55% | 26.29% | 13.88% |
En nuestros puntos de referencia, nuestro modelo superó drásticamente a otros modelos de código abierto, tanto en el conjunto de datos públicos de The Learning Agency Lab como en nuestros datos de producción interna, que incluyen más de 47,000 muestras diversas del mundo real en Roblox. El enfoque en incorporar un contexto conversacional más amplio y adaptarse continuamente a la naturaleza fluida del lenguaje ha demostrado ser un enfoque efectivo para detectar más conversaciones en las que un usuario tiene la intención de solicitar o compartir PII.
El Clasificador de PII es solo uno de los muchos sistemas innovadores que utilizamos para promover la seguridad y la civilidad en Roblox. Tener la capacidad de detectar si una conversación se desvía hacia una solicitud de PII significa que podemos capturar solicitudes crípticas que de otro modo podrían eludir la detección. Si bien ningún sistema es perfecto, los resultados de nuestro primer año en producción ya son prometedores y estamos entusiasmados de compartir la herramienta con la comunidad de código abierto junto con las otras herramientas de nuestro kit de herramientas de seguridad de código abierto.
- 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.