Roblox PII 분류기 오픈소스화: 채팅 내 AI PII 탐지를 위한 우리의 접근 방식
컨텍스트를 활용한 리콜률 향상

매일 Roblox 사용자들은 평균 61억 건의 채팅 메시지를 생성합니다. 당사는 강력한 관리 시스템을 운영하고, 연령별 제한을 설정하며, 부모가 자녀의 이용을 관리할 수 있는 기능을 제공하여 안전하고 건전한 소통 환경을 조성하고 있습니다. 플랫폼상의 메시지 대부분은 두 친구가 게임 플레이 전략을 논의하는 것과 같은 일상적인 대화이지만, 극히 일부 메시지에서 사용자들은 민감할 수 있는 개인 식별 정보(PII)를 공유하려 시도하기도 합니다. PII는 다양한 형태를 띠며, 사용자들은 무해한 이유로 이를 공유하기도 합니다. 예를 들어, 게임 플레이를 조율하기 위해 다른 플랫폼의 사용자 이름을 공유하거나, 막 시작된 우정을 다지기 위해 전화번호를 공유할 수 있습니다. 그러나 극히 드문 경우지만, 악의적인 행위자들이 PII를 노려 사용자를 로블록스에서 다른 플랫폼으로 유인하여 현실 세계에서 더 큰 피해를 입힐 위험이 있는 경우도 있습니다. 실제로 이러한 의도의 차이를 식별하기는 어렵기 때문에, 저희는 PII의 공유나 요구에 대해 엄격한 정책을 적용하고 있습니다. 기본적으로 채팅에서 탐지된 모든 PII를 차단하기 위해 여러 도구를 사용하며, 18세 이상 사용자나 서로를 '신뢰할 수 있는 연결(Trusted Connections)'로 인증한 13세에서 17세 사용자에 대해서만 제한을 완화합니다.
PII 탐지는 업계 전반에 걸친 기술적 과제입니다. 업계 표준 탐지 도구는 우회될 수 있으며, 새롭게 등장하는 언어 패턴에 적응하는 능력이 부족합니다. 완벽한 도구는 없지만, 우리는 언어의 진화하는 특성을 고려하고 문맥을 활용하여 사용자가 필터를 우회해 PII를 요청하거나 공유하려는 상황을 탐지하기 위해 'Roblox PII Classifier'라는 AI 모델을 개발했습니다.
오늘, 저희는 오픈소스 안전 툴킷의 다른 도구들과 함께 PII 분류기를 오픈소스로 공개하게 되어 기쁘게 생각합니다. 2024년 말 PII 분류기를 도입한 이후, 리콜률에서 빠르고 지속적인 개선을 보였으며, 그 성능은 시중의 다른 모델들을 능가합니다. 오늘 오픈소스로 공개하는 PII 모델 버전은 Roblox 내 영어 텍스트1에서 잠재적인 PII 대화의 98%를 리콜합니다. 또한 이 모델은 실제 운영 데이터에서 94%의 F1 점수를 기록하여, LlamaGuard v3 8B(28%) 및 Piiranha NER(14%)과 같은 다른 최첨단 안전 모델들을 능가했습니다.



