Open Sourcing Roblox PII Classifier: onze aanpak voor AI-detectie van PII in chat
Context gebruiken om de recall te verbeteren

Elke dag genereren gebruikers gemiddeld 6,1 miljard chatberichten op Roblox. We gebruiken robuuste moderatiesystemen, stellen leeftijdsgebonden beperkingen in en bieden ouderlijk toezicht om de communicatie veilig en beschaafd te houden. Het overgrote deel van de berichten op het platform bestaat uit alledaagse gesprekken, zoals twee vrienden die een spelstrategie bespreken, maar in een klein percentage van de berichten proberen gebruikers persoonlijk identificeerbare informatie (PII) te delen die gevoelig kan zijn. PII kan vele vormen aannemen en gebruikers delen deze om allerlei onschuldige redenen: een gebruiker deelt misschien zijn gebruikersnaam van een ander platform om het spel te coördineren of een telefoonnummer om een ontluikende vriendschap op te bouwen. Er zijn echter zeldzame gevallen waarin kwaadwillenden op zoek zijn naar PII om gebruikers weg te lokken van Roblox naar andere platforms waar een groter risico bestaat op schade in de echte wereld. In de praktijk zijn deze verschillen in intentie moeilijk te onderscheiden. Daarom hanteren we een strikt beleid tegen het delen of vragen om PII. We gebruiken meerdere tools om alle gedetecteerde PII in de chat standaard te blokkeren, en we versoepelen de beperkingen alleen voor gebruikers van 18 jaar of ouder en voor gebruikers van 13 tot 17 jaar die elkaar als 'Trusted Connections' hebben geverifieerd.
Het opsporen van PII is een technische uitdaging voor de hele sector. Standaard detectietools kunnen worden omzeild en zijn niet in staat zich aan te passen aan nieuwe taalpatronen. Hoewel geen enkele tool perfect is, hebben we een AI-model ontwikkeld, Roblox PII Classifier, dat rekening houdt met de veranderende aard van taal en context gebruikt om situaties te detecteren waarin gebruikers filters proberen te omzeilen om PII te vragen of te delen.
We zijn verheugd om aan te kondigen dat we vandaag PII Classifier open source maken, samen met de andere tools in onze open-source veiligheidstoolkit. Sinds de implementatie van PII Classifier eind 2024 hebben we een snelle en voortdurende verbetering in recall gezien, waarbij de prestaties andere beschikbare modellen overtreffen. De versie van ons PII-model die we vandaag open source maken, heeft een recall van 98% voor potentiële PII-gesprekken in Engelse tekst1 op Roblox. Het model heeft ook een F1-score van 94% behaald op onze productiegegevens, waarmee het beter presteert dan andere geavanceerde veiligheidsmodellen, zoals LlamaGuard v3 8B (28%) en Piiranha NER (14%).



De uitdagingen
Het effectief op grote schaal detecteren van PII komt neer op drie belangrijke uitdagingen:
- Contrasterende patronen: Gebruikers zijn creatief en vinden voortdurend nieuwe manieren om filters te omzeilen. Een effectief systeem moet zich aanpassen naarmate de taal evolueert en nieuwe patronen ontstaan.
- Training en evaluatie: Om het meest effectieve model te bouwen, moeten we ook effectieve trainingsdatasets en meetmethoden creëren. Aangezien het model rekening moet houden met opkomende patronen, zijn de huidige productiegegevens niet voldoende voor training.
- Prestaties: Om een dergelijk model op grote schaal te kunnen aanbieden, zijn doordachte architectuur- en optimalisatiebeslissingen nodig om negatieve gevolgen voor de gebruikerservaring te voorkomen.
Adversariale patronen
Bestaande oplossingen voor PII-detectie zijn voornamelijk gebaseerd op named-entity recognition (NER), detectie op token-niveau van bepaalde soorten zelfstandige naamwoorden, zoals social media-handles, telefoonnummers en adressen. Maar het detecteren van zelfstandige naamwoorden is slechts een deel van de uitdaging. Slimme kwaadwillenden passen hun taal opzettelijk aan om NER-detectie te omzeilen (bijvoorbeeld door alpha, bravo en Charlie te gebruiken om A, B en C weer te geven of door naar een platform te verwijzen zonder het expliciet te noemen). Het is mogelijk dat een kwaadwillende gebruiker zijn intentie om contact te leggen op een ander platform kenbaar maakt zonder ooit de gevoelige informatie te delen die een NER-filter zou opvangen. De taak van PII Classifier is niet alleen het detecteren en verbergen van expliciete PII-tekst die op Roblox wordt gedeeld, maar ook het begrijpen van de context van de communicatie en het voorkomen dat kwaadwillende gebruikers überhaupt PII-gerelateerde gesprekken aangaan.
Hier volgen enkele representatieve omzeilingspatronen met behulp van een hypothetisch sociaal platform, StarTalk:
Manipulatie op tekenniveau
- "heb je zoiets als 5tärtālk waar je mee wilt bellen? ik heb een account aangemaakt een paar dagen geleden"
- "ggrr ik haat het tags Hoe heet je Dat is S en T"
Impliciete verwijzingen naar populaire sociale media
- "nogmaals, wat is je rats ppa Reverse"
- "Hé, kun je mijn naam even checken op de Yellow Sun-app? Zullen we daar chatten?"
Taal en slangtermen evolueren in de loop van de tijd, en kwaadwillenden zijn voortdurend op zoek naar nieuwe manieren om filters te omzeilen. De kracht van PII Classifier ligt in het vermogen om zich aan te passen aan nieuwe taalpatronen en omzeilingen zodra deze opduiken. Wanneer we in de praktijk vijandige patronen detecteren, nemen we deze op in het model om het continu te trainen.
Training en evaluatie

