Provoz strojového učení v Mail.ru Mail

Provoz strojového učení v Mail.ru Mail

Na základě mých vystoupení na Highload++ a DataFest Minsk 2019.

Pro mnohé je dnes pošta nedílnou součástí online života. S jeho pomocí vedeme obchodní korespondenci, uchováváme všechny druhy důležitých informací týkajících se financí, hotelových rezervací, zadávání objednávek a mnoho dalšího. V polovině roku 2018 jsme formulovali produktovou strategii pro rozvoj pošty. Jaká by měla být moderní pošta?

Mail musí být chytrý, to znamená, že pomáhá uživatelům orientovat se v rostoucím objemu informací: filtrovat, strukturovat a poskytovat je tím nejpohodlnějším způsobem. Musí být užitečný, umožňující řešit různé úkoly přímo ve vaší schránce, například platit pokuty (funkce, kterou bohužel používám). A zároveň musí pošta samozřejmě poskytovat ochranu informací, odřezávat spam a chránit před hackováním, to znamená být bezpečný.

Tyto oblasti definují řadu klíčových problémů, z nichž mnohé lze efektivně vyřešit pomocí strojového učení. Zde jsou příklady již existujících funkcí vyvinutých jako součást strategie – jedna pro každý směr.

  • Inteligentní odpověď. Mail má funkci chytré odpovědi. Neuronová síť analyzuje text dopisu, chápe jeho význam a účel a ve výsledku nabízí tři nejvhodnější možnosti odpovědi: pozitivní, negativní a neutrální. To pomáhá výrazně šetřit čas při odpovídání na dopisy a také často reagovat nestandardně a vtipně.
  • Seskupování e-mailůsouvisející s objednávkami v internetových obchodech. Často nakupujeme online a obchody zpravidla mohou ke každé objednávce poslat několik e-mailů. Například z AliExpress, největší služby, přichází na jednu objednávku hodně písmen a my jsme spočítali, že v terminálovém případě by jejich počet mohl dosáhnout až 29. Proto pomocí modelu Named Entity Recognition extrahujeme číslo objednávky a další informace z textu a seskupte všechna písmena do jednoho vlákna. V samostatném boxu zobrazujeme také základní informace o objednávce, což usnadňuje práci s tímto typem emailu.

    Provoz strojového učení v Mail.ru Mail

  • Antiphishing. Phishing je obzvláště nebezpečný podvodný typ e-mailu, s jehož pomocí se útočníci snaží získat finanční informace (včetně bankovních karet uživatele) a přihlašovací údaje. Takové dopisy napodobují skutečné dopisy zaslané službou, a to i vizuálně. Proto s pomocí Computer Vision rozpoznáváme loga a styl designu dopisů od velkých společností (například Mail.ru, Sber, Alfa) a bereme to v úvahu spolu s textem a dalšími funkcemi v našich klasifikátorech spamu a phishingu. .

Strojové učení

Něco málo o strojovém učení v e-mailu obecně. Mail je vysoce zatížený systém: průměrně 1,5 miliardy dopisů denně projde našimi servery pro 30 milionů uživatelů DAU. Přibližně 30 systémů strojového učení podporuje všechny potřebné funkce a vlastnosti.

Každé písmeno prochází celým klasifikačním kanálem. Nejprve odřízneme spam a zanecháme dobré e-maily. Uživatelé si často nevšimnou práce antispamu, protože 95-99 % spamu ani neskončí v příslušné složce. Rozpoznávání spamu je velmi důležitou součástí našeho systému a nejobtížnější, protože v oblasti antispamu dochází k neustálému přizpůsobování mezi obrannými a útočnými systémy, což představuje neustálou technickou výzvu pro náš tým.

Dále oddělujeme písmena od lidí a robotů. Nejdůležitější jsou e-maily od lidí, proto jim poskytujeme funkce, jako je chytrá odpověď. Dopisy od robotů se dělí na dvě části: transakční - to jsou důležité dopisy ze služeb, například potvrzení o nákupech nebo hotelových rezervacích, finance a informační - jedná se o obchodní reklamu, slevy.

Věříme, že transakční e-maily jsou stejně důležité jako osobní korespondence. Měli by být po ruce, protože často potřebujeme rychle najít informace o objednávce nebo rezervaci letenky a hledáním těchto dopisů trávíme čas. Proto je pro pohodlí automaticky rozdělujeme do šesti hlavních kategorií: cestování, objednávky, finance, letenky, registrace a nakonec pokuty.

