Mašininio mokymosi veikimas Mail.ru Mail

Mašininio mokymosi veikimas Mail.ru Mail

Remiantis mano kalbomis Highload++ ir DataFest Minsk 2019 m.

Šiandien daugeliui paštas yra neatsiejama internetinio gyvenimo dalis. Jos pagalba vedame verslo korespondenciją, saugome visą svarbią informaciją, susijusią su finansais, viešbučių užsakymais, užsakymų pateikimu ir dar daugiau. 2018 m. viduryje suformulavome pašto kūrimo produkto strategiją. Koks turėtų būti šiuolaikinis paštas?

Paštas turi būti protingas, tai yra padėti vartotojams naršyti didėjantį informacijos kiekį: filtruoti, struktūrizuoti ir pateikti patogiausiu būdu. Ji turi būti naudinga, leidžianti spręsti įvairias užduotis tiesiai į pašto dėžutę, pavyzdžiui, sumokėti baudas (funkcija, kurią, deja, naudoju). Ir tuo pat metu, žinoma, paštas turi užtikrinti informacijos apsaugą, atkirsti spam ir apsaugoti nuo įsilaužimo, tai yra būti saugu.

Šios sritys apibrėžia daugybę pagrindinių problemų, kurių daugelį galima veiksmingai išspręsti naudojant mašininį mokymąsi. Čia pateikiami jau esamų funkcijų, sukurtų kaip strategijos dalis, pavyzdžiai – po vieną kiekvienai krypčiai.

  • Sumanus atsakymas. Paštas turi išmaniojo atsakymo funkciją. Neuroninis tinklas analizuoja laiško tekstą, supranta jo prasmę ir paskirtį, todėl pasiūlo tris tinkamiausius atsakymo variantus: teigiamą, neigiamą ir neutralų. Tai padeda ženkliai sutaupyti laiko atsakant į laiškus, taip pat dažnai atsakyti nestandartiškai ir juokingai.
  • Laiškų grupavimassusiję su užsakymais internetinėse parduotuvėse. Dažnai apsiperkame internetu, ir, kaip taisyklė, parduotuvės gali išsiųsti kelis el. Pavyzdžiui, iš didžiausios paslaugos „AliExpress“ už vieną užsakymą ateina labai daug laiškų, o mes paskaičiavome, kad terminalo korpuse jų skaičius gali siekti iki 29. Todėl naudodami Named Entity Recognition modelį išgauname užsakymo numerį. ir kitą informaciją iš teksto ir sugrupuokite visas raides į vieną giją. Taip pat atskirame langelyje rodome pagrindinę informaciją apie užsakymą, todėl lengviau dirbti su tokio tipo el.

    Mašininio mokymosi veikimas Mail.ru Mail

  • Apsauga nuo sukčiavimo. Sukčiavimas yra ypač pavojinga apgaulinga el. laiškų rūšis, kurios pagalba užpuolikai bando gauti finansinę informaciją (taip pat ir vartotojo banko korteles) ir prisijungimus. Tokie laiškai imituoja tikrus tarnybos siunčiamus laiškus, taip pat ir vizualiai. Todėl naudodamiesi „Computer Vision“ atpažįstame didelių įmonių (pavyzdžiui, Mail.ru, Sber, Alfa) logotipus ir laiškų dizaino stilių ir atsižvelgiame į tai kartu su tekstu ir kitomis funkcijomis mūsų nepageidaujamo pašto ir sukčiavimo klasifikatoriuose. .

Mašininis mokymasis

Šiek tiek apie mašininį mokymąsi el. paštu apskritai. Paštas yra labai apkrauta sistema: vidutiniškai 1,5 milijardo laiškų per dieną praeina per mūsų serverius 30 milijonų DAU vartotojų. Apie 30 mašininio mokymosi sistemų palaiko visas būtinas funkcijas ir funkcijas.

Kiekviena raidė eina per visą klasifikavimo vamzdyną. Pirmiausia nupjauname šlamštą ir paliekame gerus el. Vartotojai dažnai nepastebi antispam darbo, nes 95-99% šiukšlių net nepatenka į atitinkamą aplanką. Spam atpažinimas yra labai svarbi mūsų sistemos dalis ir pati sunkiausia, nes anti-spam srityje vyksta nuolatinis gynybos ir puolimo sistemų prisitaikymas, o tai mūsų komandai yra nuolatinis inžinerinis iššūkis.