과제
대규모 환경에서 PII를 효과적으로 탐지하는 것은 크게 세 가지 주요 과제로 요약됩니다:
- 적대적 패턴: 사용자들은 창의적이며 필터를 우회할 새로운 방법을 끊임없이 찾아냅니다. 효과적인 시스템은 언어가 진화하고 새로운 패턴이 등장함에 따라 적응해야 합니다.
- 훈련 및 평가: 가장 효과적인 모델을 구축하기 위해서는 효과적인 훈련 데이터셋과 측정 방법도 마련해야 합니다. 모델이 새롭게 나타나는 패턴을 반영해야 하므로, 현재의 운영 데이터만으로는 훈련에 충분하지 않습니다.
- 성능: 이러한 모델을 대규모로 운영하려면 사용자 경험에 부정적인 영향을 미치지 않도록 신중한 아키텍처 설계와 최적화 결정이 필요합니다.
적대적 패턴
기존 PII 탐지 솔루션은 주로 명사체 인식(NER)에 의존하며, 소셜 미디어 핸들, 전화번호, 주소와 같은 특정 유형의 명사를 토큰 단위로 탐지합니다. 그러나 명사 탐지는 문제의 일부에 불과합니다. 노련한 악의적 행위자들은 NER 탐지를 우회하기 위해 의도적으로 언어를 변형합니다(예: A, B, C를 나타내기 위해 알파, 브라보, 찰리를 사용하거나, 플랫폼 이름을 명시하지 않고 간접적으로 언급하는 방식). 악의적인 사용자는 NER 필터가 포착할 수 있는 민감한 정보를 전혀 공유하지 않으면서도 다른 플랫폼에서 연결하려는 의도를 암시할 수 있습니다. PII 분류기의 임무는 Roblox에서 공유되는 명시적인 PII 텍스트를 탐지하고 난독화하는 것뿐만 아니라, 대화의 맥락을 이해하고 애초에 악의적인 사용자가 PII 관련 대화에 참여하지 못하도록 차단하는 것입니다.
가상의 소셜 플랫폼인 StarTalk를 예로 들어 몇 가지 대표적인 우회 패턴을 소개합니다:
문자 단위 조작
- "5tärtālk 같은 거 있어? 전화하고 싶은데. 나 며칠 전에 계정 만들었어"
- "으으, 태그 진짜 싫다. 네 이름 뭐야? S랑 T잖아"
인기 소셜 미디어에 대한 암시적 언급
- "다시 물어볼게, 네 랫츠 PPA는 뭐야? 리버스"
- "야, 옐로우 선 앱에서 내 이름 좀 확인해 줄래? 거기서 대화할까?"
언어와 속어는 시간이 지남에 따라 진화하며, 악의적인 사용자들은 필터를 우회할 새로운 방법을 끊임없이 모색합니다. PII Classifier의 강점은 새로운 언어 패턴과 우회 방법이 등장할 때마다 이에 적응할 수 있는 능력에 있습니다. 실제 적대적 패턴을 탐지하면, 이를 모델에 다시 반영하여 지속적으로 학습을 돕습니다.
훈련 및 평가