Informační dopisy jsou největší a pravděpodobně méně důležitou skupinou, která nevyžadují okamžitou reakci, protože pokud si takový dopis nepřečte, nic podstatného se v životě uživatele nezmění. V našem novém rozhraní je sbalíme do dvou vláken: sociální sítě a newslettery, čímž vizuálně vyčistíme doručenou poštu a zůstanou viditelné pouze důležité zprávy.

Provoz strojového učení v Mail.ru Mail

Vykořisťování

Velké množství systémů způsobuje mnoho problémů v provozu. Koneckonců, modely se časem degradují, jako každý software: funkce se pokazí, stroje selžou, kód se pokřiví. Data se navíc neustále mění: přibývají nová, transformují se vzorce chování uživatelů atd., takže model bez patřičné podpory bude časem fungovat hůř a hůř.

Nesmíme zapomínat, že čím hlouběji strojové učení pronikne do života uživatelů, tím větší dopad mají na ekosystém a v důsledku toho mohou účastníci trhu získat více finančních ztrát nebo zisků. Hráči se proto ve stále větším počtu oblastí přizpůsobují práci ML algoritmů (klasickými příklady jsou reklama, vyhledávání a již zmíněný antispam).

Také úlohy strojového učení mají jednu zvláštnost: jakákoli, byť drobná, změna v systému může vygenerovat spoustu práce s modelem: práce s daty, rekvalifikace, nasazení, které může trvat týdny i měsíce. Čím rychleji se tedy mění prostředí, ve kterém vaše modely fungují, tím více úsilí vyžaduje jejich údržba. Tým může vytvořit spoustu systémů a mít z toho radost, ale pak vynaloží téměř všechny své zdroje na jejich údržbu, aniž by měl možnost udělat něco nového. S takovou situací jsme se jednou setkali v antispamovém týmu. A učinili jasný závěr, že podporu je třeba automatizovat.

Automatizace

Co lze automatizovat? Vlastně skoro všechno. Identifikoval jsem čtyři oblasti, které definují infrastrukturu strojového učení:

  • sběr dat;
  • trénink nad rámec;
  • nasadit;
  • testování a monitorování.

Pokud je prostředí nestabilní a neustále se mění, pak se celá infrastruktura kolem modelu ukazuje jako mnohem důležitější než samotný model. Může to být starý dobrý lineární klasifikátor, ale pokud jej nakrmíte správnými funkcemi a získáte dobrou zpětnou vazbu od uživatelů, bude fungovat mnohem lépe než nejmodernější modely se všemi zvonky a píšťalkami.

Smyčka zpětné vazby

Tento cyklus kombinuje sběr dat, další školení a nasazení – vlastně celý cyklus aktualizace modelu. Proč je to důležité? Podívejte se na rozpis registrací v mailu:

Provoz strojového učení v Mail.ru Mail

Vývojář strojového učení implementoval model anti-bot, který zabraňuje robotům v registraci v e-mailu. Graf klesne na hodnotu, kdy zůstanou pouze skuteční uživatelé. Všechno je skvělé! Ale uplynou čtyři hodiny, boti upraví své skripty a vše se vrátí do normálu. V této implementaci strávil vývojář měsíc přidáváním funkcí a přeškolováním modelu, ale spammer se dokázal přizpůsobit za čtyři hodiny.

Abychom nebyli tak mučivě bolestiví a nemuseli později vše předělávat, musíme zpočátku přemýšlet o tom, jak bude smyčka zpětné vazby vypadat a co uděláme, pokud se prostředí změní. Začněme sběrem dat – to je palivo pro naše algoritmy.

Sběr dat

Je jasné, že u moderních neuronových sítí platí, že čím více dat, tím lépe a ve skutečnosti je generují uživatelé produktu. Uživatelé nám mohou pomoci označením dat, ale nemůžeme toho zneužít, protože uživatele v určitém okamžiku omrzí dokončovat vaše modely a přejdou na jiný produkt.

Jednou z nejčastějších chyb (zde odkazuji na Andrewa Nga) je přílišné zaměření na metriky na testovacím datovém souboru, a ne na zpětnou vazbu od uživatele, což je vlastně hlavní měřítko kvality práce, protože vytváříme produkt pro uživatele. Pokud uživatel nerozumí nebo se mu nelíbí práce modelu, pak je vše zničeno.