Toliau atskiriame laiškus nuo žmonių ir robotų. El. laiškai iš žmonių yra svarbiausi, todėl jiems teikiame tokias funkcijas kaip Išmanusis atsakymas. Laiškai iš robotų skirstomi į dvi dalis: transakcinius – tai svarbūs tarnybų laiškai, pavyzdžiui, pirkinių ar viešbučių rezervacijų, finansų patvirtinimai ir informacinius – tai verslo reklama, nuolaidos.

Manome, kad el. laiškai su sandoriais yra lygiaverčiai asmeniniam susirašinėjimui. Jie turėtų būti po ranka, nes dažnai reikia greitai rasti informaciją apie užsakymą ar lėktuvo bilietų rezervaciją, o šių laiškų paieškai skiriame laiko. Todėl patogumo dėlei juos automatiškai suskirstome į šešias pagrindines kategorijas: kelionės, užsakymai, finansai, bilietai, registracija ir galiausiai baudos.

Informaciniai laiškai yra didžiausia ir tikriausiai mažiau svarbi grupė, į kurią nereikia nedelsiant atsakyti, nes nieko reikšmingo vartotojo gyvenime nepasikeis, jei jis tokio laiško neskaitys. Naujoje sąsajoje juos sutraukiame į dvi gijas: socialinius tinklus ir naujienlaiškius, taip vizualiai išvalydami gautuosius ir palikdami matomus tik svarbius pranešimus.

Mašininio mokymosi veikimas Mail.ru Mail

Išnaudojimas

Didelis sistemų skaičius sukelia daug sunkumų dirbant. Galų gale, modeliai laikui bėgant genda, kaip ir bet kuri programinė įranga: funkcijos sugenda, mašinos sugenda, kodas tampa kreivas. Be to, duomenys nuolat keičiasi: pridedami nauji, transformuojami vartotojų elgesio modeliai ir pan., todėl modelis be tinkamo palaikymo laikui bėgant veiks vis blogiau.

Turime nepamiršti, kad kuo giliau mašininis mokymasis įsiskverbia į vartotojų gyvenimą, tuo didesnį poveikį jie daro ekosistemai ir dėl to daugiau finansinių nuostolių ar pelno gali gauti rinkos dalyviai. Todėl vis daugiau sričių žaidėjai prisitaiko prie ML algoritmų darbo (klasikiniai pavyzdžiai – reklama, paieška ir jau minėtas antispam).

Taip pat mašininio mokymosi užduotys turi ypatumą: bet koks, net ir nedidelis, sistemos pakeitimas gali generuoti daug darbo su modeliu: darbas su duomenimis, perkvalifikavimas, diegimas, o tai gali užtrukti savaites ar mėnesius. Todėl kuo greičiau keičiasi aplinka, kurioje veikia jūsų modeliai, tuo daugiau pastangų reikia juos prižiūrėti. Komanda gali sukurti daugybę sistemų ir tuo džiaugtis, bet tada išleisti beveik visus savo resursus joms prižiūrėti, neturėdama galimybės daryti nieko naujo. Kartą susidūrėme su tokia situacija antispam komandoje. Ir jie padarė akivaizdžią išvadą, kad palaikymas turi būti automatizuotas.

Automatika

Kas gali būti automatizuota? Tiesą sakant, beveik viskas. Nustačiau keturias sritis, apibrėžiančias mašininio mokymosi infrastruktūrą:

  • duomenų rinkimas;
  • papildomi mokymai;
  • dislokuoti;
  • testavimas ir stebėjimas.

Jei aplinka yra nestabili ir nuolat kinta, tada visa modelį supanti infrastruktūra pasirodo daug svarbesnė už patį modelį. Tai gali būti senas geras linijinis klasifikatorius, bet jei pateiksite jam tinkamas funkcijas ir gausite gerų atsiliepimų iš vartotojų, jis veiks daug geriau nei modernūs modeliai su visais varpais ir švilpukais.

Atsiliepimų kilpa

Šis ciklas apjungia duomenų rinkimą, papildomą mokymą ir diegimą – iš tikrųjų visą modelio atnaujinimo ciklą. Kodėl tai svarbu? Registracijos tvarkaraštį žiūrėkite paštu:

Mašininio mokymosi veikimas Mail.ru Mail

