MasinÔppe rakendamine Mail.ru-s

MasinÔppe rakendamine Mail.ru-s

Minu ettekannete pÔhjal Highload++ ja DataFest Minsk 2019.

Paljude jaoks on tÀna e-post eluliselt oluline osa veebielust. Selle abil peame Àrikirjavahetust, hoiame erinevat olulist teavet seoses rahanduse, hotellide broneerimise, tellimuste vormistamise ja muu sellisega. 2018. aasta keskpaiku formuleerisime meiliteenuse arendamise tootestrateegia. Milline peaks olema kaasaegne e-post?

E-post peab olema nutikas, ehk see peab aitama kasutajatel navigeerida kasvavas infohulgas: filtreerima, struktureerima ja esitama seda kĂ”ige mugavamal viisil. Samuti peab see olema kasulik, vĂ”imaldades lahendada erinevaid ĂŒlesandeid otse postkastis, nĂ€iteks trahvide maksmine (funktsioon, mida ma, kahjuks, kasutan). Samuti peab e-post tagama informatiivse kaitse, filtreerides spĂ€mm ja kaitstes hĂ€kkimiste eest, ehk olema turvalisest.

Need suunad mÀÀravad hulga pĂ”hieesmĂ€rke, millest paljusid saab tĂ”husalt lahendada masinĂ”ppe abil. Siin on nĂ€ited juba rakendatud funktsioonidest, mis on vĂ€lja töötatud strateegia raames – iga suuna kohta ĂŒks.

  • Nutikas vastus. E-postis on nutika vastamise funktsioon. NeuraalvĂ”rk analĂŒĂŒsib kirja sisu, mĂ”istab selle tĂ€hendust ja eesmĂ€rki ning pakub seejĂ€rel vĂ€lja kolm sobivaimat vastusevarianti: positiivne, negatiivne ja neutraalne. See aitab oluliselt sÀÀsta aega kirjadele vastamisel ning sageli ka vastata ebatavalistel ja lĂ”busatel viisidel.
  • Kirjade rĂŒhmitamine, mis on seotud internetipoodidest tehtud tellimustega. Me teeme tihti oste internetis ja tavaliselt saadavad poed igale tellimusele mitu kirja. NĂ€iteks AliExpressilt, suurimalt teenusest, tuleb ĂŒhe tellimuse kohta palju kirju, ja me oleme arvestanud, et sellisel juhul vĂ”ib nende koguarv ulatuda 29. SeetĂ”ttu kasutame nime mĂ€rgendamise mudelit, et eristada tellimuse numbrit ja muud teavet tekstist ning rĂŒhmitada kĂ”ik kirjad ĂŒhe niidi alla. Samuti kuvame pĂ”hiteabe tellimuse kohta eraldi kastis, mis lihtsustab töötamist selle tĂŒĂŒpi kirjadega.

    MasinÔppe rakendamine Mail.ru-s

  • Antifishing. Phishing on eriti ohtlik petmisviis, millega ĂŒritavad kurjategijad saada kĂ€tte finantsteavet (sealhulgas kasutaja pangakaarditeavet) ja kasutajatunnuseid. Sellised kirjad jĂ€ljendavad tĂ”elisi, teenuse poolt saadetud kirju, sealhulgas visuaalselt. SeetĂ”ttu tuvastame Computer Vision abil suurte ettevĂ”tete (nĂ€iteks Mail.ru, Sber, Alfa) logod ja stiili ning arvestame neid koos teksti ja muude tunnustega oma spĂ€mm- ja phishingu klassifitseerijates.

MasinÔpe

Veidi masinĂ”ppest e-kirjade raames. E-post on kĂ”rge koormusega sĂŒsteem: meie serverite kaudu lĂ€bib keskmiselt 1,5 miljardit kirja pĂ€evas 30 miljoni DAU kasutaja kohta. KĂ”iki vajalikke funktsioone ja funktsioone teenindab umbes 30 masinĂ”ppimise sĂŒsteemi.

Iga kiri lĂ€bib terve klassifitseerimise konveieri. Esiteks filtreerime vĂ€lja spĂ€mmi ja jĂ€tame alles head kirjad. Kasutajad ei mĂ€rka tihti antispĂ€mmifunktsiooni, kuna 95–99% spĂ€mmi ei jĂ”ua isegi vastava kausta. SpĂ€mmi tuvastamine on meie sĂŒsteemi vĂ€ga oluline ja samas ka kĂ”ige keerulisem osa, kuna antispam valdkonnas toimub pidev kohandamine kaitsesĂŒsteemide ja rĂŒnnakute vahel, mis esitab meie meeskonnale pideva insenerivĂ€ljakutse.

SeejĂ€rel jagame kirjad inimeste ja robotite vahel. Inimeste poolt saadetud kirjad on kĂ”ige olulisemad, seetĂ”ttu pakume neile funktsioone nagu Nutikas vastus. Robotite saadetud kirjad jagatakse kaheks: tehingulised — need on olulised kirjad teenustelt, nĂ€iteks ostude vĂ”i hotellibroneeringute kinnitused, finantskirjad, ja informatiivsed — need on Ă€rireklaam, allahindlused.