Uživatel by tedy měl mít vždy možnost hlasovat a měl by mít k dispozici nástroj pro zpětnou vazbu. Pokud si myslíme, že do schránky dorazil dopis související s financemi, musíme jej označit jako „finance“ a nakreslit tlačítko, na které může uživatel kliknout a říci, že se nejedná o finance.

Kvalita zpětné vazby

Pojďme se bavit o kvalitě zpětné vazby od uživatelů. Za prvé, vy a uživatel můžete dát různé významy do jednoho konceptu. Například vy a vaši produktoví manažeři si myslíte, že „finance“ znamená dopisy z banky, a uživatel si myslí, že dopis od babičky o jejím důchodu také odkazuje na finance. Za druhé, existují uživatelé, kteří bezmyšlenkovitě rádi mačkají tlačítka bez jakékoli logiky. Za třetí, uživatel se může ve svých závěrech hluboce mýlit. Nápadným příkladem z naší praxe je implementace klasifikátoru Nigerijský spam, velmi zábavný typ spamu, kde je uživatel požádán, aby vzal několik milionů dolarů od náhle nalezeného vzdáleného příbuzného v Africe. Po implementaci tohoto klasifikátoru jsme u těchto e-mailů zkontrolovali kliknutí „Není spam“ a ukázalo se, že 80 % z nich byl šťavnatý nigerijský spam, což naznačuje, že uživatelé mohou být extrémně důvěřiví.

A nezapomínejme, že na tlačítka mohou klikat nejen lidé, ale také nejrůznější roboti, kteří se vydávají za prohlížeč. Takže syrová zpětná vazba není pro učení dobrá. Co můžete s těmito informacemi dělat?

Používáme dva přístupy:

  • Zpětná vazba z propojeného ML. Máme například online anti-bot systém, který, jak jsem již zmínil, se rychle rozhoduje na základě omezeného počtu znaků. A je tu druhý, pomalý systém, který funguje až poté. Má více dat o uživateli, jeho chování atp. V důsledku toho je učiněno nejinformovanější rozhodnutí, a proto má vyšší přesnost a úplnost. Rozdíl ve fungování těchto systémů můžete nasměrovat na první z nich jako tréninková data. Jednodušší systém se tedy vždy bude snažit přiblížit výkonu složitějšího.
  • Klasifikace kliknutí. Každé kliknutí uživatele můžete jednoduše klasifikovat, vyhodnotit jeho platnost a použitelnost. Děláme to v antispamové poště pomocí atributů uživatele, jeho historie, atributů odesílatele, samotného textu a výsledku klasifikátorů. Výsledkem je automatický systém, který ověřuje zpětnou vazbu od uživatelů. A protože je třeba mnohem méně často přeškolovat, může se jeho práce stát základem pro všechny ostatní systémy. Hlavní prioritou tohoto modelu je přesnost, protože trénování modelu na nepřesných datech je plné důsledků.

Zatímco čistíme data a dále školíme naše ML systémy, nesmíme zapomínat na uživatele, protože pro nás jsou tisíce, miliony chyb v grafu statistikou a pro uživatele je každá chyba tragédie. Kromě toho, že uživatel musí s vaší chybou v produktu nějak žít, po obdržení zpětné vazby očekává, že se podobná situace v budoucnu odstraní. Proto se vždy vyplatí dát uživatelům nejen možnost hlasovat, ale také korigovat chování ML systémů, vytvářet například osobní heuristiku pro každé kliknutí zpětné vazby, v případě pošty by to mohla být možnost filtrování takové dopisy podle odesílatele a názvu pro tohoto uživatele.

Také je potřeba sestavit model na základě některých reportů nebo požadavků na podporu v poloautomatickém nebo manuálním režimu, aby ostatní uživatelé netrpěli podobnými problémy.

Heuristika pro učení