Mašininio mokymosi kūrėjas įdiegė anti-bot modelį, kuris neleidžia robotams registruotis el. Diagrama nukrenta iki vertės, kurioje lieka tik tikri vartotojai. Viskas puiku! Tačiau praeina keturios valandos, robotai pakoreguoja savo scenarijus ir viskas grįžta į įprastas vėžes. Vykdydamas šį diegimą, kūrėjas praleido mėnesį, pridėdamas funkcijų ir perkvalifikuodamas modelį, tačiau nepageidaujamo pašto siuntėjas sugebėjo prisitaikyti per keturias valandas.

Kad nebūtų taip be galo skausminga ir vėliau nereikėtų visko daryti iš naujo, iš pradžių turime pagalvoti, kaip atrodys grįžtamojo ryšio ciklas ir ką darysime pasikeitus aplinkai. Pradėkime nuo duomenų rinkimo – tai yra mūsų algoritmų kuras.

Duomenų rinkimas

Akivaizdu, kad šiuolaikiniams neuroniniams tinklams kuo daugiau duomenų, tuo geriau, o juos iš tikrųjų generuoja produkto vartotojai. Vartotojai gali mums padėti pažymėdami duomenis, tačiau mes negalime tuo piktnaudžiauti, nes tam tikru momentu vartotojai pavargs pildydami jūsų modelius ir pereis prie kito produkto.

Viena iš dažniausiai pasitaikančių klaidų (čia turiu nuorodą į Andrew Ng) yra per didelis dėmesys bandymo duomenų rinkinio metrikai, o ne vartotojo atsiliepimui, kuris iš tikrųjų yra pagrindinis darbo kokybės matas, nes mes kuriame vartotojui skirtas produktas. Jei vartotojas nesupranta arba jam nepatinka modelio darbas, tada viskas sugadinta.

Todėl vartotojas visada turėtų turėti galimybę balsuoti ir turėti grįžtamojo ryšio priemonę. Jeigu manome, kad į pašto dėžutę atkeliavo su finansais susijęs laiškas, reikia pažymėti jį „finansai“ ir nupiešti mygtuką, kurį paspaudęs vartotojas gali pasakyti, kad tai ne finansai.

Atsiliepimų kokybė

Pakalbėkime apie vartotojų atsiliepimų kokybę. Pirma, jūs ir vartotojas vienoje sąvokoje galite pateikti skirtingas reikšmes. Pavyzdžiui, jūs ir jūsų produktų vadovai mano, kad „finansai“ reiškia laiškus iš banko, o vartotojas mano, kad močiutės laiškas apie jos pensiją taip pat susijęs su finansais. Antra, yra vartotojų, kurie be proto mėgsta spausti mygtukus be jokios logikos. Trečia, vartotojas gali labai klysti savo išvadose. Ryškus pavyzdys iš mūsų praktikos yra klasifikatoriaus įdiegimas Nigerijos šlamštas, labai juokingas šlamšto tipas, kai vartotojo prašoma paimti kelis milijonus dolerių iš staiga rasto tolimo giminaičio Afrikoje. Įdiegę šį klasifikatorių, patikrinome šių el. laiškų paspaudimus „Ne šlamštas“ ir paaiškėjo, kad 80% jų buvo sultingas Nigerijos šlamštas, o tai rodo, kad vartotojai gali būti itin patiklūs.

Ir nepamirškime, kad mygtukus gali spustelėti ne tik žmonės, bet ir visokie botai, kurie apsimetinėja naršykle. Taigi neapdoroti atsiliepimai nėra naudingi mokymuisi. Ką galite padaryti su šia informacija?

Mes naudojame du būdus:

  • Atsiliepimai iš susietos ML. Pavyzdžiui, turime internetinę anti-bot sistemą, kuri, kaip minėjau, greitai priima sprendimą pagal ribotą skaičių ženklų. Ir yra antra, lėta sistema, kuri veikia po fakto. Jame yra daugiau duomenų apie vartotoją, jo elgesį ir pan. Dėl to priimamas labiausiai pagrįstas sprendimas, todėl jis turi didesnį tikslumą ir išsamumą. Šių sistemų veikimo skirtumus galite nukreipti į pirmąją kaip mokymo duomenis. Taigi paprastesnė sistema visada stengsis priartėti prie sudėtingesnės sistemos veikimo.
  • Spustelėkite klasifikaciją. Galite tiesiog klasifikuoti kiekvieną vartotojo paspaudimą, įvertinti jo pagrįstumą ir tinkamumą naudoti. Tai darome antispam paštu, naudodami vartotojo atributus, jo istoriją, siuntėjo atributus, patį tekstą ir klasifikatorių rezultatą. Dėl to gauname automatinę sistemą, kuri patvirtina vartotojų atsiliepimus. Ir kadangi jį reikia perkvalifikuoti daug rečiau, jo darbas gali tapti visų kitų sistemų pagrindu. Pagrindinis šio modelio prioritetas yra tikslumas, nes modelio mokymas naudojant netikslius duomenis yra kupinas pasekmių.