Me arvame, et tehinguliste kirjade olulisus on vÔrreldav isiklike kirjadega. Need peavad olema kÀepÀrast, kuna sageli on vajalik kiiresti leida teavet tellimuse vÔi lennupileti broneeringu kohta, ja me kulutame aega nende kirjade otsimisele. SeetÔttu jagame need mugavuse huvides automaatselt kuue peamise kategooria vahel: reisid, tellimused, finantsid, piletid, registreerimised ja lÔpuks trahvid.

Informatiivsed kirjad on kĂ”ige arvukam ja tĂ”enĂ€oliselt vĂ€hem oluline rĂŒhm, mis ei nĂ”ua kohest reageerimist, kuna midagi olulist ei muutu kasutaja elus, kui ta sellist teadet ei loe. Meie uues liideses koondame need kahte niidi: sotsiaalmeedia ja uudiskirjad, puhastades visuaalselt postkasti ja jĂ€ttes nĂ€htavale vaid olulised kirjad.

MasinÔppe rakendamine Mail.ru-s

Töötamine

Paljusid sĂŒsteeme on keeruline hallata. Mudelid kuluvad aja jooksul, nagu igasugune tarkvara: sĂŒmptomid murduvad, masinad ebaĂ”nnestuvad ja tekivad vigased koodid. Lisaks muutuvad andmed pidevalt: lisatakse uusi, kasutajate kĂ€itumismustrid muutuvad jne, seega mudel, mida ei toetata piisavalt, hakkab aja jooksul ĂŒha halvemini toimima.

Ära unusta, et mida sĂŒgavamale masinĂ”pe tungib kasutajate ellu, seda suurem mĂ”ju on neil ökosĂŒsteemile ja seetĂ”ttu vĂ”ivad turu mĂ€ngijad saada suuremaid rahalisi kaotusi vĂ”i kasumeid. SeetĂ”ttu kohanduvad jĂ€rjest enam valdkondi tegijad ML-algoritmidega (klassikalised nĂ€ited — reklaam, otsing ja juba mainitud rĂ€mpsposti tĂ”rje).

MasinĂ”ppe ĂŒlesannetel on ka omadused: ĂŒkskĂ”ik milline, isegi vĂ€ike, muudatus sĂŒsteemis vĂ”ib tekitada palju tööd mudeliga: andmetöötlus, ĂŒmberĂ”pe, juurutamine, mis vĂ”ib kesta nĂ€dal vĂ”i isegi kuu. SeetĂ”ttu, mida kiiremini muutub keskkond, milles teie mudelid töötavad, seda rohkem pingutusi nende toetamine nĂ”uab. Meeskond vĂ”ib luua palju sĂŒsteeme ja rÔÔmustada, aga seejĂ€rel kulutada peaaegu kĂ”ik ressursid nende hooldamiseks, ilma et oleks vĂ”imalik midagi uut teha. Sarnase olukorraga silmitsi seisisime kunagi rĂ€mpsposti tĂ”rjeteamiga. Ja tegime ilmselge jĂ€relduse, et hooldus tuleb automatiseerida.

Automatiseerimine

Mida saab automatiseerida? Tegelikult peaaegu kÔike. Olen vÀlja toonud neli suunda, mis mÀÀravad masinÔppe infrastruktuuri:

  • andmete kogumine;
  • ĂŒmberĂ”pe;
  • juurutamine;
  • testimine & monitooring.

Kui keskkond on ebastabiilne ja pidevalt muutub, siis kogu infrastruktuur mudeli ĂŒmber osutub palju olulisemaks kui mudel ise. See vĂ”ib olla vana hea lineaarne klassifikaator, kuid kui sinna Ă”igesti sisestada omadused ja luua hea tagasiside kasutajatelt, töötab see palju paremini kui State-Of-The-Art mudelid koos kĂ”ikide toimingutega.

Tagasiside tsĂŒkkel

See tsĂŒkkel ĂŒhendab andmete kogumise, ĂŒmberĂ”ppe ja juurutamise — sisuliselt kogu mudeli uuendamise tsĂŒkli. Miks see oluline on? Vaata meiliregistreerimise graafikut:

MasinÔppe rakendamine Mail.ru-s

MasinÔppe arendaja rakendas rÀmpspostivastase mudeli, mis ei luba botidel postkasti registreeruda. Graafik langeb tasemeni, kus jÀÀvad vaid tÔelised kasutajad. KÔik on suurepÀrane! Kuid neli tundi hiljem kohandavad rÀmpspostitajad oma skripte ja kÔik naaseb tagasi tasemele, kust alustas. Antud rakenduses kulutas arendaja kuu, lisades omadusi ja koolitades mudelit, kuid rÀmpspostitaja suutis nelja tunni jooksul kohanduda.

