Wdrażanie uczenia maszynowego w celu zapewnienia bezpieczeństwa głosowego

Naszą misją jest łączenie miliarda ludzi poprzez optymizm i kulturę osobistą, co wymaga od nas pomocy w budowaniu prawdziwego poczucia wspólnoty. W immersyjnych światach 3D, podobnie jak w świecie fizycznym, niewiele rzeczy jest bardziej autentycznych i potężnych niż ludzki głos w tworzeniu trwałych przyjaźni i więzi. Ale jak zwiększyć immersyjność i bogactwo komunikacji głosowej w Roblox, jednocześnie dbając o bezpieczeństwo i kulturę osobistą naszej społeczności?
W tym wpisie na blogu opowiemy, jak stworzyliśmy Real-time Safety, kompleksowy model uczenia maszynowego (ML) — działający na skalę milionów minut aktywności głosowej dziennie — który wykrywa naruszenia zasad w komunikacji głosowej dokładniej niż moderacja wykonywana przez ludzi. Wyniki z tego systemu są przekazywane do innego modelu, który określa odpowiednie konsekwencje. Model konsekwencji uruchamia powiadomienia dla osób, które naruszyły nasze zasady, początkowo w formie ostrzeżeń, a następnie bardziej drastycznych działań, jeśli zachowanie się powtarza.
Ten kompleksowy system „Real-time Safety” był ambitnym celem, ponieważ jesteśmy jedną z pierwszych firm w branży, która oferuje użytkownikom wielojęzyczne funkcje bezpieczeństwa głosowego działające niemal w czasie rzeczywistym. Klasyfikacja głosu zależy zarówno od stylu audio, w tym głośności i tonu, jak i treści, w tym wypowiadanych słów. Z radością dzielimy się informacją, w jaki sposób opracowaliśmy ten system, zaczynając praktycznie od zera – bez żadnych danych oznaczonych i modeli – i osiągając pełną gotowość w zakresie bezpieczeństwa głosowego w czasie rzeczywistym.
I wreszcie, z radością dzielimy się naszym pierwszym modelem open source, który jest jednym z naszych modeli bezpieczeństwa głosowego. Udostępniając ten model na licencji open source i umożliwiając jego komercyjne wykorzystanie, mamy nadzieję zapewnić branżowy punkt odniesienia dla wykrywania naruszeń zasad, co może przyspieszyć rozwój nowych modeli uczenia maszynowego w zakresie bezpieczeństwa głosowego. Ten model open source jest naszą pierwszą wersją, a od tego czasu wprowadziliśmy znaczące ulepszenia, które obecnie testujemy.
Pokonywanie niedoboru danych
Nasze działania w zakresie uczenia maszynowego rozpoczęliśmy tak jak wiele innych firm — od oceny jakości dostępnych danych do szkolenia i oceny naszych modeli. Idealny zestaw danych obejmowałby wypowiedzi głosowe wraz z wysokiej jakości oznaczeniami kategorii bezpieczeństwa dla tych wypowiedzi. Jednak na początku nie dysponowaliśmy prawie żadnymi danymi z rzeczywistego świata oznaczonymi przez ludzi na dużą skalę. Aby wyszkolić wysokiej jakości model wykrywania zagrożeń głosowych przy użyciu podejścia nadzorowanego, potrzebowaliśmy tysięcy godzin nagrań audio z oznaczeniami dla każdego obsługiwanego przez nas języka, co zajęłoby lata i wymagałoby ogromnych nakładów zasobów oraz czasu.
Zamiast polegać na tysiącach godzin ręcznie oznaczonych danych, opracowaliśmy kilka bardziej wydajnych metod:
- Dane oznaczone maszynowo do szkolenia. Zamiast skupiać się na poszukiwaniu idealnych, ręcznie oznaczonych danych do szkolenia, zdecydowaliśmy się na dużą ilość danych szkoleniowych pochodzących z maszynowego oznaczania wypowiedzi głosowych. Wykorzystanie dużych ilości danych oznaczonych maszynowo przy słabym nadzorze pozwoliło wygenerować modele szkoleniowe, które były odporne na pewien poziom szumu w oznaczeniach. Kluczem do powodzenia tego podejścia był dostęp do świetnych bibliotek open source do zamiany mowy na tekst oraz wieloletnie doświadczenie w wykorzystaniu uczenia maszynowego do wykrywania naruszeń Standardów społeczności w komunikacji tekstowej użytkowników. To podejście oparte na etykietowaniu maszynowym pozwoliło nam oznaczyć ilość danych szkoleniowych potrzebnych do naszych modeli w ciągu tygodni, a nie lat.
- Dane oznaczone przez ludzi do oceny. Chociaż wysokiej jakości, ale niedoskonałe dane oznaczone maszynowo były wystarczające do wyszkolenia modelu o wysokiej wydajności, nie ufaliśmy etykietom maszynowym w zakresie ostatecznej walidacji powstałego modelu. Kolejnym pytaniem było zatem, skąd możemy uzyskać wystarczającą ilość danych oznaczonych przez ludzi do oceny. Na szczęście, choć nie udało się zebrać wystarczającej ilości danych oznaczonych przez ludzi do szkolenia w odpowiednim czasie, udało się zebrać wystarczającą ilość do oceny naszego modelu przy pomocy naszych wewnętrznych moderatorów, którzy już klasyfikowali zgłoszenia nadużyć od użytkowników Roblox w celu ręcznego nakładania sankcji. Dzięki temu mogliśmy czerpać korzyści z obu rozwiązań: danych szkoleniowych oznaczonych maszynowo, które były wystarczająco dobre i liczne, aby stworzyć model o wysokiej wydajności, oraz danych ewaluacyjnych oznaczonych przez ludzi, których ilość była znacznie mniejsza, ale wystarczająca, aby dać nam pewność, że model naprawdę działa.
Kolejnym obszarem, w którym borykaliśmy się z niedoborem danych, były kategorie naruszeń zasad, które występują bardzo rzadko, takie jak odniesienia do narkotyków i alkoholu lub samookaleczania. Aby rozwiązać ten problem, połączyliśmy kilka rzadko występujących kategorii w kategorię „inne”. W rezultacie nasz ostateczny model mógł identyfikować kategorie wulgaryzmów, znęcania się, dyskryminacji, randek i „inne”. Aby zrozumieć te kategorie „inne” i móc lepiej chronić naszą społeczność oraz zapewnić bezpieczną i kulturalną dyskusję na Robloxie, będziemy nadal monitorować je w poszukiwaniu kolejnych przykładów. Z czasem podkategorie w kategorii „inne” również staną się nazwanymi kategoriami, gdy liczba przykładów szkoleniowych w tych podkategoriach osiągnie masę krytyczną.
Proces automatycznego oznaczania danych szkoleniowych
Zaprojektowaliśmy w pełni automatyczny proces automatycznego oznaczania danych szkoleniowych w celu wyodrębnienia wysokiej jakości etykiet z sekwencji czatu głosowego. Nasz proces składa się z trzech etapów:
- Podział fragmentów audio. Pierwszy etap procesu polega na podziale audio na fragmenty lub krótsze segmenty w miejscach, gdzie wykryjemy przerwy w mowie między zdaniami. Pozwala nam to skuteczniej identyfikować i oznaczać treści naruszające zasady.
- Transkrypcja audio. Drugi etap procesu polega na transkrypcji tych fragmentów audio na tekst przy użyciu modelu automatycznego rozpoznawania mowy (ASR). Korzystamy z publicznie dostępnych modeli ASR typu open source.
- Klasyfikacja tekstu. Ostatni etap procesu polega na klasyfikacji transkrybowanego tekstu przy użyciu naszego wewnętrznego filtra tekstowego. Filtr ten został zaprojektowany w celu wykrywania i blokowania nieodpowiednich treści w komunikacji tekstowej. Dostosowaliśmy filtr do pracy z transkrybowanymi danymi audio, co pozwala nam oznaczać fragmenty audio klasami naruszeń zasad i słowami kluczowymi. Filtr tekstowy jest modelem zespołowym, wytrenowanym na oznaczonych przez ludzi danych tekstowych naruszających zasady, składającym się z rozszerzonego modelu DistilBERT i reguł wyrażeń regularnych.

