Rad strojnog učenja u Mail.ru Mail

Rad strojnog učenja u Mail.ru Mail

Na temelju mojih govora na Highload++ i DataFest Minsk 2019.

Danas je za mnoge pošta sastavni dio online života. Uz njegovu pomoć vodimo poslovnu korespondenciju, pohranjujemo sve vrste važnih informacija vezanih uz financije, rezervacije hotela, narudžbe i još mnogo toga. Sredinom 2018. formulirali smo strategiju proizvoda za razvoj pošte. Kakva bi trebala biti moderna pošta?

Pošta mora biti pametan, odnosno pomaže korisnicima da se snađu u sve većoj količini informacija: filtriraju, strukturiraju i daju ih na najprikladniji način. Mora biti koristan, što vam omogućuje rješavanje raznih zadataka izravno u vašem poštanskom sandučiću, na primjer, plaćanje kazni (funkcija koju, nažalost, koristim). I u isto vrijeme, naravno, pošta mora pružati zaštitu informacija, odsijecanje spama i zaštitu od hakiranja, tj. sef.

Ova područja definiraju niz ključnih problema od kojih se mnogi mogu učinkovito riješiti uporabom strojnog učenja. Evo primjera već postojećih značajki razvijenih kao dio strategije - jedna za svaki smjer.

  • Pametan odgovor. Mail ima značajku pametnog odgovora. Neuronska mreža analizira tekst pisma, razumije njegovo značenje i svrhu, te kao rezultat nudi tri najprikladnije opcije odgovora: pozitivan, negativan i neutralan. To pomaže značajno uštedjeti vrijeme prilikom odgovaranja na pisma, a također često odgovara na nestandardan i smiješan način.
  • Grupiranje e-poštevezano za narudžbe u online trgovinama. Često kupujemo online, a trgovine u pravilu mogu poslati nekoliko e-poruka za svaku narudžbu. Primjerice, s AliExpressa, najvećeg servisa, dolazi puno pisama za jednu narudžbu, a mi smo izračunali da bi u terminalnom kućištu njihov broj mogao doseći i do 29. Stoga modelom Named Entity Recognition izvlačimo broj narudžbe i druge informacije iz teksta i grupirati sva slova u jednu nit. Osnovne informacije o narudžbi također prikazujemo u zasebnom okviru, što olakšava rad s ovom vrstom e-pošte.

    Rad strojnog učenja u Mail.ru Mail

  • Antiphishing. Phishing je posebno opasna prijevarna vrsta e-pošte, uz pomoć koje napadači pokušavaju doći do financijskih podataka (uključujući bankovne kartice korisnika) i prijava. Takva pisma oponašaju stvarna pisma koja šalje usluga, uključujući i vizualno. Stoga, uz pomoć računalnog vida, prepoznajemo logotipe i stil dizajna pisama velikih tvrtki (na primjer, Mail.ru, Sber, Alfa) i uzimamo to u obzir zajedno s tekstom i drugim značajkama u našim klasifikatorima neželjene pošte i krađe identiteta .

Strojno učenje

Općenito malo o strojnom učenju u e-pošti. Mail je visoko opterećen sustav: prosječno 1,5 milijardi pisama dnevno prođe kroz naše poslužitelje za 30 milijuna DAU korisnika. Oko 30 sustava strojnog učenja podržava sve potrebne funkcije i značajke.

Svako slovo prolazi kroz cijeli cjevovod klasifikacije. Prvo uklanjamo neželjenu poštu i ostavljamo dobre e-poruke. Korisnici često ne primjećuju rad antispama, jer 95-99% spama niti ne završi u odgovarajućoj mapi. Prepoznavanje neželjene pošte vrlo je važan dio našeg sustava, ali i najteži, budući da u području zaštite od neželjene pošte postoji stalna prilagodba između obrambenih i napadačkih sustava, što predstavlja stalni inženjerski izazov za naš tim.