Et mitte tunda hiljem piinavat valu ega pidada kĂ”ike uuesti tegema, tuleb alguses mĂ”elda, kuidas tagasiside tsĂŒkkel vĂ€lja nĂ€eb ja mida me teeme, kui keskkond muutub. Alustame andmete kogumisest — see on meie algoritmide kĂŒtus.

Andmete kogumine

On selge, et kaasaegsetele nÀrvivÔrkudele kehtib reegel: mida rohkem andmeid, seda parem, ja need genereerivad sisuliselt toote kasutajad. Kasutajad vÔivad meid aidata andmeid mÀrgistades, kuid seda ei tohi liialdada, sest kasutajad vÀsivad mingil hetkel teie mudelite koolitamisest ja lÀhevad teiste toodete juurde.

Üks levinumaid vigu (siin viitan Andrew Ng-le) — liiga tugev orienteerumine testdatalaste metrikatele, mitte kasutajate tagasisidele, mis on tegelikult kvaliteedi peamine mÔÔdupuu, kuna loome toodet kasutajale. Kui kasutajale ei meeldi vĂ”i ei mĂ”ista mudeli tööd, siis pole asjal mĂ”tet.

SeetÔttu peab kasutajal alati olema vÔimalus hÀÀletada, talle tuleb anda tööriist tagasiside andmiseks. Kui me arvame, et postkasti on saabunud e-kiri, mis kuulub finantsdomeenisse, tuleb see mÀrgistada kui 'finants' ning joonistada nupp, mida kasutaja saab vajutada ja öelda, et see ei ole finants.

Tagasiside kvaliteet

RÀÀgime kasutajate tagasiside kvaliteedist. Esiteks, teil ja kasutajal vĂ”ivad olla erinevad tĂ€hendused samale mĂ”istele. NĂ€iteks teie ja tootemanagerid arvavad, et 'finants' tĂ€hendab panku, samas kui kasutaja arvab, et kirja pensionist, mis tuli vanaemalt, vĂ”ib samuti klassifitseerida finantsina. Teiseks, on kasutajaid, kes meelevaldsetelt vajutavad nuppudele, ilma igasuguse loogikata. Kolmandaks, kasutaja vĂ”ib oma jĂ€reldustes sĂŒgavalt eksida. Hea nĂ€ide meie praktikast — klassifikaatori rakendamine nigeri rĂ€mpspostile. Teiseks, mĂ”ned kasutajad vajavad nuppude vajutamisel, ilma igasuguse loogikata. Kolmandaks, kasutaja vĂ”ib oma jĂ€reldustes sĂŒgavalt eksida. Hea nĂ€ide meie praktikast — klassifikaatori juurutamine, ĂŒsna naljakas rĂ€mps, kus kasutajale pakutakse, et ta saab kĂ€tte mitmeid miljoneid dollareid jĂ€rsku leitud kaugelt sugulase kĂ€est Aafrikas. PĂ€rast selle klassifikaatori rakendamist kontrollisime klikke „Ei ole rĂ€mps”, ja selgus, et 80% neist on mahukas nigeeria rĂ€mps, mis nĂ€itab, et kasutajad vĂ”ivad olla ÀÀrmiselt usaldavad.

Ja Ă€rgem unustagem, et nuppudele vĂ”ivad klĂ”psida mitte ainult inimesed, vaid ka igasugused robotid, kes teesklevad olevat brauserid. Nii et too tĂŒhi tagasiside ei sobi koolituseks. Mida nende andmetega siis teha?

Kasutame kahte lÀhenemist:

  • Seotud ML tagasiside. NĂ€iteks on meil veebipĂ”hine antirĂ€mpsusĂŒsteem, mis, nagu ma juba mainisin, teeb kiire otsuse piiratud arvu tunnuste pĂ”hjal. Ja on teine, aeglane sĂŒsteem, mis töötab pĂ€rast fakti. Sellel on rohkem andmeid kasutaja kohta, tema kĂ€itumise kohta jne. Tulemusena teeb see kĂ”ige mĂ”istlikuma otsuse, seega on selle tĂ€psus ja tĂ€ielikkus kĂ”rgem. Selle sĂŒsteemi töö erinevust saab suunata esimesse sĂŒsteemi Ă”ppimiseks. Nii pĂŒĂŒab lihtsam sĂŒsteem alati lĂ€heneda keerukama sĂŒsteemi tulemusele.
  • KlĂ”psude klassifitseerimine. VĂ”ime lihtsalt klassifitseerida iga kasutaja kliki, hinnata selle kehtivust ja kasutatavust. Me teeme seda e-kirjade antirĂ€mpsus, kasutades kasutaja tunnuseid, tema ajalugu, saatja tunnuseid, teksti ning klassifikaatorite töö tulemust. Tulemuseks on automaatne sĂŒsteem, mis valideerib kasutaja tagasisidet. Ja kuna seda tuleb koolitada oluliselt harvemini, vĂ”ib selle töö saada ĂŒlejÀÀnud sĂŒsteemide aluseks. Selle mudeli pĂ”hiprioriteet on tĂ€psus, kuna mudeli koolitamine ebatĂ€psete andmete peal toob kaasa negatiivseid tagajĂ€rgi.