Om het model in eerste instantie te trainen, hebben we PII-gerelateerde gegevens handmatig beoordeeld en gelabeld. Dat gaf ons een startpunt, maar het stelde ons niet in staat om snel op te schalen en een uitgebreide verscheidenheid aan scenario's vast te leggen. In plaats van te proberen elke term en permutatie in miljarden chatberichten per dag handmatig door te spitten en het juiste label toe te passen, hebben we gegevenssamplers gebouwd en getest om relevante steekproeven voor training te selecteren. Ons doel was om onschuldige gesprekken uit te sluiten en ons te concentreren op gesprekken die PII-gerelateerde gegevens bevatten, om de kans op menselijke labelingsfouten te verkleinen en meer terrein te bestrijken. Twee samplers bleken het meest effectief te zijn:
- Onzekerheidssteekproeven met behulp van modeluitslagen: deze steekproef selecteerde voorbeelden die geen sterk positief of negatief signaal opriepen, waardoor we dubbelzinnige gevallen verder konden verfijnen.
- Steekproeven uit opeenvolgende PII-blokken: deze steekproef selecteerde steekproeven van gebruikers die in sommige gesprekken waren gemarkeerd, maar niet in opeenvolgende gesprekken. Deze vervolggesprekken bevatten vaker atypische taal die het huidige PII-filter had omzeild. In de praktijk zou dit eruit kunnen zien als een gebruiker die er niet in slaagt het systeem te omzeilen en het opnieuw probeert totdat hij een slimme maas in de wet vindt.
Deze combinatie van gegevensbemonstering en menselijke labeling op actuele productiegegevens vormde een sterke basis voor het trainen van het model, maar aangezien het ons doel was om rekening te houden met opkomende patronen, hadden we een manier nodig om te trainen op gegevens die nog niet in onze steekproeven voorkwamen.
Door AI gegenereerde synthetische gegevens
Als we uitsluitend zouden vertrouwen op de huidige steekproefgegevens, zou dit tot vertekeningen kunnen leiden en het vermogen van het model om zich aan te passen aan nieuwe communicatiepatronen beperken. De meest voorkomende verzoeken om PII op Roblox hebben bijvoorbeeld betrekking op populaire gebruikersnamen op sociale mediaplatforms. Een model dat uitsluitend op productiegegevens is getraind, zou een voorkeur kunnen ontwikkelen voor de meest voorkomende verzoeken en minder goed presteren bij zeldzamere verzoeken, zoals minder bekende sociale mediaplatforms, e-mailadressen en telefoonnummers. Gebruikerscommunicatie neigt ook naar populaire woordenschat en taalpatronen. Een model dat alleen op productiegegevens is getraind, zou een voorkeur kunnen krijgen voor gangbare taalpatronen en zou overtredingen die op atypische of opkomende manieren worden uitgedrukt, mogelijk niet herkennen.
Om deze en andere vooroordelen te elimineren, hebben we een AI-pijplijn voor het genereren van gegevens ontworpen die zich richt op eventuele zwakke punten die zijn overgenomen uit de oorspronkelijke trainingsdataset. Eerst hebben we prompts gegenereerd met behulp van een combinatie van variabelen, waaronder context, type PII, gebruikerspersona, taal en voorbeeldchatregels. Vervolgens hebben we op basis van deze prompts nieuwe chatregels gegenereerd en deze in het model ingevoerd.
Menselijk en AI-red teaming
Tijdens de ontwikkeling hebben we zowel menselijke als AI-red teaming (waarbij teams vijandige aanvallen simuleren om de verdediging van een systeem te testen) ingezet om de effectiviteit van het model te testen en de training te verfijnen. We hebben moderators uitgenodigd om te experimenteren met verschillende methoden voor het vragen om en delen van PII en hebben LLM's gevraagd om deze methoden op verschillende manieren uit te breiden. Vervolgens hebben we alle voorbeelden die het model had gemist toegevoegd aan de trainingsdataset. AI-red-teaming hielp ons om snel veel variaties te testen en methoden te dekken die moderators mogelijk niet hadden behandeld. Bijvoorbeeld:
Origineel: het wachtwoord is xxxx
AI-aangevuld: HET WACHTWOORD IS xxxx
Origineel: Bella, mijn telefoonnummer is 346
AI-aangevuld: Bella, mijn numm3r is eigenlijk threefour6
Red teaming hielp ons om de hiaten in onze huidige trainingsdata beter te begrijpen en onze synthetische data aan te passen om deze te dichten. Het stelde ons ook in staat om verschillen tussen modeliteraties te meten, wat steeds moeilijker wordt naarmate twee versies van een model de evaluatieset beginnen te verzadigen. We hebben meerdere versies van het model onder de red-teaming-tool getest om de bypass-percentages in dezelfde omgeving direct te vergelijken en te bepalen welk model statistisch gezien effectiever was.
Prestaties
Met gemiddeld 6,1 miljard uitgewisselde chatberichten per dag ontvangt PII Classifier een piek van meer dan 200.000 zoekopdrachten per seconde op Roblox. We verwerken dit volume met een P90-latentie van minder dan 100 ms. Om een evenwicht te vinden tussen doorvoer en kwaliteit, kozen we voor een 'encode-only'-architectuur en hebben we ons model op basis van XLM-RoBERTa-Large2 geoptimaliseerd. We scheiden de tokenizer en de pre- en post-processing-services om efficiënt op de CPU te draaien en de pure transformer-architectuur op de GPU te laten draaien om de kosten te verlagen. We maken ook gebruik van dynamische batching op Triton-servers om de doorvoer te verhogen.
Benchmarking op openbare en interne datasets
We hebben PII Classifier vergeleken met andere state-of-the-art modellen met behulp van onze eigen productiegegevens en openbare datasets. De meeste openbare PII-datasets richten zich op de PII-tekst zelf in plaats van op de omringende tekst die de intentie zou kunnen aangeven, dus niets sloot perfect aan bij onze platformvereisten voor benchmarking. Toch wilden we zien hoe ons model zich verhield tot de huidige detectieoplossingen met behulp van populaire PII-datasets, zoals de PII Data Detection Dataset3 van The Learning Agency Lab op Kaggle.
We hebben F1-scores gebruikt omdat de LLM's in de vergelijking slechts één (recall, precision) paar opleveren. Voor modellen die classificatiescores opleveren, hebben we de optimale F1-score op de testset gerapporteerd. Merk op dat ons model een fragment van de chatregels van de gebruiker als invoer vereist en een PII-score oplevert, die we gebruiken om een binaire beslissing te nemen over de chatregels. Voor een eerlijke vergelijking hebben we de openbare dataset per zin opgesplitst en elke zin als positief gelabeld als deze positieve NER PII-tokens bevatte.
PII V1.1 | ||||||
45,48% | 5,90% | 5,46% | 3,72% | 3,26% | 33,20% | |
Roblox Eval Engels | 94,34% | 3,17% | 27,73% | 26,55% | 26,29% | 13,88% |
In onze benchmarks presteerde ons model aanzienlijk beter dan andere open-source modellen, zowel op de openbare dataset van The Learning Agency Lab als op onze interne productiegegevens, die meer dan 47.000 diverse, realistische voorbeelden op Roblox bevatten. De focus op het integreren van een bredere gesprekscontext en het voortdurend aanpassen aan de veranderlijke aard van taal is een effectieve aanpak gebleken voor het detecteren van meer gesprekken waarin een gebruiker om PII vraagt of deze deelt.
PII Classifier is slechts een van de vele innovatieve systemen die we gebruiken om veiligheid en beleefdheid op Roblox te bevorderen. Het vermogen om te detecteren wanneer een gesprek afdwaalt naar een verzoek om PII betekent dat we cryptische verzoeken kunnen opvangen die anders mogelijk aan detectie zouden ontsnappen. Hoewel geen enkel systeem perfect is, zijn de resultaten van ons eerste jaar in productie al veelbelovend, en we zijn verheugd om de tool te delen met de open-sourcegemeenschap, samen met de andere tools in onze open-source veiligheidstoolkit.
- De recall van 98% is gemeten op een interne testset van Roblox bij een FPR van 1%. De dataset is verzameld uit productiegegevens en is meervoudig beoordeeld en gelabeld door veiligheidsexperts.
- Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., en Stoyanov, V. 2019. Ongesuperviseerd cross-linguaal representatieleren op schaal. arXiv-preprint arXiv:1911.02116.
- Holmes, L., Crossley, S. A., Sikka, H., en Morris, W. 2023. PIILO: Een open-source systeem voor het labelen en verbergen van persoonlijk identificeerbare informatie. Information and Learning Science, 124 (9/10), 266-284.