Zatim odvajamo slova od ljudi i robota. E-pošta od ljudi je najvažnija, stoga za njih nudimo značajke poput pametnog odgovora. Pisma robota dijele se na dva dijela: transakcijska - to su važna pisma usluga, na primjer, potvrde kupnje ili rezervacije hotela, financije i informativna - to su poslovno oglašavanje, popusti.

Vjerujemo da su transakcijske e-poruke po važnosti jednake osobnoj korespondenciji. Trebali bi nam biti pri ruci, jer često trebamo brzo pronaći informacije o narudžbi ili rezervaciji avio karte, a trošimo vrijeme tražeći ta slova. Stoga ih radi praktičnosti automatski dijelimo u šest glavnih kategorija: putovanja, narudžbe, financije, karte, registracije i, konačno, kazne.

Informativna pisma su najveća i vjerojatno manje važna skupina, koja ne zahtijevaju trenutni odgovor, jer se ništa značajno neće promijeniti u životu korisnika ako takvo pismo ne pročita. U našem novom sučelju sažimamo ih u dvije niti: društvene mreže i biltene, čime vizualno čistimo pristiglu poštu i ostavljamo vidljivima samo važne poruke.

Rad strojnog učenja u Mail.ru Mail

Eksploatacija

Veliki broj sustava uzrokuje dosta poteškoća u radu. Naposljetku, modeli se s vremenom degradiraju, kao i svaki softver: značajke se kvare, strojevi kvare, kod postaje kriv. Osim toga, podaci se stalno mijenjaju: dodaju se novi, transformiraju obrasci ponašanja korisnika itd., pa će model bez odgovarajuće podrške s vremenom raditi sve lošije.

Ne smijemo zaboraviti da što dublje strojno učenje prodire u živote korisnika, to veći utjecaj ima na ekosustav i, kao rezultat toga, tržišni igrači mogu dobiti više financijskih gubitaka ili profita. Stoga se u sve većem broju područja igrači prilagođavaju radu ML algoritama (klasični primjeri su oglašavanje, pretraživanje i već spomenuti antispam).

Također, zadaci strojnog učenja imaju posebnost: svaka, čak i manja, promjena u sustavu može generirati puno posla s modelom: rad s podacima, ponovna obuka, implementacija, što može potrajati tjednima ili mjesecima. Stoga, što se brže mijenja okruženje u kojem vaši modeli rade, to više truda zahtijeva njihovo održavanje. Tim može stvoriti mnogo sustava i biti sretan zbog toga, ali onda potrošiti gotovo sve svoje resurse na njihovo održavanje, bez mogućnosti da učini nešto novo. Jednom smo se susreli s takvom situacijom u antispam timu. I došli su do očitog zaključka da podršku treba automatizirati.

Automatizacija

Što se može automatizirati? Gotovo sve, zapravo. Identificirao sam četiri područja koja definiraju infrastrukturu strojnog učenja:

  • prikupljanje podataka;
  • dodatni trening;
  • rasporediti;
  • testiranje i praćenje.

Ako je okruženje nestabilno i stalno se mijenja, tada se cjelokupna infrastruktura oko modela pokazuje puno važnijom od samog modela. Možda je to dobri stari linearni klasifikator, ali ako mu date prave značajke i dobijete dobre povratne informacije od korisnika, radit će mnogo bolje od najsuvremenijih modela sa svim karakteristikama.

Povratna veza

Ovaj ciklus kombinira prikupljanje podataka, dodatnu obuku i implementaciju – zapravo, cijeli ciklus ažuriranja modela. Zašto je to važno? Raspored prijava pogledajte u mailu:

Rad strojnog učenja u Mail.ru Mail

Programer strojnog učenja implementirao je anti-bot model koji sprječava botove da se registriraju u e-pošti. Grafikon pada na vrijednost u kojoj ostaju samo pravi korisnici. Sve je odlično! Ali prođu četiri sata, botovi dotjeraju svoje skripte i sve se vrati u normalu. U ovoj implementaciji, programer je proveo mjesec dana dodajući značajke i ponovno obučavajući model, ali spamer se uspio prilagoditi za četiri sata.