Tyto heuristiky a berličky mají dva problémy. První je, že stále se zvyšující počet berliček je náročný na údržbu, natož na jejich kvalitu a výkonnost z dlouhodobého hlediska. Druhým problémem je, že chyba nemusí být častá a pár kliknutí na další trénování modelu nebude stačit. Zdálo by se, že tyto dva nesouvisející efekty lze významně neutralizovat, pokud se použije následující přístup.

  1. Vytváříme dočasnou berličku.
  2. Z něj posíláme data do modelu, ten se pravidelně aktualizuje, a to i na přijatých datech. Zde je samozřejmě důležité, aby heuristika měla vysokou přesnost, aby nesnižovala kvalitu dat v trénovací množině.
  3. Poté nastavíme sledování tak, aby spustilo berli, a pokud po nějaké době již berle nefunguje a je zcela zakrytá modelem, můžete ji bezpečně odstranit. Nyní je nepravděpodobné, že by se tento problém opakoval.

Takže armáda berlí je velmi užitečná. Hlavní věc je, že jejich služba je naléhavá a není trvalá.

Trénink nad rámec

Přeškolení je proces přidávání nových dat získaných jako výsledek zpětné vazby od uživatelů nebo jiných systémů a trénování stávajícího modelu na nich. S dodatečným školením může nastat několik problémů:

  1. Model nemusí podporovat další školení, ale učit se pouze od nuly.
  2. Nikde v knize přírody není psáno, že další školení jistě zkvalitní práci ve výrobě. Často se stává opak, to znamená, že je možné pouze zhoršení.
  3. Změny mohou být nepředvídatelné. Toto je poměrně jemný bod, který jsme si sami určili. I když nový model v A/B testu vykazuje podobné výsledky ve srovnání s tím současným, neznamená to, že bude fungovat identicky. Jejich práce se může lišit jen o jedno procento, což může přinést nové chyby nebo vrátit staré, které již byly opraveny. My i uživatelé již víme, jak žít se současnými chybami, a když se objeví velké množství nových chyb, uživatel také nemusí chápat, co se děje, protože očekává předvídatelné chování.

Proto je nejdůležitější v doplňkovém výcviku zajistit, aby se model zlepšil, nebo alespoň nezhoršil.

První věc, která vás napadne, když mluvíme o doplňkovém školení, je přístup aktivního učení. Co to znamená? Klasifikátor například určuje, zda e-mail souvisí s financemi, a kolem jeho rozhodovací hranice přidáme vzorek označených příkladů. Dobře to funguje například v reklamě, kde je spousta zpětné vazby a modelku můžete trénovat online. A pokud je zpětné vazby málo, pak dostaneme vysoce vychýlený vzorek vzhledem k distribuci výrobních dat, na základě kterého není možné vyhodnotit chování modelu během provozu.

Provoz strojového učení v Mail.ru Mail

Ve skutečnosti je naším cílem zachovat staré vzory, již známé modely a získávat nové. Důležitá je zde kontinuita. Model, který jsme si často dali s velkou námahou, už funguje, takže se můžeme soustředit na jeho výkon.

V poště se používají různé modely: stromy, lineární, neuronové sítě. Pro každý z nich vytváříme vlastní další tréninkový algoritmus. V procesu dalšího školení získáváme nejen nová data, ale často také nové funkce, které zohledníme ve všech níže uvedených algoritmech.

Lineární modely

Řekněme, že máme logistickou regresi. Ztrátový model vytvoříme z následujících komponent:

  • LogLoss na nových datech;
  • upravujeme váhy nových funkcí (nedotýkáme se starých);
  • učíme se také ze starých dat, abychom zachovali staré vzory;
  • a možná to nejdůležitější: přidáváme Harmonic Regularization, která zaručuje, že se váhy oproti starému modelu podle normy příliš nezmění.

Vzhledem k tomu, že každá komponenta ztráty má koeficienty, můžeme vybrat optimální hodnoty pro naši úlohu prostřednictvím křížové validace nebo na základě požadavků na produkt.

Provoz strojového učení v Mail.ru Mail

Stromy

Pojďme k rozhodovacím stromům. Sestavili jsme následující algoritmus pro dodatečné trénování stromů:

  1. Produkce provozuje les o 100–300 stromech, který je trénován na starém souboru dat.
  2. Nakonec odebereme M = 5 kusů a přidáme 2M = 10 nových, natrénovaných na celý soubor dat, ale s vysokou váhou pro nová data, což přirozeně zaručuje postupnou změnu modelu.

