The utilization of machine learning in Mail.ru

The utilization of machine learning in Mail.ru

Minu esinemiste kõrvale Highload++ ja DataFest Minsk 2019.

Paljude jaoks on postiteenus täna lahutamatu osa veebielust. Selle abil viime läbi äritegevust, salvestame erinevat olulist teavet, mis on seotud rahanduse, hotellide broneerimise, tellimuste täitmise ja paljuga muuga. 2018. aasta keskpaiku sõnastasime postiteenuse arendamise tootestriateegia. Milline peaks olema tänapäevane postiteenus?

Postiteenus peab olema nutikas, see tähendab, et ta peab aitama kasutajatel orienteeruda kasvavas informatsiooni mahus: filtreerima, struktureerima ja esitama seda kõige mugavamal viisil. Ta peab olema kasulikuks, võimaldades otse postkastis lahendada erinevaid probleeme, nagu näiteks trahvide maksmine (funktsioon, mida ma, oma kahjuks, kasutan). Ja sellega peab postiteenus samuti tagama informatsioonilise kaitse, blokeerides rämpsposti ja kaitstes häkkimise eest, see tähendab olema ohutust.

Need suunad määravad mitmeid põhiülesandeid, millest paljusid saab tõhusalt lahendada masinõppe abil. Siin on näidised juba toimivatest funktsioonidest, mis on välja töötatud strateegia raames – iga suuna kohta üks.

  • Nutika vastuse funktsioon. Postiteenuses on nutika vastuse funktsioon. Neuralvõrk analüüsib kirja sisu, mõistab selle tähendust ja eesmärki ning pakub seejärel kolme kõige sobivamat vastusevarianti: positiivne, negatiivne ja neutraalne. See aitab oluliselt säästa aega kirjadele vastamisel ning sageli vastata ebatavaliselt ja naljakalt.
  • Kirjade gruppeerimine, mis on seotud Interneti-poodide tellimustega. Me sageli ostame veebist, ja tavaliselt saadavad kauplused iga tellimuse kohta mitu kirja. Näiteks tuleb AliExpressilt, suurimalt teenuselt, palju kirju ühe tellimuse kohta, ja me oleme leidnud, et lõpliku juhul võivad need arvud ulatuda kuni 29-ni. Seetõttu kasutame nimetuste tuvastamise mudelit, et selgitada välja tellimuse number ja muu teave tekstist ning gruppeerida kõik kirjad ühte teema. Näitame ka tellimuse põhiteavet eraldi ribas, mis lihtsustab selle tüüpi kirjadega tegelemist.

    The utilization of machine learning in Mail.ru

  • Anti-phishing. Phishing on ohtlik petuskeem, mille abil püüavad kurjategijad saada kätte finantsandmeid (sealhulgas kasutajate pangakaarditeavet) ja sisselogimisi. Sellised kirjad jäljendavad tõelisi, mida saadab teenus, sealhulgas visuaalselt. Seetõttu tunnustame Computer Vision abil suurte ettevõtete (näiteks Mail.ru, Sber, Alfa) logo ja kirjade kujundust ning arvestame seda koos teksti ja muude tunnustega meie rämpsposti ja phishingu klassifikaatorites.

Masinõpe

Veidi masinõppest e-kirjade kontekstis. E-post on kõrgelt koormatud süsteem: meie serverite kaudu läbib keskmiselt 1,5 miljardit kirja päevas 30 miljoni aktiivse kasutaja kohta. Kõiki vajalikke funktsioone ja omadusi haldab umbes 30 masinõppe süsteemi.

Iga kiri läbib kogu klassifitseerimise protsessi. Esiteks filtreerime rämpsposti ja jätame head kirjad alles. Kasutajad ei märka sageli rämpsposti tõrje tööd, sest 95–99% rämpspostist ei jõua isegi vastavasse kausta. Rämpsposti tuvastamine on meie süsteemi väga oluline ja samas keeruline osa, kuna rämpsposti tõrje valdkonnas toimub pidev kohandumine kaitse- ja rünnakeskuste vahel, mis esitab meie meeskonnale pideva insenerliku väljakutse.