Kako ne bi bilo tako nesnosno bolno i kako kasnije ne bismo morali sve ponavljati, prvo moramo razmisliti o tome kako će izgledati povratna sprega i što ćemo učiniti ako se okolina promijeni. Počnimo s prikupljanjem podataka - to je gorivo za naše algoritme.

Prikupljanje podataka

Jasno je da za suvremene neuronske mreže vrijedi što više podataka, to bolje, a njih zapravo generiraju korisnici proizvoda. Korisnici nam mogu pomoći označavanjem podataka, ali to ne možemo zloupotrijebiti jer će se u jednom trenutku korisnici umoriti od dovršavanja vaših modela i prijeći će na drugi proizvod.

Jedna od najčešćih pogrešaka (ovdje se referiram na Andrewa Nga) je prevelik fokus na metriku na skupu testnih podataka, a ne na povratnu informaciju od korisnika, što je zapravo glavno mjerilo kvalitete rada, budući da stvaramo proizvod za korisnika. Ako korisnik ne razumije ili mu se ne sviđa rad modela, onda je sve uništeno.

Stoga bi korisnik uvijek trebao moći glasovati i trebao bi dobiti alat za povratne informacije. Ako mislimo da je u poštanski sandučić stiglo pismo vezano uz financije, potrebno ga je označiti “financije” i nacrtati gumb na koji korisnik može kliknuti i reći da se ne radi o financijama.

Kvaliteta povratnih informacija

Razgovarajmo o kvaliteti povratnih informacija korisnika. Prvo, vi i korisnik možete staviti različita značenja u jedan koncept. Na primjer, vi i vaši voditelji proizvoda mislite da "financije" znače pisma banke, a korisnik misli da se pismo od bake o njezinoj mirovini također odnosi na financije. Drugo, postoje korisnici koji bezumno vole pritiskati gumbe bez ikakve logike. Treće, korisnik može duboko pogriješiti u svojim zaključcima. Upečatljiv primjer iz naše prakse je implementacija klasifikatora Nigerijski spam, vrlo smiješna vrsta spama gdje se od korisnika traži da uzme nekoliko milijuna dolara od iznenada pronađenog daljeg rođaka u Africi. Nakon implementacije ovog klasifikatora, provjerili smo klikove "Nije neželjena pošta" na te e-poruke i pokazalo se da je 80% njih sočna nigerijska neželjena pošta, što sugerira da korisnici mogu biti iznimno lakovjerni.

I nemojmo zaboraviti da gumbe mogu kliknuti ne samo ljudi, već i sve vrste robota koji se pretvaraju da su preglednici. Dakle, sirove povratne informacije nisu dobre za učenje. Što možete učiniti s ovim informacijama?

Koristimo dva pristupa:

  • Povratne informacije iz povezanog ML-a. Na primjer, imamo online anti-bot sustav, koji, kao što sam spomenuo, donosi brzu odluku na temelju ograničenog broja znakova. A postoji i drugi, spori sustav koji radi naknadno. Ima više podataka o korisniku, njegovom ponašanju itd. Kao rezultat toga, donosi se najinformiranija odluka, stoga ima veću točnost i cjelovitost. Razliku u radu ovih sustava možete usmjeriti na prvi kao podatke za obuku. Tako će se jednostavniji sustav uvijek pokušati približiti performansama složenijeg.
  • Kliknite klasifikaciju. Možete jednostavno klasificirati svaki korisnički klik, procijeniti njegovu valjanost i upotrebljivost. To radimo u antispam pošti, koristeći korisničke atribute, njegovu povijest, atribute pošiljatelja, sam tekst i rezultat klasifikatora. Kao rezultat toga, dobivamo automatski sustav koji potvrđuje povratne informacije korisnika. A budući da se mnogo rjeđe mora prekvalificirati, njegov rad može postati temelj za sve ostale sustave. Glavni prioritet u ovom modelu je preciznost, jer treniranje modela na netočnim podacima prepuno je posljedica.