Je zřejmé, že v průběhu času se počet stromů výrazně zvyšuje a musí být pravidelně snižovány, aby se dodrželo načasování. K tomu využíváme dnes již všudypřítomnou znalostní destilaci (KD). Stručně o principu jeho fungování.

  1. Máme aktuální "komplexní" model. Spustíme jej na trénovací datové sadě a na výstupu získáme rozdělení pravděpodobnosti tříd.
  2. Dále trénujeme model studenta (v tomto případě model s méně stromy), aby opakoval výsledky modelu s použitím rozdělení tříd jako cílové proměnné.
  3. Zde je důležité poznamenat, že v žádném případě nepoužíváme označení datové sady, a proto můžeme použít libovolná data. Jako cvičný vzorek pro model studenta samozřejmě používáme vzorek dat z bojového proudu. Tréninková sada nám tedy umožňuje zajistit přesnost modelu a vzorek proudu zaručuje podobný výkon při distribuci produkce, kompenzující zkreslení trénovací sady.

Provoz strojového učení v Mail.ru Mail

Kombinace těchto dvou technik (přidávání stromů a periodické snižování jejich počtu pomocí znalostní destilace) zajišťuje zavedení nových vzorů a úplnou kontinuitu.

S pomocí KD také provádíme různé operace s prvky modelu, jako je odstraňování prvků a práce s mezerami. V našem případě máme řadu důležitých statistických funkcí (podle odesílatelů, textových hashů, URL atd.), které jsou uloženy v databázi a které mají tendenci selhávat. Model samozřejmě není na takový vývoj událostí připraven, protože v trénovací množině nedochází k poruchovým situacím. V takových případech kombinujeme techniky KD a augmentace: při trénování části dat odstraníme nebo resetujeme potřebné funkce a vezmeme původní štítky (výstupy aktuálního modelu) a studentský model se naučí tuto distribuci opakovat .

Provoz strojového učení v Mail.ru Mail

Všimli jsme si, že čím vážnější je manipulace s modelem, tím větší procento požadovaného vzorku závitu.

Odstranění prvku, nejjednodušší operace, vyžaduje pouze malou část toku, protože se změní pouze několik prvků a aktuální model byl natrénován na stejné sadě – rozdíl je minimální. Pro zjednodušení modelu (několikanásobné snížení počtu stromů) je již zapotřebí 50 až 50. A pro vynechání důležitých statistických prvků, které vážně ovlivní výkon modelu, je zapotřebí ještě větší průtok, aby se vyrovnala práce nový model odolný proti opomenutí na všech typech písmen.

Provoz strojového učení v Mail.ru Mail

FastText

Pojďme k FastTextu. Dovolte mi připomenout, že reprezentace (Embedding) slova se skládá ze součtu vnoření samotného slova a všech jeho písmenných N-gramů, obvykle trigramů. Vzhledem k tomu, že trigramů může být poměrně hodně, používá se Bucket Hashing, tedy převedení celého prostoru na určitou pevnou hashmapu. V důsledku toho je matice hmotnosti získána s rozměrem vnitřní vrstvy na počet slov + kbelíků.

S dalším tréninkem se objevují nové znaky: slova a trigramy. Ve standardním navazujícím školení z Facebooku se nic podstatného neděje. Pouze staré váhy s křížovou entropií jsou přeškoleny na nová data. Nové funkce se tedy nepoužívají, tento přístup má samozřejmě všechny výše popsané nevýhody spojené s nepředvídatelností modelu ve výrobě. Proto jsme FastText trochu upravili. Přidáme všechny nové váhy (slova a trigramy), celou matici rozšíříme o křížovou entropii a přidáme harmonickou regularizaci analogicky s lineárním modelem, což zaručuje nevýznamnou změnu starých vah.

Provoz strojového učení v Mail.ru Mail

CNN

Konvoluční sítě jsou o něco složitější. Pokud jsou v CNN dokončeny poslední vrstvy, můžete samozřejmě použít harmonickou regularizaci a zaručit kontinuitu. Pokud je však vyžadováno další školení celé sítě, pak již nelze takovou regularizaci aplikovat na všechny vrstvy. Existuje však možnost trénovat doplňková vložení prostřednictvím Triplet Loss (Původní článek).

Trojnásobná ztráta

Na příkladu úlohy proti phishingu se podívejme na Triplet Loss obecně. Bereme naše logo, stejně jako pozitivní i negativní příklady log jiných společností. Minimalizujeme vzdálenost mezi první a maximalizujeme vzdálenost mezi druhou, děláme to s malou mezerou, abychom zajistili větší kompaktnost tříd.