Warto zauważyć, że ten potok był używany tylko do generowania danych szkoleniowych dla naszego ostatecznego modelu produkcyjnego. Można się jednak zastanawiać, po co w ogóle szkolić model, skoro mamy już potok, który generuje etykiety, których szukamy? Odpowiedź brzmi: wydajność — musimy być niesamowicie dokładni, a to w znacznie krótszym czasie. W skali Roblox wywołanie ASR w celu transkrypcji całej komunikacji głosowej byłoby zbyt powolne i wymagałoby zbyt wielu zasobów. Jednak kompaktowy model ML, wytrenowany na tych danych, zaprojektowany specjalnie do wykrywania naruszeń zasad w komunikacji głosowej bez pełnej transkrypcji, jest równie dokładny, ale znacznie szybszy i może być używany w skali Roblox.
Skalowanie potoku etykietowania maszynowego
W przypadku większości dużych inicjatyw związanych ze sztuczną inteligencją mechanizm pozyskiwania wysokiej jakości danych szkoleniowych jest sam w sobie produkcyjnym systemem uczenia maszynowego, który należy stworzyć od podstaw. W ramach tego projektu musieliśmy opracować nasz potok etykietowania maszynowego jako system produkcyjny najwyższej klasy, działający 24 godziny na dobę, 7 dni w tygodniu, z możliwością skalowania do tysięcy równoległych procesorów CPU lub równoważnej liczby procesorów graficznych GPU. Wdrożyliśmy klaster danych szkoleniowych z tysiącami rdzeni procesorów CPU, który automatycznie przetwarza przychodzące strumienie audio równolegle w celu generowania etykiet maszynowych. System ten musiał działać bezbłędnie, aby zapewnić maksymalną przepustowość, a wszelkie błędy lub przestoje mogły skutkować utratą dni lub tygodni w generowaniu danych szkoleniowych.
Poniżej znajduje się ogólny przegląd architektury, która wspierała skalę potrzebną do automatycznego oznaczenia dziesiątek tysięcy godzin nagrań w ciągu zaledwie kilku tygodni. Kluczowym wnioskiem było to, że inwestycja w kolejki w kluczowych punktach naszego przetwarzania pozwoliła nam wyeliminować wąskie gardła poprzez horyzontalne skalowanie wątków roboczych na wielu maszynach. Te wątki robocze wykonywały czynności związane z dzieleniem fragmentów audio, transkrypcją audio oraz klasyfikacją tekstu, o których mowa w poprzedniej sekcji.

