Prevádzka strojového učenia v Mail.ru Mail

Prevádzka strojového učenia v Mail.ru Mail

Na základe mojich vystúpení na Highload++ a DataFest Minsk 2019.

Pre mnohých je dnes pošta neoddeliteľnou súčasťou online života. S jeho pomocou vedieme obchodnú korešpondenciu, uchovávame všetky druhy dôležitých informácií týkajúcich sa financií, hotelových rezervácií, zadávania objednávok a mnoho ďalšieho. V polovici roka 2018 sme sformulovali produktovú stratégiu rozvoja pošty. Aká by mala byť moderná pošta?

Mail musí byť chytrý, to znamená, že pomáha používateľom orientovať sa v rastúcom objeme informácií: filtrovať, štruktúrovať a poskytovať ich tým najpohodlnejším spôsobom. Musí byť užitočné, ktorá vám umožňuje riešiť rôzne úlohy priamo vo vašej schránke, napríklad platiť pokuty (funkcia, ktorú, žiaľ, používam). A zároveň, samozrejme, pošta musí poskytovať ochranu informácií, odrezať spam a chrániť pred hackingom, to znamená byť trezor.

Tieto oblasti definujú množstvo kľúčových problémov, z ktorých mnohé možno efektívne vyriešiť pomocou strojového učenia. Tu sú príklady už existujúcich funkcií vyvinutých ako súčasť stratégie – jedna pre každý smer.

  • Inteligentná odpoveď. Mail má funkciu inteligentnej odpovede. Neurónová sieť analyzuje text listu, chápe jeho význam a účel a vo výsledku ponúka tri najvhodnejšie možnosti odpovede: pozitívnu, negatívnu a neutrálnu. Pomáha to výrazne šetriť čas pri odpovedaní na listy a tiež často reagovať neštandardne a vtipne.
  • Zoskupovanie e-mailovsúvisiace s objednávkami v internetových obchodoch. Často nakupujeme online a obchody môžu spravidla poslať niekoľko e-mailov na každú objednávku. Napríklad z AliExpress, najväčšej služby, prichádza veľa písmen na jednu objednávku a vypočítali sme, že v terminálovom prípade by ich počet mohol dosiahnuť až 29. Preto pomocou modelu Named Entity Recognition extrahujeme číslo objednávky a ďalšie informácie z textu a zoskupte všetky písmená do jedného vlákna. V samostatnom boxe zobrazujeme aj základné informácie o objednávke, čo uľahčuje prácu s týmto typom emailu.

    Prevádzka strojového učenia v Mail.ru Mail

  • Anti-phishing. Phishing je obzvlášť nebezpečný podvodný typ e-mailu, pomocou ktorého sa útočníci pokúšajú získať finančné informácie (vrátane bankových kariet používateľa) a prihlasovacie údaje. Takéto listy napodobňujú skutočné listy odoslané službou, a to aj vizuálne. Preto s pomocou Computer Vision rozpoznávame logá a štýl dizajnu písmen od veľkých spoločností (napríklad Mail.ru, Sber, Alfa) a berieme to do úvahy spolu s textom a ďalšími funkciami v našich klasifikátoroch spamu a phishingu. .

Strojové učenie

Trochu o strojovom učení v e-mailoch všeobecne. Mail je vysoko zaťažený systém: priemerne 1,5 miliardy listov denne prejde našimi servermi pre 30 miliónov používateľov DAU. Asi 30 systémov strojového učenia podporuje všetky potrebné funkcie a vlastnosti.

Každé písmeno prechádza celým klasifikačným kanálom. Najprv prerušíme spam a necháme dobré e-maily. Používatelia si prácu antispamu často nevšimnú, pretože 95 – 99 % spamu ani neskončí v príslušnom priečinku. Rozpoznávanie spamu je veľmi dôležitou súčasťou nášho systému a je to najťažšie, pretože v oblasti antispamu dochádza k neustálemu prispôsobovaniu medzi obrannými a útočnými systémami, čo predstavuje neustálu inžiniersku výzvu pre náš tím.