Kuna me puhastame andmeid ja koolitame meie ML-sĂŒsteeme, ei tohi unustada kasutajaid, sest tuhandeid, miljoneid vigu diagrammil – see on statistika, aga iga veakĂŒsimuse puhul on kasutajale tegemist tragöödiaga. Peale selle, et kasutajal tuleb elada teie toote vea tĂ”ttu, ootab ta tagasiside jĂ€rel, et sarnase olukorra kordumist tulevikus vĂ€ltida. SeetĂ”ttu tuleks alati anda kasutajatele mitte ainult vĂ”imalus hÀÀletada, vaid ka parandada ML-sĂŒsteemide kĂ€itumist, luues nĂ€iteks isiklikud heuristikad igaks tagasiside klikiks, kui tegemist on e-kirjadega, see vĂ”ib tĂ€hendada vĂ”imalust filtreerida sarnaseid kirju saatja ja pealkirja alusel antud kasutaja jaoks.

Samuti tuleb mingite raportite vÔi tugiteenusega seotud pÀringute pÔhjal poolautomaatsete vÔi kÀsitsi meetoditega mudelit parandada, et ka teised kasutajad ei kannataks sarnaste probleemide all.

Heuristikad koolitamiseks

Heuristikatest ja parandustest on kaks probleemi. Esiteks, pidevalt kasvava arvu paranduste hooldamine on keeruline, rÀÀkimata nende kvaliteedist ja pikaajalistest toimingutest. Teine probleem on see, et viga ei pruugi esineda sageli ja mÔni klikk mudeli koolitamiseks ei pruugi olla piisav. Tundub, et neid kahte mitte seotud efekti on vÔimalik mÀrkimisvÀÀrselt tasakaalustada, kui rakendada jÀrgmist lÀhenemist.

  1. Loome ajutise paranduse.
  2. Suuname andmed sellest mudelisse, see koolitub regulaarselt, sealhulgas saadud andmete pÔhjal. Siin on loomulikult oluline, et heuristika oleks kÔrge tÀpsusega, et mitte vÀhendada andmete kvaliteeti treeningkomplektis.
  3. SeejĂ€rel paneme jĂ€lgimise sellele, kas parandust hakatakse rakendama, ja kui mingil hetkel enam parandust ei rakendata ja see on tĂ€iesti kaetud mudeli poolt, siis saab selle julgelt eemaldada. NĂŒĂŒd ei esine tĂ”enĂ€oliselt seda probleemi enam.

Nii et paranduste armee on vĂ€ga kasulik. Peamine on see, et nende teenus oleks ajutine, mitte pĂŒsi.

Uuendus

Uuendamine on protsess, mille kĂ€igus lisatakse uusi andmeid, saadud kasutajatelt tagasiside vĂ”i teistest sĂŒsteemidest, ning vanale mudelile nende pĂ”hjal. Uuendamisel vĂ”ib olla mitmeid probleeme:

  1. Mudel ei pruugi lihtsalt toetada uuendamist, vaid Ôppida ainult nullist.
  2. Looduse raamatus ei ole kirjutatud, et uuendamine töö kvaliteeti produktsioonis tingimata parandab. Tihti juhtub hoopis vastupidine, see tÀhendab, et vÔimalik on ainult halvenemine.
  3. Muudatused vĂ”ivad olla ettearvamatud. See on ĂŒsna delikaatne aspekt, mille oleme enda jaoks vĂ€lja selgitanud. Isegi kui uus mudel A/B-testimisel nĂ€itab sarnaseid tulemusi vĂ”rreldes praegusega, ei tĂ€henda see, et see toimiks sama moodi. Nende töö vĂ”ib erinev olla isegi ĂŒhes protsendipunktis, mis vĂ”ib pĂ”hjustada uusi vigu vĂ”i tuua tagasi juba lahendatud vanad vead. Praeguste vigadega oleme Ă”ppinud elama, ja kui tekivad paljud uued vead, ei pruugi kasutaja ka mĂ”ista, mis toimub, kuna ta ootab ettearvatavat kĂ€itumist.

SeetÔttu on kÔige olulisem uue koolituse puhul garantii, et mudelit tÔeliselt parendada vÔi vÀhemalt mitte halvendada.

