Działanie uczenia maszynowego w Mail.ru Mail

Działanie uczenia maszynowego w Mail.ru Mail

Na podstawie moich wystąpień na Highload++ i DataFest Minsk 2019.

Dla wielu osób poczta jest dziś integralną częścią życia w Internecie. Za jego pomocą prowadzimy korespondencję biznesową, przechowujemy wszelkiego rodzaju ważne informacje związane z finansami, rezerwacjami hoteli, składaniem zamówień i wieloma innymi. W połowie 2018 roku sformułowaliśmy strategię produktową rozwoju poczty. Jaka powinna być współczesna poczta?

Poczta musi być mądryczyli pomaganie użytkownikom w poruszaniu się w coraz większym wolumenie informacji: filtrowaniu, porządkowaniu i dostarczaniu ich w najwygodniejszy sposób. Ona musi być użyteczne, dzięki czemu możesz rozwiązywać różne zadania bezpośrednio w skrzynce pocztowej, na przykład płacić mandaty (funkcja, z której niestety korzystam). A jednocześnie oczywiście poczta musi zapewniać ochronę informacji, odcinając spam i chroniąc przed włamaniami, czyli być bezpieczna.

Obszary te definiują szereg kluczowych problemów, z których wiele można skutecznie rozwiązać wykorzystując uczenie maszynowe. Oto przykłady już istniejących funkcjonalności opracowanych w ramach strategii – po jednej dla każdego kierunku.

  • Inteligentna odpowiedź. Mail ma funkcję inteligentnej odpowiedzi. Sieć neuronowa analizuje treść listu, rozumie jego znaczenie i cel, dzięki czemu proponuje trzy najwłaściwsze opcje reakcji: pozytywną, negatywną i neutralną. Pomaga to znacznie zaoszczędzić czas podczas odpowiadania na listy, a także często odpowiada w niestandardowy i zabawny sposób.
  • Grupowanie e-mailizwiązanych z zamówieniami w sklepach internetowych. Często robimy zakupy online, a sklepy z reguły mogą wysyłać kilka e-maili do każdego zamówienia. Przykładowo z największego serwisu AliExpress na jedno zamówienie wpływa bardzo dużo listów, a obliczyliśmy, że w przypadku terminala ich liczba może sięgać nawet 29. Dlatego korzystając z modelu Named Entity Recognition wyodrębniamy numer zamówienia i inne informacje z tekstu i zgrupuj wszystkie litery w jednym wątku. W osobnym okienku wyświetlamy także podstawowe informacje o zamówieniu, co ułatwia pracę z tego typu mailami.

    Działanie uczenia maszynowego w Mail.ru Mail

  • Antyphishing. Phishing to szczególnie niebezpieczny, oszukańczy rodzaj wiadomości e-mail, za pomocą którego osoby atakujące próbują uzyskać informacje finansowe (w tym karty bankowe użytkownika) i dane logowania. Listy takie imitują prawdziwe, wysyłane przez serwis, także wizualnie. Dlatego za pomocą Computer Vision rozpoznajemy logo i styl projektowania listów od dużych firm (na przykład Mail.ru, Sber, Alfa) i uwzględniamy to wraz z tekstem i innymi funkcjami w naszych klasyfikatorach spamu i phishingu .

Nauczanie maszynowe

Trochę ogólnie o uczeniu maszynowym w poczcie e-mail. Poczta to bardzo obciążony system: średnio 1,5 miliarda listów dziennie przechodzi przez nasze serwery dla 30 milionów użytkowników DAU. Około 30 systemów uczenia maszynowego obsługuje wszystkie niezbędne funkcje i cechy.

Każda litera przechodzi przez cały proces klasyfikacji. Najpierw odcinamy spam i zostawiamy dobre e-maile. Użytkownicy często nie zauważają działania antyspamu, ponieważ 95-99% spamu nawet nie trafia do odpowiedniego folderu. Rozpoznawanie spamu jest bardzo ważną i zarazem najtrudniejszą częścią naszego systemu, ponieważ w obszarze antyspamowym następuje ciągła adaptacja pomiędzy systemami obrony i ataku, co stanowi ciągłe wyzwanie inżynieryjne dla naszego zespołu.