Provoz strojového učení v Mail.ru Mail

Pokud budeme síť dále trénovat, pak se náš metrický prostor zcela změní a stane se zcela nekompatibilním s předchozím. To je vážný problém v problémech, které používají vektory. Abychom tento problém obešli, během tréninku vmícháme staré vložky.

Do tréninkové sady jsme přidali nová data a trénujeme druhou verzi modelu od začátku. Ve druhé fázi dále trénujeme naši síť (Finetuning): nejprve je dokončena poslední vrstva a poté je celá síť rozmražena. V procesu skládání trojic počítáme pouze část vložení pomocí natrénovaného modelu, zbytek - pomocí starého. V procesu dodatečného školení tak zajišťujeme kompatibilitu metrických prostorů v1 a v2. Unikátní verze harmonické regularizace.

Provoz strojového učení v Mail.ru Mail

Celá architektura

Pokud vezmeme jako příklad celý systém využívající antispam, pak modely nejsou izolované, ale vnořené do sebe. Fotíme obrázky, text a další funkce, pomocí CNN a Fast Text získáváme vložení. Dále jsou na vložení aplikovány klasifikátory, které poskytují skóre pro různé třídy (typy dopisů, spam, přítomnost loga). Signály a značky již vstupují do lesa stromů, aby bylo učiněno konečné rozhodnutí. Jednotlivé klasifikátory v tomto schématu umožňují lépe interpretovat výsledky systému a konkrétněji přeškolit komponenty v případě problémů, než vkládat všechna data do rozhodovacích stromů v surové formě.

Provoz strojového učení v Mail.ru Mail

V důsledku toho zaručujeme kontinuitu na všech úrovních. Na spodní úrovni v CNN a Fast Text používáme harmonickou regularizaci, pro klasifikátory uprostřed také harmonickou regularizaci a kalibraci rychlosti pro konzistenci rozdělení pravděpodobnosti. Posilování stromů se trénuje postupně nebo pomocí znalostní destilace.

Obecně platí, že údržba takového vnořeného systému strojového učení je obvykle bolestivá, protože jakákoli komponenta na nižší úrovni vede k aktualizaci celého systému výše. Ale protože v našem nastavení se každý komponent mírně mění a je kompatibilní s předchozím, celý systém lze aktualizovat kus po kuse bez nutnosti přeškolování celé struktury, což umožňuje jeho podporu bez vážných režií.

Nasadit

Probrali jsme sběr dat a další školení různých typů modelů, takže přecházíme k jejich nasazení do produkčního prostředí.

A/B testování

Jak jsem již řekl dříve, v procesu shromažďování dat obvykle získáme zkreslený vzorek, ze kterého není možné vyhodnotit produkční výkon modelu. Při nasazení je proto nutné model porovnat s předchozí verzí, aby bylo možné pochopit, jak se věci vlastně mají, tedy provést A/B testy. Ve skutečnosti je proces zavádění a analýzy grafů zcela rutinní a lze jej snadno automatizovat. Naše modely zavádíme postupně pro 5 %, 30 %, 50 % a 100 % uživatelů, přičemž shromažďujeme všechny dostupné metriky týkající se odpovědí modelů a zpětné vazby od uživatelů. V případě některých závažných odlehlých hodnot model automaticky vrátíme zpět a v ostatních případech se po nasbírání dostatečného počtu uživatelských kliknutí rozhodneme procento zvýšit. Díky tomu přinášíme nový model 50 % uživatelů zcela automaticky a rollout pro celé publikum bude schvalovat člověk, i když tento krok lze automatizovat.

Proces A/B testování však nabízí prostor pro optimalizaci. Faktem je, že jakýkoli A/B test je poměrně dlouhý (v našem případě trvá od 6 do 24 hodin v závislosti na množství zpětné vazby), což jej činí poměrně drahým a omezenými zdroji. Kromě toho je pro test vyžadováno dostatečně vysoké procento průtoku, aby se v podstatě urychlila celková doba testu A/B (nábor statisticky významného vzorku k vyhodnocení metriky v malém procentu může trvat velmi dlouho), což počet A/B slotů je extrémně omezený. Je zřejmé, že potřebujeme testovat jen ty nejslibnější modely, kterých dostáváme v rámci doplňkového tréninkového procesu poměrně dost.