Dok čistimo podatke i usavršavamo naše ML sustave, ne smijemo zaboraviti na korisnike jer za nas su tisuće, milijuni grešaka na grafu statistika, a za korisnika je svaki bug tragedija. Osim što korisnik mora na neki način živjeti s vašom greškom u proizvodu, nakon što dobije povratnu informaciju, očekuje da će se slična situacija otkloniti u budućnosti. Stoga se uvijek isplati korisnicima dati ne samo priliku da glasaju, već i da isprave ponašanje ML sustava, stvarajući, na primjer, osobnu heuristiku za svaki klik povratne informacije; u slučaju pošte, to bi mogla biti mogućnost filtriranja takva pisma po pošiljatelju i naslovu za ovog korisnika.

Također morate izgraditi model na temelju nekih izvješća ili zahtjeva za podršku u poluautomatskom ili ručnom načinu rada kako drugi korisnici ne bi patili od sličnih problema.

Heuristika za učenje

Dva su problema s ovim heuristikama i štakama. Prvi je da je sve veći broj štaka teško održavati, a kamoli njihovu kvalitetu i učinkovitost na duge staze. Drugi problem je što greška možda nije česta i nekoliko klikova za daljnje osposobljavanje modela neće biti dovoljno. Čini se da se ova dva nepovezana učinka mogu značajno neutralizirati ako se primijeni sljedeći pristup.

  1. Izrađujemo privremenu štaku.
  2. Šaljemo podatke s njega modelu, on se redovito ažurira, uključujući primljene podatke. Ovdje je, naravno, važno da heuristika ima visoku točnost kako se ne bi smanjila kvaliteta podataka u skupu za obuku.
  3. Zatim postavljamo nadzor da aktivira štaku, a ako nakon nekog vremena štaka više ne radi i potpuno je prekrivena modelom, možete je sigurno ukloniti. Sada se ovaj problem vjerojatno više neće ponoviti.

Dakle, vojska štaka je vrlo korisna. Glavna stvar je da je njihova usluga hitna, a ne stalna.

Dodatni trening

Preobuka je proces dodavanja novih podataka dobivenih kao rezultat povratne informacije od korisnika ili drugih sustava te osposobljavanje postojećeg modela na njima. Može postojati nekoliko problema s dodatnom obukom:

  1. Model možda jednostavno ne podržava dodatnu obuku, već uči samo od nule.
  2. Nigdje u knjizi prirode ne piše da će dodatno usavršavanje sigurno poboljšati kvalitetu rada u proizvodnji. Često se događa suprotno, odnosno moguće je samo pogoršanje.
  3. Promjene mogu biti nepredvidive. Ovo je prilično suptilna točka koju smo sami identificirali. Čak i ako novi model u A/B testu pokaže slične rezultate u odnosu na trenutni, to ne znači da će raditi identično. Njihov rad može se razlikovati samo za jedan posto, što može donijeti nove pogreške ili vratiti stare koje su već ispravljene. I mi i korisnici već znamo živjeti s trenutnim greškama, a kada se pojavi veliki broj novih grešaka, korisnik također može ne razumjeti što se događa, jer očekuje predvidljivo ponašanje.

Stoga je u dodatnoj obuci najvažnije osigurati da se model unaprijedi ili barem ne pogorša.

Prvo što nam pada na pamet kada govorimo o dodatnoj obuci je pristup aktivnog učenja. Što to znači? Na primjer, klasifikator određuje je li e-poruka povezana s financijama, a oko njezine granice odluke dodajemo uzorak označenih primjera. To dobro funkcionira, na primjer, u oglašavanju, gdje postoji mnogo povratnih informacija i možete trenirati model na mreži. A ako je povratnih informacija malo, tada dobivamo vrlo pristran uzorak u odnosu na distribuciju podataka o proizvodnji, na temelju kojeg je nemoguće procijeniti ponašanje modela tijekom rada.

Rad strojnog učenja u Mail.ru Mail

Zapravo, cilj nam je očuvati stare uzore, već poznate modele, te steći nove. Ovdje je važan kontinuitet. Model, za koji smo se često jako trudili izbaciti, već radi, tako da se možemo usredotočiti na njegovu izvedbu.

U pošti se koriste različiti modeli: stabla, linearne, neuronske mreže. Za svakoga izrađujemo vlastiti algoritam dodatnog treninga. U procesu dodatne obuke dobivamo ne samo nove podatke, već često i nove značajke, koje ćemo uzeti u obzir u svim algoritmima u nastavku.

Linearni modeli

Recimo da imamo logističku regresiju. Izrađujemo model gubitka od sljedećih komponenti:

  • LogLoss na novim podacima;
  • reguliramo težine novih značajki (ne diramo stare);
  • također učimo iz starih podataka kako bismo sačuvali stare obrasce;
  • i, možda, najvažnije: dodajemo Harmonic Regularization, što jamči da se težine neće puno mijenjati u odnosu na stari model prema normi.

Budući da svaka komponenta gubitka ima koeficijente, možemo odabrati optimalne vrijednosti za naš zadatak kroz unakrsnu provjeru ili na temelju zahtjeva proizvoda.

Rad strojnog učenja u Mail.ru Mail

Деревья

Prijeđimo na stabla odlučivanja. Sastavili smo sljedeći algoritam za dodatnu obuku stabala:

  1. Proizvodnja vodi šumu od 100-300 stabala, koja je obučena na starom skupu podataka.
  2. Na kraju uklanjamo M = 5 komada i dodajemo 2M = 10 novih, obučenih na cijelom skupu podataka, ali s velikom težinom za nove podatke, što prirodno jamči inkrementalnu promjenu u modelu.

Očito, s vremenom se broj stabala uvelike povećava, te ih je potrebno povremeno smanjivati ​​kako bi se zadovoljili rokovi. Da bismo to učinili, koristimo sada sveprisutnu destilaciju znanja (KD). Ukratko o principu njegovog rada.

  1. Imamo trenutni "složeni" model. Pokrećemo ga na skupu podataka za obuku i na izlazu dobivamo distribuciju vjerojatnosti klase.
  2. Zatim obučavamo studentski model (u ovom slučaju model s manje stabala) da ponovi rezultate modela koristeći distribuciju klase kao ciljnu varijablu.
  3. Ovdje je važno napomenuti da ni na koji način ne koristimo označavanje skupa podataka i stoga možemo koristiti proizvoljne podatke. Naravno, koristimo uzorak podataka iz borbenog toka kao uzorak za obuku za studentski model. Stoga nam skup za obuku omogućuje da osiguramo točnost modela, a uzorak toka jamči sličnu izvedbu u distribuciji proizvodnje, kompenzirajući pristranost skupa za obuku.

Rad strojnog učenja u Mail.ru Mail

Kombinacija ovih dviju tehnika (dodavanje stabala i povremeno smanjivanje njihovog broja uz pomoć Destilacije znanja) osigurava uvođenje novih obrazaca i potpuni kontinuitet.

Uz pomoć KD-a također izvodimo različite operacije na značajkama modela, poput uklanjanja značajki i rada na prazninama. U našem slučaju, imamo niz važnih statističkih značajki (prema pošiljateljima, hashovima teksta, URL-ovima itd.) koje su pohranjene u bazi podataka, a koje obično zakažu. Model, naravno, nije spreman za takav razvoj događaja, budući da se situacije neuspjeha ne događaju u setu za treniranje. U takvim slučajevima kombiniramo KD i tehnike povećanja: kada treniramo za dio podataka, uklanjamo ili poništavamo potrebne značajke i uzimamo izvorne oznake (izlaze trenutnog modela), a studentski model uči ponavljati ovu distribuciju .

Rad strojnog učenja u Mail.ru Mail

Primijetili smo da što je ozbiljnija manipulacija modelom, to je potreban veći postotak uzorka niti.

Uklanjanje značajki, najjednostavnija operacija, zahtijeva samo mali dio toka, budući da se mijenja samo nekoliko značajki, a trenutni model je treniran na istom setu - razlika je minimalna. Za pojednostavljenje modela (smanjenje broja stabala nekoliko puta), već je potrebno 50 do 50. A za izostavljanje važnih statističkih značajki koje će ozbiljno utjecati na izvedbu modela, potreban je još veći protok kako bi se izravnao rad novi model otporan na propuste na svim vrstama slova.

Rad strojnog učenja u Mail.ru Mail

FastText

Prijeđimo na FastText. Da vas podsjetim da se reprezentacija (Embedding) riječi sastoji od zbroja ugradnje same riječi i svih njenih N-grama slova, obično trigrama. Budući da trigrama može biti dosta, koristi se Bucket Hashing, odnosno pretvaranje cijelog prostora u određenu fiksnu hashmapu. Kao rezultat toga, dobiva se matrica težine s dimenzijom unutarnjeg sloja po broju riječi + spremnici.

Uz dodatnu obuku pojavljuju se novi znakovi: riječi i trigrami. Ništa se značajno ne događa u standardnom praćenju treninga s Facebooka. Samo se stare težine s unakrsnom entropijom ponovno obučavaju na novim podacima. Dakle, nove značajke se ne koriste; naravno, ovaj pristup ima sve gore opisane nedostatke povezane s nepredvidivošću modela u proizvodnji. Zato smo malo modificirali FastText. Dodajemo sve nove težine (riječi i trigrame), proširujemo cijelu matricu unakrsnom entropijom i dodajemo harmoničku regularizaciju po analogiji s linearnim modelom, što jamči beznačajnu promjenu starih težina.

Rad strojnog učenja u Mail.ru Mail

CNN

Konvolucijske mreže su malo kompliciranije. Ako su posljednji slojevi dovršeni u CNN-u, tada, naravno, možete primijeniti harmonijsku regulaciju i jamčiti kontinuitet. Ali ako je potrebna dodatna obuka cijele mreže, tada se takva regularizacija više ne može primijeniti na sve slojeve. Međutim, postoji opcija za treniranje komplementarnih ugrađivanja putem Trostrukog gubitka (Orginalni članak).

Trostruki gubitak

Koristeći zadatak protiv krađe identiteta kao primjer, pogledajmo Trostruki gubitak općenito. Uzimamo naš logo, kao i pozitivne i negativne primjere logotipa drugih tvrtki. Minimiziramo udaljenost između prvog i maksimiziramo udaljenost između drugog, to radimo s malim razmakom kako bismo osigurali veću kompaktnost klasa.

Rad strojnog učenja u Mail.ru Mail

Ako dalje treniramo mrežu, tada se naš metrički prostor potpuno mijenja, te postaje potpuno nekompatibilan s prethodnim. Ovo je ozbiljan problem u problemima koji koriste vektore. Kako bismo zaobišli ovaj problem, umiješat ćemo stare ugradnje tijekom obuke.

Dodali smo nove podatke skupu za obuku i obučavamo drugu verziju modela od nule. U drugoj fazi dodatno treniramo našu mrežu (Finetuning): prvo se dovršava zadnji sloj, a zatim se cijela mreža odmrzava. U procesu sastavljanja tripleta, samo dio umetanja izračunavamo pomoću obučenog modela, a ostatak - pomoću starog. Tako u procesu doškolovanja osiguravamo kompatibilnost metričkih prostora v1 i v2. Jedinstvena verzija harmonijske regulacije.

Rad strojnog učenja u Mail.ru Mail

Cijela arhitektura