Architektura ML
Głównym wymogiem dla naszego wyszukiwania modeli było niskie opóźnienie, tj. prędkość wnioskowania modelu zbliżona do czasu rzeczywistego, co doprowadziło nas do architektur, które działają bezpośrednio na surowym audio i zwracają wynik. Używamy architektur opartych na Transformerze, które sprawdzają się bardzo dobrze w streszczaniu sekwencji i odnoszą duże sukcesy w branży przetwarzania języka naturalnego (NLP) oraz modelowania audio. Naszym wyzwaniem było znalezienie idealnego punktu równowagi między złożonością a wnioskowaniem o niskim opóźnieniu — tj. obsługą wielu języków i akcentów, odpornością na szumy tła oraz jakością dźwięku, przy jednoczesnym spełnieniu naszych ograniczeń dotyczących opóźnień produktu.
Wybór modelu
Pierwszym pytaniem projektowym było określenie rozmiaru okna kontekstowego potrzebnego do szkolenia modeli Transformer. Przyjrzeliśmy się histogramowi długości wypowiedzi w danych z czatu głosowego z kilku dni użytkowania i ustaliliśmy, że 15-sekundowe okno zapewnia kompromis między opóźnieniem a wystarczającym kontekstem potrzebnym do klasyfikacji. Używamy kategorii „brak naruszenia” do wykrywania braku naruszeń zasad. Biorąc pod uwagę, że pojedynczy fragment audio może zawierać wiele rodzajów naruszeń, zadanie to z natury staje się problemem wielomianowym, a nie konwencjonalnym problemem klasyfikacji wieloklasowej. Dopracowaliśmy całą sieć, w tym warstwy główne dla tego zadania, przy użyciu straty binarnej entropii krzyżowej (BCE).