Ďalej oddeľujeme písmená od ľudí a robotov. E-maily od ľudí sú najdôležitejšie, preto im poskytujeme funkcie, ako je napríklad inteligentná odpoveď. Listy od robotov sa delia na dve časti: transakčné - ide o dôležité listy zo služieb, napríklad potvrdenia o nákupoch alebo rezerváciách hotela, financie a informačné - ide o obchodné reklamy, zľavy.

Sme presvedčení, že transakčné e-maily sú rovnako dôležité ako osobná korešpondencia. Mali by byť po ruke, pretože často potrebujeme rýchlo nájsť informácie o objednávke alebo rezervácii letenky a trávime čas hľadaním týchto písmen. Preto ich pre pohodlie automaticky rozdeľujeme do šiestich hlavných kategórií: cestovanie, objednávky, financie, letenky, registrácie a napokon pokuty.

Informačné listy sú najväčšou a pravdepodobne menej dôležitou skupinou, ktorá nevyžadujú okamžitú reakciu, pretože ak si takýto list neprečíta, nič podstatné sa v živote užívateľa nezmení. V našom novom rozhraní ich zbalíme do dvoch vlákien: sociálne siete a bulletiny, čím vizuálne vyčistíme doručenú poštu a ponechajú viditeľné iba dôležité správy.

Prevádzka strojového učenia v Mail.ru Mail

vykorisťovania

Veľký počet systémov spôsobuje veľa problémov pri prevádzke. Koniec koncov, modely sa časom degradujú, ako každý softvér: funkcie sa pokazia, stroje zlyhajú, kód sa pokriví. Údaje sa navyše neustále menia: pribúdajú nové, transformujú sa vzorce správania používateľov atď., takže model bez náležitej podpory bude časom fungovať horšie a horšie.

Netreba zabúdať, že čím hlbšie strojové učenie prenikne do života používateľov, tým väčší vplyv má na ekosystém a v dôsledku toho môžu účastníci trhu získať viac finančných strát alebo ziskov. Preto sa hráči v čoraz väčšom počte oblastí prispôsobujú práci ML algoritmov (klasickými príkladmi sú reklama, vyhľadávanie a už spomínaný antispam).

Úlohy strojového učenia majú tiež zvláštnosť: akákoľvek, aj malá zmena v systéme môže vygenerovať veľa práce s modelom: práca s dátami, preškolenie, nasadenie, ktoré môže trvať týždne alebo mesiace. Preto čím rýchlejšie sa mení prostredie, v ktorom vaše modely fungujú, tým viac úsilia si ich údržba vyžaduje. Tím môže vytvoriť veľa systémov a mať z toho radosť, ale potom minú takmer všetky svoje zdroje na ich údržbu bez možnosti urobiť čokoľvek nové. Raz sme sa s takouto situáciou stretli v antispamovom tíme. A dospeli k jasnému záveru, že podporu treba automatizovať.

automatizácia

Čo sa dá automatizovať? Vlastne skoro všetko. Identifikoval som štyri oblasti, ktoré definujú infraštruktúru strojového učenia:

  • zber dát;
  • dodatočné školenie;
  • nasadiť;
  • testovanie a monitorovanie.

Ak je prostredie nestabilné a neustále sa mení, potom sa celá infraštruktúra okolo modelu ukazuje oveľa dôležitejšia ako samotný model. Môže to byť starý dobrý lineárny klasifikátor, ale ak ho nakŕmite správnymi funkciami a získate dobrú spätnú väzbu od používateľov, bude fungovať oveľa lepšie ako najmodernejšie modely so všetkými zvončekmi a píšťalkami.

Slučka spätnej väzby

Tento cyklus spája zber dát, dodatočné školenie a nasadenie – vlastne celý cyklus aktualizácie modelu. Prečo je to dôležité? Pozrite si rozpis registrácie v maile:

Prevádzka strojového učenia v Mail.ru Mail

Vývojár strojového učenia implementoval model proti botom, ktorý zabraňuje robotom zaregistrovať sa v e-mailoch. Graf klesne na hodnotu, pri ktorej zostávajú len skutoční používatelia. Všetko je skvelé! Ubehnú však štyri hodiny, roboti upravia svoje skripty a všetko sa vráti do normálu. Pri tejto implementácii strávil vývojár mesiac pridávaním funkcií a preškoľovaním modelu, no spammer sa dokázal prispôsobiť za štyri hodiny.