Kol valome duomenis ir toliau mokome savo ML sistemas, turime nepamiršti ir vartotojų, nes mums tūkstančiai, milijonai klaidų grafike yra statistika, o vartotojui kiekviena klaida – tragedija. Be to, kad vartotojas turi kažkaip gyventi su jūsų klaida gaminyje, gavęs atsiliepimą, jis tikisi, kad panaši situacija ateityje bus pašalinta. Todėl visada verta suteikti vartotojams ne tik galimybę balsuoti, bet ir pakoreguoti ML sistemų elgseną, sukuriant, pavyzdžiui, asmeninę euristiką kiekvienam grįžtamojo ryšio paspaudimui, pašto atveju tai galėtų būti galimybė filtruoti. tokius laiškus pagal siuntėją ir šio vartotojo pavadinimą.

Taip pat turite sukurti modelį, pagrįstą kai kuriomis ataskaitomis ar užklausomis palaikyti pusiau automatiniu arba rankiniu režimu, kad kiti vartotojai nepatirtų panašių problemų.

Euristika mokymuisi

Su šia euristika ir ramentais yra dvi problemos. Pirmoji yra ta, kad nuolat didėjantį ramentų skaičių sunku prižiūrėti, jau nekalbant apie jų kokybę ir ilgaamžiškumą. Antra problema yra ta, kad klaida gali būti nedažna, o kelių paspaudimų modeliui toliau mokyti nepakaks. Atrodytų, kad šie du nesusiję poveikiai gali būti žymiai neutralizuoti, jei taikomas toks metodas.

  1. Sukuriame laikiną ramentą.
  2. Mes siunčiame duomenis iš jo į modelį, jis reguliariai atnaujina save, įskaitant gautus duomenis. Čia, žinoma, svarbu, kad euristika būtų labai tiksli, kad nesumažėtų mokymo rinkinio duomenų kokybė.
  3. Tada nustatome stebėjimą, kad suveiktų ramentas, o jei po kurio laiko ramentas nebeveikia ir yra visiškai padengtas modeliu, galite jį saugiai išimti. Dabar ši problema greičiausiai nepasikartos.

Taigi ramentų armija yra labai naudinga. Svarbiausia, kad jų paslauga būtų skubi, o ne nuolatinė.

Papildomas mokymas

Perkvalifikavimas – tai naujų duomenų, gautų iš vartotojų ar kitų sistemų grįžtamojo ryšio, pridėjimo ir esamo modelio apmokymas. Dėl papildomo mokymo gali kilti keletas problemų:

  1. Modelis gali tiesiog nepalaikyti papildomo mokymo, o mokytis tik nuo nulio.
  2. Niekur gamtos knygoje neparašyta, kad papildomi mokymai tikrai pagerins darbo kokybę gamyboje. Dažnai atsitinka priešingai, tai yra, galimas tik pablogėjimas.
  3. Pokyčiai gali būti nenuspėjami. Tai gana subtilus dalykas, kurį mes patys nustatėme. Net jei naujas modelis A/B teste rodo panašius rezultatus, palyginti su dabartiniu, tai nereiškia, kad jis veiks identiškai. Jų darbas gali skirtis vos vienu procentu, o tai gali atnešti naujų klaidų arba grąžinti senas, jau ištaisytas. Tiek mes, tiek vartotojai jau žinome, kaip gyventi su esamomis klaidomis, o atsiradus daugybei naujų klaidų vartotojas taip pat gali nesuprasti, kas vyksta, nes tikisi nuspėjamo elgesio.

Todėl papildomose treniruotėse svarbiausia užtikrinti, kad modelis būtų patobulintas arba bent jau nepablogintas.

Pirmas dalykas, kuris ateina į galvą, kai kalbame apie papildomą mokymą, yra aktyvaus mokymosi metodas. Ką tai reiškia? Pavyzdžiui, klasifikatorius nustato, ar el. laiškas yra susijęs su finansais, ir šalia jo sprendimo ribos pridedame pažymėtų pavyzdžių pavyzdį. Tai puikiai veikia, pavyzdžiui, reklamoje, kur yra daug atsiliepimų ir galite apmokyti modelį internetu. O jei grįžtamojo ryšio yra mažai, gauname labai šališką pavyzdį, palyginti su gamybos duomenų pasiskirstymu, pagal kurį neįmanoma įvertinti modelio elgsenos veikimo metu.

Mašininio mokymosi veikimas Mail.ru Mail

Tiesą sakant, mūsų tikslas yra išsaugoti senus modelius, jau žinomus modelius ir įsigyti naujų. Čia svarbus tęstinumas. Modelis, kurį dažnai labai stengdavomės išleisti, jau veikia, todėl galime sutelkti dėmesį į jo veikimą.

Pašte naudojami įvairūs modeliai: medžiai, linijiniai, neuroniniai tinklai. Kiekvienam sudarome savo papildomą mokymo algoritmą. Papildomų mokymų metu gauname ne tik naujų duomenų, bet dažnai ir naujų funkcijų, į kurias atsižvelgsime visuose žemiau pateiktuose algoritmuose.

Linijiniai modeliai

Tarkime, kad turime logistinę regresiją. Mes sukuriame nuostolių modelį iš šių komponentų:

  • LogLoss dėl naujų duomenų;
  • sureguliuojame naujų funkcijų svorius (senųjų neliečiame);
  • taip pat mokomės iš senų duomenų, kad išsaugotume senus modelius;
  • ir, ko gero, svarbiausias dalykas: pridedame Harmoninį reguliavimą, kuris garantuoja, kad svoriai labai nesikeis, palyginti su senuoju modeliu pagal normą.

Kadangi kiekvienas nuostolių komponentas turi koeficientus, mes galime pasirinkti optimalias mūsų užduoties vertes kryžminio patvirtinimo būdu arba pagal produkto reikalavimus.

Mašininio mokymosi veikimas Mail.ru Mail

Деревья

Pereikime prie sprendimų medžių. Mes sudarėme šį algoritmą papildomam medžių mokymui:

  1. Gamyba valdo 100-300 medžių mišką, kuris yra apmokytas pagal seną duomenų rinkinį.
  2. Pabaigoje pašaliname M = 5 vienetus ir pridedame 2M = 10 naujų, apmokytų visame duomenų rinkinyje, tačiau su dideliu naujų duomenų svoriu, o tai natūraliai garantuoja laipsnišką modelio pakeitimą.

Akivaizdu, kad laikui bėgant medžių skaičius labai padidėja, todėl, kad būtų laikomasi laiko, jie turi būti periodiškai mažinami. Norėdami tai padaryti, naudojame dabar visur paplitusią žinių distiliavimą (KD). Trumpai apie jo veikimo principą.

  1. Turime dabartinį „sudėtinį“ modelį. Paleidžiame jį mokymo duomenų rinkinyje ir išvestyje gauname klasės tikimybių pasiskirstymą.
  2. Toliau mokome studento modelį (šiuo atveju modelį su mažiau medžių) pakartoti modelio rezultatus naudodami klasės pasiskirstymą kaip tikslinį kintamąjį.
  3. Čia svarbu pažymėti, kad mes jokiu būdu nenaudojame duomenų rinkinio žymėjimo, todėl galime naudoti savavališkus duomenis. Žinoma, kaip mokinio modelio mokymo pavyzdį naudojame kovos srauto duomenų pavyzdį. Taigi mokymo rinkinys leidžia užtikrinti modelio tikslumą, o srauto pavyzdys garantuoja panašų produkcijos paskirstymo našumą, kompensuodamas mokymo rinkinio šališkumą.

Mašininio mokymosi veikimas Mail.ru Mail

Šių dviejų metodų derinys (medžių pridėjimas ir periodinis jų skaičiaus mažinimas naudojant žinių distiliavimą) užtikrina naujų modelių įvedimą ir visišką tęstinumą.

KD pagalba taip pat atliekame įvairias operacijas su modelio ypatybėmis, pavyzdžiui, pašaliname ypatybes ir apdorojame spragas. Mūsų atveju turime keletą svarbių statistinių ypatybių (pagal siuntėjus, teksto maišą, URL ir kt.), kurios yra saugomos duomenų bazėje, kurios dažniausiai sugenda. Žinoma, modelis nėra paruoštas tokiai įvykių raidai, nes treniruočių rinkinyje nesėkmių situacijų nebūna. Tokiais atvejais deriname KD ir papildymo būdus: mokydami dalį duomenų pašaliname arba iš naujo nustatome reikiamas funkcijas ir paimame originalias etiketes (dabartinio modelio išvestis), o studento modelis išmoksta pakartoti šį paskirstymą. .

Mašininio mokymosi veikimas Mail.ru Mail

Pastebėjome, kad kuo rimtesnis modelio manipuliavimas vyksta, tuo didesnis reikiamas siūlų mėginio procentas.

Funkcijų pašalinimas, paprasčiausia operacija, reikalauja tik nedidelės srauto dalies, nes keičiasi tik pora funkcijų, o dabartinis modelis buvo apmokytas tame pačiame rinkinyje – skirtumas minimalus. Norint supaprastinti modelį (keletą kartų sumažinti medžių skaičių), jau reikia nuo 50 iki 50. O dėl svarbių statistinių savybių, kurios labai paveiks modelio veikimą, praleidimas, reikalingas dar didesnis srautas, kad būtų išlygintas medžių darbas. naujas nepraleidžiantis modelis ant visų tipų raidžių.

Mašininio mokymosi veikimas Mail.ru Mail

Greitasis tekstas

Pereikime prie „FastText“. Priminsiu, kad žodžio atvaizdavimas (įdėjimas) susideda iš paties žodžio ir visų jo raidžių N-gramų, dažniausiai trigramų, įterpimo sumos. Kadangi trigramų gali būti gana daug, naudojamas Bucket Hashing, ty visos erdvės konvertavimas į tam tikrą fiksuotą maišos žemėlapį. Dėl to svorio matrica gaunama su vidinio sluoksnio matmeniu žodžių skaičiui + kibirai.

Papildomai treniruojant atsiranda naujų ženklų: žodžių ir trigramų. Nieko reikšmingo neįvyksta standartiniuose tolesniuose „Facebook“ mokymuose. Tik seni svoriai su kryžmine entropija yra perkvalifikuojami pagal naujus duomenis. Taigi naujos funkcijos nenaudojamos, be abejo, šis metodas turi visus aukščiau aprašytus trūkumus, susijusius su modelio nenuspėjamumu gamyboje. Štai kodėl mes šiek tiek pakeitėme FastText. Pridedame visus naujus svorius (žodžius ir trigramas), išplečiame visą matricą kryžmine entropija ir pridedame harmoninį reguliavimą pagal analogiją su tiesiniu modeliu, kuris garantuoja nežymų senųjų svorių pokytį.

Mašininio mokymosi veikimas Mail.ru Mail

CNN

Konvoliuciniai tinklai yra šiek tiek sudėtingesni. Jei paskutiniai sluoksniai yra treniruojami CNN, tada, žinoma, galite taikyti harmoninį reguliavimą ir garantuoti tęstinumą. Bet jei reikalingas papildomas viso tinklo apmokymas, toks reguliavimas nebegali būti taikomas visiems sluoksniams. Tačiau yra galimybė mokyti papildomus įterpimus naudojant Triplet Loss (originalus straipsnis).

Trigubas praradimas

Kaip pavyzdį naudodami kovos su sukčiavimu užduotį, pažvelkime į Triplet Loss bendrai. Mes naudojame savo logotipą, taip pat teigiamus ir neigiamus kitų įmonių logotipų pavyzdžius. Mes sumažiname atstumą tarp pirmosios ir maksimaliai padidiname atstumą tarp antrojo, tai darome su nedideliu tarpu, kad užtikrintume didesnį klasių kompaktiškumą.

Mašininio mokymosi veikimas Mail.ru Mail

Jei mes toliau mokome tinklą, tada mūsų metrinė erdvė visiškai pasikeičia ir tampa visiškai nesuderinama su ankstesne. Tai rimta problema, susijusi su problemomis, kuriose naudojami vektoriai. Norėdami išspręsti šią problemą, treniruočių metu sumaišysime senus įterpimus.

Į mokymo rinkinį įtraukėme naujų duomenų ir treniruojame antrąją modelio versiją nuo nulio. Antrame etape mes toliau treniruojame savo tinklą (Finetuning): pirmiausia baigiamas paskutinis sluoksnis, o tada visas tinklas atjungiamas. Kurdami tripletus, mes apskaičiuojame tik dalį įterpimų naudodami išmokytą modelį, likusius - naudodami seną. Taigi papildomo mokymo procese užtikriname metrinių erdvių v1 ir v2 suderinamumą. Unikali harmoninio reguliavimo versija.

Mašininio mokymosi veikimas Mail.ru Mail

Visa architektūra

Jei pavyzdžiu laikysime visą sistemą naudojant antispam, tai modeliai nėra izoliuoti, o sudėti vienas į kitą. Darome nuotraukas, tekstą ir kitas funkcijas, naudodamiesi CNN ir Fast Text gauname įterpimus. Toliau ant įterpimų taikomi klasifikatoriai, kurie suteikia įvairių klasių balus (laiškų tipai, šlamštas, logotipo buvimas). Signalai ir ženklai jau veržiasi į medžių mišką, kad būtų priimtas galutinis sprendimas. Atskiri klasifikatoriai šioje schemoje leidžia geriau interpretuoti sistemos rezultatus ir konkrečiau perkvalifikuoti komponentus iškilus problemoms, o ne įvesti visus duomenis į sprendimų medžius neapdorota forma.

Mašininio mokymosi veikimas Mail.ru Mail

Dėl to mes garantuojame tęstinumą visais lygmenimis. Apatiniame CNN ir Fast Text lygyje naudojame harmoninį reguliavimą, viduriniuose klasifikatoriuose taip pat naudojame harmoninį reguliavimą ir greičio kalibravimą, kad tikimybių pasiskirstymas būtų nuoseklus. Na, medžių auginimas mokomas palaipsniui arba naudojant žinių distiliavimą.

Apskritai išlaikyti tokią įdėtą mašininio mokymosi sistemą paprastai yra sunku, nes bet kuris žemesnio lygio komponentas atnaujina visą aukščiau esančią sistemą. Bet kadangi mūsų sąrankoje kiekvienas komponentas šiek tiek keičiasi ir yra suderinamas su ankstesniu, visa sistema gali būti atnaujinama po gabalo, nereikia perkvalifikuoti visos struktūros, o tai leidžia ją palaikyti be didelių papildomų išlaidų.

Dislokuoti

Aptarėme duomenų rinkimą ir papildomą įvairių tipų modelių mokymą, todėl pereiname prie jų diegimo gamybos aplinkoje.

A/B testavimas

Kaip jau sakiau anksčiau, renkant duomenis dažniausiai gauname šališką imtį, iš kurios neįmanoma įvertinti modelio gamybos našumo. Todėl diegiant modelį reikia palyginti su ankstesne versija, kad būtų galima suprasti, kaip viskas vyksta iš tikrųjų, ty atlikti A/B testus. Tiesą sakant, diagramų kūrimo ir analizės procesas yra gana įprastas ir gali būti lengvai automatizuotas. Palaipsniui pristatome savo modelius 5%, 30%, 50% ir 100% naudotojų, kartu renkame visą turimą modelio atsakymų ir naudotojų atsiliepimų metriką. Esant kai kuriems rimtiems nuokrypiams, modelį automatiškai atšaukiame, o kitais atvejais, surinkę pakankamą vartotojų paspaudimų skaičių, nusprendžiame procentą padidinti. Dėl to naująjį modelį 50% vartotojų pateikiame visiškai automatiškai, o išleidimą visai auditorijai patvirtins asmuo, nors šis veiksmas gali būti automatizuotas.

Tačiau A/B testavimo procesą galima optimizuoti. Faktas yra tas, kad bet koks A/B testas yra gana ilgas (mūsų atveju tai trunka nuo 6 iki 24 valandų, priklausomai nuo atsiliepimų kiekio), todėl jis yra gana brangus ir su ribotais ištekliais. Be to, norint iš esmės pagreitinti bendrą A/B testo laiką, reikalingas pakankamai didelis srauto procentas bandymui (statistiškai reikšmingos imties surinkimas, kad būtų galima įvertinti mažą procentinę metriką, gali užtrukti labai ilgai), todėl A/B laiko tarpsnių skaičius itin ribotas. Akivaizdu, kad reikia išbandyti tik pačius perspektyviausius modelius, kurių gana daug gauname papildomo mokymo proceso metu.

Norėdami išspręsti šią problemą, parengėme atskirą klasifikatorių, numatantį A/B testo sėkmę. Norėdami tai padaryti, kaip funkcijas laikome sprendimų priėmimo statistiką, tikslumą, atšaukimą ir kitas mokymo rinkinio, atidėto ir srauto pavyzdžio metrikas. Taip pat palyginame modelį su esamu gamyboje, su euristika ir atsižvelgiame į modelio sudėtingumą. Naudodamas visas šias savybes, testavimo istorijos išmokytas klasifikatorius įvertina kandidatų modelius, mūsų atveju tai yra medžių miškai, ir nusprendžia, kurį iš jų naudoti A/B teste.