Ako razmotrimo cijeli sustav koristeći antispam kao primjer, tada modeli nisu izolirani, već ugniježđeni jedan u drugi. Snimamo slike, tekst i druge značajke, koristeći CNN i Fast Text dobivamo ugradnje. Zatim se klasifikatori primjenjuju na vrhu umetanja, koji daju rezultate za različite klase (vrste slova, neželjena pošta, prisutnost logotipa). Signali i znakovi već ulaze u šumu drveća da se donese konačna odluka. Pojedinačni klasifikatori u ovoj shemi omogućuju bolje tumačenje rezultata sustava i točnije ponovno uvježbavanje komponenti u slučaju problema, umjesto unosa svih podataka u stabla odlučivanja u sirovom obliku.

Rad strojnog učenja u Mail.ru Mail

Kao rezultat toga, jamčimo kontinuitet na svim razinama. Na najnižoj razini u CNN-u i Fast Textu koristimo harmonijsku regulaciju, za klasifikatore u sredini također koristimo harmonijsku regulaciju i kalibraciju brzine za dosljednost distribucije vjerojatnosti. Pa, jačanje stabla trenira se postupno ili pomoću destilacije znanja.

Općenito, održavanje takvog ugniježđenog sustava strojnog učenja obično je muka, budući da svaka komponenta na nižoj razini dovodi do ažuriranja cijelog sustava iznad. No budući da se u našem postavu svaka komponenta neznatno mijenja i kompatibilna je s prethodnom, cijeli se sustav može ažurirati dio po dio bez potrebe za ponovnim uvježbavanjem cijele strukture, što omogućuje njegovu podršku bez ozbiljnih troškova.

Rasporedi

Razgovarali smo o prikupljanju podataka i dodatnoj obuci različitih tipova modela, pa krećemo na njihovu implementaciju u produkcijsko okruženje.

A/B testiranje

Kao što sam već rekao, u procesu prikupljanja podataka obično dobijemo pristran uzorak iz kojeg je nemoguće procijeniti proizvodne performanse modela. Stoga je prilikom implementacije model potrebno usporediti s prethodnom verzijom kako bi se shvatilo kako stvari zapravo stoje, odnosno provesti A/B testove. Zapravo, proces postavljanja i analiziranja grafikona prilično je rutinski i može se lako automatizirati. Naše modele postupno uvodimo na 5%, 30%, 50% i 100% korisnika, dok prikupljamo sve dostupne metrike o odgovorima modela i povratnim informacijama korisnika. U slučaju nekih ozbiljnih outliera, automatski vraćamo model, a za ostale slučajeve, nakon što prikupimo dovoljan broj korisničkih klikova, odlučujemo povećati postotak. Kao rezultat toga, potpuno automatski donosimo novi model do 50% korisnika, a uvođenje za cijelu publiku odobrit će osoba, iako se ovaj korak može automatizirati.

Međutim, proces A/B testiranja nudi prostor za optimizaciju. Činjenica je da je svaki A/B test prilično dug (kod nas traje od 6 do 24 sata ovisno o količini povratnih informacija), što ga čini dosta skupim i s ograničenim resursima. Osim toga, potreban je dovoljno visok postotak protoka za test kako bi se bitno ubrzalo ukupno vrijeme A/B testa (regrutiranje statistički značajnog uzorka za procjenu metrike u malom postotku može potrajati jako dugo), što čini broj A/B utora iznimno ograničen. Očito, trebamo testirati samo najperspektivnije modele, kojih dobivamo dosta tijekom dodatnog osposobljavanja.

Kako bismo riješili ovaj problem, obučili smo zaseban klasifikator koji predviđa uspjeh A/B testa. Da bismo to učinili, kao značajke uzimamo statistiku donošenja odluka, Preciznost, Prisjećanje i druge metrike na skupu za obuku, na odgođenom i na uzorku iz streama. Također uspoređujemo model s trenutnim u proizvodnji, uz pomoć heuristike i uzimamo u obzir Složenost modela. Koristeći sve te značajke, klasifikator obučen o povijesti testiranja ocjenjuje modele kandidata, u našem slučaju to su šume drveća, i odlučuje koji će koristiti u A/B testu.

Rad strojnog učenja u Mail.ru Mail

U trenutku implementacije, ovaj pristup nam je omogućio nekoliko puta povećanje broja uspješnih A/B testova.

Testiranje i praćenje

Testiranje i praćenje, začudo, ne štete našem zdravlju, naprotiv, poboljšavaju ga i oslobađaju od nepotrebnog stresa. Testiranje vam omogućuje da spriječite kvar, a praćenje vam omogućuje da ga otkrijete na vrijeme kako biste smanjili utjecaj na korisnike.

Ovdje je važno razumjeti da će prije ili kasnije vaš sustav uvijek pogriješiti - to je zbog razvojnog ciklusa bilo kojeg softvera. Na početku razvoja sustava uvijek ima puno grešaka dok se sve ne slegne i dok se ne završi glavna faza inovacije. No, s vremenom entropija uzima svoj danak, pa se greške opet pojavljuju - zbog degradacije komponenti okolo i promjena podataka, o čemu sam govorio na početku.

Ovdje bih želio napomenuti da svaki sustav strojnog učenja treba promatrati sa stajališta njegove dobiti tijekom cijelog životnog ciklusa. Grafikon ispod prikazuje primjer kako sustav radi na hvatanju rijetke vrste neželjene pošte (crta na grafikonu je blizu nule). Jednog je dana, zbog neispravno pohranjenog atributa, poludjela. Srećom, nije bilo praćenja abnormalnog okidanja; kao rezultat toga, sustav je počeo spremati pisma u velikim količinama u mapu "spam" na granici donošenja odluka. Unatoč ispravljanju posljedica, sustav je već toliko puta pogriješio da se neće isplatiti ni za pet godina. A ovo je potpuni promašaj sa stajališta životnog ciklusa modela.

Rad strojnog učenja u Mail.ru Mail

Stoga tako jednostavna stvar kao što je praćenje može postati ključna u životu modela. Uz standardne i očite metrike, razmatramo distribuciju odgovora i rezultata modela, kao i distribuciju vrijednosti ključnih značajki. Koristeći KL divergenciju, možemo usporediti trenutnu distribuciju s povijesnom ili vrijednosti u A/B testu s ostatkom toka, što nam omogućuje da uočimo anomalije u modelu i vratimo promjene na vrijeme.

U većini slučajeva, svoje prve verzije sustava pokrećemo koristeći jednostavne heuristike ili modele koje koristimo kao nadzor u budućnosti. Primjerice, pratimo NER model u usporedbi s običnim modelima za određene online trgovine i ako pokrivenost klasifikatora padne u usporedbi s njima, onda razumijemo razloge. Još jedna korisna upotreba heuristike!

Rezultati

Prođimo ponovno kroz ključne ideje članka.

  • Fibdeck. Uvijek mislimo na korisnika: kako će živjeti s našim pogreškama, kako će ih moći prijaviti. Ne zaboravite da korisnici nisu izvor čistih povratnih informacija za modele obuke, te ih je potrebno očistiti uz pomoć pomoćnih ML sustava. Ako nije moguće prikupiti signal od korisnika, tada tražimo alternativne izvore povratne informacije, na primjer, povezane sustave.
  • Dodatni trening. Ovdje je glavna stvar kontinuitet, pa se oslanjamo na trenutni model proizvodnje. Nove modele uvježbavamo tako da se zbog harmonijske regularizacije i sličnih trikova ne razlikuju puno od prethodnih.
  • Rasporedi. Automatska implementacija na temelju metrike uvelike smanjuje vrijeme za implementaciju modela. Praćenje statistika i distribucija donošenja odluka, broj padova od strane korisnika je obavezno za vaš miran san i produktivan vikend.

Pa, nadam se da će vam ovo pomoći da brže poboljšate svoje ML sustave, da ih brže plasirate na tržište i učinite ih pouzdanijima i manje stresnima.

Izvor: www.habr.com

Dodajte komentar