Aby sme neboli tak ukrutne bolestiví a nemuseli všetko prerábať neskôr, musíme spočiatku myslieť na to, ako bude spätná väzba vyzerať a čo urobíme, ak sa zmení prostredie. Začnime zberom údajov – to je palivo pre naše algoritmy.

Zber dát

Je jasné, že pre moderné neurónové siete platí, že čím viac dát, tým lepšie, a tie sú v skutočnosti generované užívateľmi produktu. Používatelia nám môžu pomôcť označovaním údajov, ale nemôžeme to zneužiť, pretože používateľov v určitom okamihu omrzí dokončovanie vašich modelov a prejdú na iný produkt.

Jednou z najčastejších chýb (tu odkazujem na Andrewa Nga) je prílišné zameranie sa na metriky testovacieho súboru údajov, a nie na spätnú väzbu od používateľa, čo je vlastne hlavným meradlom kvality práce, keďže vytvárame produkt pre užívateľa. Ak používateľ nerozumie alebo sa mu nepáči práca modelu, potom je všetko zničené.

Používateľ by preto mal mať vždy možnosť hlasovať a mal by dostať nástroj na spätnú väzbu. Ak si myslíme, že do schránky prišiel list súvisiaci s financiami, musíme ho označiť ako „financie“ a nakresliť tlačidlo, na ktoré môže používateľ kliknúť a povedať, že to nie sú financie.

Kvalita spätnej väzby

Poďme sa baviť o kvalite spätnej väzby od používateľov. Po prvé, vy a používateľ môžete dať rôzne významy do jedného konceptu. Napríklad vy a vaši produktoví manažéri si myslíte, že „financie“ sú listy z banky a používateľ si myslí, že list od starej mamy o jej dôchodku sa týka aj financií. Po druhé, existujú používatelia, ktorí bezhlavo radi stláčajú tlačidlá bez akejkoľvek logiky. Po tretie, používateľ sa môže vo svojich záveroch hlboko mýliť. Pozoruhodným príkladom z našej praxe je implementácia klasifikátora Nigérijský spam, veľmi zábavný druh spamu, kde je používateľ požiadaný, aby vzal niekoľko miliónov dolárov od náhle nájdeného vzdialeného príbuzného v Afrike. Po implementácii tohto klasifikátora sme skontrolovali kliknutia „Nie je spam“ na tieto e-maily a ukázalo sa, že 80 % z nich bol šťavnatý nigérijský spam, čo naznačuje, že používatelia môžu byť mimoriadne dôverčiví.

A nezabúdajme, že na tlačidlá môžu klikať nielen ľudia, ale aj najrôznejšie roboty, ktoré sa vydávajú za prehliadač. Takže surová spätná väzba nie je dobrá na učenie. Čo môžete urobiť s týmito informáciami?

Používame dva prístupy:

  • Spätná väzba z prepojeného ML. Máme napríklad online anti-bot systém, ktorý, ako som už spomínal, robí rýchle rozhodnutie na základe obmedzeného počtu znakov. A je tu druhý, pomalý systém, ktorý funguje dodatočne. Má viac údajov o používateľovi, jeho správaní atď. V dôsledku toho sa prijíma najinformovanejšie rozhodnutie, a preto má vyššiu presnosť a úplnosť. Rozdiel v fungovaní týchto systémov môžete nasmerovať na prvý ako tréningové dáta. Jednoduchší systém sa teda vždy bude snažiť priblížiť výkonu zložitejšiemu.
  • Klasifikácia kliknutia. Každé kliknutie používateľa môžete jednoducho klasifikovať, vyhodnotiť jeho platnosť a použiteľnosť. Robíme to v antispamovej pošte pomocou atribútov používateľa, jeho histórie, atribútov odosielateľa, samotného textu a výsledku klasifikátorov. Výsledkom je automatický systém, ktorý overuje spätnú väzbu od používateľov. A keďže ho treba preškoľovať oveľa menej často, jeho práca sa môže stať základom pre všetky ostatné systémy. Hlavnou prioritou tohto modelu je presnosť, pretože trénovanie modelu na nepresných údajoch je plné dôsledkov.