Następnie oddzielamy litery od ludzi i robotów. E-maile od ludzi są najważniejsze, dlatego udostępniamy im funkcje takie jak Inteligentna odpowiedź. Listy od robotów dzielą się na dwie części: transakcyjną – są to ważne listy z serwisów, np. potwierdzenia zakupów czy rezerwacji hotelowych, finansowych oraz informacyjne – są to reklamy biznesowe, rabaty.

Wierzymy, że e-maile transakcyjne są równie ważne jak korespondencja osobista. Powinny być pod ręką, bo często potrzebujemy szybko znaleźć informację o zamówieniu czy rezerwacji biletu lotniczego i tracimy czas na szukanie tych listów. Dlatego dla wygody automatycznie dzielimy je na sześć głównych kategorii: podróże, zamówienia, finanse, bilety, rejestracje i wreszcie kary.

Listy informacyjne to największa i prawdopodobnie mniej istotna grupa, która nie wymaga natychmiastowej reakcji, gdyż nic istotnego nie zmieni się w życiu użytkownika, jeśli nie przeczyta takiego listu. W naszym nowym interfejsie łączymy je w dwa wątki: sieci społecznościowe i newslettery, w ten sposób wizualnie oczyszczając skrzynkę odbiorczą i pozostawiając widoczne tylko ważne wiadomości.

Działanie uczenia maszynowego w Mail.ru Mail

Eksploatacja

Duża liczba systemów powoduje wiele trudności w obsłudze. W końcu modele z biegiem czasu ulegają degradacji, jak każde oprogramowanie: funkcje ulegają uszkodzeniu, maszyny ulegają awariom, a kod staje się krzywy. Poza tym dane ciągle się zmieniają: dodawane są nowe, zmieniają się wzorce zachowań użytkowników itp., więc model bez odpowiedniego wsparcia z biegiem czasu będzie działał coraz gorzej.

Nie wolno nam zapominać, że im głębiej uczenie maszynowe wnika w życie użytkowników, tym większy wpływ mają na ekosystem, a w efekcie tym większe straty finansowe lub zyski mogą uzyskać uczestnicy rynku. Dlatego w coraz większej liczbie obszarów gracze dostosowują się do pracy algorytmów ML (klasyczne przykłady to reklama, wyszukiwanie i wspomniany już antyspam).

Zadania uczenia maszynowego mają również swoją specyfikę: każda, nawet niewielka zmiana w systemie może generować dużo pracy z modelem: praca z danymi, przekwalifikowanie, wdrożenie, co może zająć tygodnie lub miesiące. Dlatego im szybciej zmienia się środowisko, w którym działają Twoje modele, tym więcej wysiłku wymaga ich utrzymanie. Zespół może stworzyć wiele systemów i być z tego zadowolonym, ale potem wydać prawie wszystkie swoje zasoby na ich utrzymanie, bez możliwości zrobienia czegokolwiek nowego. Spotkaliśmy się kiedyś z taką sytuacją w zespole antyspamowym. I doszli do oczywistego wniosku, że wsparcie musi zostać zautomatyzowane.

Automatyzacja

Co można zautomatyzować? Właściwie prawie wszystko. Zidentyfikowałem cztery obszary, które definiują infrastrukturę uczenia maszynowego:

  • gromadzenie danych;
  • dodatkowy trening;
  • wdrożyć;
  • testowanie i monitorowanie.

Jeśli otoczenie jest niestabilne i ciągle się zmienia, wówczas cała infrastruktura wokół modelu okazuje się znacznie ważniejsza niż sam model. Może to być stary, dobry klasyfikator liniowy, ale jeśli zapewnisz mu odpowiednie funkcje i uzyskasz dobre opinie od użytkowników, będzie działał znacznie lepiej niż najnowocześniejsze modele ze wszystkimi bajerami i gwizdkami.

Sprzężenie zwrotne

Cykl ten łączy w sobie zbieranie danych, dodatkowe szkolenia i wdrożenie – w zasadzie cały cykl aktualizacji modelu. Dlaczego to jest ważne? Zobacz harmonogram rejestracji w mailu:

Działanie uczenia maszynowego w Mail.ru Mail

Programista zajmujący się uczeniem maszynowym wdrożył model przeciwdziałający botom, który uniemożliwia botom rejestrowanie się w wiadomościach e-mail. Wykres spada do wartości, przy której pozostają tylko prawdziwi użytkownicy. Wszystko w porządku! Ale mijają cztery godziny, boty modyfikują swoje skrypty i wszystko wraca do normy. W tej implementacji programista spędził miesiąc na dodawaniu funkcji i ponownym szkoleniu modelu, ale spamerowi udało się dostosować w ciągu czterech godzin.

Aby nie być tak potwornie bolesnym i nie musieć wszystkiego powtarzać później, musimy najpierw pomyśleć o tym, jak będzie wyglądać pętla sprzężenia zwrotnego i co zrobimy, jeśli zmieni się otoczenie. Zacznijmy od gromadzenia danych – to one stanowią paliwo dla naszych algorytmów.

Zbieranie danych

Wiadomo, że w przypadku nowoczesnych sieci neuronowych im więcej danych, tym lepiej, a tak naprawdę są one generowane przez użytkowników produktu. Użytkownicy mogą nam pomóc zaznaczając dane, ale nie możemy tego nadużywać, ponieważ w pewnym momencie użytkownicy znudzą się kompletowaniem Twoich modeli i przejdą na inny produkt.

Jednym z najczęstszych błędów (tutaj nawiązuję do Andrew Ng) jest zbytnie skupianie się na metrykach na testowym zbiorze danych, a nie na informacji zwrotnej od użytkownika, która tak naprawdę jest głównym miernikiem jakości pracy, gdyż tworzymy produkt dla użytkownika. Jeśli użytkownik nie rozumie lub nie podoba mu się praca modelu, wszystko jest zrujnowane.

Dlatego użytkownik powinien zawsze mieć możliwość oddania głosu i otrzymać narzędzie do wyrażania opinii. Jeśli uznamy, że w skrzynce pocztowej pojawił się list związany z finansami, musimy oznaczyć go jako „finanse” i narysować przycisk, w który użytkownik będzie mógł kliknąć i powiedzieć, że nie jest to finanse.

Jakość informacji zwrotnej

Porozmawiajmy o jakości opinii użytkowników. Po pierwsze, Ty i użytkownik możecie nadać różne znaczenia jednej koncepcji. Na przykład Ty i Twoi menedżerowie produktu myślicie, że „finanse” oznaczają listy z banku, a użytkownik uważa, że ​​list od babci w sprawie jej emerytury również odnosi się do finansów. Po drugie, są użytkownicy, którzy bezmyślnie uwielbiają naciskać przyciski bez żadnej logiki. Po trzecie, użytkownik może się głęboko mylić w swoich wnioskach. Uderzającym przykładem z naszej praktyki jest wdrożenie klasyfikatora Nigeryjski spam, bardzo zabawny rodzaj spamu, w którym użytkownik jest proszony o zabranie kilku milionów dolarów od nagle odnalezionego dalekiego krewnego w Afryce. Po zaimplementowaniu tego klasyfikatora sprawdziliśmy kliknięcia „To nie spam” w tych e-mailach i okazało się, że 80% z nich to soczysty nigeryjski spam, co sugeruje, że użytkownicy mogą być wyjątkowo łatwowierni.

I nie zapominajmy, że przyciski mogą być klikane nie tylko przez ludzi, ale także przez wszelkiego rodzaju boty udające przeglądarkę. Zatem surowa informacja zwrotna nie sprzyja nauce. Co możesz zrobić z tymi informacjami?

Stosujemy dwa podejścia:

  • Opinia z połączonego ML. Mamy na przykład internetowy system antybotowy, który jak wspomniałem, podejmuje szybką decyzję na podstawie ograniczonej liczby znaków. Jest też drugi, powolny system, który działa po fakcie. Zawiera więcej danych o użytkowniku, jego zachowaniu itp. W rezultacie podejmowana jest najbardziej świadoma decyzja, a co za tym idzie, ma ona większą dokładność i kompletność. Różnicę w działaniu tych systemów możesz skierować na pierwszy jako dane treningowe. Dlatego prostszy system zawsze będzie próbował zbliżyć się do wydajności bardziej złożonego.
  • Kliknij klasyfikację. Możesz po prostu sklasyfikować każde kliknięcie użytkownika, ocenić jego ważność i użyteczność. Robimy to w poczcie antyspamowej, wykorzystując atrybuty użytkownika, jego historię, atrybuty nadawcy, sam tekst i wynik działania klasyfikatorów. W efekcie otrzymujemy automatyczny system weryfikujący opinie użytkowników. A ponieważ trzeba go przekwalifikowywać znacznie rzadziej, jego praca może stać się podstawą wszystkich innych systemów. Głównym priorytetem w tym modelu jest precyzja, ponieważ uczenie modelu na niedokładnych danych jest obarczone konsekwencjami.

Czyszcząc dane i dokształcając nasze systemy ML, nie możemy zapominać o użytkownikach, bo dla nas tysiące, miliony błędów na wykresie to statystyka, a dla użytkownika każdy błąd to tragedia. Oprócz tego, że użytkownik musi jakoś żyć ze swoim błędem w produkcie, po otrzymaniu informacji zwrotnej oczekuje, że podobna sytuacja zostanie w przyszłości wyeliminowana. Dlatego zawsze warto dać użytkownikom możliwość nie tylko oddania głosu, ale także skorygowania zachowań systemów ML, tworząc np. personalną heurystykę dla każdego kliknięcia z informacją zwrotną; w przypadku poczty może to być możliwość filtrowania takie listy według nadawcy i tytułu dla tego użytkownika.

Trzeba też zbudować model na podstawie jakichś raportów czy próśb o wsparcie w trybie półautomatycznym lub ręcznym, aby inni użytkownicy nie mieli podobnych problemów.

Heurystyki w uczeniu się

Z heurystyką i kulami wiążą się dwa problemy. Po pierwsze, stale rosnąca liczba kul jest trudna w utrzymaniu, nie mówiąc już o ich jakości i wydajności na dłuższą metę. Drugim problemem jest to, że błąd może nie być częsty i kilka kliknięć w celu dalszego uczenia modelu nie wystarczy. Wydaje się, że te dwa, niezwiązane ze sobą efekty można w znaczący sposób zneutralizować, stosując poniższe podejście.

  1. Tworzymy tymczasową kulę.
  2. Wysyłamy z niego dane do modelu, on na bieżąco sam się aktualizuje, także o otrzymane dane. Tutaj oczywiście ważne jest, aby heurystyki charakteryzowały się dużą dokładnością, aby nie obniżyć jakości danych w zbiorze uczącym.
  3. Następnie ustawiamy monitorowanie na uruchomienie kuli, a jeżeli po pewnym czasie kula przestanie działać i zostanie całkowicie zakryta przez model, to można ją bezpiecznie zdjąć. Teraz ten problem raczej się nie powtórzy.

Zatem armia kul jest bardzo przydatna. Najważniejsze, że ich usługa jest pilna i nie trwała.

Dodatkowy trening

Przekwalifikowanie to proces dodawania nowych danych uzyskanych w wyniku informacji zwrotnej od użytkowników lub innych systemów i uczenie na nich istniejącego modelu. Z dodatkowym szkoleniem może wystąpić kilka problemów:

  1. Model może po prostu nie wspierać dodatkowych szkoleń, a uczyć się tylko od zera.
  2. Nigdzie w księdze natury nie jest napisane, że dodatkowe szkolenia z pewnością poprawią jakość pracy na produkcji. Często dzieje się odwrotnie, to znaczy możliwe jest tylko pogorszenie.
  3. Zmiany mogą być nieprzewidywalne. Jest to dość subtelny punkt, który sami zidentyfikowaliśmy. Nawet jeśli nowy model w teście A/B wykaże podobne wyniki w porównaniu do obecnego, nie oznacza to, że będzie działał identycznie. Ich praca może różnić się zaledwie o jeden procent, co może przynieść nowe błędy lub zwrócić stare, już poprawione. Zarówno my, jak i użytkownicy, wiemy już, jak żyć z obecnymi błędami, a gdy pojawi się duża liczba nowych błędów, użytkownik również może nie zrozumieć, co się dzieje, ponieważ oczekuje przewidywalnego zachowania.

Dlatego w szkoleniu dodatkowym najważniejsze jest to, aby model był udoskonalany, a przynajmniej nie pogarszany.

Pierwszą rzeczą, która przychodzi na myśl, gdy mówimy o dodatkowych szkoleniach, jest podejście Active Learning. Co to znaczy? Na przykład klasyfikator określa, czy wiadomość e-mail jest związana z finansami, a wokół jej granicy decyzyjnej dodajemy próbkę oznaczonych etykietami przykładów. Świetnie sprawdza się to np. w reklamie, gdzie jest dużo feedbacku i można wytrenować modela online. A jeśli sprzężenia zwrotnego jest niewiele, otrzymujemy wysoce stronniczą próbkę w stosunku do rozkładu danych produkcyjnych, na podstawie której nie można ocenić zachowania modelu podczas pracy.

Działanie uczenia maszynowego w Mail.ru Mail

Tak naprawdę naszym celem jest zachowanie starych wzorców, znanych już modeli i pozyskanie nowych. Ciągłość jest tutaj ważna. Model, którego wdrożenie często zadaliśmy sobie wiele trudu, już działa, więc możemy skupić się na jego wydajności.

W poczcie stosowane są różne modele: drzewa, liniowe, sieci neuronowe. Dla każdego tworzymy własny, dodatkowy algorytm uczący. W procesie dodatkowego szkolenia otrzymujemy nie tylko nowe dane, ale często także nowe funkcje, które uwzględnimy we wszystkich poniższych algorytmach.

Modele liniowe

Powiedzmy, że mamy regresję logistyczną. Tworzymy model straty z następujących elementów:

  • LogLoss na nowych danych;
  • regulujemy wagi nowych funkcji (nie dotykamy starych);
  • uczymy się także na starych danych, aby zachować stare wzorce;
  • i być może najważniejsza rzecz: dodajemy Regularizację Harmoniczną, która gwarantuje, że wagi nie zmienią się zbytnio w stosunku do starego modelu zgodnie z normą.

Ponieważ każdy składnik straty ma współczynniki, możemy wybrać optymalne wartości dla naszego zadania poprzez walidację krzyżową lub w oparciu o wymagania produktu.

Działanie uczenia maszynowego w Mail.ru Mail

Деревья

Przejdźmy do drzew decyzyjnych. Opracowaliśmy następujący algorytm dodatkowego uczenia drzew:

  1. Produkcja prowadzi las liczący 100-300 drzew, który jest szkolony na starym zbiorze danych.
  2. Na koniec usuwamy M = 5 sztuk i dodajemy 2M = 10 nowych, trenowanych na całym zbiorze danych, ale z dużą wagą dla nowych danych, co w naturalny sposób gwarantuje przyrostową zmianę w modelu.

Oczywiście z biegiem czasu liczba drzew znacznie wzrasta i należy je okresowo redukować, aby dotrzymać terminów. W tym celu wykorzystujemy obecnie wszechobecną destylację wiedzy (KD). Krótko o zasadzie jego działania.

  1. Mamy obecny „złożony” model. Uruchamiamy go na zbiorze danych szkoleniowych i na wyjściu otrzymujemy rozkład prawdopodobieństwa klasy.
  2. Następnie szkolimy model ucznia (w tym przypadku model z mniejszą liczbą drzew), aby powtarzał wyniki modelu, używając rozkładu klas jako zmiennej docelowej.
  3. Warto tutaj zaznaczyć, że nie używamy w żaden sposób znaczników zbioru danych, dlatego możemy wykorzystać dowolne dane. Oczywiście jako próbkę treningową dla modelu studenckiego wykorzystujemy próbkę danych ze strumienia bojowego. Zatem zbiór uczący pozwala zapewnić dokładność modelu, a próbka strumieniowa gwarantuje podobne wyniki na rozkładzie produkcyjnym, kompensując obciążenie zbioru uczącego.

Działanie uczenia maszynowego w Mail.ru Mail

Połączenie tych dwóch technik (dodawanie drzew i okresowe zmniejszanie ich liczby za pomocą Destylacji Wiedzy) zapewnia wprowadzenie nowych wzorców i pełną ciągłość.

Za pomocą KD wykonujemy również różne operacje na cechach modelu, takie jak usuwanie cech i praca nad lukami. W naszym przypadku mamy szereg ważnych funkcji statystycznych (według nadawców, skrótów tekstowych, adresów URL itp.), które są przechowywane w bazie danych, a które zwykle zawodzą. Model oczywiście nie jest gotowy na taki rozwój zdarzeń, gdyż w zbiorze uczącym nie występują sytuacje awaryjne. W takich przypadkach łączymy techniki KD i augmentacji: ucząc część danych, usuwamy lub resetujemy niezbędne cechy i bierzemy oryginalne etykiety (wyjścia bieżącego modelu), a model ucznia uczy się powtarzać ten rozkład .

Działanie uczenia maszynowego w Mail.ru Mail

Zauważyliśmy, że im poważniejsza jest manipulacja modelem, tym większy jest wymagany procent próbki gwintu.

Usunięcie funkcji, najprostsza operacja, wymaga tylko niewielkiej części przepływu, ponieważ zmienia się tylko kilka funkcji, a bieżący model został wytrenowany na tym samym zestawie - różnica jest minimalna. Aby uprościć model (kilkukrotnie zmniejszając liczbę drzew), potrzeba już 50 do 50. A w przypadku pominięć ważnych cech statystycznych, które poważnie wpływają na działanie modelu, potrzebny jest jeszcze większy przepływ, aby wyrównać pracę nowy model odporny na pominięcia dla wszystkich typów liter.

Działanie uczenia maszynowego w Mail.ru Mail

Szybki tekst

Przejdźmy do FastText. Przypomnę, że reprezentacja (Osadzanie) słowa składa się z sumy osadzania samego słowa i wszystkich jego liter N-gramów, zwykle trygramów. Ponieważ trygramów może być całkiem sporo, stosuje się Bucket Hashing, czyli konwertowanie całej przestrzeni na określoną stałą hashmapę. W rezultacie otrzymuje się macierz wag z wymiarem warstwy wewnętrznej na liczbę słów + wiader.

Wraz z dodatkowym treningiem pojawiają się nowe znaki: słowa i trygramy. W standardowym szkoleniu uzupełniającym z Facebooka nic istotnego się nie dzieje. Tylko stare wagi z entropią krzyżową są ponownie szkolone na nowych danych. Nie stosuje się zatem nowych funkcji, oczywiście podejście to ma wszystkie opisane powyżej wady związane z nieprzewidywalnością modelu w produkcji. Dlatego trochę zmodyfikowaliśmy FastText. Dodajemy wszystkie nowe wagi (słowa i trygramy), rozszerzamy całą macierz o entropię krzyżową i dodajemy regularyzację harmoniczną analogicznie do modelu liniowego, co gwarantuje nieznaczną zmianę starych wag.

Działanie uczenia maszynowego w Mail.ru Mail

CNN

Sieci splotowe są nieco bardziej skomplikowane. Jeśli w CNN zostaną ukończone ostatnie warstwy, to oczywiście można zastosować regularyzację harmoniczną i zagwarantować ciągłość. Jeśli jednak wymagane jest dodatkowe szkolenie całej sieci, wówczas takiej regularyzacji nie można już zastosować do wszystkich warstw. Istnieje jednak możliwość trenowania osadzania uzupełniającego poprzez utratę potrójną (oryginalny artykuł).

Potrójna strata

Na przykładzie zadania antyphishingowego przyjrzyjmy się ogólnie problemowi Triplet Loss. Bierzemy nasze logo, a także pozytywne i negatywne przykłady logo innych firm. Minimalizujemy odległość między pierwszymi, a maksymalizujemy odległość między drugim, robimy to z małą szczeliną, aby zapewnić większą zwartość klas.

Działanie uczenia maszynowego w Mail.ru Mail

Jeśli będziemy dalej trenować sieć, to nasza przestrzeń metryczna całkowicie się zmieni i stanie się całkowicie niekompatybilna z poprzednią. Jest to poważny problem w przypadku problemów wykorzystujących wektory. Aby obejść ten problem, podczas szkolenia dodamy stare osady.

Dodaliśmy nowe dane do zbioru uczącego i trenujemy od podstaw drugą wersję modelu. W drugim etapie szkolimy dalej naszą sieć (Finetuning): najpierw kończymy ostatnią warstwę, a następnie odmrażamy całą sieć. W procesie komponowania trójek obliczamy tylko część osadzania przy użyciu wyuczonego modelu, resztę - przy użyciu starego. Tym samym w procesie dodatkowego szkolenia zapewniamy zgodność przestrzeni metrycznych v1 i v2. Unikalna wersja regularyzacji harmonicznej.

Działanie uczenia maszynowego w Mail.ru Mail

Cała architektura

Jeśli weźmiemy pod uwagę cały system na przykładzie antyspamu, wówczas modele nie są izolowane, ale zagnieżdżone w sobie. Robimy zdjęcia, tekst i inne funkcje, korzystając z CNN i Fast Text, uzyskujemy osadzenie. Następnie na osadzania nakładane są klasyfikatory, które zapewniają ocenę dla różnych klas (rodzaje listów, spam, obecność logo). Sygnały i znaki już wkraczają w las drzew, aby zapadła ostateczna decyzja. Poszczególne klasyfikatory w tym schemacie umożliwiają lepszą interpretację wyników systemu, a dokładniej przekwalifikowanie komponentów w przypadku problemów, zamiast wprowadzać wszystkie dane do drzew decyzyjnych w surowej formie.

Działanie uczenia maszynowego w Mail.ru Mail

Dzięki temu gwarantujemy ciągłość na każdym poziomie. Na dolnym poziomie w CNN i Fast Text stosujemy regularyzację harmoniczną, dla klasyfikatorów środkowych również stosujemy regularyzację harmoniczną i kalibrację szybkości w celu zapewnienia spójności rozkładu prawdopodobieństwa. Cóż, wzmacnianie drzew jest trenowane stopniowo lub przy użyciu destylacji wiedzy.

Ogólnie rzecz biorąc, utrzymanie takiego zagnieżdżonego systemu uczenia maszynowego jest zwykle uciążliwe, ponieważ każdy komponent na niższym poziomie prowadzi do aktualizacji całego systemu powyżej. Ponieważ jednak w naszej konfiguracji każdy komponent zmienia się nieznacznie i jest kompatybilny z poprzednim, cały system można aktualizować kawałek po kawałku bez konieczności ponownego szkolenia całej konstrukcji, co pozwala na jego obsługę bez poważnych kosztów ogólnych.

Wdrożyć

Omówiliśmy zbieranie danych i dodatkowe uczenie różnych typów modeli, zatem przechodzimy do ich wdrożenia na środowisko produkcyjne.

Testy A/B

Jak powiedziałem wcześniej, w procesie zbierania danych zwykle otrzymujemy próbkę obciążoną, z której nie da się ocenić wydajności produkcyjnej modelu. Dlatego przy wdrażaniu należy porównać model z poprzednią wersją, aby zrozumieć, jak faktycznie się sprawy mają, czyli przeprowadzić testy A/B. W rzeczywistości proces tworzenia i analizowania wykresów jest dość rutynowy i można go łatwo zautomatyzować. Stopniowo wdrażamy nasze modele u 5%, 30%, 50% i 100% użytkowników, zbierając jednocześnie wszystkie dostępne metryki dotyczące odpowiedzi modeli i opinii użytkowników. W przypadku poważnych wartości odstających automatycznie wycofujemy model, a w pozostałych przypadkach, po zebraniu wystarczającej liczby kliknięć użytkownika, decydujemy się na zwiększenie wartości procentowej. Dzięki temu nowy model udostępniamy 50% użytkowników całkowicie automatycznie, a wdrożenie u wszystkich odbiorców zostanie zaakceptowane przez osobę, chociaż ten krok można zautomatyzować.

Jednak proces testów A/B daje pole do optymalizacji. Faktem jest, że każdy test A/B jest dość długi (w naszym przypadku trwa od 6 do 24 godzin w zależności od ilości informacji zwrotnej), co powoduje, że jest dość kosztowny i wymaga ograniczonych zasobów. Ponadto wymagany jest odpowiednio wysoki procent przepływu do testu, aby zasadniczo przyspieszyć całkowity czas testu A/B (rekrutacja statystycznie istotnej próby do oceny metryk przy niewielkim procencie może zająć bardzo dużo czasu), co sprawia, że liczba miejsc A/B jest bardzo ograniczona. Oczywiście musimy przetestować tylko najbardziej obiecujące modele, których otrzymujemy całkiem sporo w trakcie dodatkowego szkolenia.

Aby rozwiązać ten problem, wytrenowaliśmy oddzielny klasyfikator, który przewiduje powodzenie testu A/B. Aby to zrobić, jako cechy bierzemy statystyki podejmowania decyzji, precyzję, przypomnienie i inne metryki na zbiorze uczącym, na zbiorze odroczonym i na próbce ze strumienia. Porównujemy także model z aktualnie produkowanym, za pomocą heurystyki i bierzemy pod uwagę złożoność modelu. Wykorzystując wszystkie te cechy, klasyfikator przeszkolony w zakresie historii testów ocenia kandydujące modele – w naszym przypadku są to lasy drzew – i decyduje, który z nich zastosować w teście A/B.

Działanie uczenia maszynowego w Mail.ru Mail

W momencie wdrożenia takie podejście pozwoliło nam kilkukrotnie zwiększyć liczbę udanych testów A/B.

Testowanie i monitorowanie

Testowanie i monitorowanie, o dziwo, nie szkodzą naszemu zdrowiu, a wręcz przeciwnie, poprawiają je i uwalniają od niepotrzebnego stresu. Testowanie pozwala zapobiec awarii, a monitorowanie pozwala wykryć ją na czas, aby zmniejszyć wpływ na użytkowników.

Ważne jest, aby zrozumieć, że prędzej czy później Twój system zawsze popełni błędy - wynika to z cyklu rozwojowego każdego oprogramowania. Na początku rozwoju systemu zawsze jest mnóstwo błędów, dopóki wszystko się nie uspokoi i nie zakończy się główny etap innowacji. Jednak z biegiem czasu entropia robi swoje i błędy pojawiają się ponownie – na skutek degradacji podzespołów dookoła i zmian w danych, o czym mówiłem na początku.

W tym miejscu chciałbym zaznaczyć, że każdy system uczenia maszynowego należy rozpatrywać pod kątem zysku w całym cyklu jego życia. Poniższy wykres pokazuje przykład działania systemu w celu wyłapania rzadkiego rodzaju spamu (linia na wykresie jest bliska zeru). Któregoś dnia z powodu źle zapisanego atrybutu wpadła w szał. Szczęśliwie nie było monitoringu pod kątem nieprawidłowego wyzwalania, w rezultacie system zaczął zapisywać duże ilości listów w folderze „spam” na granicy podejmowania decyzji. Mimo skorygowania skutków, system popełnił już tyle błędów, że nie zwróci się nawet za pięć lat. A to kompletna porażka z punktu widzenia cyklu życia modelu.

Działanie uczenia maszynowego w Mail.ru Mail

Dlatego tak prosta rzecz jak monitoring może stać się kluczowa w życiu modelki. Oprócz standardowych i oczywistych wskaźników bierzemy pod uwagę rozkład odpowiedzi i wyników modelu, a także rozkład wartości kluczowych cech. Wykorzystując dywergencję KL możemy porównać bieżący rozkład z historycznym lub wartości w teście A/B z resztą strumienia, co pozwala dostrzec anomalie w modelu i w odpowiednim czasie cofnąć zmiany.

W większości przypadków pierwsze wersje systemów uruchamiamy wykorzystując proste heurystyki lub modele, które wykorzystujemy do monitorowania w przyszłości. Przykładowo monitorujemy model NER w porównaniu ze zwykłymi dla konkretnych sklepów internetowych i jeśli w porównaniu z nimi spada zasięg klasyfikatora, to rozumiemy przyczyny. Kolejne przydatne zastosowanie heurystyki!

Wyniki

Przeanalizujmy jeszcze raz kluczowe idee artykułu.

  • Fibdeck. Zawsze myślimy o użytkowniku: jak będzie żył z naszymi błędami, jak będzie mógł je zgłosić. Nie zapominaj, że użytkownicy nie są źródłem czystej informacji zwrotnej dla modeli szkoleniowych i należy ją oczyścić za pomocą pomocniczych systemów ML. Jeśli nie ma możliwości zebrania sygnału od użytkownika, wówczas szukamy alternatywnych źródeł informacji zwrotnej, np. podłączonych systemów.
  • Dodatkowy trening. Najważniejsza jest tutaj ciągłość, dlatego bazujemy na dotychczasowym modelu produkcji. Trenujemy nowe modele tak, aby nie różniły się zbytnio od poprzednich regularyzacją harmoniczną i podobnymi trikami.
  • Wdrożyć. Automatyczne wdrażanie w oparciu o metryki znacznie skraca czas wdrażania modeli. Monitorowanie statystyk i rozkład procesów decyzyjnych, liczba upadków użytkowników jest obowiązkowa dla Twojego spokojnego snu i produktywnego weekendu.

Mam nadzieję, że pomoże Ci to szybciej ulepszyć systemy uczenia maszynowego, szybciej wprowadzić je na rynek oraz sprawić, że będą bardziej niezawodne i mniej stresujące.

Źródło: www.habr.com

Dodaj komentarz