Podpis: Histogram wypowiedzi głosowych z danych czatu, pokazujący, że 75 procent wypowiedzi trwa krócej niż 15 sekund.
Oceniliśmy kilka popularnych modeli koderów open source pochodzących ze społeczności zajmującej się badaniami nad dźwiękiem i zawęziliśmy nasz wybór do WavLM i Whisper. Naszym pierwszym eksperymentem było dostrojenie wstępnie wytrenowanego modelu WavLM base+ przy użyciu 2300 godzin danych głosowych oznaczonych maszynowo przez Roblox oraz ocena wyników klasyfikacji na dwóch rzeczywistych zestawach danych ewaluacyjnych. Uzyskaliśmy bardzo obiecujące wyniki klasyfikacji (patrz Ocena modelu poniżej), ale stwierdziliśmy, że opóźnienie było większe niż nasze progi dla wdrożenia produkcyjnego. W ramach dalszych działań wdrożyliśmy niestandardową wersję architektury WavLM z mniejszą liczbą warstw Transformer i od podstaw wytrenowaliśmy model typu end-to-end na 7000 godzinach danych głosowych oznaczonych maszynowo przez Roblox. Model ten zapewnia solidną klasyfikację w sytuacjach konwersacyjnych i był bardziej kompaktowy w porównaniu z modelem dostrojonym. Nasz ostateczny model wykorzystywał konfigurację destylacji typu „uczeń-nauczyciel”, z koderem Whisper jako siecią nauczycielską i architekturą end-to-end WavLM jako siecią uczniowską. Kiedy przeszkoliliśmy go na 4000 godzinach nagrań, zaobserwowaliśmy dokładność klasyfikacji podobną do modelu dostrojonego, ale ze znaczną poprawą opóźnienia i zmniejszonym rozmiarem modelu. Poniższy obrazek podsumowuje parametry modelu dla trzech eksperymentów opisanych powyżej. Wciąż udoskonalamy strategie próbkowania danych, strategie oceny i hiperparametry modelu, rozszerzając modele o wielojęzyczną klasyfikację bezpieczeństwa głosowego.