Kým čistíme dáta a ďalej školíme naše ML systémy, nesmieme zabúdať na používateľov, pretože pre nás sú tisíce, milióny chýb v grafe štatistikou a pre používateľa je každá chyba tragédia. Okrem toho, že sa používateľ musí nejako zžiť s vašou chybou v produkte, po obdržaní spätnej väzby očakáva, že podobná situácia bude v budúcnosti odstránená. Preto sa vždy oplatí dať používateľom nielen možnosť hlasovať, ale aj korigovať správanie ML systémov, vytvárať napríklad osobnú heuristiku pre každé kliknutie na spätnú väzbu, v prípade pošty by to mohla byť možnosť filtrovania takéto listy podľa odosielateľa a názvu pre tohto používateľa.

Tiež je potrebné zostaviť model na základe niektorých správ alebo žiadostí o podporu v poloautomatickom alebo manuálnom režime, aby podobnými problémami netrpeli aj ostatní používatelia.

Heuristika pre učenie

Tieto heuristiky a barličky majú dva problémy. Prvým je, že neustále sa zvyšujúci počet barlí je náročný na údržbu, nehovoriac o ich kvalite a výkone z dlhodobého hľadiska. Druhým problémom je, že chyba nemusí byť častá a pár kliknutí na ďalšie trénovanie modelu nebude stačiť. Zdá sa, že tieto dva nesúvisiace účinky môžu byť výrazne neutralizované, ak sa použije nasledujúci prístup.

  1. Vytvárame dočasnú barličku.
  2. Údaje z neho posielame do modelu, ten sa pravidelne aktualizuje, a to aj na prijatých údajoch. Tu je samozrejme dôležité, aby mala heuristika vysokú presnosť, aby neznižovala kvalitu dát v trénovacej množine.
  3. Potom nastavíme monitorovanie na spustenie barle a ak po určitom čase barle prestane fungovať a je úplne zakrytá modelom, môžete ju bezpečne odstrániť. Teraz je nepravdepodobné, že by sa tento problém opakoval.

Takže armáda barlí je veľmi užitočná. Hlavná vec je, že ich služba je naliehavá a nie trvalá.

Dodatočné školenie

Rekvalifikácia je proces pridávania nových údajov získaných ako výsledok spätnej väzby od používateľov alebo iných systémov a trénovanie existujúceho modelu na nich. S dodatočným školením môže nastať niekoľko problémov:

  1. Model možno jednoducho nepodporuje ďalšie školenia, ale učí sa len od začiatku.
  2. Nikde v knihe prírody nie je napísané, že ďalšie školenia určite skvalitnia prácu vo výrobe. Často sa stáva opak, to znamená, že je možné len zhoršenie.
  3. Zmeny môžu byť nepredvídateľné. Toto je dosť jemný bod, ktorý sme si sami identifikovali. Aj keď nový model v A/B teste vykazuje podobné výsledky v porovnaní s tým súčasným, neznamená to, že bude fungovať identicky. Ich práca sa môže líšiť len o jedno percento, čo môže priniesť nové chyby alebo vrátiť staré, ktoré už boli opravené. My aj používatelia už vieme žiť s aktuálnymi chybami a keď vznikne veľké množstvo nových chýb, používateľ tiež nemusí pochopiť, čo sa deje, pretože očakáva predvídateľné správanie.

Preto je najdôležitejšie v doplnkovom tréningu zabezpečiť, aby sa model zlepšil, alebo aspoň nezhoršil.

Prvá vec, ktorá nás napadne, keď hovoríme o dodatočnom vzdelávaní, je prístup aktívneho učenia. Čo to znamená? Klasifikátor napríklad určuje, či e-mail súvisí s financiami, a okolo jeho rozhodovacej hranice pridávame vzorku označených príkladov. Dobre to funguje napríklad v reklame, kde je veľa spätnej väzby a modelku môžete trénovať online. A ak existuje malá spätná väzba, dostaneme veľmi skreslenú vzorku vzhľadom na distribúciu výrobných údajov, na základe ktorej nie je možné vyhodnotiť správanie modelu počas prevádzky.

Prevádzka strojového učenia v Mail.ru Mail

V skutočnosti je naším cieľom zachovať staré vzory, už známe modely a získať nové. Tu je dôležitá kontinuita. Model, ktorý sme si často dali s veľkou námahou, už funguje, takže sa môžeme sústrediť na jeho výkon.

V pošte sa používajú rôzne modely: stromy, lineárne, neurónové siete. Pre každý vytvoríme vlastný doplnkový cvičný algoritmus. V procese ďalšieho školenia dostávame nielen nové dáta, ale často aj nové funkcie, ktoré zohľadníme vo všetkých nižšie uvedených algoritmoch.

Lineárne modely

Povedzme, že máme logistickú regresiu. Stratový model vytvoríme z nasledujúcich komponentov:

  • LogLoss na nových údajoch;
  • regulujeme váhy nových funkcií (nedotýkame sa starých);
  • učíme sa aj zo starých údajov, aby sme zachovali staré vzory;
  • a možno to najdôležitejšie: pridávame harmonickú reguláciu, ktorá zaručuje, že hmotnosti sa oproti starému modelu podľa normy príliš nezmenia.

Keďže každý komponent straty má koeficienty, môžeme vybrať optimálne hodnoty pre našu úlohu prostredníctvom krížovej validácie alebo na základe požiadaviek na produkt.

Prevádzka strojového učenia v Mail.ru Mail

Деревья

Prejdime k rozhodovacím stromom. Na dodatočné trénovanie stromov sme zostavili nasledujúci algoritmus:

  1. Produkcia prevádzkuje les so 100-300 stromami, ktorý je trénovaný na starom súbore údajov.
  2. Nakoniec odoberieme M = 5 kusov a pridáme 2M = 10 nových, natrénovaných na celý súbor dát, ale s vysokou váhou pre nové dáta, čo prirodzene zaručuje postupnú zmenu v modeli.

Je zrejmé, že v priebehu času sa počet stromov výrazne zvyšuje a musia sa pravidelne znižovať, aby sa splnili načasovanie. Na tento účel používame dnes už všadeprítomnú znalostnú destiláciu (KD). Stručne o princípe jeho fungovania.

  1. Máme aktuálny „komplexný“ model. Spustíme ho na množine tréningových údajov a na výstupe získame rozdelenie pravdepodobnosti tried.
  2. Ďalej trénujeme študentský model (v tomto prípade model s menším počtom stromov), aby zopakoval výsledky modelu s použitím distribúcie tried ako cieľovej premennej.
  3. Tu je dôležité poznamenať, že v žiadnom prípade nepoužívame označenie súboru údajov, a preto môžeme použiť ľubovoľné údaje. Ako tréningovú vzorku pre model študenta samozrejme používame vzorku údajov z bojového prúdu. Tréningová množina nám teda umožňuje zabezpečiť presnosť modelu a vzorka prúdu zaručuje podobný výkon pri distribúcii produkcie, čím sa kompenzuje zaujatosť trénovacej množiny.

Prevádzka strojového učenia v Mail.ru Mail

Kombinácia týchto dvoch techník (pridávanie stromov a periodické znižovanie ich počtu pomocou znalostnej destilácie) zabezpečuje zavedenie nových vzorov a úplnú kontinuitu.

S pomocou KD tiež vykonávame rôzne operácie s prvkami modelu, ako je odstraňovanie prvkov a práca s medzerami. V našom prípade máme množstvo dôležitých štatistických funkcií (podľa odosielateľov, textových hash, URL atď.), ktoré sú uložené v databáze a ktoré majú tendenciu zlyhávať. Model samozrejme nie je pripravený na takýto vývoj udalostí, keďže v trénovacej množine nedochádza k poruchovým situáciám. V takýchto prípadoch kombinujeme techniky KD a augmentácie: pri trénovaní časti údajov odstránime alebo resetujeme potrebné funkcie a vezmeme pôvodné štítky (výstupy aktuálneho modelu) a študentský model sa naučí túto distribúciu opakovať .

Prevádzka strojového učenia v Mail.ru Mail

Všimli sme si, že čím závažnejšia je manipulácia s modelom, tým väčšie je požadované percento vzorky vlákna.

Odstránenie prvkov, najjednoduchšia operácia, vyžaduje len malú časť toku, pretože sa zmení len niekoľko funkcií a aktuálny model bol natrénovaný na rovnakej súprave – rozdiel je minimálny. Na zjednodušenie modelu (niekoľkonásobné zníženie počtu stromov) je už potrebných 50 až 50. A pre vynechanie dôležitých štatistických prvkov, ktoré vážne ovplyvnia výkonnosť modelu, je potrebný ešte väčší prietok na vyrovnanie práce nový model odolný voči vynechaniu na všetkých typoch písmen.

Prevádzka strojového učenia v Mail.ru Mail

FastText

Prejdime na FastText. Dovoľte mi pripomenúť, že reprezentácia (Embedding) slova pozostáva zo súčtu vnorenia samotného slova a všetkých jeho písmenných N-gramov, zvyčajne trigramov. Keďže trigramov môže byť pomerne veľa, používa sa Bucket Hashing, teda premena celého priestoru na určitú fixnú hashmapu. V dôsledku toho sa získa matica hmotnosti s rozmerom vnútornej vrstvy na počet slov + vedierka.

S dodatočným tréningom sa objavujú nové znaky: slová a trigramy. Na štandardnom následnom školení z Facebooku sa nič podstatné nedeje. Iba staré váhy s krížovou entropiou sú preškolené na nové údaje. Nové funkcie sa teda nepoužívajú, tento prístup má samozrejme všetky vyššie popísané nevýhody spojené s nepredvídateľnosťou modelu vo výrobe. Preto sme FastText trochu upravili. Pridávame všetky nové váhy (slová a trigramy), rozširujeme celú maticu o krížovú entropiu a pridávame harmonickú regularizáciu analogicky s lineárnym modelom, čo zaručuje nevýznamnú zmenu starých váh.

Prevádzka strojového učenia v Mail.ru Mail

CNN

Konvolučné siete sú o niečo komplikovanejšie. Ak sú posledné vrstvy dokončené v CNN, potom, samozrejme, môžete použiť harmonickú regularizáciu a zaručiť kontinuitu. Ak je však potrebné ďalšie školenie celej siete, takáto regularizácia sa už nedá aplikovať na všetky vrstvy. Existuje však možnosť trénovať doplnkové vloženia prostredníctvom Triplet Loss (pôvodný článok).

Trojitá strata

Na príklade úlohy proti phishingu sa pozrime na Triplet Loss všeobecne. Berieme naše logo, ako aj pozitívne a negatívne príklady log iných spoločností. Minimalizujeme vzdialenosť medzi prvým a maximalizujeme vzdialenosť medzi druhým, robíme to s malou medzerou, aby sme zabezpečili väčšiu kompaktnosť tried.

Prevádzka strojového učenia v Mail.ru Mail

Ak sieť ďalej trénujeme, potom sa náš metrický priestor úplne zmení a stane sa úplne nekompatibilným s predchádzajúcim. Toto je vážny problém v problémoch, ktoré využívajú vektory. Aby sme tento problém obišli, počas tréningu primiešame staré vložky.

Do tréningovej sady sme pridali nové údaje a trénujeme druhú verziu modelu od začiatku. V druhej fáze ďalej trénujeme našu sieť (Finetuning): najprv sa dokončí posledná vrstva a potom sa celá sieť rozmrazí. V procese skladania trojíc počítame iba časť vloženia pomocou natrénovaného modelu, zvyšok - pomocou starého. V procese dodatočného školenia tak zabezpečujeme kompatibilitu metrických priestorov v1 a v2. Jedinečná verzia harmonickej regularizácie.

Prevádzka strojového učenia v Mail.ru Mail

Celá architektúra

