Więcej niż selfie: jak system weryfikacji wieku w Roblox pomaga na bieżąco aktualizować dane dotyczące wieku
Modularny, multimodalny system uczenia maszynowego oparty na zachowaniach, który stawia bezpieczeństwo na pierwszym miejscu

System szacowania wieku na podstawie twarzy firmy Roblox przetworzył 338 milionów rekordów weryfikacji wieku, aby pomóc użytkownikom Roblox odblokować czat dostosowany do wieku oraz uzyskać dostęp do gier odpowiednich dla danej grupy wiekowej na platformie. Wstępna weryfikacja wieku jest konieczna, ale potwierdzenie wieku nie kończy się na selfie. Konta mogą być współdzielone lub przekazywane młodszemu rodzeństwu. Złośliwi użytkownicy mogą próbować testować nasze zabezpieczenia. Aby zapewnienie wieku wykraczało poza sygnał z konkretnego momentu, stworzyliśmy warstwę uczenia maszynowego o dużej przepustowości, która ocenia, czy bieżące zachowanie konta nadal odpowiada jego szacowanemu wiekowi w miarę upływu czasu. Nasza modułowa konstrukcja na poziomie cech umożliwia wydajne aktualizacje modeli i szybkie dostosowywanie się do zmieniających się wzorców zachowań.
Niezawodne działanie naszego kompleksowego procesu weryfikacji wieku stanowi wyzwanie zarówno w zakresie systemów rozproszonych, jak i uczenia maszynowego. Samo szacowanie wieku jest trudnym problemem uczenia maszynowego, ponieważ granice wiekowe nie są wyraźnymi prógami behawioralnymi. Rodzice mogą czerpać radość z tych samych doświadczeń co ich dzieci, a język różni się w zależności od kultury, kontekstu i społeczności, a także wieku. Żaden pojedynczy sygnał behawioralny nie jest w stanie niezawodnie uchwycić subtelnych wzorców zachowań, które zmieniają się w czasie i pod presją przeciwników. Nawet nasze najsolidniejsze etykiety „ground truth” pochodzą z wybranej populacji i mogą zawierać błędy systematyczne.
Działanie na skalę Robloxu wiąże się z dodatkową złożonością. W każdym codziennym cyklu wnioskowania gromadzimy sygnały behawioralne z całej platformy, uruchamiamy podmodele na stosie obliczeniowym najlepiej dostosowanym do każdego obciążenia oraz łączymy ich wyniki w jedną skalibrowaną estymację. Nasze modele obejmują zarówno tradycyjne klasyfikatory uczenia maszynowego, jak i wielojęzyczne transformatory z ponad 300 milionami parametrów. System przetwarza codziennie blisko dwóch miliardów rekordów na poziomie kont, a proces uczenia się opiera się na prawie 30 milionach etykiet wieku o wysokim poziomie pewności.
Stworzenie całego systemu we własnym zakresie zapewnia nam przejrzystość i kontrolę niezbędną do weryfikacji wszystkich funkcji i sygnałów pod kątem prywatności, co stanowi kluczowy wymóg projektowy. Możemy również wykorzystywać sygnały specyficzne dla Roblox, które odzwierciedlają sposób użytkowania konta w czasie — kontekst podłużny, którego samodzielny zewnętrzny estymator nie miałby sam w sobie. Daje nam to również kontrolę nad pełnym cyklem życia uczenia maszynowego. Możemy łączyć różne metody w miarę ich udostępniania oraz kalibrować wyniki pod kątem procedur bezpieczeństwa Roblox, jednocześnie monitorując, kontrolując dostęp i aktualizując poszczególne komponenty w miarę zmian zachowań.
Wybór odpowiednich sygnałów do przewidywania wieku
Różne grupy wiekowe korzystają z Roblox w odmienny sposób, co dotyczy wzorców zabawy, komunikacji i interakcji z platformą. Aby uchwycić różnorodność zachowań, dzielimy nasze dane wejściowe na odrębne rodziny sygnałów:
- Kontekst społeczny: zagregowane wzorce w kręgu społecznym użytkownika, w tym z kim nawiązuje kontakty i jak często wchodzi w interakcje.
- Zaangażowanie w doświadczenia: zagregowane wzorce wykraczające poza to, w co grają użytkownicy, uwzględniające kiedy grają, jak długo pozostają na platformie oraz jak ich zaangażowanie zmienia się w czasie.
- Aktywność na koncie i platformie: zagregowane sygnały dotyczące korzystania z platformy i cyklu życia konta, takie jak czas posiadania konta, częstotliwość aktywności oraz zachowania na poziomie sesji.
- Wzorce komunikacji: wywiedzione z modeli podsumowania użycia języka w zależności od wieku, w tym tego, jak wzorce komunikacji zmieniają się w zależności od kontekstu i czasu.
- Wyuczone reprezentacje użytkowników: reprezentacje wyższego poziomu, które oddają szersze wzorce użytkowania. Ściśle współpracujemy z naszym zespołem zajmującym się uczeniem maszynowym w obszarze odkrywania i personalizacji; te same bogate reprezentacje, które przewidują, czym użytkownik może się zainteresować w następnej kolejności, można poddać dalszemu szkoleniu, aby stały się one predykcyjne dla szerokich przedziałów wiekowych.
Każda rodzina sygnałów otrzymuje model dostosowany do kształtu swoich danych. Rzadkie, wielowymiarowe sygnały zagregowane są przetwarzane przez drzewa decyzyjne z wzmocnieniem gradientowym (np. klasyfikatory XGBoost); tekst jest przetwarzany przez precyzyjnie dostrojony wielojęzyczny koder transformatorowy (mmBERT); natomiast reprezentacje użytkowników zasilają pewne zwarte sieci neuronowe (wielowarstwowy perceptron).
Każdy podmodel przewiduje ten sam cel: rozkład prawdopodobieństwa w obrębie zestawu przedziałów wiekowych. Następnie meta-uczący się algorytm oparty na wzmocnieniu gradientowym łączy te wektory prawdopodobieństwa w ostateczną, skalibrowaną estymację.

Celowo wybraliśmy to podejście oparte na fuzji na poziomie decyzji zamiast jednego monolitycznego modelu na poziomie cech, kierując się modułowością, szybkością działania i wyjaśnialnością. Modułowa budowa systemu pozwala nam dodawać, ponownie trenować lub wycofywać podmodele bez konieczności przebudowywania całego systemu. Pozwala nam to również szybciej reagować na zmiany wzorców zachowań wynikające z naturalnej ewolucji lub presji przeciwników. Warstwa fuzji odczytuje najnowsze, promowane wyniki każdego podmodelu, dzięki czemu może wykorzystywać najlepsze dostępne sygnały i płynnie obniżać wydajność w przypadku braku lub opóźnienia jednego z nich. Ponieważ każda modalność jest wprowadzana jako odrębne dane wejściowe, możemy śledzić, które rodziny sygnałów powodują zmiany w decyzjach, oraz stosować kalibrację i kontrole jakości, zanim wyniki zostaną wykorzystane w dalszych etapach.
Wymuszamy kalibrację na warstwie fuzji, ponieważ w systemie bezpieczeństwa przewidywalność przeważa nad czystą dokładnością. Kalibrujemy modele tak, aby dostarczały nam wskaźniki pewności, którym możemy zaufać. W ten sposób, jeśli działanie na dalszym etapie ma mieć znaczący wpływ na użytkownika, możemy wymagać mocniejszych dowodów i wyższego poziomu pewności przed podjęciem konsekwencji.
Błąd selekcji w etykietach
Nasze etykiety o najwyższym poziomie pewności pochodzą od użytkowników, którzy przeszli rygorystyczną weryfikację wieku. Etykiety te są przydatne, ale nie stanowią losowej próby użytkowników Roblox. W przypadku systemu, który może wpływać na dostęp użytkowników, reprezentatywność stanowi kluczowy element celu szkolenia.
Populacja oznaczona etykietami nie jest populacją docelową. Użytkownicy, którzy przechodzą bardziej rygorystyczną weryfikację wieku, różnią się systematycznie od szerszej populacji. Naiwny model wyszkolony na tej grupie ryzykuje, że nauczy się rozpoznawać nie tylko wiek, ale także to, kto decyduje się przejść ten proces. Aby zmniejszyć tę stronniczość selekcyjną, dokonujemy ponownego ważenia danych szkoleniowych i ewaluacyjnych, tak aby oznaczona etykietami próbka lepiej odzwierciedlała populację, którą zamierzamy oceniać.
Współpracujemy międzyfunkcjonalnie z zespołem badań użytkowników, wykorzystując zagregowane wyniki ankiet do określenia populacji docelowych stosowanych przy ważeniu. Następnie stosujemy techniki takie jak odwrotne ważenie skłonności oraz iteracyjne dopasowanie proporcjonalne — czyli raking — aby dostosować ważoną próbkę w wielu wymiarach jednocześnie, zamiast korygować jeden czynnik w izolacji.
Nie każde źródło o wysokim poziomie wiarygodności dostarcza użytecznego przykładu szkoleniowego. Wiarygodność etykiety zależy od zdarzeń weryfikacyjnych, które za nią stoją. Niektóre zdarzenia mogą zawierać sygnały, które sprawiają, że nie nadają się one do szkolenia modelu, takie jak nietypowe wzorce weryfikacji lub obawy dotyczące integralności konta.
Staramy się oczyścić etykiety przed rozpoczęciem szkolenia, stosując filtrowanie etykiet z uwzględnieniem integralności lub metody identyfikacji błędów etykiet, takie jak Confident Learning, aby usunąć przykłady, które wydają się wykraczać poza rozkład danych przy modelowaniu zachowań. Wstępne eksperymenty pokazują, że tego rodzaju oczyszczanie pomaga zapobiegać nadmiernemu dopasowaniu modelu i zapewnia stały wzrost wydajności.