Seejärel eristame inimeste ja robotite kirju. Inimeste kirjad on kõige olulisemad, seega pakume nende jaoks funktsioone nagu Smart Reply. Robotite kirjad jagunevad kaheks: tehingulised - need on tähtsad kirjad teenustest, näiteks ostude või hotellide broneeringute kinnitused, finantsandmed, ja teavitavad - need on äritooted, allahindlused.

Peame, et tehingulised kirjad on sama olulised kui isiklikud vestlused. Need peavad olema käepärast, kuna sageli on vaja kiiresti leida teavet tellimuse või lennupileti broneeringu kohta, ja me kulutame aega nende kirjade otsimisele. Seetõttu jagame me mugavuse huvides need automaatselt kuue põhikategooriasse: reisid, tellimused, finantsid, piletid, registreerimised ja lõpuks karistused.

Teabesid on kõige enam levinud ja tõenäoliselt vähem oluline rühm, mis ei nõua kohest reaktsiooni, kuna kasutaja elus ei muutu midagi olulist, kui ta sellist kirja ei loe. Meie uues liideseosas koondame need kahte teema: sotsiaalmeedia ja uudiskirjad, visuaalselt puhastades postkasti ja jättes nähtavale vaid olulised kirjad.

The utilization of machine learning in Mail.ru

Käitus

Suur arv süsteeme tekitab palju raskusi kasutamises. Aja jooksul degradeeruvad mudelid, nagu iga tarkvara: murravad funktsioonid, masinad ebaõnnestuvad, tuleb ette tõrkeid koodis. Lisaks muutuvad pidevalt andmed: lisatakse uusi, muudetakse kasutajate käitumismustreid jne, seetõttu hakkab mudel ilma vajaliku hoolduseta aja jooksul üha halvemini toimima.

Ei saa unustada ka seda, et mida sügavamale masinõpe siseneb kasutajate ellu, seda suuremat mõju see avaldab ökosüsteemile ning sellest tulenevalt, seda suuremaid rahalisi kaotus või kasumit saavad turu mängijad. Seetõttu adaptiirivad üha enamates valdkondades mängijad ML-algoritmide kasutamisele (klassikalised näited - reklaam, otsing ja juba mainitud rämpsposti tõrje).

Kuna masinõppe ülesannetel on ka eripära: iga, olgu see siis väike, muudatus süsteemis võib tekitada palju tööd mudeliga: andmetega töötamine, uuesti koolitamine, juurutamine, mis võib võtta nädalaid või isegi kuid. Seetõttu, mida kiiremini keskkond, kus teie mudelid tegutsevad, muutub, seda rohkem ressursse nõuab nende hooldus. Tiim võib luua palju süsteeme ja nende üle rõõmustada, kuid seejärel kulutada peaaegu kõik ressursid nende hooldamiseks, ilma et oleks võimalust midagi uut teha. Me olime kunagi sellise olukorraga silmitsi, kui töötasime rämpsposti tõrje tiimis. Ja jõudsime ilmselgele järeldusele, et hooldust tuleb automatiseerida.

Automatiseerimine

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

  • andmete kogumine;
  • täiendav koolitus;
  • juurutamine;
  • testimine ja jälgimine.

Kui keskkond on ebastabiilne ja pidevalt muutuv, on kogu infrastruktuur mudeli ümber olulisem kui mudel ise. See võib olla vana hea lineaarne klassifikaator, aga kui sellele õigesti tunnuseid esitletakse ja tagasiside kasutajatelt on hästi organiseeritud, toimib see palju paremini kui kõikvõimalike vingetega State-Of-The-Art mudelid.

Tagasiside ring

See ring hõlmab andmete kogumist, täiendõpet ja juurutamist — põhimõtteliselt kogu mudeli uuendamise tsükkel. Miks see oluline on? Vaadake postal đăngi graafikut:

The utilization of machine learning in Mail.ru

Masinõppe arendaja rakendas antiboti mudelit, mis takistab botide registreerumist postis. Graafik langeb väärtusele, kus jäävad alles ainult päris kasutajad. Kõik on suurepärane! Kuid neli tundi hiljem kohendavad botimeistrid oma skripte, ja kõik naaseb algsesse seisundisse. Selles rakenduses kulutas arendaja kuu aega, lisades tunnuseid ja täiendades mudelit, kuid spämmija suudab nelja tunni jooksul kohaneda.

Kuna võib olla nii valus ja hiljem kõik uuesti teha, tuleks alguses mõelda, milline tagasiside ring välja näeb ja mida me teeme, kui keskkond muutub. Alustame andmete kogumisest — see on kütus meie algoritmidele.

Andmete kogumine

Selge on, et tänapäevaste närvivõrkude puhul on andmete hulk alati parem, ja neid genereerivad sisuliselt toote kasutajad. Kasutajad võivad meid aidata andmete märgistamisel, aga seda ei saa kuritarvitada, sest kasutajatele võib mingil hetkel tükkida teie mudelite täiustamine ja nad võivad minna teise toote juurde.

Üks kõige sagedasemaid vigu (siin viitan Andrew Ng-le) — liigne keskendumine mõõdikutele testandmestikus, mitte kasutajate tagasisidele, mis on tegelikult peamine kvaliteedi mõõdik, kuna loome toodet kasutajale. Kui kasutajale ei ole mudeli töö arusaadav või ei meeldi, siis on kõik asjatu.

Seetõttu peab kasutajal alati olema võimalus hääletada, peaksime talle andma tagasiside tööriista. Kui arvame, et kasti on saabunud kiri, mis kuulub finantseerimise alla, tuleks see markeerida 'finantseerimine', ja joonistada nupp, mida kasutaja võib vajutada ja öelda, et see ei ole finantseerimine.

Tagasiside kvaliteet

Räägime kasutajate tagasiside kvaliteedist. Esiteks, teil ja kasutajal võib olla erinev arusaam samast mõisted. Näiteks, teie ja tootearendajatega peetakse "rahandust" pangakirjadeks, samas kui kasutaja arvab, et ka vanaema kiri pensionist kuulub rahanduse alla. Teiseks, on kasutajaid, kes mõtlematult vajutavad nuppudele ilma igasuguse loogikata. Kolmandaks, kasutaja võib oma järeldustes tugevalt eksida. Üks selge näide meie praktikast on klassifikaatori juurutamine Nigeeria spämm, üsna naljakas spämmiliik, kus kasutajale pakutakse võimalust saada mitmeid miljoneid dollareid äkitselt leitud kauges sugulasest Aafrikas. Pärast selle klassifikaatori juurutamist kontrollisime nuppu "Ei ole spämm" nende kirjade puhul ja selgus, et 80% neist on mahlane Nigeeria spämm, mis näitab, et kasutajad võivad olla äärmiselt usaldavad.

Ja ära unustagem, et nuppe võivad vajutada mitte ainult inimesed, vaid ka igasugused robotid, mis teesklevad olevat brauserid. Nii et too tagasiside ei sobi õpetamiseks. Mida saaks sellega teavet teha?

Kasutame kahte lähenemist:

  • Kasutajate tagasiside seoses ML. Näiteks meil on online-antiboti süsteem, mis, nagu ma juba mainisin, teeb kiire otsuse piiratud hulga tunnuste põhjal. Ja on teiseks, aeglane süsteem, mis töötab tagantjärele. Sellel on rohkem andmeid kasutaja, tema käitumise jne kohta. Selle tulemusena tehakse tasakaalustatud otsus, mistõttu on selle täpsus ja täielikkus kõrgemad. Erinevuse töö nendel süsteemidel saab suunata esimesse kui õppeandmed. Nii et lihtsam süsteem püüab alati läheneda keerukama jõudlusele.
  • Klikkide klassifitseerimineIga kasutaja kliki saab lihtsalt klassifitseerida, hinnata selle kehtivust ja kasutusvõimet. Me teeme seda e-posti spämmivastaselt, kasutades kasutaja tunnuseid, tema ajalugu, saatja omadusi, teksti ning klassifikaatorite töö tulemust. Tulemusena saame automaatse süsteemi, mis valideerib kasutaja tagasisidet. Kuna seda tuleb oluliselt harvem uuesti õpetada, võib selle töö saada aluseks kõigile teistele süsteemidele. Selles mudelis on peamine prioriteet täpsus, kuna mudeli õpetamine ebatäpsete andmete põhjal võib kaasa tuua tagajärgi.

Kuni me puhastame andmeid ja õpetame meie masinõppimise süsteeme, ei tohi unustada kasutajaid. Sajad ja miljonid vead graafikus on statistika, kuid iga veakogemus kasutaja jaoks on tragöödia. Lisaks sellele, et kasutaja peab elama teie tootearenduse vea tõttu, ootab ta tagasisidestamise järel, et sellised olukorrad ei korduks. Seega tasub alati anda kasutajatele võimalus mitte ainult hääletada, vaid ka mõjutada masinõppimise süsteemide käitumist, luues näiteks iga tagasiside kliki jaoks isiklikke heuristilisi meetodeid; näiteks võib see e-posti puhul tähendada võimalust filtreerida sarnaseid kirju saatja ja pealkirja alusel.

Samuti on vajalik, et mingite aruannete või tugipöördumiste põhjal pooleautomaatsetes või käsitsi moodustatud süsteemides kohandatakse mudelit, et teised kasutajad ei kannataks sarnaste probleemide all.

Heuristikad õppimiseks

Nende andmete heuristikate ja kohandustega on kaks probleemi. Esiteks on pidevalt kasvava arvu kohanduste hooldamine keeruline, rääkimata nende kvaliteedist ja pikaajalise töökindluse tagamisest. Teiseks, viga ei pruugi olla sagedane ning mitmed klikkimised mudeli ümberõpetamiseks võivad olla ebapiisavad. Tundub, et neid kahte mitteseotud efekti on võimalik tunduvalt vähendada, kui rakendada järgmist lähenemist.

  1. Loome ajutise kohanduse.
  2. Suuname andmed sellest mudelisse, mis õpib regulaarselt ka saadud andmete põhjal. Siin on muidugi oluline, et heuristika oleks kõrge täpsusega, et mitte vähendada treeningandmete kvaliteeti.
  3. Seejärel paneme jälgimise takisti aktiveerimisele ja kui mingi aja pärast takisti enam ei aktiveeru ja katab täielikult mudeli, siis võib selle julgelt eemaldada. Nüüd on see probleem ebatõenäoline, et kordub.

Seega on takistite armee väga kasulik. Peamine on, et nende teenus oleks ajutine, mitte püsiv.

Jätkamine

Jätkamine on uusandmete lisamise protsess, mis saadakse kasutajatelt või teistelt süsteemidelt tagasiside kaudu, ning olemasoleva mudeli nende põhjal koolitamine. Jätkamisega võib kaasneda mitmeid probleeme:

  1. Mudel ei pruugi lihtsalt toetada jätkamist ning peab õppima ainult nullist.
  2. Looduse raamatus ei ole kirjas, et jätkamine paratamatult parandab toimetulekut tootmises. Tihti juhtub vastupidi, see tähendab, et olukord võib ainult halveneda.
  3. Muutused võivad olla ettearvamatud. See on piisavalt õrn teema, mille oleme endale avastanud. Isegi kui uus mudel A/B-testimisel näitab sarnaseid tulemusi kui praegune, ei tähenda see sugugi, et see töötab identselt. Nende töö võib erineda isegi mõnes protsendis, mis võib tuua uusi vigu või taastada juba parandatud vanad. Praeguste vigadega oskame me ja kasutajad juba elada ning kui uusi vigu tuleb hulgi, võib ka kasutaja mitte mõista, mis toimub, kuna ta ootab ettearvatavat käitumist.

Seega on jätkamise juures kõige olulisem garanteerida mudeli parandamine või vähemalt mitte halvendamine.

Esimene asi, mis pähe tuleb, kui räägime jätkamisest, on aktiivõppe lähenemine. Mida see tähendab? Näiteks klassifikaator määrab, kas kiri kuulub rahandusse, ja tema otsustuspiiri ümber lisame valimi märgistatud näidetest. See toimib hästi, näiteks reklaamides, kus tagasisidet tuleb palju ja mudelit saab koolitada reaalajas. Kuid kui tagasisidet on vähe, saame tugevalt moonutatud valimi, mis ei vasta tootmisandmete jaotusele, mille põhjal on võimatu hinnata mudeli käitumist kasutamise ajal.

The utilization of machine learning in Mail.ru

Meie eesmärk on säilitada vanad mustrid, tuttavad mudelid, ja omandada uusi. Jätkusuutlikkus on siin oluline. Mudel, mida me sageli suure vaevaga arendasime, töötab juba hästi, seetõttu saame toetuda selle jõudlusele.

Postitustes kasutatakse erinevaid mudeleid: puud, lineaarsed, närvivõrgud. Igaühe jaoks loome oma täiendamisalgoritmi. Täiendamisprotsessis tekivad meil uued andmed, kuid sageli ka uued tunnused, mida arvestame allpool kõigis algoritmides.

Lineaarmudelid

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

  • LogLoss uute andmete põhjal;
  • reguleerime uute tunnuste kaalusid (vanaid ei puutu);
  • õpime ka vanade andmete põhjal, et säilitada vanu mustreid;
  • ja mis veelgi olulisem: rakendame Harmoonilise Regulaarimise, mis tagab, et kaalude muutus võrreldes vana mudeliga on minimaalne.

Kuna iga kaotuse komponendi puhul on koefitsiendid, saame valida meie ülesande jaoks optimaalsed väärtused ristvalideerimise või toote nõuete alusel.

The utilization of machine learning in Mail.ru

Puud

Liigume edasi otsustuspuude juurde. Oleme välja töötanud järgmise puude täiendamisalgoritmi:

  1. Töös on 100–300 puu mets, mis on koolitatud vanal andmestikul.
  2. Eemaldame lõpuks M = 5 tükki ja lisame 2M = 10 uut, mis on koolitatud kogu andmestiku põhjal, kuid uute andmete kõrge kaalu tõttu, mis loomulikult tagab mudeli järkjärgulise muutumise.

On ilmne, et aja jooksul kasvab puude arv märkimisväärselt ja neid tuleb perioodiliselt vähendada, et mahtuda ajaraamidesse. Selleks kasutame igapäevarutiini nüüd juba laialdaselt kasutatavat Teadmiste Destilleerimist (KD). Lühidalt selle tööpõhimõttest.

  1. Meil on praegune „keeruline“ mudel. Käivitame selle treeningandmestikul ja saame klasside tõenäosuste jaotuse väljundiks.
  2. Seejärel koolitame õpilasmudelit (antud juhul madalama puude arvuga mudel) kordama mudeli töö tulemusi, kasutades klasside jaotust sihimuutujana.
  3. Siin on oluline märkida, et me ei kasuta andmekogude struktuuri ja seetõttu võime kasutada suvalisi andmeid. Loomulikult kasutame aktiivse vooluga seotud andmete proovide komplekti, et koolitada õpikmodelli. Seega võimaldab treeningkomplekt tagada mudeli täpsuse, samas kui vooluprognoos tagab sarnase jõudluse tootmisjaotuses, tasandades treeningkomplekti kallutatusi.

The utilization of machine learning in Mail.ru

Nende kahe meetodi (puude lisamine ja nende arvu perioodiline vähendamine teadlikkuse destilleerimise kaudu) kombinatsioon tagab uute mustrite sissetoomise ja täieliku järjepidevuse.

KD abil saame ka teostada erinevusi mudeli tunnuste operatsioonides, näiteks tunnuste eemaldamist ja puuduolevate andmete töötlemist. Meil on rida olulisi statistilisi tunnuseid (saatjate, tekstihäkkide, URL-ide jms kohta), mis on salvestatud andmebaasi, millel on ebaõnnestumise omadus. Tõsise järgnevuse saavutamiseks ei ole mudel selliste olukordadega harjunud, kuna treeningkomplektis ei esine ebaõnnestumise olukordi. Sarnastes olukordades kombineerime KD ja andmete suurendamise tehnikaid: andmete treenimise käigus eemaldame teatud tunnuseid või nullime need ning mudeli lähtemärgid (moodulite väljundid) jäävad algseteks, õppija mudel õpib neid jaotusi kordama.

The utilization of machine learning in Mail.ru

Me oleme märganud, et mida tõsisemaid manipuleerimisi mudelitega tehakse, seda rohkem on vaja vooluprognoosi protsendi järgi.

Tunnuste eemaldamiseks, kõige lihtsamale operatsioonile, on vajalik vaid väike osa voolust, kuna muutub vaid mõned tunnused ja käesolev mudel on õppinud samal komplekis – erinevus on minimaalne. Mudeli lihtsustamiseks (puude arvu vähendamiseks mitu korda) on siiski vajalik 50:50. Oluliste statistiliste tunnuste, mis tõsiselt mõjutavad mudeli jõudlust, puuduolekute korral on vajalik veelgi rohkem voolude, et tasakaalustada uue puuduste suhtes vastupidava mudeli toimimist kõikide kirjade tüüpide peal.

The utilization of machine learning in Mail.ru

FastText

Liigume edasi FastText'i juurde. Meeles pidada, et sõna esitus (Embedding) koosneb sõna enda embedding'ist ja kõigist selle täheline N-gram'ist, tavaliselt kolmigrammidest. Kuna kolmigrameid võib olla üsna palju, kasutatakse Bucket Hashing'ut, st kogu ruumi teisendamist kindlaks hachimepiks. Tulemuseks on kaalu maatriks, mille suurus on sisemise kihi ja sõnade + bucketite arv.

Täiendõppes ilmnevad uued tunnused: sõnad ja kolmigrammid. Facebooki standardse täiendõppe käigus ei toimu midagi olulist. Täiendatakse ainult vanu kaalu, kasutades rist-entropiat uute andmete peal. Seega uusi tunnuseid ei kasutata, loomulikult on see lähenemine kõigi ülaltoodud puudustega, mis on seotud mudeli ettearvamatuses tootmises. Seetõttu oleme teinud FastText'ile mõned täiendused. Lisame kõik uued kaalu (sõnad ja kolmigrammid), täiustame kogu maatriksit rist-entropiaga ja lisame harmoonilise regulatsiooni sarnane lineaarse mudeliga, mis tagab vanade kaalu vähenematu muutumise.

The utilization of machine learning in Mail.ru

CNN

Konvolutsiooniliste võrkudega on veidi keerulisem. Kui CNN'i viimaseid kihte täiustatakse, saab loomulikult kasutada harmoonilist regulatsiooni ja tagada järjepidevuse. Kuid juhul, kui on vajalik kogu võrgu täiustamine, siis sellist regulatsiooni ei saa rakendada kõigile kihtidele. Siiski on olemas võimalus koolitada komplementaarseid embedding'e Triplet Loss'i kaudu (originaalne artikkel).

Triplet Loss

Vaatame Triplet Loss'i kaudu antifishingu ülesande näitel. Võtame meie logo ning positiivseid ja negatiivseid näiteid teiste ettevõtete logodest. Minimeerime vahemaa esimeste vahel ja maksimeerime teise vahel, tehes seda väikese varuga, et tagada klasside suurem kompaktsus.

The utilization of machine learning in Mail.ru

Kui me täiustame võrku, siis meie mõõtmisruum muutub täielikult ja see muutub eelneva suhtes täiesti ühildumatuks. See on tõsine probleem ülesannetes, mis kasutavad vektoreid. Selle probleemi vältimiseks hakkame koolitamise käigus vanu embedding'e segama.

Oleme lisanud uut teavet treeningkomplekti ja õpetame mudeli teise versiooni nullist. Teises etapis täiustame meie võrku (Finetuning): esmalt õpetatakse viimane kiht, seejärel avatakse kogu võrk. Tripletide koostamise protsessis arvutame vaid osa embeddings'eid õpetatava mudeli abil, ülejäänud aga vana mudeli abil. Nii tagame täiustamisprotsessi käigus, et v1 ja v2 mõõtmisruumid oleksid ühilduvad. See on omamoodi harmoonilise regulatsiooniga variant.

The utilization of machine learning in Mail.ru

Arhitektuur tervikuna

Kui vaadata kogu süsteemi tervikuna näiteks rämpsposti kontekstis, siis mudelid ei ole isoleeritud, vaid üksteisesse integreeritud. Võtame pildid, teksti ja muud omadused, kasutame CNN-i ja Fast Text'i, et saada embeddings'eid. Edasi rakendatakse embeddings'ide peal klassifikaatoreid, mis väljastavad skoorid erinevate klasside jaoks (kirjade tüübid, rämpspost, logo olemasolu). Skoorid ja omadused satuvad puude metsadesse, kus tehakse lõplik otsus. Erinevad klassifikaatorid selles skeemis võimaldavad paremini tõlgendada süsteemi töö tulemusi ja sihipärasemalt täiustada komponente probleemide korral, mitte aga esitada kõiki andmeid toorelt otsustuspuusse.

The utilization of machine learning in Mail.ru

Kokkuvõttes tagame järjepidevuse igal tasandil. Alumisel tasemel kasutame CNN-is ja Fast Text-is harmoonilist regulatsiooni, keskmises klassifikaatorites samuti harmoonilist regulatsiooni ja skoori kalibreerimist tõenäosusjaotuse ühilduvuse tagamiseks. Boosting puid aga koolitatakse inkrementaalselt või kasutades Knowledge Distillation'i.

Üldiselt toob sellise pesustatud masinõppesüsteemi tugi sageli kaasa valusaid hetki, kuna iga alamkomponent toob endaga kaasa kogu ülemise süsteemi uuendamise. Kuid kuna meie seadistuses muutub iga komponent vaid vähe ja on eelneva versiooniga ühilduv, saab kogu süsteemi uuendada osade kaupa ilma vajaduseta kogu struktuuri uuesti koolitada, mis võimaldab seda toetada ilma tõsiste ülekoormusteta.

Käivitamine

Oleme arutanud andmete kogumist ja erinevat tüüpi mudelite täiustamist, seega liigume edasi nende juurutamise juurde tootmiskeskkonda.

A/B-testimine

Nagu ma varem ütlesin, andmete kogumise protsessis saame me tavaliselt moonutatud valimi, mille põhjal ei ole võimalik mudeli tootmisvõimet hinnata. Seetõttu tuleb mudeli juurutamisel võrrelda seda eelneva versiooniga, et mõista, kuidas asjad tegelikult on, st läbi viia A/B-testid. Tegelikult on mudeli väljalaskmisprotsess ja graafikute analüüs üsna rutinne ning hästi automatiseeritav. Me vabastame oma mudelid järk-järgult 5%, 30%, 50% ja 100% kasutajatest, samal ajal kogudes kõiki saadaval olevaid mõõdikuid mudeli vastuste ja kasutajate tagasiside kohta. Kui esineb tõsiseid kõrvalekaldeid, tagastame mudeli automaatselt, kuid muude juhtumite korral, kui oleme kogunud piisavalt kasutajate klikke, teeme otsuse protsendi suurendamise kohta. Lõppkokkuvõttes viime uue mudeli automaatselt 50% kasutajateni, ja kogu publiku vabastamise heakskiidab inimene, kuigi ka selle sammu saab automatiseerida.

Küll aga pakub A/B-testimise protsess 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 arvust), mis teeb selle üsna kulukaks ja piiratud ressurssidega. Lisaks on vajalik testimiseks piisavalt suur liiklusprotsent, et sisuliselt kiirendada A/B-testi üldist aega (statistiliselt olulise valimi kogumine vähese protsendi kohta võib võtta väga kaua aega), mis vähendab A/B-slotide arvu äärmiselt piiratud. On ilmne, et peame testimiseks valima ainult kõige paljutõotavamad mudelid, mida me täiendõppe protsessis saame väga palju.

Selle probleemi lahendamiseks oleme koolitanud eraldi klassifitseerijat, mis ennustab A/B-testi tulemuslikkust. Selleks võtame tunnusteks otsuste vastuvõtmise statistika, täpsuse (Precision), tagasikutsumise (Recall) ja muud mõõdikud koolituskomplektis, kõrvale jäetud andmetes ja voogudest võetavas valimis. Samuti võrreldame mudelit praeguse tootmismudeliga, heuristikaga, ja arvestame mudeli keerukust (Complexity). Kasutades kõiki neid tunnuseid, hindab ajalooga testidel koolitatud klassifitseerija kandidaatmudeleid, milleks meie puhul on puude mets, ja teeb otsuse, millist neist A/B-testi lasta.

The utilization of machine learning in Mail.ru

Selle lähenemise rakendamise hetkel võimaldas see mitme korra võrra suurendada edukaid A/B teste.

Testimine & jälgimine

Testimine ja jälgimine, imelik küll, ei kahjusta meie tervist, vaid vastupidi, parandavad ja vabastavad liigsetest stressidest. Testimine võimaldab ennetada tõrkeid, jälgimine aga tuvastada need õigel ajal, 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 arendamise tsükliga. Arenduse alguses on süsteemis alati palju vigu, alles siis, kui kõik on stabiilne ja peamine uuenduste etapp on lõppenud, saab kõik korda. Kuid aja jooksul võtab entropia oma, ja vead ilmuvad taas — komponentide degradatsiooni ja andmete muutumise tõttu, millest ma alguses rääkisin.

Siin tahaksin märkida, et iga masinõppesüsteemi tuleb vaadata selle kasu seisukohast kogu elutsükli vältel. Alloleval graafikul on toodud näide süsteemi tööst, mis püüab kinni haruldasi rämpskirju (graafikul joon on nulli lähedal). Üks kord, vale vahemälu tõttu, läks ta hulluks. Kahjuks polnud anomaalia jälgimist, mille tulemusena hakkas süsteem salvestama kirju kausta "rämps" otsuste piiril suures koguses. Hoolimata tagajärgede parandamisest on süsteem juba nii palju kordi eksinud, et ei tasu end tagasi isegi viie aasta jooksul. See on täielik ebaõnnestumine mudeli elutsükli seisukohast.

The utilization of machine learning in Mail.ru

Seega võib selline lihtne asi nagu jälgimine olla mudeli elus võtmetähtsusega. Lisaks standardsetele ja ilmselgetele mõõdikutele arvestame me ka mudeli vastuste ja skooride jaotust ning võtmeomaduste väärtuste jaotust. KL-eralduse abil saame võrrelda praegust jaotust ajaloolise või A/B-testimise teiste voogudega, mis võimaldab märgata mudeleid anomaaliaid ja õigel ajal muudatusi tagasi pöörata.

Enamasti käivitame oma süsteemide esimesed versioonid lihtsate heuristikute või mudelite abil, mida kasutame tulevikus jälgimiseks. Näiteks jälgime NER mudeli toimivust võrreldes regulaarsete väljenditega teatud veebipoodides ning kui klassifikaatori katvus langeb nende võrdluses, analüüsime põhjuseid. Veel üks kasulik heuristikute rakendus!

Summary

Käime jälle läbi artikli peamised mõtted.

  • Fibdäk. Mõtleme alati kasutajale: kuidas ta elab meie vigadega, kuidas ta saab neist teatada. Ei tohi unustada, et kasutajad ei ole puhta tagasiside allikas mudelite koolitamiseks ning seda tuleb puhastada abistavate ML-süsteemide abil. Kui pole võimalik koguda signaali kasutajalt, siis otsime alternatiivseid tagasiside allikaid, näiteks seotud süsteemid.
  • Jätkamine. Siin on peamine järjepidevus, seega toetume praegusele tootmisnäidisemale. Uute mudelite koolitamine toimub nii, et need ei erineks oluliselt eelmisest, kasutades harmoonilist regulatsiooni ja sarnaseid nippe.
  • Käivitamine. Automaatne juurutamine mõõdikute põhjal vähendab mudelite juurutamise aega oluliselt. Statistika ja otsuste vastuvõtmise jaotuse jälgimine, samuti kasutajate valeotsuste arv on vajalik teie rahuliku une ja tootlike nädalavahetuste jaoks.

Loodan, et see, mida lugesite, aitab teil oma ML-süsteeme kiiremini täiustada, kiirendab nende turule toomist ja muudab need usaldusväärsemaks, vähendades töö stressi.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster