Roblox PII 분류 모델 오픈 소싱: AI로 채팅에서 PII를 감지하는 Roblox의 접근 방식
콘텍스트를 활용한 재현 개선
Roblox에서는 매일 사용자의 채팅 메시지가 평균 61억 개 생성됩니다. Roblox는 강력한 중재 시스템을 사용하고, 연령 기반 제한을 설정하고, 자녀 보호 기능을 제공하여 안전하고 매너 있는 커뮤니케이션이 가능하게 합니다. 플랫폼의 메시지 대부분은 두 친구가 게임 플레이 전략에 대해 논의하는 것과 같은 일상적인 대화이지만, 소수의 메시지에서 사용자가 민감할 수 있는 개인 식별 정보(PII)를 공유하려고 시도하는 경우가 있습니다. PII는 다양한 형태로 존재하며, 사용자는 악의 없어 여러 이유로 이런 정보를 공유합니다. 게임 플레이를 조율하기 위해 다른 플랫폼의 사용자 이름을 공유할 수도 있고, 새로 만난 친구에게 전화번호를 알려줄 수도 있습니다. 그러나, 악성 사용자가 PII를 이용하여 다른 사용자를 Roblox가 아닌 실제 피해 위험이 더 높은 다른 플랫폼으로 유인하는 경우도 드물게 존재합니다. 실제로 이러한 의도의 차이를 파악하기는 어렵기 때문에, Roblox에서는 PII 공유나 문의를 금지하는 엄격한 정책을 시행하고 있습니다. 기본적으로 채팅에서 감지된 모든 PII를 차단하기 위해 여러 도구를 사용하며, 18세 이상의 사용자와 서로를 신뢰할 수 있는 인맥으로 확인한 13~17세 사용자에 대해서만 제한을 완화합니다.
PII 탐지는 업계 전반의 기술적 과제입니다. 업계 표준 탐지 도구는 우회할 수 있으며, 새로운 언어 패턴에 대한 적응력이 부족합니다. 완벽한 도구라는 건 없지만, 당사는 언어의 진화하는 특성을 고려하고, 사용자가 필터를 우회하여 PII를 요청하거나 공유하려는 상황을 탐지하기 위해 컨텍스트를 사용하는 AI 모델인 Roblox PII 분류 모델을 개발했습니다.
당사는 오늘 오픈 소스 안전 도구 키트의 다른 도구와 함께 PII 분류 모델을 오픈 소스로 공유한다는 사실을 발표하게 되어 매우 기쁩니다. 2024년 말 PII 분류 모델을 구현한 이후, 당사는 재현율이 다른 모델을 능가하는 성능으로 빠르고 지속적으로 개선되는 것을 경험했습니다. 오늘 오픈 소싱하는 PII 모델 버전은 Roblox의 영어 텍스트1에서 잠재적인 PII 대화에 대해 98%의 재현율을 보여줍니다. 이 모델은 또한 LlamaGuard v3 8B(28%) 및 Piiranha NER(14%)과 같은 다른 최첨단 안전 모델을 능가하여, 당사의 프로덕션 데이터에서 94%의 F1 점수를 기록했습니다.
도전 과제
대규모 텍스트에서 PII를 효과적으로 감지하려면 다음 세 가지 주요 과제를 해결해야 합니다.
-
적대적 패턴: 사용자는 창의적이며 필터를 우회하는 새로운 방법을 지속적으로 찾습니다. 효과적인 시스템이라면 언어가 발전하고 새로운 패턴이 등장함에 따라 새롭게 적응해야 합니다.
-
훈련 및 평가: 가장 효과적인 모델을 구축하려면 효과적인 훈련 데이터 집합과 측정 방법도 만들어야 합니다. 모델은 새롭게 나타나는 패턴도 파악할 수 있어야 하기 때문에, 현재의 프로덕션 데이터만으로는 훈련에 충분하지 않습니다.
-
성능: 이러한 모델을 대규모로 제공하려면 사용자 경험에 부정적인 영향을 미치지 않도록 신중한 아키텍처 및 최적화 결정이 필요합니다.
적대적 패턴
기존 PII 감지 솔루션은 주로 소셜 미디어 핸들, 전화번호, 주소와 같은 특정 유형의 명사를 토큰 수준에서 감지하는 개체명 인식(NER)에 의존합니다. 하지만 명사를 감지하는 건 과제의 일부에 불과합니다. 악의적인 사용자는 NER 감지를 우회하기 위해 의도적으로 언어를 변경합니다(예: A, B, C를 알파, 브라보, 찰리로 지칭하거나, 명시적인 명칭을 언급하지 않고 플랫폼을 지칭합니다). 불량 행위자는 NER 필터가 포착할 민감한 정보를 공유하지 않고도 다른 플랫폼에 연결하도록 유도할 수 있습니다. PII 분류 모델의 임무는 Roblox에서 공유되는 명시적인 PII 텍스트를 감지하고 난독화하는 것뿐만 아니라, 커뮤니케이션의 맥락을 이해하고 악의적인 행위자가 PII 관련 대화에 참여하지 못하도록 차단하는 것입니다.
다음은 가상의 소셜 플랫폼인 StarTalk를 사용한 대표적인 우회 패턴입니다.
문자 수준 조작
- "5tärtālk 같은 거 있어? 전화할래? 며칠 전에 거기서 계정을 만들었거든"
- "으으으, 태그 정말 싫어. 이름이 뭐야? 저거 S랑 T야"
인기 소셜 미디어에 대한 암묵적 언급
- "rats ppa을 거꾸로 한 데에서 아이디 뭐라고 했더라?"
- 저기 노란 태양 앱에서 내 이름을 검색해 줄래? 거기서 채팅할까?"
언어와 비속어는 시간이 지남에 따라 진화하며, 악의적인 행위자는 필터를 피할 수 있는 새로운 방법을 지속적으로 모색하고 있습니다. PII 분류 모델의 강점은 새로운 언어 패턴과 해결책이 등장할 때마다 이에 적응할 수 있는 능력입니다. 실제 공격 패턴을 감지하면 이를 모델에 다시 통합하여 지속적으로 훈련하는 데 활용합니다.
훈련 및 평가
당사는 처음에 모델을 훈련하기 위해 PII 관련 데이터를 수동으로 검토하고 라벨링했습니다. 이를 통해 시작점을 확보할 수 있었지만, 다양한 시나리오로 신속하게 확장하고 포착할 수는 없었습니다. 매일 수십억 개의 채팅 메시지에서 발견되는 모든 용어와 순열을 수동으로 분류하고 적절한 라벨을 적용하는 대신, 훈련에 적합한 샘플을 선택하기 위해 데이터 샘플러를 구축하고 테스트했습니다. 우리의 목표는 악의 없는 대화를 제외하고, PII 관련 데이터가 포함된 대화에 집중하여 사람이 라벨링하는 과정에서 발생하는 오류의 가능성을 줄이고 더 폭넓은 데이터를 처리하는 것이었습니다. 두 개의 샘플러가 가장 효과적인 것으로 입증되었습니다.
- 모델 점수 출력을 사용한 불확실성 샘플링: 이 샘플러는 모호한 사례를 더 구체화할 수 있도록 강하게 긍정적이거나 부정적인 신호를 유발하지 않는 샘플을 선택했습니다.
- 연속 PII 블록의 샘플: 이 샘플러는 일부 대화에서 플래그가 지정되었지만 연속 대화에서는 플래그가 지정되지 않은 사용자의 샘플을 선택했습니다. 이러한 후속 대화에는 현재의 PII 필터를 우회한 비정형 언어가 포함될 가능성이 더 높았습니다. 실제로, 이는 사용자가 시스템을 우회하지 못하고 교묘하게 취약점을 찾을 때까지 재시도하는 것처럼 보일 수 있습니다.
현재 프로덕션 데이터에 대해 데이터 샘플링과 인적 라벨링을 결합하여 모델 훈련을 위한 효과적인 기반을 제공했지만, 당사의 목표는 새로운 패턴을 설명하는 것이므로 샘플에 아직 존재하지 않는 데이터를 훈련시킬 방법이 필요했습니다.
AI가 생성한 합성 데이터
현재 샘플링된 데이터만 사용하면 편향이 발생할 수 있으며 새로운 커뮤니케이션 패턴이 발전함에 따라 모델의 기능이 제한될 수 있습니다. 예를 들어 Roblox에서는 인기 있는 소셜 미디어 플랫폼 핸들에 대한 개인 식별 정보 요청이 가장 일반적입니다. 프로덕션 데이터로만 훈련된 모델은 가장 일반적인 요청에 편향될 수 있으며, 잘 알려지지 않은 소셜 미디어 플랫폼과 이메일 주소, 전화번호 등 드문 요청에 대해서는 성능이 떨어질 수 있습니다. 또한 사용자 커뮤니케이션은 인기 있는 어휘와 언어 패턴으로 집중되는 경향이 있습니다. 프로덕션 데이터로만 훈련된 모델은 일반적인 언어 패턴에 편향될 수 있으며, 기존 틀에서 벗어나거나 새로운 방식으로 표현된 위반 사항을 식별하지 못할 수 있습니다.
이러한 문제와 기타 편향을 없애기 위해 당사는 초기 훈련 데이터 집합에서 상속된 약점을 대상으로 하는 AI 데이터 생성 파이프라인을 설계했습니다. 먼저, 변수 조합(예: 컨텍스트, 개인 식별 정보 유형, 사용자 페르소나, 언어, 예제 채팅 라인)을 사용하여 프롬프트를 생성했습니다. 그런 다음 이러한 프롬프트를 기반으로 새 채팅 라인을 생성하여 모델에 제공했습니다.
인적 레드팀과 AI 레드팀(문제 파악)
당사는 개발 과정에서 인적 레드팀과 AI 레드팀(팀에서 시스템의 방어 성능을 테스트하기 위해 적대적인 공격을 시뮬레이션하는 경우)을 모두 활용하여 모델의 효과를 테스트하고 훈련을 개선했습니다. Roblox는 개인 식별 정보를 요청하고 공유하는 다양한 방법을 실험하기 위해 규정 준수 담당자를 참여시켰고, LLM(대규모 언어 모델)으로 이러한 방법을 다양한 방식으로 보완하도록 촉진한 다음, 모델이 놓친 샘플을 훈련 데이터 집합에 추가했습니다. AI 레드팀은 많은 변형을 신속하게 테스트하고, 규정 준수 담당자가 다루지 않았을 수 있는 방법을 포함하도록 지원했습니다. 예:
원본: the password is xxxx
AI 변형 버전: THE PAAS WURD IS xxxx
원본: Bella my phone number is 346
AI 변형 버전: Bella my numb3r is actually threefour6
레드팀은 현재 훈련 데이터의 부족한 부분을 더 잘 이해하고 이를 최소화하기 위해 합성 데이터를 조정하는 데 도움을 주었습니다. 또한 모델 반복 간의 차이를 측정할 수 있도록 지원했으며, 이는 두 버전의 모델이 평가 세트에서 성능이 비슷해지면서 차이를 구분하는 것이 점점 더 어려워지기 때문입니다. Roblox는 레드팀 도구에서 여러 버전의 모델을 제공하여 동일한 환경에서 우회율을 직접 비교하고 어떤 모델이 통계적으로 더 효과적인지 확인했습니다.
성능
하루 평균 61억 개의 채팅 메시지가 교환되는 개인 식별 정보 분류 도구는 Roblox에서 초당 20만 개 이상의 쿼리를 받습니다. 이 분량은 100ms 미만의 P90 지연 시간으로 처리됩니다. 서비스와 품질의 균형을 맞추기 위해 당사는 인코딩 전용 아키텍처를 선택하고 XLM-RoBERTa-Large2에서 모델을 미세 조정했습니다. 토큰화 도구와 전처리 및 후처리 서비스를 분리하여 CPU에서 효율적으로 실행하고 GPU에서 순수 변환기 아키텍처를 제공하여 비용을 절감합니다. 또한 Triton 서버에서 동적 배치 처리를 사용하여 처리량을 증대합니다.
공개 및 내부 데이터 집합에 대한 기준
Roblox는 자체 프로덕션 데이터와 공개 데이터 집합을 사용하여 다른 최첨단 모델과 비교해 개인 식별 정보 분류 도구의 기준을 설정했습니다. 대부분의 공개 개인 식별 정보 데이터 집합은 의도를 나타낼 수 있는 주변 텍스트가 아닌 개인 식별 정보 텍스트 자체에 중점을 두므로 당사 플랫폼의 기준 설정 요구 사항과 완벽히 부합하는 것은 존재하지 않습니다. 그럼에도 불구하고 당사는 Kaggle 내 The Learning Agency Lab의 개인 식별 정보 데이터 탐지 데이터 집합3과 같은 인기 있는 개인 식별 정보 데이터 집합을 사용하여 당사 모델이 현재 탐지 솔루션과 비교해 어떤 수준인지 확인하고 싶었습니다.
비교 대상의 LLM이 단일(재현율, 정밀도) 페어만 제공하므로 F1 점수를 사용했습니다. 분류 점수를 출력하는 모델의 경우, 테스트 집합에서 최적의 F1 점수를 보고했습니다. 참고로, 당사 모델을 사용하려면 입력값으로 사용자 채팅 라인의 스니펫이 필요하며 개인 식별 정보 점수가 출력됩니다. 이 점수는 채팅 라인에 대해 이분법적 의사결정을 내리는 데 사용됩니다. 공정한 비교를 위해 공개 데이터 집합을 문장 단위로 나누고 긍정적인 NER 개인 식별 정보 토큰이 포함된 경우 각 문장을 긍정 라벨로 지정했습니다.
| 개인 식별 정보 V1.1 | LlamaGuard-v3 1B | LlamaGuard-v3 8B | LlamaGuard-v4 12B | NemoGuard 8B | Piiranha NER | |
| Kaggle 개인 식별 정보 데이터 집합 | 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에 대한 4만 7,000개 이상의 다양한 실제 샘플을 포함하는 내부 프로덕션 데이터 모두에서 다른 오픈 소스 모델을 훨씬 능가하는 우수한 성능을 보였습니다. 더 확장된 대화 컨텍스트를 통합하고 언어의 유동적인 특성에 지속적으로 적응하는 데 중점을 두는 것은 사용자가 의도적으로 개인 식별 정보를 요청하거나 공유하려는 더 많은 대화를 탐지하는 데 효과적인 접근 방식임이 입증되었습니다.
개인 식별 정보 분류 도구는 Roblox에서 안전과 디지털 시민의식 유지를 장려하기 위해 사용하는 많은 혁신적인 시스템 중 하나일 뿐입니다. 대화 방향이 개인 식별 정보 요청으로 흘러가는 경우를 탐지할 수 있는 기능 덕분에 탐지를 우회할 수 있는 모호한 요청도 캡처할 수 있습니다. 완벽한 시스템은 없지만, 첫해에 보인 프로덕션 결과는 매우 고무적이며, 당사는 오픈 소스 커뮤니티에 Roblox의 오픈 소스 안전 도구 키트의 다른 도구와 함께 이 도구를 공유하게 되어 매우 기쁩니다.
- 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.