모델을 초기 훈련하기 위해, 우리는 PII 관련 데이터를 수동으로 검토하고 라벨링했습니다. 이를 통해 시작점을 마련할 수는 있었지만, 빠르게 규모를 확장하여 광범위한 시나리오를 포착하기에는 한계가 있었습니다. 매일 수십억 건의 채팅 메시지에서 발견되는 모든 용어와 조합을 일일이 수동으로 샅샅이 뒤져 적절한 라벨을 부여하는 대신, 훈련에 필요한 관련 샘플을 선별하기 위해 데이터 샘플러를 구축하고 테스트했습니다. 우리의 목표는 무해한 대화를 제외하고 PII 관련 데이터가 포함된 대화에 집중함으로써, 사람의 라벨링 오류 가능성을 줄이고 더 광범위한 영역을 커버하는 것이었습니다. 다음 두 가지 샘플러가 가장 효과적인 것으로 입증되었습니다:
- 모델 점수 출력을 활용한 불확실성 샘플링: 이 샘플러는 강한 긍정적 또는 부정적 신호를 유발하지 않는 샘플을 선택하여, 모호한 사례를 더욱 정교하게 분류할 수 있게 해주었습니다.
- 연속적인 PII 블록에서 추출한 샘플: 이 샘플러는 일부 대화에서는 플래그가 지정되었으나 연속적인 대화에서는 그렇지 않은 사용자의 샘플을 선택했습니다. 이러한 후속 대화에는 기존 PII 필터를 우회한 비정형 언어가 포함될 가능성이 더 높았습니다. 실제로 이는 사용자가 시스템을 우회하는 데 실패한 후, 교묘한 허점을 찾을 때까지 계속 시도하는 경우와 유사할 수 있습니다.
현재 운영 데이터에 대한 이러한 데이터 샘플링과 인간 라벨링의 조합은 모델 훈련을 위한 견고한 기반을 제공했지만, 우리의 목표는 새롭게 나타나는 패턴을 반영하는 것이었기 때문에, 샘플에 아직 존재하지 않는 데이터로 훈련할 수 있는 방법이 필요했습니다.
AI 생성 합성 데이터
현재 샘플링된 데이터에만 의존하면 편향이 발생할 수 있으며, 새로운 소통 패턴이 진화함에 따라 모델의 적응 능력이 제한될 수 있습니다. 예를 들어, Roblox에서 가장 흔한 PII 요청은 인기 있는 소셜 미디어 플랫폼의 아이디입니다. 운영 데이터만으로 훈련된 모델은 가장 흔한 요청에 편향될 수 있으며, 덜 알려진 소셜 미디어 플랫폼, 이메일 주소, 전화번호와 같은 드문 요청에 대해서는 성능이 떨어질 수 있습니다. 또한 사용자 커뮤니케이션은 인기 있는 어휘와 언어 패턴으로 수렴하는 경향이 있습니다. 실제 운영 데이터만으로 훈련된 모델은 일반적인 언어 패턴에 편향되어 비정형적이거나 새롭게 등장하는 방식으로 표현된 위반 사항을 식별하지 못할 수 있습니다.
이러한 편향과 기타 편향을 제거하기 위해, 우리는 초기 훈련 데이터셋에서 유래한 모든 취약점을 타겟으로 하는 AI 데이터 생성 파이프라인을 설계했습니다. 먼저, 컨텍스트, PII 유형, 사용자 페르소나, 언어, 예시 대화 문구 등 다양한 변수를 조합하여 프롬프트를 생성했습니다. 그런 다음, 이 프롬프트를 기반으로 새로운 대화 문구를 생성하여 모델에 입력했습니다.
인간 및 AI 레드팀 활동
개발 과정에서 모델의 효과성을 검증하고 훈련을 개선하기 위해, 인간과 AI 레드팀(시스템의 방어 체계를 테스트하기 위해 적대적 공격을 시뮬레이션하는 팀)을 모두 활용했습니다. 우리는 운영자(moderators)를 초청하여 PII를 요청하고 공유하는 다양한 방법을 실험하게 했으며, LLM(대규모 언어 모델)에게 이러한 방법을 다양한 방식으로 확장하도록 유도한 후, 모델이 놓친 샘플을 훈련 데이터셋에 추가했습니다. AI 레드팀링은 수많은 변형을 신속하게 테스트하고 운영자가 다루지 못했을 수도 있는 방법들을 포괄하는 데 도움이 되었습니다. 예를 들어:
원문: 비밀번호는 xxxx입니다.
AI 보완: THE PAAS WURD IS xxxx입니다.
원문: 벨라, 내 전화번호는 346이에요.
AI 보완: 벨라, 내 넘버는 사실 threefour6이에요.
레드 팀링을 통해 우리는 현재 훈련 데이터의 공백을 더 잘 이해하고, 이를 메우기 위해 합성 데이터를 조정할 수 있었습니다. 또한 모델의 두 버전이 평가 세트를 포화 상태로 만들면서 점점 더 어려워지는 모델 이터레이션 간의 차이를 측정할 수 있었습니다. 우리는 레드 팀링 도구 하에서 여러 버전의 모델을 실행하여 동일한 환경에서 우회율을 직접 비교하고, 통계적으로 더 효과적인 모델이 무엇인지 판단했습니다.
성능
일일 평균 61억 건의 채팅 메시지가 교환되는 가운데, PII 분류기는 Roblox에서 초당 최대 20만 건 이상의 쿼리를 처리합니다. 우리는 100ms 미만의 P90 지연 시간으로 이 처리량을 처리합니다. 서비스 제공과 품질 간의 균형을 맞추기 위해, 우리는 인코딩 전용 아키텍처를 선택하고 XLM-RoBERTa-Large2 모델을 미세 조정했습니다. 우리는 토큰화 및 전처리·후처리 서비스를 분리하여 CPU에서 효율적으로 실행하고, 순수 트랜스포머 아키텍처를 GPU에서 제공하여 비용을 절감합니다. 또한 처리량을 높이기 위해 Triton 서버에서 동적 배칭을 사용합니다.
공개 및 내부 데이터셋을 활용한 벤치마킹
우리는 자체 운영 데이터와 공개 데이터셋을 사용하여 PII Classifier를 다른 최첨단 모델들과 비교 평가했습니다. 대부분의 공개 PII 데이터셋은 의도를 암시할 수 있는 주변 텍스트보다는 PII 텍스트 자체에 초점을 맞추고 있어, 벤치마킹을 위한 우리 플랫폼의 요구 사항과 완벽하게 부합하는 데이터셋은 없었습니다. 그럼에도 불구하고, Kaggle에 있는 The Learning Agency Lab의 PII 데이터 탐지 데이터셋3과 같은 널리 사용되는 PII 데이터셋을 활용해 우리 모델이 현재의 탐지 솔루션들과 비교해 어떤 수준인지 확인하고 싶었습니다.
비교 대상인 대규모 언어 모델(LLM)들은 단 하나의 (리콜, 정밀도) 쌍만 제공하기 때문에 F1 점수를 사용했습니다. 분류 점수를 출력하는 모델의 경우, 테스트 세트에서 얻은 최적의 F1 점수를 보고했습니다. 참고로, 저희 모델은 사용자 채팅 문장의 일부를 입력으로 받아 PII 점수를 출력하며, 이 점수를 사용하여 해당 채팅 문장에 대한 이진 판정을 내립니다. 공정한 비교를 위해 공개 데이터셋을 문장 단위로 분할하고, 각 문장에 긍정적 NER PII 토큰이 포함되어 있으면 긍정(positive)으로 라벨링했습니다.
PII V1.1 | ||||||
45.48% | 5.90% | 5.46% | 3.72% | 3.26% | 33.20% | |
Roblox 평가 (영어) | 94.34% | 3.17% | 27.73% | 26.55% | 26.29% | 13.88% |
벤치마크 결과, 당사의 모델은 The Learning Agency Lab의 공개 데이터셋과 Roblox 내 47,000개 이상의 다양한 실제 샘플을 포함하는 내부 운영 데이터 모두에서 다른 오픈소스 모델들을 압도적으로 능가했습니다. 더 광범위한 대화 맥락을 반영하고 언어의 유동적인 특성에 지속적으로 적응하는 데 중점을 둔 접근 방식은, 사용자가 PII를 요청하거나 공유하려는 의도를 가진 대화를 더 많이 탐지하는 데 효과적인 것으로 입증되었습니다.
PII 분류기는 로블록스(Roblox)에서 안전과 건전한 문화를 증진하기 위해 우리가 사용하는 수많은 혁신적인 시스템 중 하나일 뿐입니다. 대화가 PII 요청으로 흐를 때 이를 감지할 수 있다는 것은, 그렇지 않으면 탐지를 피할 수 있는 모호한 요청까지 포착할 수 있음을 의미합니다. 완벽한 시스템은 없지만, 운영 첫해의 결과는 이미 유망하며, 저희는 오픈소스 안전 툴킷에 포함된 다른 도구들과 함께 이 도구를 오픈소스 커뮤니티와 공유하게 되어 기쁩니다.
- 98%의 리콜률은 1%의 FPR 조건에서 Roblox 내부 테스트 세트를 기준으로 측정되었습니다. 이 데이터셋은 운영 데이터에서 수집되었으며, 안전 전문가들에 의해 다중 검토 및 라벨링이 이루어졌습니다.
- Conneau, A., Khandelwal, K., Goyal, N., Chaudhary, V., Wenzek, G., Guzmán, F., Grave, E., Ott, M., Zettlemoyer, L., 및 Stoyanov, V. 2019. 대규모 비지도 다국어 표현 학습. arXiv 사전 인쇄본 arXiv:1911.02116.
- Holmes, L., Crossley, S. A., Sikka, H., 및 Morris, W. 2023. PIILO: 개인 식별 정보 라벨링 및 난독화를 위한 오픈 소스 시스템. Information and Learning Science, 124 (9/10), 266-284.