Esimene asi, mis meelde tuleb, kui rÀÀgime uue koolituse teemal, on lĂ€henemine, mida nimetatakse aktiivseks Ă”ppimiseks. Mida see tĂ€hendab? NĂ€iteks klassifkaator mÀÀrab, kas kiri kuulub rahandusse, ning selle otsuste piiril lisame proovide valimi, mis on mĂ€rgistatud. See töötab hĂ€sti nĂ€iteks reklaami puhul, kus tagasisidet on palju ning mudelit saab koolitada online-reĆŸiimis. Kui aga tagasiside on vĂ€he, saame vĂ€ga kallutatud valimi, mis ei peegelda andmete tootmisjaotust ja mille pĂ”hjal ei saa mudeli kĂ€itumist hindada.

MasinÔppe rakendamine Mail.ru-s

Tegelikult on meie eesmÀrk sÀilitada vanad mustrid, mis mudelile juba teada, ja omandada uusi. Siin on oluline jÀrjepidevus. Mudel, mille oleme suure vaevaga vÀlja töötanud, töötab juba, seega saame tugineda selle tulemuslikkusele.

E-mails kasutatakse erinevaid mudeleid: puud, lineaarsed, tehisintellektid. IgaĂŒhe jaoks koostame oma uue koolituse algoritmi. Uue koolituse kĂ€igus saame mitte ainult uusi andmeid, vaid tihti ka uusi tunnuseid, mida arvestame kĂ”igis allpool olevates algoritmides.

Lineaarmudelid

Oletame, et meil on logistiline regressioon. Koostame mudeli kaotuse jÀrgmiste komponentide pÔhjal:

  • LogLoss uute andmete osas;
  • regulaarime uute tunnuste kaalu (vanaid ei puuduta);
  • Ă”ppime ka vanade andmete pĂ”hjal, et sĂ€ilitada vanad mustrid;
  • ja tĂ”enĂ€oliselt kĂ”ige olulisem: rakendame harmoonilist regulaarimist, mis tagab, et kaalude muutus ei oleks liiga suur vĂ”rreldes vana mudeliga normi jĂ€rgi.

Kuna iga kaotuse komponendil on koefitsiendid, saame oma ĂŒlesande jaoks optimaalsed vÀÀrtused leida ristvalideerimise kĂ€igus vĂ”i lĂ€htuda tootmisnĂ”uetest.

MasinÔppe rakendamine Mail.ru-s

Puud

Liigume lahenduspuideni. Oleme vÀlja töötanud jÀrgmise puudega koolituse algoritmi:

  1. Töö kĂ€ib 100–300 puu metsaga, mis on koolitatud vana andmestiku pĂ”hjal.
  2. Eemaldame lĂ”pus M = 5 tĂŒkki ja lisame 2M = 10 uut, mis on koolitatud kogu andmestiku pĂ”hjal, kuid uute andmete puhul kĂ”rge kaalu seadistusega, mis loogiliselt tagab mudeli jĂ€rkjĂ€rgulise muutmise.

On ilmne, et aja jooksul puude arv suureneb, ning neid tuleb perioodiliselt vĂ€hendada, et ajaraamid pĂŒsiksid. Selleks kasutame laialdaselt tuntud teadmiste destilleerimist (KD). LĂŒhidalt selle tööpĂ”himĂ”ttest.

  1. Meil on praegune "keeruline" mudel. KÀivitame selle treeningu andmestikul ja saame vÀljundiks klasside tÔenÀosuste jaotuse.
  2. SeejÀrel Ôpetame Ôpilasmudelit (antud juhul mudelit, kus on vÀhem puid) kordama mudeli tulemusi, kasutades klasside jaotust sihimuutuja nagu.
  3. Siin on oluline mÀrkida, et me ei kasuta mingisugust andmestiku mÀrgistamist, seega saame kasutada mistahes andmeid. Loomulikult kasutame voogude andmesampla, kui koolitusvalimi jaoks mudeli Ôpilasi. Seega tagab koolitusvÔrk meie mudeli tÀpsuse, ning voogude proov tagab sarnase töötluse tootmisjaotuses, kompenseerides koolitusvalimi kallutatuse.

MasinÔppe rakendamine Mail.ru-s

Nende kahe tehnika (puude lisamine ja nende arvu perioodiline vÀhendamine rakendades teadmiste destilleerimist) kombinatsioon tagab uute mustrite sisenemise ja tÀieliku jÀrjepidevuse.

KD abil eristame ka mudeli tunnuste operatsioone, nÀiteks tunnuste kustutamist ja puuduva infoga töötamist. Meie juhul on meil olemas hulk olulisi statistilisi tunnuseid (saajate, tekstihashide, URL-ide jne kohta), mis salvestatakse andmebaasi, kellel on tÔrke omadus. Tootja, loomulikult, ei ole selliseks arengu suunaks valmis, kuna treeningkomplektis ei esine tÔrkeolukordi. Sel puhul kombineerime KD ja uue andmete laiendamise tehnikate: treeningu ajal eemaldame vÔi nullime vajalikud tunnused, samas peame etiketid (praeguse mudeli vÀljundid) algsetena, mudel-Ôpilane Ôpib seda jaotust kordama.

MasinÔppe rakendamine Mail.ru-s

Oleme mÀrganud, et mida tÔsisemalt manipuleeritakse mudelitega, seda suurem on protsentuaalne vajadus voolu proovide jÀrele.

Tunnuste eemaldamiseks, kĂ”ige lihtsama operatsiooni jaoks, on vajalik vaid vĂ€ike osa voolust, kuna muudetakse vaid paar tunnust, ja praegune mudel on Ă”ppinud samas andmekogus — erinevus on minimaalne. Mudeli lihtsustamiseks (puude arvu vĂ€hendamine mitu korda) on vajalik juba 50 protsenti voolust. Oluliste statistiliste tunnuste, mis tĂ”siselt mĂ”jutavad mudeli tulemuslikkust, puudumise korral on vaja veelgi rohkem voolu, et tasakaalustada uue kadudele vastupidava mudeli tööd kĂ”ikide kirjatĂŒĂŒpide puhul.

MasinÔppe rakendamine Mail.ru-s

FastText

Liigume edasi FastTexti juurde. Meenutame, et sĂ”na esindus (Embedding) koosneb sĂ”na enda embedding'ist ja kĂ”igist tema kirjalikest N-gramm'idest, tavaliselt trigrammidest. Kuna trigramme vĂ”ib olla ĂŒsna palju, kasutatakse Bucket Hashingut, st kogu ruumi muundamine mingiks fikseeritud hash-mapi. LĂ”ppkokkuvĂ”ttes saab kaalumatriis sisemise kihi suurusest sĂ”nade arvu + bakettide arvu.

TÀiendÔppe kÀigus ilmnevad uued tunnused: sÔnad ja trigrammid. Facebooki standardsetel tÀiendÔpingutel ei toimu midagi olulist. TÀiendatakse vaid vanu kaalu uudse krosseentroopia tÔttu uutes andmetes. Seega ei kasutata uusi tunnuseid, loomulikult on sellel lÀhenemisel kÔik eelnevalt mainitud puudused, mis on seotud mudeli ettearvamatusega tootmises. SeetÔttu oleme FastTexti veidi edasi arendanud. Lisame kÔik uued kaalu (sÔnad ja trigrammid), Ôpime kogu matriisi krosseentroopia pÔhjal ning lisame harmoonilise regulariseerimise, nagu lineaarse mudeli puhul, mis tagab, et vanad kaalu ei muutu oluliselt.

MasinÔppe rakendamine Mail.ru-s

CNN

Konvolutsiooniliste vÔrkudega on veidi keerulisem. Kui CNN-is tÀiendatakse viimaseid kihtide, siis loomulikult saab rakendada harmoonilist regulariseerimist ja tagada jÀrjepidevuse. Kuid juhul, kui vajalik on kogu vÔrgustiku tÀiendamine, siis sellist regulariseerimist ei saa kÔigile kihtidele rakendada. Siiski on vÔimalik treenida tÀiendavaid embeddinge lÀbi Triplet Loss (originaalartikkel).

Triplet Loss

Vaatleme Triplet Loss'i nĂ€itel antifishingu ĂŒlesannet ĂŒldiselt. VĂ”tame meie logosid, samuti positiivseid ja negatiivseid nĂ€iteid teiste ettevĂ”tete logo kohta. Minimeerime kauguse esimeste vahel ja maksimeerime kauguse teiste vahel, tehes seda vĂ€ikese varuga, et tagada klasside suurem kompaktne.

MasinÔppe rakendamine Mail.ru-s

Kui me tĂ€iendame vĂ”rku, siis muutub meie meetriline ruum tĂ€ielikult ja see muutub absoluutse ĂŒhilduvuse puudumisega eelnevatega. See on tĂ”sine probleem ĂŒlesannetes, kus kasutatakse vektoreid. Selle probleemi vĂ€ltimiseks segame Ă”ppe kĂ€igus vanu embeddinge.

Olemegi lisanud uusi andmeid treeningkomplekti ja koolitame teise mudeli versiooni nullist. Teises etapis tĂ€iendame meie vĂ”rgustikku (Finetuning): esmalt tĂ€iendatakse viimane kiht ja seejĂ€rel vabastatakse kogu vĂ”rk. Kolmnurkade koostamise kĂ€igus arvutame vaid osa embeddinge, kasutades koolitatavat mudelit, ĂŒlejÀÀnud — kasutades vana. Nii tagame tĂ€iendamise kĂ€igus v1 ja v2 meetriliste ruumide ĂŒhilduvuse. OmapĂ€rane variant harmoonilisest regulariseerimisest.

MasinÔppe rakendamine Mail.ru-s

Terve arhitektuur

Kui vaadata kogu sĂŒsteemi antispammimise nĂ€ite pĂ”hjal, siis mudelid ei ole isoleeritud, vaid ĂŒksteise sisse ehitatud. VĂ”tame pildid, teksti ja muud tunnused, saades CNN-i ja FastTexti abil embeddinge. Edasi, embeddinge peal rakendatakse klassifikaatoreid, mis annavad punkte eri klassidele (kirjatĂŒĂŒpide, spami, logo olemasolu). Punktid ja tunnused liiguvad puude metsa, et langetada lĂ”plik otsus. Erilised klassifikaatorid selle skeemi raames vĂ”imaldavad paremini tĂ”lgendada sĂŒsteemi töö tulemusi ja sihipĂ€raselt tĂ€iendama komponente probleemide ilmnemisel, kui kĂ”ik andmed toimetatakse puuotsusele.

MasinÔppe rakendamine Mail.ru-s

KokkuvĂ”ttes tagame sujuvuse igas etapis. Alumises kihis kasutame CNN-i ja Fast Text-i jaoks harmoonilist regulatsiooni, keskastme klassifikaatorite puhul samuti harmoonilist regulatsiooni ja skooride kalibreerimist tĂ”enĂ€osuse jaotuse ĂŒhtlustamiseks. Boostimise puudujÀÀkide Ă”petamine toimub jĂ€rk-jĂ€rgult vĂ”i Knowledge Distillation'i meetodil.

Tavaliselt toob sellise keeruka masinĂ”ppe sĂŒsteemi tugi kaasa probleeme, kuna iga alumise kihi komponent nĂ”uab ĂŒlejÀÀnud sĂŒsteemi uuendamist. Kuid meie seadistuses muutub iga komponent minimaalselt ja see on eelnevaga ĂŒhilduv, seega saab kogu sĂŒsteemi ajakohastada osade kaupa ilma, et peaksime kogu struktuuri uuesti Ă”petama, vĂ”imaldades selle toetamist ilma suuremate kuludeta.

Juhtimistöö

Oleme arutanud andmete kogumist ja erinevat liiki mudelite tÀiendÔpet, seega liigume nende juurutamise juurde tootmiskeskkonnas.

A/B-testimine

Nagu juba varem mainisin, saame andmete kogumise protsessis tavaliselt kallutatud valimi, mille alusel ei ole vĂ”imalik mudeli tootmisvĂ”imet hinnata. SeetĂ”ttu tuleb mudeli juurutamisel kindlasti vĂ”rrelda seda eelneva versiooniga, et mĂ”ista, kuidas asjad tegelikult on, ja seega viia lĂ€bi A/B teste. Tegelikult on mudelite vĂ€lja panemine ja graafikute analĂŒĂŒs piisavalt rutiinne ja hĂ€sti automatiseeritav protsess. Me juurutame oma mudeleid jĂ€rk-jĂ€rgult 5%, 30%, 50% ja 100% kasutajateni, samal ajal kogudes kĂ”iki saadaval olevaid mÔÔdikuid mudeli vastuste ja kasutajate tagasiside kohta. Töötame automaatselt tagasi mudeli, kui ilmnevad tĂ”sised kĂ”rvalekalded, ja teiste olukordade korral, kui saavutame piisava arvu kasutaja klikke, teeme otsuse protsendi suurendamiseks. LĂ”ppkokkuvĂ”ttes viime uue mudeli 50% kasutajateni tĂ€iesti automaatselt, samas kui ĂŒlejÀÀnud auditooriumi heakskiitmiseks on vajalik inimese sekkumine, kuigi ka see samm on automatiseeritav.

Kuid A/B-testimise protsess pakub optimeerimise vÔimalusi. Asi on selles, et iga A/B-test on piisavalt pikk (meie puhul kestab see 6 kuni 24 tundi, sÔltuvalt tagasiside mahust), mis muudab selle suhteliselt kalliks ja piiratud ressurssidega. Lisaks sellele on vajalik testimiseks piisavalt kÔrge lÀbivoolu protsent, et pÔhimÔtteliselt kiirendada kogu A/B-testimise aega (statistiliselt olulise valimi kogumine vÀikse protsendi korral vÔib vÔtta vÀga kaua aega), mis teeb A/B slotid ÀÀrmiselt piiratud. On ilmne, et me peame testima ainult kÔige lootustandvamaid mudeleid, millest me tÀiendÔppe kÀigus palju leiame.

Selle probleemi lahendamiseks oleme koolitanud eraldi klassifikaatori, mis ennustaks A/B-testimise edukust. Selleks vĂ”tame tunnustena arvesse otsuste vastuvĂ”tmise statistikat, Precisionit, Recalli ja muid mÔÔdikuid Ă”ppe komplektis, eraldi komplektis ja voos oleva nĂ€idisega. Samuti vĂ”rdleme mudelit tootmises oleva mudeliga, hĂŒpoteesidega ning arvestame mudeli keerukust (Complexity). Kasutades kĂ”iki neid tunnuseid, hindab ajalooliste testide pĂ”hjal koolitatud klassifikaator kandidaadimudeleid, meie puhul siis puude metsi, ja teeb otsuse, millise neist saata A/B-testimisele.

MasinÔppe rakendamine Mail.ru-s

Selle lÀhenemise rakendamine on vÔimaldanud mitmekordselt suurendada edukate A/B-testide arvu.

Testimine & jÀlgimine

Testimine ja jÀlgimine ei kahjusta meie tervist, vaid pigem vastupidi, parandavad seda ja vabastavad tarbetutest stressidest. Testimine aitab vÀltida tÔrkeid ja jÀlgimine tuvastab need Ôigeaegselt, et vÀhendada mÔju kasutajatele.

Siin on oluline mĂ”ista, et varem vĂ”i hiljem teeb teie sĂŒsteem alati vigu — see on seotud igasuguse tarkvara arenduse tsĂŒkliga. SĂŒsteemi arendamise alguses on alati palju vigu, kuni kĂ”ik stabiliseerub ja peamine uuenduste etapp lĂ”ppenud. Kuid aja jooksul haarab entropia taas vĂ”imu ning vead tekivad uuesti — komponentide degradeerimise ja andmete muutuste tĂ”ttu, millest ma esialgselt rÀÀkisin.

Siin tahaksin rĂ”hutada, et igat masinĂ”ppesĂŒsteemi tuleks vaadata selle kasulikkuse kontekstis kogu elutsĂŒkli vĂ€ltel. Alltoodud graafikul on nĂ€idatud haruldase rĂ€mpsposti tuvastamise sĂŒsteemi töö nĂ€ide (graafik nĂ€itab nulli ĂŒmbrust). Kord tekkis probleem vale vahemĂ€lu tĂ”ttu, mistĂ”ttu sĂŒsteem eksis. Kahjuks polnud anomaaliate jĂ€lgimiseks monitooringut, mis viis olukorrani, et sĂŒsteem hakkas salvestama kirju spami kausta suurel hulgal. Kuigi tagajĂ€rjed parandati, ei suuda sĂŒsteem juba nii palju vigu teha, et end isegi viie aasta jooksul tasa teenida. See on tĂ€ielik ebaĂ”nnestumine mudeli elutsĂŒkli kontekstis.

MasinÔppe rakendamine Mail.ru-s

SeetĂ”ttu vĂ”ib selline lihtne asi nagu monitooring osutuda mudeli jaoks kriitiliseks. Lisaks tavapĂ€rastele ja ilmsetele mÔÔdikutele vaatleme ka mudeli vastuste ja skooride jaotust ning vĂ”tmeomaduste vÀÀrtuste jaotust. KL-divergenssi abil saame vĂ”rrelda hetkejaotust ajaloolise jaotusega vĂ”i A/B-testimise tulemusi ĂŒlejÀÀnud vooluga, mis vĂ”imaldab mudelis tuvastada anomaaliaid ja aegsasti muudatusi tagasi vĂ”tta.

Enamikul juhtudel kĂ€ivitame oma esimesed sĂŒsteemiversioonid lihtsate heuristikute vĂ”i mudelite abil, mida hiljem kasutame monitooringuks. NĂ€iteks jĂ€lgime NER-mudelit vĂ”rreldes regulaarsete vĂ€ljenditega teatud e-kauplustes ning kui klassifikaatori katvust vĂ”rreldes nendega saab vĂ€hendatud, uurime pĂ”hjuseid. Veel ĂŒks kasulik heuristikute rakendamine!

KokkuvÔte

KĂ€ime veel kord ĂŒle artikli peamised mĂ”tted.

  • FibdĂ€k. Alati mĂ”tleme kasutajale: kuidas nad saavad elada meie vigadega ja kuidas nad saavad neist teada anda. Ärge unustage, et kasutajad ei ole puhta tagasiside allikas mudelite koolitamiseks, ning seda tuleks puhastada tĂ€iendavate ML-sĂŒsteemide abil. Kui kasutaja signaalide kogumiseks pole vĂ”imalusi, otsime alternatiivseid tagasiside allikaid, nĂ€iteks seotud sĂŒsteeme.
  • Uuendus. Siin on oluline jĂ€rjepidevus, seega toetume praegusele tootmis mudelile. Uusi mudeleid koolitame nii, et need ei erineks oluliselt eelmisest, kasutades harmoonilist reguleerimist ja sarnaseid trikke.
  • Juhtimistöö. Automaatne juurutamine mÔÔdikute pĂ”hjal vĂ€hendab oluliselt mudelite juurutamise aega. Statistika ja otsuste vastuvĂ”tmise jaotuse jĂ€lgimine, kasutajatelt saadud tagasiside arvu jĂ€lgimine on kohustuslik, et suudaksite rahulikult magada ja produktiivseid puhkepĂ€evi nautida.

Loodetavasti aitab see, mida lugesite, teil kiiremini parandada teie ML-sĂŒsteeme, kiirendada nende turule toomist ja muuta need usaldusvÀÀrsemaks, vĂ€hendades tööst tingitud stressi.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster