Masinõppe toimimine Mail.ru Mailis

Masinõppe toimimine Mail.ru Mailis

Põhineb minu kõnedel Highload++ ja DataFest Minsk 2019 raames.

Paljude jaoks on meil tänapäeval Interneti-elu lahutamatu osa. Tema abiga viime läbi ärikirjavahetust, säilitame kõikvõimalikku olulist infot, mis on seotud finantside, hotellibroneeringute, tellimuste esitamise ja palju muuga. 2018. aasta keskel koostasime postiarenduse tootestrateegia. Milline peaks olema kaasaegne post?

Post peab olema tark, st aidates kasutajatel navigeerida kasvavas teabemahus: filtreerida, struktureerida ja pakkuda seda kõige mugavamal viisil. Ta peab olema kasulik, mis võimaldab lahendada erinevaid ülesandeid otse oma postkastis, näiteks maksta trahve (funktsioon, mida ma kahjuks kasutan). Ja samal ajal peab post loomulikult pakkuma teabekaitset, lõigates ära rämpsposti ja kaitstes häkkimise eest, st olema ohutu.

Need valdkonnad määratlevad mitmeid põhiprobleeme, millest paljusid saab masinõppe abil tõhusalt lahendada. Siin on näited juba olemasolevatest funktsioonidest, mis on välja töötatud strateegia osana – üks iga suuna jaoks.

  • Tark vastus. Meilil on nutika vastamise funktsioon. Närvivõrk analüüsib kirja teksti, mõistab selle tähendust ja eesmärki ning pakub sellest tulenevalt kolme sobivaimat vastusevarianti: positiivne, negatiivne ja neutraalne. See aitab kirjadele vastamisel oluliselt aega kokku hoida ning sageli vastata ka ebastandardselt ja naljakalt.
  • Meilide rühmitamineseotud veebipoodide tellimustega. Ostleme sageli veebis ja reeglina võivad kauplused saata iga tellimuse kohta mitu e-kirja. Näiteks suurimast teenusest AliExpressist tuleb ühe tellimuse kohta palju kirju ja me arvutasime välja, et terminali korpuses võib nende arv ulatuda kuni 29-ni. Seetõttu võtame Nimed Entity Recognition mudeli abil välja tellimuse numbri. ja muu info tekstist ning koondada kõik tähed ühte lõime. Eraldi lahtris kuvame ka põhiteabe tellimuse kohta, mis teeb seda tüüpi meiliga töötamise lihtsamaks.

    Masinõppe toimimine Mail.ru Mailis

  • Andmepüügivastane võitlus. Andmepüük on eriti ohtlik petturlik meilitüüp, mille abil ründajad püüavad hankida finantsteavet (sh kasutaja pangakaarte) ja sisselogimisi. Sellised kirjad jäljendavad teenuse saadetud tegelikke kirju, sealhulgas visuaalselt. Seetõttu tunneme Computer Visioni abil ära suurettevõtete (näiteks Mail.ru, Sber, Alfa) logod ja kirjade kujundusstiili ning arvestame seda koos teksti ja muude funktsioonidega oma rämpsposti ja andmepüügi klassifikaatorites .

Masinõpe

Natuke masinõppest meilis üldiselt. Mail on väga koormatud süsteem: 1,5 miljoni DAU kasutaja jaoks läbib meie servereid päevas keskmiselt 30 miljardit kirja. Umbes 30 masinõppesüsteemi toetavad kõiki vajalikke funktsioone ja funktsioone.

Iga täht läbib terve klassifitseerimiskonveieri. Kõigepealt lõikame rämpsposti ära ja jätame head kirjad. Sageli ei märka kasutajad rämpspostitõrje tööd, sest 95-99% rämpspostist ei jõuagi vastavasse kausta. Rämpspostituvastus on meie süsteemi väga oluline ja kõige keerulisem osa, kuna rämpspostitõrje valdkonnas toimub kaitse- ja ründesüsteemide vahel pidev kohandus, mis pakub meie meeskonnale pidevat insenertehnilist väljakutset.

Järgmisena eraldame kirjad inimestelt ja robotitelt. Inimestelt saadetud meilid on kõige olulisemad, seega pakume neile selliseid funktsioone nagu Smart Reply. Robotite kirjad jagunevad kahte ossa: tehingukirjad - need on olulised kirjad teenustelt, näiteks ostu- või hotellibroneeringu kinnitused, finantsid ja informatiivsed - need on ärireklaamid, allahindlused.

Usume, et tehingutega seotud e-kirjad on isikliku kirjavahetusega võrdsed. Need peaksid olema käepärast, sest sageli on meil vaja kiiresti leida infot tellimuse või lennupileti broneeringu kohta ning kulutame aega nende kirjade otsimisele. Seetõttu jagame need mugavuse huvides automaatselt kuue põhikategooriasse: reisimine, tellimused, rahandus, piletid, registreerimised ja lõpuks trahvid.

Infokirjad on suurim ja ilmselt vähemtähtis grupp, mis ei vaja kohest reageerimist, sest kasutaja elus ei muutu midagi olulist, kui ta sellist kirja ei loe. Uues liideses koondame need kaheks lõimeks: sotsiaalvõrgustikud ja uudiskirjad, tühjendades nii visuaalselt postkasti ja jättes nähtavaks ainult olulised sõnumid.

Masinõppe toimimine Mail.ru Mailis

Ekspluateerimine

Suur hulk süsteeme põhjustab töös palju raskusi. Lõppude lõpuks, mudelid lagunevad aja jooksul, nagu iga tarkvara: funktsioonid purunevad, masinad ebaõnnestuvad, kood muutub kõveraks. Lisaks muutuvad andmed pidevalt: lisandub uusi, muudetakse kasutajate käitumismustreid jne, nii et ilma korraliku toeta mudel töötab aja jooksul aina halvemini.

Me ei tohi unustada, et mida sügavamale masinõpe kasutajate ellu tungib, seda suurem on nende mõju ökosüsteemile ning selle tulemusena võivad turuosalised saada rohkem rahalist kahju või kasumit. Seetõttu kohanevad mängijad üha enamates valdkondades ML-i algoritmide tööga (klassikalisteks näideteks on reklaam, otsing ja juba mainitud rämpspostitõrje).

Samuti on masinõppeülesannetel omapära: iga, isegi väike muudatus süsteemis võib tekitada mudeliga palju tööd: andmetega töötamine, ümberõpe, juurutamine, mis võib võtta nädalaid või kuid. Seega, mida kiiremini muutub keskkond, milles teie mudelid töötavad, seda rohkem on nende hooldamine vaja. Meeskond võib luua palju süsteeme ja olla selle üle õnnelik, kuid seejärel kulutada peaaegu kõik oma ressursid nende hooldamisele, ilma võimaluseta midagi uut ette võtta. Korra puutusime sellise olukorraga kokku rämpspostitõrje meeskonnas. Ja nad tegid ilmse järelduse, et tugi tuleb automatiseerida.

Automaatika

Mida saab automatiseerida? Tegelikult peaaegu kõike. Olen tuvastanud neli valdkonda, mis määratlevad masinõppe infrastruktuuri:

  • andmete kogumine;
  • lisakoolitus;
  • kasutusele võtta;
  • testimine ja jälgimine.

Kui keskkond on ebastabiilne ja pidevas muutumises, siis kogu mudelit ümbritsev infrastruktuur osutub palju olulisemaks kui mudel ise. See võib olla vana hea lineaarne klassifikaator, kuid kui toidate seda õigete funktsioonidega ja saate kasutajatelt head tagasisidet, töötab see palju paremini kui tipptasemel mudelid, millel on kõik kellad ja viled.

Tagasiside loop

See tsükkel ühendab andmete kogumise, täiendava koolituse ja juurutamise – tegelikult kogu mudeli uuendamise tsükli. Miks see oluline on? Vaata registreerimise ajakava meilist:

Masinõppe toimimine Mail.ru Mailis

Masinõppe arendaja on juurutanud robotitevastase mudeli, mis takistab robotitel meili teel registreerumast. Graafik langeb väärtuseni, kuhu jäävad ainult tegelikud kasutajad. Kõik on hästi! Kuid möödub neli tundi, robotid kohandavad oma skripte ja kõik normaliseerub. Selles teostuses kulutas arendaja kuu aega funktsioonide lisamiseks ja mudeli ümberõppeks, kuid rämpspostitaja suutis kohaneda nelja tunniga.

Selleks, et mitte nii piinavalt valus olla ja kõike hiljem ümber tegema ei peaks, tuleb esialgu mõelda, kuidas tagasisideahel välja näeb ja mida teeme, kui keskkond muutub. Alustame andmete kogumisega – see on meie algoritmide kütus.

Andmete kogumine

On selge, et tänapäevaste närvivõrkude puhul on seda parem, mida rohkem andmeid, ja tegelikult genereerivad need toote kasutajad. Kasutajad saavad meid aidata andmete märgistamisega, kuid me ei saa seda kuritarvitada, sest ühel hetkel tüdivad kasutajad teie mudelite valmimisest ja lähevad üle mõnele teisele tootele.

Üks levinumaid vigu (siinkohal viitan Andrew Ng-le) on liigne keskendumine testandmestiku mõõdikutele, mitte aga kasutaja tagasisidele, mis on tegelikult töö kvaliteedi põhinäitaja, kuna loome toode kasutajale. Kui kasutaja mudeli tööst aru ei saa või talle ei meeldi, siis on kõik rikutud.

Seetõttu peaks kasutajal alati olema võimalus hääletada ja talle tuleks anda tagasiside andmise tööriist. Kui arvame, et postkasti on saabunud rahandusega seotud kiri, tuleb see märkida “finantseerimine” ja joonistada nupp, millele klõpsates saab kasutaja öelda, et see ei ole finants.

Tagasiside kvaliteet

Räägime kasutajate tagasiside kvaliteedist. Esiteks saate teie ja kasutaja panna ühte mõistesse erinevad tähendused. Näiteks teie ja teie tootejuhid arvate, et “finantseerimine” tähendab panga kirju ja kasutaja arvates viitab rahandusele ka vanaema kiri tema pensioni kohta. Teiseks on kasutajaid, kes armastavad meeletult nuppe vajutada ilma igasuguse loogikata. Kolmandaks võib kasutaja oma järeldustes sügavalt eksida. Ilmekas näide meie praktikast on klassifikaatori rakendamine Nigeeria rämpspost, väga naljakas rämpspostitüüp, kus kasutajal palutakse Aafrikast ootamatult leitud kauge sugulase käest mitu miljonit dollarit ära võtta. Pärast selle klassifikaatori rakendamist kontrollisime nende e-kirjade klõpse “Ei ole rämpspost” ja selgus, et 80% neist oli mahlane Nigeeria rämpspost, mis viitab sellele, et kasutajad võivad olla äärmiselt kergeusklikud.

Ja ärgem unustagem, et nuppe saavad klõpsata mitte ainult inimesed, vaid ka kõikvõimalikud robotid, mis teesklevad brauserit. Nii et toores tagasiside ei ole õppimiseks hea. Mida saate selle teabega teha?

Kasutame kahte lähenemist:

  • Tagasiside lingitud ML-ilt. Näiteks on meil veebipõhine robotivastane süsteem, mis, nagu mainisin, teeb piiratud hulga märkide põhjal kiire otsuse. Ja seal on teine, aeglane süsteem, mis töötab hiljem. Sellel on rohkem andmeid kasutaja, tema käitumise jms kohta. Selle tulemusel tehakse kõige teadlikum otsus, vastavalt suurem täpsus ja täielikkus. Nende süsteemide töö erinevuse saate suunata esimesele treeningandmetena. Seega püüab lihtsam süsteem alati läheneda keerukama toimivusele.
  • Klõpsake klassifikatsiooni. Saate lihtsalt klassifitseerida iga kasutaja klõpsu, hinnata selle kehtivust ja kasutatavust. Teeme seda rämpspostitõrjes, kasutades kasutaja atribuute, tema ajalugu, saatja atribuute, teksti ennast ja klassifikaatorite tulemusi. Selle tulemusena saame automaatse süsteemi, mis valideerib kasutajate tagasisidet. Ja kuna seda tuleb palju harvemini ümber õpetada, võib selle töö saada kõigi teiste süsteemide aluseks. Selle mudeli peamiseks prioriteediks on täpsus, kuna mudeli koolitamine ebatäpsete andmete põhjal on tulvil tagajärgi.

Andmeid puhastades ja ML-süsteeme täiendades ei tohi unustada ka kasutajaid, sest meie jaoks on tuhanded, miljonid vead graafikul statistika ja kasutaja jaoks on iga viga tragöödia. Lisaks sellele, et kasutaja peab kuidagi teie veaga tootes kaasa elama, eeldab ta pärast tagasiside saamist, et sarnane olukord tulevikus kõrvaldatakse. Seetõttu tasub alati anda kasutajatele mitte ainult hääletamisvõimalus, vaid ka korrigeerida ML-süsteemide käitumist, luues iga tagasiside klõpsu kohta näiteks personaalse heuristika, posti puhul võiks selleks olla filtreerimisvõimalus. sellised kirjad saatja ja selle kasutaja pealkirja järgi.

Samuti peate mõne aruande või taotluste põhjal koostama mudeli poolautomaatses või käsitsi režiimis, et teised kasutajad ei kannataks sarnaste probleemide all.

Õppimise heuristika

Nende heuristika ja karkudega on kaks probleemi. Esimene on see, et üha kasvavat karkude arvu on raske hooldada, rääkimata nende kvaliteedist ja jõudlusest pikemas perspektiivis. Teiseks probleemiks on see, et viga ei pruugi olla sagedane ning paarist klõpsust mudeli edasiõppimiseks ei piisa. Näib, et neid kahte sõltumatut mõju saab oluliselt neutraliseerida, kui rakendada järgmist lähenemisviisi.

  1. Loome ajutise kargu.
  2. Saadame sellest andmed mudelile, see uuendab end regulaarselt, sealhulgas saadud andmete kohta. Siin on muidugi oluline, et heuristika oleks kõrge täpsusega, et mitte vähendada koolituskomplekti andmete kvaliteeti.
  3. Seejärel paneme jälgimise kargu käivitama ja kui mõne aja pärast kark enam ei tööta ja on mudeliga täielikult kaetud, siis võite selle julgelt eemaldada. Nüüd see probleem tõenäoliselt enam ei kordu.

Nii et karkude armee on väga kasulik. Peaasi, et nende teenus on kiireloomuline ja mitte püsiv.

Lisakoolitus

Ümberõpe on protsess, mille käigus lisatakse kasutajatelt või muudelt süsteemidelt saadud tagasiside tulemusena saadud uusi andmeid ja koolitatakse sellel olemasolevat mudelit. Lisakoolitusega võib esineda mitmeid probleeme:

  1. Mudel ei pruugi lihtsalt täiendavat koolitust toetada, vaid õpib ainult nullist.
  2. Loodusraamatus pole kuskil kirjas, et lisakoolitus tõstab kindlasti töö kvaliteeti tootmises. Sageli juhtub vastupidi, see tähendab, et võimalik on ainult halvenemine.
  3. Muutused võivad olla ettearvamatud. See on üsna peen punkt, mille oleme enda jaoks tuvastanud. Isegi kui uus mudel A/B testis näitab sarnaseid tulemusi võrreldes praegusega, ei tähenda see, et see töötaks identselt. Nende töö võib erineda vaid ühe protsendi võrra, mis võib tuua uusi vigu või tuua tagasi vanu, mis on juba parandatud. Nii meie kui ka kasutajad oskame juba praeguste vigadega elada ning suure hulga uute vigade ilmnemisel ei pruugi kasutaja samuti toimuvast aru saada, sest eeldab etteaimatavat käitumist.

Seetõttu on täienduskoolituse juures kõige olulisem jälgida, et mudel saaks paremaks või vähemalt mitte halvemaks.

Täiendavast koolitusest rääkides tuleb esimese asjana meelde aktiivõppe lähenemine. Mida see tähendab? Näiteks määrab klassifikaator, kas meil on seotud rahandusega, ja selle otsustuspiiri ümber lisame märgistatud näidete näidise. See toimib hästi näiteks reklaamis, kus on palju tagasisidet ja modelli saab veebis koolitada. Ja kui tagasisidet on vähe, siis saame tootmisandmete jaotuse suhtes väga kallutatud valimi, mille alusel on võimatu hinnata mudeli käitumist töötamise ajal.

Masinõppe toimimine Mail.ru Mailis

Tegelikult on meie eesmärk säilitada vanu mustreid, juba tuntud mudeleid ja omandada uusi. Siin on oluline järjepidevus. Mudel, mille kasutuselevõtuga nägime sageli palju vaeva, juba töötab, nii et saame keskenduda selle jõudlusele.

Postis kasutatakse erinevaid mudeleid: puud, lineaarsed, närvivõrgud. Igaühe jaoks koostame oma täiendava treeningalgoritmi. Täiendava koolituse käigus saame lisaks uutele andmetele ka sageli uusi funktsioone, mida võtame arvesse kõigis allpool toodud algoritmides.

Lineaarsed mudelid

Oletame, et meil on logistiline regressioon. Loome kahjumudeli järgmistest komponentidest:

  • Logikadu uutel andmetel;
  • reguleerime uute funktsioonide kaalud (vanu me ei puuduta);
  • õpime ka vanadest andmetest, et säilitada vanu mustreid;
  • ja võib-olla kõige olulisem: lisame Harmonic Regularisation, mis tagab, et kaalud ei muutu palju võrreldes vana mudeliga vastavalt normile.

Kuna igal kahjukomponendil on koefitsiendid, saame oma ülesande jaoks optimaalsed väärtused valida ristvalideerimise või tootenõuete alusel.

Masinõppe toimimine Mail.ru Mailis

Деревья

Liigume edasi otsustuspuude juurde. Puude täiendavaks treenimiseks oleme koostanud järgmise algoritmi:

  1. Tootmises töötab 100-300 puust koosnev mets, mis on koolitatud vanal andmekogumil.
  2. Lõpus eemaldame M = 5 tükki ja lisame 2M = 10 uut, mis on treenitud kogu andmekogumile, kuid uute andmete jaoks on suur kaal, mis loomulikult tagab mudeli järkjärgulise muutumise.

Ilmselgelt suureneb aja jooksul puude arv oluliselt ja aja järgi tuleb neid perioodiliselt vähendada. Selleks kasutame nüüd üldlevinud teadmiste destilleerimist (KD). Lühidalt selle toimimise põhimõttest.

  1. Meil on praegune "keeruline" mudel. Käitame selle treeningandmete komplektis ja saame väljundis klassi tõenäosusjaotuse.
  2. Järgmisena treenime õpilasmudelit (antud juhul vähemate puudega mudelit), et korrata mudeli tulemusi, kasutades sihtmuutujana klassijaotust.
  3. Siinkohal on oluline märkida, et me ei kasuta mingil viisil andmekogumi märgistust ja seetõttu võime kasutada suvalisi andmeid. Loomulikult kasutame õpilasmudeli treeningnäidisena lahinguvoost pärit andmenäidist. Seega võimaldab koolituskomplekt meil tagada mudeli täpsuse ja vooproov tagab sarnase jõudluse toodangu levitamisel, kompenseerides koolituskomplekti kallutatuse.

Masinõppe toimimine Mail.ru Mailis

Nende kahe tehnika (puude lisamine ja perioodiline arvukuse vähendamine Knowledge Destillation abil) kombineerimine tagab uute mustrite juurutamise ja täieliku järjepidevuse.

KD abil teostame ka erinevaid operatsioone mudelitunnustega, nagu tunnuste eemaldamine ja lünkade kallal töötamine. Meie puhul on andmebaasis salvestatud mitmeid olulisi statistilisi funktsioone (saatjate, tekstiräsi, URL-ide jne järgi), mis kipuvad ebaõnnestuma. Mudel pole muidugi sündmuste selliseks arenguks valmis, kuna treeningkomplektis ebaõnnestumisi ei esine. Sellistel juhtudel kombineerime KD ja suurendamise tehnikaid: osa andmete treenimisel eemaldame või lähtestame vajalikud funktsioonid ning võtame algsed sildid (praeguse mudeli väljundid) ning õpilasmudel õpib seda jaotust kordama. .

Masinõppe toimimine Mail.ru Mailis

Märkasime, et mida tõsisem on mudeliga manipuleerimine, seda suurem on niidiproovi protsent.

Funktsioonide eemaldamine, lihtsaim toiming, nõuab vaid väikest osa voost, kuna muutuvad vaid paar funktsiooni ja praegune mudel on koolitatud samal komplektil - erinevus on minimaalne. Mudeli lihtsustamiseks (vähendades puude arvu mitu korda) on juba vaja 50 kuni 50. Ja oluliste statistiliste tunnuste väljajätmiseks, mis mõjutavad tõsiselt mudeli toimimist, on vaja veelgi rohkem voolu, et ühtlustada puude tööd. uus väljajätmiskindel mudel igat tüüpi kirjadele.

Masinõppe toimimine Mail.ru Mailis

FastText

Liigume edasi FastTexti juurde. Tuletan meelde, et sõna esitus (manustamine) koosneb sõna enda ja kõigi selle tähtede N-grammide, tavaliselt trigrammide põimimise summast. Kuna trigramme võib olla päris palju, siis kasutatakse Bucket Hashing’i ehk kogu ruumi teisendamist kindlaks fikseeritud hashmapiks. Selle tulemusena saadakse kaalumaatriks sisemise kihi mõõtmetega sõnade arvu + ämbrite kohta.

Lisakoolitusega ilmuvad uued märgid: sõnad ja trigrammid. Facebooki tavapärasel järelkoolitusel ei juhtu midagi märkimisväärset. Uutele andmetele õpetatakse ümber ainult vanu ristentroopiaga kaalusid. Seega uusi funktsioone ei kasutata, loomulikult on sellel lähenemisel kõik ülalkirjeldatud puudused, mis on seotud mudeli ettearvamatusega tootmises. Seetõttu muutsime FastTexti veidi. Lisame kõik uued kaalud (sõnad ja trigrammid), laiendame kogu maatriksit ristentroopiaga ja lisame analoogselt lineaarmudeliga harmoonilise regulaarsuse, mis garanteerib ebaolulise muutuse vanades kaaludes.

Masinõppe toimimine Mail.ru Mailis

CNN

Konvolutsioonivõrgud on veidi keerulisemad. Kui CNN-is on viimased kihid valmis, siis loomulikult saab rakendada harmoonilist regulaarsust ja garanteerida järjepidevuse. Aga kui on vaja kogu võrgu täiendavat väljaõpet, siis ei saa sellist seadustamist enam kõigile kihtidele rakendada. Siiski on võimalus treenida täiendavaid manuseid Triplet Lossi (originaalartikkel).

Kolmekordne kaotus

Kasutades andmepüügivastast ülesannet näitena, vaatame kolmekordset kadu üldiselt. Võtame oma logo, aga ka positiivseid ja negatiivseid näiteid teiste ettevõtete logodest. Minimeerime esimese ja maksime vahemaa teise vahel, teeme seda väikese vahega, et tagada klasside suurem kompaktsus.

Masinõppe toimimine Mail.ru Mailis

Kui me võrku edasi treenime, muutub meie meetriline ruum täielikult ja see muutub eelmisega täiesti sobimatuks. See on vektoreid kasutavate probleemide puhul tõsine probleem. Sellest probleemist möödapääsemiseks segame treeningu ajal vanu manuseid.

Lisasime koolituskomplekti uusi andmeid ja treenime mudeli teist versiooni nullist. Teises etapis treenime oma võrku edasi (peenhäälestus): kõigepealt valmib viimane kiht ja seejärel vabastatakse kogu võrk. Kolmikute koostamise käigus arvutame väljaõppinud mudeli abil ainult osa manustest, ülejäänud - vana mudeli abil. Seega tagame täiendava koolituse käigus meetermõõdustiku v1 ja v2 ühilduvuse. Harmoonilise reguleerimise ainulaadne versioon.

Masinõppe toimimine Mail.ru Mailis

Kogu arhitektuur

Kui võtta näitena kogu süsteem, kasutades rämpspostitõrjet, siis ei ole mudelid isoleeritud, vaid pesastatud üksteise sees. Teeme pilte, teksti ja muid funktsioone, kasutades CNN-i ja Fast Texti, saame manuseid. Järgmisena rakendatakse manustamistele klassifikaatorid, mis annavad erinevate klasside hinded (kirjatüübid, rämpspost, logo olemasolu). Signaalid ja märgid sisenevad juba puude metsa, et lõplik otsus langetada. Selle skeemi individuaalsed klassifikaatorid võimaldavad süsteemi tulemusi paremini tõlgendada ja probleemide korral täpsemalt komponente ümber õpetada, selle asemel, et sisestada kõik andmed töötlemata kujul otsustuspuudesse.

Masinõppe toimimine Mail.ru Mailis

Selle tulemusena tagame järjepidevuse igal tasandil. CNN-is ja Fast Textis kasutame alumisel tasemel harmoonilist regulaarsust, keskmiste klassifikaatorite puhul kasutame tõenäosusjaotuse järjepidevuse tagamiseks ka harmoonilist reguleerimist ja kiiruse kalibreerimist. Noh, puude suurendamist treenitakse järk-järgult või teadmiste destilleerimise abil.

Üldiselt on sellise pesastatud masinõppesüsteemi ülalpidamine tavaliselt piin, kuna iga madalama taseme komponent viib kogu ülaltoodud süsteemi värskendamiseni. Kuid kuna meie seadistuses muutub iga komponent veidi ja ühildub eelmisega, saab kogu süsteemi tükkhaaval uuendada, ilma et oleks vaja kogu struktuuri ümber õpetada, mis võimaldab seda ilma tõsise lisakuluta toetada.

Kasutusele võtta

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

A/B testimine

Nagu ma varem ütlesin, saame andmete kogumise käigus tavaliselt kallutatud valimi, mille põhjal on võimatu hinnata mudeli tootmisvõimsust. Seetõttu tuleb juurutamisel mudelit võrrelda eelmise versiooniga, et aru saada, kuidas asjad tegelikult käivad, ehk teha A/B-teste. Tegelikult on diagrammide avaldamise ja analüüsimise protsess üsna rutiinne ja seda saab hõlpsasti automatiseerida. Toome oma mudelid järk-järgult kasutusele 5%, 30%, 50% ja 100% kasutajatest, kogudes samal ajal kõiki saadaolevaid mõõdikuid mudelite vastuste ja kasutajate tagasiside kohta. Mõnede tõsiste kõrvalekallete korral keerame mudeli automaatselt tagasi ja muudel juhtudel, olles kogunud piisava arvu kasutajate klikke, otsustame protsenti suurendada. Selle tulemusena toome uue mudeli 50% kasutajateni täiesti automaatselt ja kogu vaatajaskonnale levitamise kinnitab inimene, kuigi seda sammu saab automatiseerida.

A/B testimisprotsess pakub aga ruumi optimeerimiseks. Fakt on see, et igasugune A/B test on üsna pikk (meie puhul võtab see olenevalt tagasiside hulgast 6-24 tundi), mis teeb selle üsna kulukaks ja piiratud ressurssidega. Lisaks on testi jaoks vajalik piisavalt suur vooluprotsent, et oluliselt kiirendada A/B-testi koguaega (statistiliselt olulise valimi värbamine mõõdikute hindamiseks väikese protsendiga võib võtta väga kaua aega), mis muudab A/B teenindusaegade arv äärmiselt piiratud. Ilmselgelt tuleb testida vaid kõige lootustandvamaid mudeleid, millest lisakoolituse käigus saame päris palju.

Selle probleemi lahendamiseks koolitasime välja eraldi klassifikaatori, mis ennustab A/B testi edukust. Selleks võtame funktsioonidena otsustusstatistika, täpsuse, tagasikutsumise ja muud mõõdikud treeningkomplekti, edasilükatud ja voost võetud valimi kohta. Samuti võrdleme mudelit praeguse tootmises olevaga, heuristikaga ja võtame arvesse mudeli keerukust. Kõiki neid funktsioone kasutades hindab testimise ajaloo alal koolitatud klassifikaator kandidaatmudeleid, meie puhul on tegemist puude metsadega, ja otsustab, millist neist A/B testis kasutada.

Masinõppe toimimine Mail.ru Mailis

Rakendamise ajal võimaldas see lähenemisviis meil edukate A/B-testide arvu mitu korda suurendada.

Testimine ja jälgimine

Testimine ja jälgimine, kummalisel kombel, ei kahjusta meie tervist, pigem vastupidi, parandavad seda ja vabastavad meid tarbetust stressist. Testimine võimaldab riket ennetada ja jälgimine võimaldab seda õigeaegselt avastada, et vähendada mõju kasutajatele.

Siin on oluline mõista, et varem või hiljem teeb teie süsteem alati vigu - see on tingitud mis tahes tarkvara arendustsüklist. Süsteemi arendamise alguses on alati palju vigu, kuni kõik paika loksub ja innovatsiooni põhietapp on lõppenud. Kuid aja jooksul võtab entroopia oma lõivu ja vead ilmuvad uuesti - ümberkaudsete komponentide lagunemise ja andmete muutumise tõttu, millest ma alguses rääkisin.

Siinkohal tahaksin märkida, et iga masinõppesüsteemi tuleks vaadelda selle kasumi seisukohalt kogu selle elutsükli jooksul. Allolev graafik näitab näidet selle kohta, kuidas süsteem töötab haruldast tüüpi rämpsposti püüdmiseks (joon graafikul on nullilähedane). Ühel päeval läks ta valesti vahemällu salvestatud atribuudi tõttu hulluks. Õnneks ei jälgitud ebanormaalset käivitumist, mille tulemusena hakkas süsteem salvestama suurtes kogustes kirju otsustamispiiril asuvasse rämpsposti kausta. Vaatamata tagajärgede parandamisele on süsteem juba nii palju vigu teinud, et ei tasu end ära isegi viie aasta pärast. Ja see on mudeli elutsükli seisukohalt täielik ebaõnnestumine.

Masinõppe toimimine Mail.ru Mailis

Seetõttu võib modelli elus võtmetähtsusega saada selline lihtne asi nagu monitooring. Lisaks standardsetele ja ilmsetele mõõdikutele võtame arvesse mudeli vastuste ja skooride jaotust, samuti põhifunktsioonide väärtuste jaotust. KL-i lahknemise abil saame võrrelda praegust jaotust ajaloolisega või A/B testi väärtusi ülejäänud vooga, mis võimaldab märgata mudelis anomaaliaid ja muudatusi õigeaegselt tagasi pöörata.

Enamasti käivitame oma esimesed süsteemide versioonid, kasutades lihtsat heuristikat või mudeleid, mida kasutame tulevikus jälgimisena. Näiteks jälgime NER mudelit võrreldes tavalistega konkreetsete veebipoodide puhul ja kui klassifikaatori katvus nendega võrreldes langeb, siis saame põhjustest aru. Veel üks kasulik heuristika kasutamine!

Tulemused

Vaatame uuesti artikli põhiideed.

  • Fibdeck. Me mõtleme alati kasutaja peale: kuidas ta meie vigadega edasi elab, kuidas ta saab neist teada anda. Ärge unustage, et kasutajad ei ole koolitusmudelite jaoks puhta tagasiside allikaks ja see tuleb kustutada ML-i abisüsteemide abil. Kui kasutajalt ei ole võimalik signaali koguda, siis otsime alternatiivseid tagasiside allikaid, näiteks ühendatud süsteeme.
  • Lisakoolitus. Siin on peamine järjepidevus, seega tugineme praegusele tootmismudelile. Koolitame uusi mudeleid välja nii, et need ei erineks harmoonilise regulaarsuse jms nippide tõttu palju eelmisest.
  • Kasutusele võtta. Mõõdikutel põhinev automaatne juurutamine vähendab oluliselt mudelite juurutamiseks kuluvat aega. Statistika ja otsuste langetamise jaotuse jälgimine, kasutajate kukkumiste arv on teie kosutava une ja produktiivse nädalavahetuse jaoks kohustuslik.

Loodan, et see aitab teil ML-süsteeme kiiremini täiustada, neid kiiremini turule tuua ning muuta need töökindlamaks ja vähem stressi tekitavaks.

Allikas: www.habr.com

Lisa kommentaar