Rozmiar zbioru danych | Rozmiar modelu | Opóźnienie wnioskowania / sekunda danych wejściowych | Współczynnik czasu rzeczywistego | |
Dostrojony WavLM | 2300 h | 96 mln parametrów | 102 ms | 9,80 |
Wyszkolony od początku do końca | 7071 h | 52 mln parametrów | 83 ms | 12,08 |
Destylowane | 4080h | 48 mln parametrów | 50 ms | 19,95 |
Optymalizacja modelu
Zastosowaliśmy standardowe metody branżowe, w tym kwantyzację wybranych warstw Transformer, aby osiągnąć ponad 25-procentowe przyspieszenie bez utraty jakości. Przejście na etap ekstrakcji cech z wykorzystaniem danych wejściowych MFCC w połączeniu z konwolucyjnymi sieciami neuronowymi (CNN) zamiast samych CNN również zaowocowało ponad 40-procentowym przyspieszeniem podczas wnioskowania. Ponadto wprowadzenie modelu wykrywania aktywności głosowej (VAD) jako etapu przetwarzania wstępnego znacznie zwiększyło niezawodność całego procesu, zwłaszcza w przypadku użytkowników korzystających z mikrofonów o słabej jakości. Model VAD pozwolił nam odfiltrować szumy i zastosować nasz proces bezpieczeństwa tylko wtedy, gdy wykryliśmy ludzką mowę w nagraniu audio, co zmniejszyło ogólną objętość wnioskowania o około 10 procent i zapewniło wyższą jakość danych wejściowych do naszego systemu.
Ocena modelu
Chociaż do oceny wykorzystaliśmy wiele różnych zbiorów danych i wskaźników, możemy podzielić się wynikami działania naszego klasyfikatora głosu na zbiorze danych w języku angielskim o wysokiej częstotliwości naruszeń zasad (takich jak te, które można znaleźć w zgłoszeniach użytkowników dotyczących nadużyć głosowych). Zbiór ten został w 100 procentach oznaczony przez naszych moderatorów. Po połączeniu wszystkich rodzajów naruszeń (wulgaryzmy, nękanie, randki itp.) w jedną kategorię binarną zaobserwowaliśmy wynik PR-AUC (obszar pod krzywą precyzji-przypomnienia) powyżej 0,95, jak pokazano poniżej. Oznacza to, że w tym zbiorze danych do oceny klasyfikator zazwyczaj wykrywa większość naruszeń, nie zgłaszając jednocześnie zbyt wielu przypadków, które nie stanowią naruszenia.

Powyższe dobre wyniki oceny niekoniecznie przekładają się jednak bezpośrednio na wszystkie przypadki użycia. Na przykład w przypadku naszych powiadomień o wypowiedziach naruszających zasady klasyfikator ocenia wszystkie czaty głosowe w Roblox i wykrywa mniejszą częstość występowania naruszeń, co zwiększa prawdopodobieństwo wyników fałszywie pozytywnych. W przypadku zgłoszeń dotyczących nadużyć głosowych klasyfikator ocenia tylko wypowiedzi, które zostały oznaczone jako potencjalne naruszenia, więc częstość występowania jest wyższa. Mimo to powyższe wyniki były na tyle zachęcające, że zdecydowaliśmy się rozpocząć eksperymenty z klasyfikatorem w środowisku produkcyjnym (przy konserwatywnych progach), aby powiadamiać użytkowników o wypowiedziach naruszających zasady. Wyniki tych eksperymentów znacznie przekroczyły nasze oczekiwania.
Co dalej?
Wykorzystując naszą własną infrastrukturę procesorową i starannie projektując potok na dużą skalę, udało nam się z powodzeniem wdrożyć ten model na skalę Roblox. W godzinach szczytu model z powodzeniem obsługuje ponad 2000 żądań na sekundę (z których większość nie zawiera żadnych naruszeń). Zauważyliśmy też, że dzięki modelowi, który powiadamia ludzi o treściach naruszających zasady, znacznie zmniejszyła się liczba takich zachowań na platformie. W szczególności od momentu wdrożenia widzimy 15,3-procentowy spadek zgłoszeń dotyczących poważnych nadużyć w mowie oraz 11,4-procentowy spadek naruszeń na minutę wypowiedzi.
Rozszerzamy nasze modele o wielojęzyczne dane szkoleniowe, co pozwala nam wdrożyć jeden model klasyfikacyjny na całej platformie w celu obsługi kilku języków, a także mieszania języków. Badamy również nowe architektury wielozadaniowe do identyfikacji wybranych słów kluczowych, oprócz celu klasyfikacji, bez uciekania się do pełnego ASR. Wykrywanie tych słów kluczowych, oprócz etykiet naruszeń, poprawia jakość klasyfikacji i daje możliwość przedstawienia użytkownikom kontekstu podczas nakładania konsekwencji.
Opisane tutaj badania były wynikiem wspólnych wysiłków wielu zespołów w Roblox. Był to doskonały przykład naszej podstawowej wartości, jaką jest szacunek dla społeczności, oraz świetnej współpracy między wieloma dyscyplinami.