Ak vezmeme do úvahy celý systém využívajúci antispam ako príklad, potom modely nie sú izolované, ale vnorené do seba. Robíme obrázky, text a ďalšie funkcie, pomocou CNN a Fast Text získavame vloženie. Ďalej sa na vrchné časti vloženia aplikujú klasifikátory, ktoré poskytujú skóre pre rôzne triedy (typy listov, spam, prítomnosť loga). Signály a značky už vstupujú do lesa stromov, aby sa definitívne rozhodlo. Jednotlivé klasifikátory v tejto schéme umožňujú lepšie interpretovať výsledky systému a konkrétnejšie preškoľovať komponenty v prípade problémov, než vkladať všetky údaje do rozhodovacích stromov v surovej forme.

Prevádzka strojového učenia v Mail.ru Mail

V dôsledku toho garantujeme kontinuitu na každej úrovni. Na spodnej úrovni v CNN a Fast Text používame harmonickú regularizáciu, pre klasifikátory v strede tiež používame harmonickú regularizáciu a kalibráciu rýchlosti pre konzistentnosť rozdelenia pravdepodobnosti. Zosilňovanie stromov sa trénuje postupne alebo pomocou znalostnej destilácie.

Vo všeobecnosti je údržba takéhoto vnoreného systému strojového učenia zvyčajne bolestivá, pretože akýkoľvek komponent na nižšej úrovni vedie k aktualizácii celého vyššie uvedeného systému. Ale keďže v našom nastavení sa každý komponent mierne mení a je kompatibilný s predchádzajúcim, celý systém môže byť aktualizovaný kus po kuse bez potreby preškoľovania celej konštrukcie, čo umožňuje jeho podporu bez vážnej réžie.

Nasadiť

Rozoberali sme zber dát a dodatočné školenia rôznych typov modelov, takže prechádzame k ich nasadeniu do produkčného prostredia.

A/B testovanie

Ako som už povedal, v procese zberu údajov zvyčajne dostaneme neobjektívnu vzorku, z ktorej nie je možné vyhodnotiť produkčnú výkonnosť modelu. Preto pri nasadzovaní treba model porovnať s predchádzajúcou verziou, aby sme pochopili, ako sa veci v skutočnosti dejú, teda vykonať A/B testy. V skutočnosti je proces zavádzania a analýzy grafov celkom rutinný a dá sa ľahko automatizovať. Naše modely zavádzame postupne pre 5 %, 30 %, 50 % a 100 % používateľov, pričom zhromažďujeme všetky dostupné metriky týkajúce sa odpovedí modelov a spätnej väzby od používateľov. V prípade niektorých závažných odľahlých hodnôt model automaticky vrátime späť a v iných prípadoch sa po získaní dostatočného počtu kliknutí používateľov rozhodneme zvýšiť percento. Vďaka tomu prinášame nový model 50 % používateľov úplne automaticky a rollout pre celé publikum schváli človek, aj keď tento krok je možné zautomatizovať.

Proces A/B testovania však ponúka priestor na optimalizáciu. Faktom je, že akýkoľvek A/B test je pomerne dlhý (v našom prípade trvá od 6 do 24 hodín v závislosti od množstva spätnej väzby), čo ho robí dosť drahým a má obmedzené zdroje. Okrem toho je potrebné dostatočne vysoké percento toku pre test, aby sa v podstate urýchlil celkový čas testu A/B (nábor štatisticky významnej vzorky na vyhodnotenie metrík v malom percente môže trvať veľmi dlho), čo počet A/B slotov je extrémne obmedzený. Je zrejmé, že potrebujeme testovať len tie najsľubnejšie modely, ktorých dostávame počas doplnkového tréningového procesu pomerne veľa.

Na vyriešenie tohto problému sme natrénovali samostatný klasifikátor, ktorý predpovedá úspešnosť A/B testu. Aby sme to dosiahli, berieme ako funkcie rozhodovacie štatistiky, presnosť, vyvolanie a ďalšie metriky na tréningovom súbore, na odloženom a na vzorke zo streamu. Model tiež porovnávame s aktuálnym vo výrobe, heuristikou a berieme do úvahy zložitosť modelu. Pomocou všetkých týchto funkcií klasifikátor vyškolený na históriu testov vyhodnotí kandidátske modely, v našom prípade sú to lesy stromov, a rozhodne, ktorý z nich použije v A/B teste.

Prevádzka strojového učenia v Mail.ru Mail

V čase implementácie nám tento prístup umožnil niekoľkonásobne zvýšiť počet úspešných A/B testov.

Testovanie a monitorovanie

Testovanie a sledovanie, napodiv, nášmu zdraviu neškodia, skôr ho naopak zlepšujú a zbavujú nás zbytočného stresu. Testovanie vám umožňuje predísť zlyhaniu a monitorovanie vám ho umožňuje včas odhaliť, aby sa znížil dopad na používateľov.

Tu je dôležité pochopiť, že skôr alebo neskôr váš systém vždy urobí chyby - je to spôsobené vývojovým cyklom akéhokoľvek softvéru. Na začiatku vývoja systému je vždy veľa chýb, kým sa všetko usadí a hlavná fáza inovácie sa dokončí. Postupom času si ale entropia vyberá svoju daň a opäť sa objavujú chyby – kvôli degradácii komponentov okolo a zmenám v dátach, o ktorých som hovoril na začiatku.

Tu by som rád poznamenal, že každý systém strojového učenia by sa mal posudzovať z hľadiska jeho zisku počas celého životného cyklu. Nižšie uvedený graf ukazuje príklad toho, ako systém funguje na zachytenie zriedkavého typu spamu (čiara v grafe je takmer nulová). Jedného dňa sa kvôli nesprávne uloženému atribútu zbláznila. Našťastie sa nesledovalo abnormálne spúšťanie; v dôsledku toho systém začal ukladať listy vo veľkých množstvách do priečinka „spam“ na hranici rozhodovania. Napriek náprave následkov systém už toľkokrát urobil chyby, že sa to nevyplatí ani o päť rokov. A to je z hľadiska životného cyklu modelu úplné zlyhanie.

Prevádzka strojového učenia v Mail.ru Mail

Preto sa taká jednoduchá vec, akou je monitorovanie, môže stať kľúčovou v živote modelky. Okrem štandardných a zrejmých metrík zvažujeme distribúciu modelových odpovedí a skóre, ako aj distribúciu hodnôt kľúčových funkcií. Pomocou KL divergencie môžeme porovnať aktuálne rozdelenie s historickým alebo hodnoty v A/B teste so zvyškom prúdu, čo nám umožňuje zaznamenať anomálie v modeli a včas vrátiť zmeny.

Vo väčšine prípadov spúšťame naše prvé verzie systémov pomocou jednoduchej heuristiky alebo modelov, ktoré použijeme ako monitorovanie v budúcnosti. Napríklad model NER sledujeme v porovnaní s bežnými pre konkrétne internetové obchody a ak pokrytie klasifikátorom v porovnaní s nimi klesne, tak chápeme dôvody. Ďalšie užitočné využitie heuristiky!

Výsledky

Poďme si ešte raz prejsť hlavné myšlienky článku.

  • Fibdeck. Vždy myslíme na používateľa: ako bude žiť s našimi chybami, ako ich bude môcť nahlásiť. Nezabudnite, že používatelia nie sú zdrojom čistej spätnej väzby pre tréningové modely a je potrebné ju vyčistiť pomocou pomocných systémov ML. Ak nie je možné získať signál od používateľa, potom hľadáme alternatívne zdroje spätnej väzby, napríklad pripojené systémy.
  • Dodatočné školenie. Hlavná vec je tu kontinuita, takže sa spoliehame na súčasný model výroby. Nové modely trénujeme tak, aby sa vďaka harmonickej regularizácii a podobným trikom veľmi nelíšili od predchádzajúceho.
  • Nasadiť. Automatické nasadenie založené na metrikách výrazne znižuje čas na implementáciu modelov. Sledovanie štatistík a rozloženia rozhodovania, počtu pádov od používateľov je povinné pre váš pokojný spánok a produktívny víkend.

Dúfam, že vám to pomôže vylepšiť vaše systémy ML rýchlejšie, rýchlejšie ich uviesť na trh a urobiť ich spoľahlivejšími a menej stresovými.

Zdroj: hab.com

Pridať komentár