K vyřešení tohoto problému jsme natrénovali samostatný klasifikátor, který předpovídá úspěšnost A/B testu. K tomu používáme statistiky rozhodování, přesnost, vyvolání a další metriky na trénovací sadě, na odloženém souboru a na vzorku ze streamu jako funkce. Model také porovnáváme s aktuálním ve výrobě, s heuristikou a bereme v úvahu Složitost modelu. Pomocí všech těchto funkcí klasifikátor vyškolený na historii testů vyhodnotí kandidátské modely, v našem případě to jsou lesy stromů, a rozhodne, který z nich použít v A/B testu.

Provoz strojového učení v Mail.ru Mail

V době implementace nám tento přístup umožnil několikanásobně zvýšit počet úspěšných A/B testů.

Testování a monitorování

Testování a sledování kupodivu našemu zdraví neškodí, spíše jej naopak zlepšuje a zbavuje nás zbytečného stresu. Testování vám umožní předcházet selhání a monitorování vám umožní jej včas odhalit, abyste snížili dopad na uživatele.

Zde je důležité pochopit, že dříve nebo později váš systém vždy udělá chyby - je to způsobeno vývojovým cyklem jakéhokoli softwaru. Na začátku vývoje systému je vždy spousta chyb, než se vše usadí a hlavní fáze inovace je dokončena. Postupem času si ale entropie vybírá svou daň a opět se objevují chyby – kvůli degradaci komponent kolem a změnám dat, o kterých jsem mluvil na začátku.

Zde bych rád poznamenal, že každý systém strojového učení by měl být posuzován z hlediska jeho zisku v průběhu celého životního cyklu. Níže uvedený graf ukazuje příklad toho, jak systém funguje, aby zachytil vzácný typ spamu (čára v grafu je téměř nulová). Jednoho dne se kvůli nesprávně uloženému atributu zbláznila. Naštěstí nedošlo k žádnému sledování abnormálního spouštění; v důsledku toho systém začal ukládat dopisy ve velkém množství do složky „spam“ na hranici rozhodování. I přes nápravu důsledků už systém udělal chyby tolikrát, že se to nevyplatí ani za pět let. A to je z hlediska životního cyklu modelu naprosté selhání.

Provoz strojového učení v Mail.ru Mail

Proto se tak jednoduchá věc, jako je monitorování, může stát klíčovou v životě modelky. Kromě standardních a zřejmých metrik zvažujeme rozložení odpovědí a skóre modelu a také rozložení hodnot klíčových vlastností. Pomocí KL divergence můžeme porovnat aktuální rozložení s historickým nebo hodnoty v A/B testu se zbytkem proudu, což nám umožňuje zaznamenat anomálie v modelu a včas vrátit zpět změny.

Ve většině případů spouštíme naše první verze systémů pomocí jednoduché heuristiky nebo modelů, které v budoucnu použijeme jako monitoring. Sledujeme například model NER ve srovnání s běžnými u konkrétních internetových obchodů, a pokud pokrytí klasifikátorem oproti nim klesne, tak důvody chápeme. Další užitečné využití heuristiky!

Výsledky

Pojďme si znovu projít hlavní myšlenky článku.

  • Fibdeck. Vždy myslíme na uživatele: jak bude žít s našimi chybami, jak je bude moci nahlásit. Nezapomeňte, že uživatelé nejsou zdrojem čisté zpětné vazby pro tréninkové modely a je třeba ji vyčistit pomocí pomocných systémů ML. Pokud není možné získat signál od uživatele, pak hledáme alternativní zdroje zpětné vazby, například připojené systémy.
  • Trénink nad rámec. Hlavní je zde kontinuita, takže spoléháme na aktuální produkční model. Nové modely trénujeme tak, aby se díky harmonickému zregulování a podobným trikům příliš nelišily od předchozího.
  • Nasadit. Automatické nasazení na základě metrik výrazně zkracuje dobu implementace modelů. Sledování statistik a rozložení rozhodování, počtu pádů uživatelů je povinné pro váš klidný spánek a produktivní víkend.

Doufám, že vám to pomůže vylepšit vaše systémy ML rychleji, rychleji je uvést na trh a učinit je spolehlivějšími a méně stresujícími.

Zdroj: www.habr.com

Přidat komentář