Mašininio mokymosi veikimas Mail.ru Mail

Diegimo metu šis metodas leido kelis kartus padidinti sėkmingų A/B testų skaičių.

Testavimas ir stebėjimas

Testavimas ir stebėjimas, kaip bebūtų keista, nekenkia mūsų sveikatai, o priešingai – ją pagerina ir išlaisvina nuo nereikalingo streso. Testavimas leidžia išvengti gedimo, o stebėjimas leidžia jį laiku aptikti, kad būtų sumažintas poveikis vartotojams.

Čia svarbu suprasti, kad anksčiau ar vėliau jūsų sistema visada padarys klaidų – taip yra dėl bet kokios programinės įrangos kūrimo ciklo. Sistemos kūrimo pradžioje visada būna daug klaidų, kol viskas susitvarko ir baigiamas pagrindinis inovacijų etapas. Tačiau laikui bėgant entropija daro savo, ir vėl atsiranda klaidų – dėl aplinkinių komponentų degradacijos ir duomenų pasikeitimų, apie kuriuos kalbėjau pradžioje.

Čia norėčiau pažymėti, kad bet kokia mašininio mokymosi sistema turėtų būti vertinama iš jos pelno per visą jos gyvavimo ciklą. Toliau pateiktoje diagramoje parodytas pavyzdys, kaip sistema veikia, kad sugautų retą šlamšto tipą (linija diagramoje yra arti nulio). Vieną dieną dėl neteisingai talpykloje įrašyto atributo ji išprotėjo. Pasisekė, nebuvo stebimas nenormalus paleidimas; dėl to sistema pradėjo saugoti didelius kiekius laiškų į „spam“ aplanką prie sprendimų priėmimo ribos. Nepaisant pasekmių ištaisymo, sistema jau tiek kartų padarė klaidų, kad neatsipirks net per penkerius metus. Ir tai yra visiška nesėkmė modelio gyvavimo ciklo požiūriu.

Mašininio mokymosi veikimas Mail.ru Mail

Todėl toks paprastas dalykas kaip stebėjimas gali tapti pagrindiniu modelio gyvenime. Be standartinių ir akivaizdžių metrikų, mes atsižvelgiame į modelio atsakymų ir balų pasiskirstymą, taip pat į pagrindinių funkcijų reikšmių pasiskirstymą. Naudodamiesi KL divergencija, galime palyginti dabartinį pasiskirstymą su istoriniu arba A/B testo reikšmes su likusia srauto dalimi, o tai leidžia pastebėti modelio anomalijas ir laiku atšaukti pakeitimus.

Daugeliu atvejų paleidžiame pirmąsias sistemų versijas naudodami paprastą euristiką arba modelius, kuriuos ateityje naudosime kaip stebėjimą. Pavyzdžiui, mes stebime NER modelį, palyginti su įprastais konkrečioms internetinėms parduotuvėms, ir jei klasifikatoriaus aprėptis, palyginti su jomis, krenta, tada suprantame priežastis. Dar vienas naudingas euristikos panaudojimas!

rezultatai

Dar kartą peržvelkime pagrindines straipsnio idėjas.

  • Fibdeck. Visada galvojame apie vartotoją: kaip jis gyvens su mūsų klaidomis, kaip galės apie jas pranešti. Nepamirškite, kad vartotojai nėra gryno grįžtamojo ryšio apie mokymo modelius šaltinis, o juos reikia išvalyti naudojant pagalbines ML sistemas. Jei nepavyksta surinkti signalo iš vartotojo, ieškome alternatyvių grįžtamojo ryšio šaltinių, pavyzdžiui, prijungtų sistemų.
  • Papildomas mokymas. Svarbiausia čia yra tęstinumas, todėl remiamės dabartiniu gamybos modeliu. Naujus modelius apmokome taip, kad dėl harmoninio reguliavimo ir panašių gudrybių jie labai nesiskirtų nuo ankstesnio.
  • Dislokuoti. Automatinis diegimas, pagrįstas metrika, labai sumažina modelių diegimo laiką. Statistikos stebėjimas ir sprendimų priėmimo paskirstymas, naudotojų kritimų skaičius yra privalomas jūsų ramiam miegui ir produktyviam savaitgaliui.

Na, tikiuosi, kad tai padės greičiau patobulinti ML sistemas, greičiau jas pateikti rinkai ir padaryti jas patikimesnes bei mažiau įtemptus.

Šaltinis: www.habr.com

Добавить комментарий