Szkolenie, wnioskowanie i unikanie zniekształceń w skali Roblox
Wnioskowanie musi odbywać się wystarczająco często, aby sygnały były aktualne, ale częstotliwość uczenia może się różnić w zależności od rodziny sygnałów. Harmonogramy ponownego uczenia dobieramy na podstawie dryfu cech, stabilności modelu i jego kosztu. Sygnał, który szybko się zmienia lub traci jakość, może być ponownie uczony częściej; cięższy model o wolniejszym tempie działania może być ponownie uczony rzadziej lub na żądanie.
Struktura obliczeniowa dostosowuje się do charakteru obciążenia. Do transformacji ustrukturyzowanych na dużą skalę używamy Apache Spark, do zadań opartych na procesorach graficznych (GPU) – frameworka Ray, a do przetwarzania sygnałów w czasie rzeczywistym – modułów produkcyjnych.
W skali Roblox codzienna odbudowa pełnej historii każdego konta również nie byłaby praktyczna. Nasza wewnętrzna platforma przetwarzania danych utrzymuje ograniczone, aktualizowane na bieżąco historie dla sygnałów o dużej objętości oraz realizuje kosztowne transformacje etapami. Pozwala nam to codziennie przetwarzać i agregować miliony rekordów na poziomie kont, jednocześnie niezależnie skalując duże rozszerzenia, połączenia i agregacje cech. Ta hybrydowa architektura produkcyjna zapewnia nam bezpośrednią integrację z naszą hurtownią danych, powtarzalne wykonywanie operacji we wszystkich komponentach modelu oraz dostęp do przyspieszonych obliczeń tam, gdzie jest to istotne.
Aby pomóc w utrzymaniu stabilności na naszej skali, stosujemy dwie rygorystyczne decyzje projektowe w naszych potokach cech:
- Przechowywanie cech pochodnych: tam, gdzie to możliwe, przechowujemy cechy pochodne zamiast surowych strumieni aktywności. Zachowujemy sygnał potrzebny do modelowania, a nie pełną historię, która za nim stoi.
- Ujednolicone umowy dotyczące danych: te same umowy dotyczące danych zasilają zarówno proces uczenia, jak i wnioskowania. Ogranicza to jeden z najczęstszych rodzajów awarii w systemach uczenia maszynowego: rozbieżność między tym, co zostało wytrenowane, a tym, co jest dostarczane.
Stosujemy mechanizm blokujący w dwóch punktach cyklu życia środowiska produkcyjnego. Po pierwsze, promocja modelu jest oddzielona od jego uczenia. Model kandydujący musi przejść kontrole zabezpieczające, zanim zostanie dopuszczony do wnioskowania produkcyjnego. Jeśli model kandydujący nie przejdzie naszych kontroli zabezpieczających, potok blokuje promocję, a my nadal udostępniamy najnowszą, poprawnie promowaną wersję.
Po drugie, wyniki wnioskowania są poddawane kontroli przed opublikowaniem w dalszej części procesu. Zautomatyzowane kontrole wykrywają spadki jakości oraz znaczne zmiany w rozkładzie prognoz. Jeśli kontrola zakończy się niepowodzeniem, etap publikacji zostaje zablokowany. W systemie uczenia maszynowego powiązanym z procesami bezpieczeństwa dotyczącymi użytkowników opcja „nie podejmować żadnych działań dzisiaj” jest często bezpieczniejszym sposobem postępowania w przypadku awarii niż wprowadzenie do użytku niewyjaśnionej zmiany rozkładu.
Pomiar wydajności systemu
W przypadku takiego systemu pojedyncza wartość dokładności nie ma większego znaczenia. Oceniamy jakość modelu pod kątem jakości rankingu, kalibracji, stabilności w czasie oraz zachowania w pobliżu ważnych granic przedziałów wiekowych. Reprezentatywność danych ewaluacyjnych traktujemy również jako część problemu pomiarowego, ponieważ ogólna poprawa ma znaczenie tylko wtedy, gdy odzwierciedla populację, której system ma służyć.
Model połączony osiąga średnią precyzję powyżej 0,9 na tych ważonych, odłożonych na bok danych ewaluacyjnych. Jego oszacowania o wysokim poziomie pewności są również spójne z dnia na dzień. Ponad 99% osób pozostaje w tym samym szerokim przedziale wiekowym w kolejnych dniach.
Porównujemy również model z niezależnymi danymi referencyjnymi opracowanymi przez przeszkolonych recenzentów w ramach naszych procesów Trust and Safety. Przy wysokim poziomie pewności oszacowanie przedziału wiekowego przez model pokrywa się z konsensusową etykietą nadaną przez ludzi dla osób dorosłych w ponad 80% przypadków.
Ocena offline to tylko jeden z etapów. W środowisku produkcyjnym zachowania użytkowników zmieniają się w zależności od sezonowości, wprowadzania nowych produktów oraz presji ze strony podmiotów działających w złych intencjach. Dlatego też łączymy wskaźniki oceny modelu z ciągłym monitorowaniem rozkładów prognoz, odchyleń i stabilności, zanim wyniki zostaną wykorzystane w dalszych etapach procesu. Monitorujemy również wyniki kolejnych kontroli wieku, dzięki czemu informacje zwrotne z produkcji pozwalają ocenić niezawodność modelu i wskazać, gdzie należy dostosować progi lub ścieżki weryfikacji.
Co dalej
Posiadanie tego systemu we własnym zakresie pozwala nam bezpiecznie wykorzystywać sygnały specyficzne dla platformy Roblox, działać z najwyższą rygorystycznością oraz nieustannie wprowadzać ulepszenia.
W przyszłości skupimy się na optymalizacji naszych podmodeli, wnioskowania i pomiarów. Rozwijamy każdą warstwę, kierując się naszymi zasadami działania: modułowością, kalibracją, ochroną prywatności oraz zabezpieczeniami produkcyjnymi.


