Funcționarea învățării automate în Mail.ru Mail

Funcționarea învățării automate în Mail.ru Mail

Pe baza discursurilor mele de la Highload++ și DataFest Minsk 2019.

Pentru mulți astăzi, poșta este o parte integrantă a vieții online. Cu ajutorul acestuia, desfășurăm corespondență de afaceri, stocăm tot felul de informații importante legate de finanțe, rezervări la hoteluri, plasarea comenzilor și multe altele. La mijlocul anului 2018, am formulat o strategie de produs pentru dezvoltarea corespondenței. Cum ar trebui să fie poșta modernă?

Mail trebuie să fie inteligent, adică ajutând utilizatorii să navigheze în volumul tot mai mare de informații: filtrați, structurați și furnizați-l în cel mai convenabil mod. Ea trebuie să fie util, permițându-vă să rezolvați diverse sarcini chiar în cutia poștală, de exemplu, plata amenzilor (o funcție pe care, din păcate, o folosesc). Și, în același timp, desigur, e-mailul trebuie să ofere protecție a informațiilor, eliminând spam-ul și protejând împotriva hackingului, adică să fie seif.

Aceste domenii definesc o serie de probleme cheie, multe dintre acestea pot fi rezolvate eficient folosind învățarea automată. Iată exemple de caracteristici deja existente dezvoltate ca parte a strategiei - câte una pentru fiecare direcție.

  • Răspuns inteligent. Mail are o funcție de răspuns inteligent. Rețeaua neuronală analizează textul scrisorii, înțelege semnificația și scopul acesteia și, ca urmare, oferă cele mai potrivite trei opțiuni de răspuns: pozitiv, negativ și neutru. Acest lucru ajută la economisirea semnificativă de timp atunci când răspundeți la scrisori și, de asemenea, de multe ori răspunde într-un mod nestandard și amuzant.
  • Gruparea e-mailurilorlegate de comenzile din magazinele online. Facem adesea cumpărături online și, de regulă, magazinele pot trimite mai multe e-mailuri pentru fiecare comandă. De exemplu, de la AliExpress, cel mai mare serviciu, pentru o singură comandă vin o mulțime de litere și am calculat că în cazul terminalului numărul lor ar putea ajunge până la 29. Prin urmare, folosind modelul Named Entity Recognition, extragem numărul comenzii și alte informații din text și grupează toate literele într-un singur fir. De asemenea, afișăm informații de bază despre comandă într-o casetă separată, ceea ce facilitează lucrul cu acest tip de e-mail.

    Funcționarea învățării automate în Mail.ru Mail

  • Antiphishing. Phishingul este un tip de e-mail fraudulos deosebit de periculos, cu ajutorul căruia atacatorii încearcă să obțină informații financiare (inclusiv cardurile bancare ale utilizatorului) și autentificări. Astfel de scrisori le imită pe cele reale trimise de serviciu, inclusiv vizual. Prin urmare, cu ajutorul Computer Vision, recunoaștem siglele și stilul de design al scrisorilor de la companii mari (de exemplu, Mail.ru, Sber, Alfa) și luăm în considerare acest lucru împreună cu textul și alte caracteristici în clasificatorii noștri de spam și phishing. .

Învățare automată

Câteva despre învățarea automată în e-mail în general. Mail este un sistem foarte încărcat: o medie de 1,5 miliarde de scrisori pe zi trec prin serverele noastre pentru 30 de milioane de utilizatori DAU. Aproximativ 30 de sisteme de învățare automată acceptă toate funcțiile și caracteristicile necesare.

Fiecare literă trece printr-o întreagă conductă de clasificare. Mai întâi tăiem spam-ul și lăsăm e-mailuri bune. Utilizatorii nu observă adesea munca antispam, deoarece 95-99% din spam nici măcar nu ajung în folderul corespunzător. Recunoașterea spam-ului este o parte foarte importantă a sistemului nostru și cea mai dificilă, deoarece în domeniul anti-spam există o adaptare constantă între sistemele de apărare și cele de atac, ceea ce oferă o provocare inginerească continuă pentru echipa noastră.

Apoi, separăm literele de oameni și roboți. E-mailurile de la oameni sunt cele mai importante, așa că le oferim funcții precum Răspuns inteligent. Scrisorile de la roboți sunt împărțite în două părți: tranzacționale - acestea sunt scrisori importante de la servicii, de exemplu, confirmări de achiziții sau rezervări la hotel, finanțe și informaționale - acestea sunt publicitate pentru afaceri, reduceri.

Considerăm că e-mailurile tranzacționale au o importanță egală cu corespondența personală. Ele ar trebui să fie la îndemână, pentru că deseori avem nevoie să găsim rapid informații despre o comandă sau rezervarea unui bilet de avion și petrecem timp căutând aceste litere. Prin urmare, pentru comoditate, le împărțim automat în șase categorii principale: călătorii, comenzi, finanțe, bilete, înscrieri și, în final, amenzi.

Scrisorile informative sunt cel mai mare și probabil mai puțin important grup, care nu necesită un răspuns imediat, deoarece nimic semnificativ nu se va schimba în viața utilizatorului dacă nu citește o astfel de scrisoare. În noua noastră interfață, le restrângem în două fire: rețele sociale și buletine informative, ștergând astfel vizual căsuța de e-mail și lăsând vizibile doar mesajele importante.

Funcționarea învățării automate în Mail.ru Mail

exploatare

Un număr mare de sisteme cauzează o mulțime de dificultăți în funcționare. La urma urmei, modelele se degradează în timp, ca orice software: funcțiile se întrerup, mașinile eșuează, codul devine strâmb. În plus, datele se schimbă constant: sunt adăugate altele noi, modelele de comportament ale utilizatorilor sunt transformate etc., astfel încât un model fără suport adecvat va funcționa din ce în ce mai rău în timp.

Nu trebuie să uităm că, cu cât învățarea automată pătrunde mai profund în viața utilizatorilor, cu atât este mai mare impactul pe care aceștia îl au asupra ecosistemului și, ca urmare, cu atât mai multe pierderi financiare sau profituri pot primi jucătorii de pe piață. Prin urmare, într-un număr tot mai mare de domenii, jucătorii se adaptează la munca algoritmilor ML (exemplele clasice sunt publicitatea, căutarea și antispam-ul deja menționat).

De asemenea, sarcinile de învățare automată au o particularitate: orice schimbare, chiar și minoră, a sistemului poate genera multă muncă cu modelul: lucrul cu date, reinstruire, implementare, ceea ce poate dura săptămâni sau luni. Prin urmare, cu cât mediul în care funcționează modelele dumneavoastră se schimbă mai repede, cu atât este nevoie de mai mult efort pentru a le menține. O echipă poate crea o mulțime de sisteme și poate fi fericită de ele, dar apoi își cheltuiește aproape toate resursele pentru a le întreține, fără posibilitatea de a face ceva nou. Am întâlnit odată o astfel de situație în echipa antispam. Și au ajuns la concluzia evidentă că suportul trebuie automatizat.

Automatizare

Ce poate fi automatizat? Aproape totul, de fapt. Am identificat patru domenii care definesc infrastructura de învățare automată:

  • colectare de date;
  • formare suplimentară;
  • desfășurare;
  • testare și monitorizare.

Dacă mediul este instabil și se schimbă constant, atunci întreaga infrastructură din jurul modelului se dovedește a fi mult mai importantă decât modelul în sine. Poate fi un vechi clasificator liniar bun, dar dacă îl alimentați cu caracteristicile potrivite și obțineți feedback bun de la utilizatori, va funcționa mult mai bine decât modelele de ultimă generație cu toate clopotele și fluierele.

Bucla de feedback

Acest ciclu combină colectarea datelor, instruirea suplimentară și implementarea - de fapt, întregul ciclu de actualizare a modelului. De ce este important? Consultați programul de înscriere pe e-mail:

Funcționarea învățării automate în Mail.ru Mail

Un dezvoltator de învățare automată a implementat un model anti-bot care împiedică roboții să se înregistreze în e-mail. Graficul scade la o valoare în care rămân doar utilizatori reali. Totul e minunat! Dar trec patru ore, roboții își modifică scripturile și totul revine la normal. În această implementare, dezvoltatorul a petrecut o lună adăugând caracteristici și reantrenând modelul, dar spammerul a putut să se adapteze în patru ore.

Pentru a nu fi atât de chinuitor de dureros și pentru a nu trebui să refacem totul mai târziu, trebuie să ne gândim inițial la cum va arăta bucla de feedback și ce vom face dacă mediul se schimbă. Să începem cu colectarea datelor - acesta este combustibilul pentru algoritmii noștri.

Colectare de date

Este clar că pentru rețelele neuronale moderne, cu cât sunt mai multe date, cu atât mai bine și sunt, de fapt, generate de utilizatorii produsului. Utilizatorii ne pot ajuta prin marcarea datelor, dar nu putem abuza de acest lucru, pentru că la un moment dat utilizatorii se vor sătura să vă completeze modelele și vor trece la alt produs.

Una dintre cele mai frecvente greșeli (aici fac referire la Andrew Ng) este concentrarea prea mare pe valorile setului de date de testare, și nu pe feedback-ul de la utilizator, care este de fapt principala măsură a calității muncii, deoarece creăm un produs pentru utilizator. Dacă utilizatorul nu înțelege sau nu-i place munca modelului, atunci totul este ruinat.

Prin urmare, utilizatorul ar trebui să poată vota întotdeauna și ar trebui să i se ofere un instrument pentru feedback. Dacă credem că o scrisoare legată de finanțare a sosit în cutia poștală, trebuie să o marchem „finanțare” și să desenăm un buton pe care utilizatorul poate face clic și să spunem că aceasta nu este finanțare.

Calitatea feedback-ului

Să vorbim despre calitatea feedback-ului utilizatorilor. În primul rând, tu și utilizatorul puteți pune semnificații diferite într-un singur concept. De exemplu, tu și managerii tăi de produs credeți că „finanțare” înseamnă scrisori de la bancă, iar utilizatorul crede că o scrisoare de la bunica despre pensia ei se referă și la finanțe. În al doilea rând, există utilizatori cărora le place fără minte să apese butoane fără nicio logică. În al treilea rând, utilizatorul poate greși profund în concluziile sale. Un exemplu izbitor din practica noastră este implementarea unui clasificator spam nigerian, un tip de spam foarte amuzant în care utilizatorului i se cere să ia câteva milioane de dolari de la o rudă îndepărtată găsită brusc în Africa. După implementarea acestui clasificator, am verificat clicurile „Nu este spam” de pe aceste e-mailuri și s-a dovedit că 80% dintre ele erau spam nigerian suculent, ceea ce sugerează că utilizatorii pot fi extrem de creduli.

Și să nu uităm că butoanele pot fi apăsate nu numai de oameni, ci și de tot felul de roboți care se prefac a fi un browser. Deci feedback-ul brut nu este bun pentru învățare. Ce poți face cu aceste informații?

Folosim două abordări:

  • Feedback de la ML conectat. De exemplu, avem un sistem anti-bot online, care, așa cum am menționat, ia o decizie rapidă pe baza unui număr limitat de semne. Și există un al doilea sistem, lent, care funcționează după fapt. Are mai multe date despre utilizator, comportamentul acestuia etc. Ca urmare, se ia decizia cea mai informată; în consecință, are o acuratețe și completitudine mai ridicate. Puteți direcționa diferența în funcționarea acestor sisteme către primul ca date de antrenament. Astfel, un sistem mai simplu va încerca întotdeauna să se apropie de performanța unuia mai complex.
  • Faceți clic pe clasificare. Puteți pur și simplu să clasificați fiecare clic de utilizator, să evaluați validitatea și gradul de utilizare al acestuia. Facem acest lucru în mail antispam, folosind atributele utilizatorului, istoricul acestuia, atributele expeditorului, textul în sine și rezultatul clasificatorilor. Ca rezultat, obținem un sistem automat care validează feedback-ul utilizatorilor. Și din moment ce trebuie să fie recalificat mult mai rar, munca sa poate deveni baza pentru toate celelalte sisteme. Principala prioritate a acestui model este precizia, deoarece antrenarea modelului pe date inexacte este plină de consecințe.

În timp ce curățăm datele și ne instruim în continuare sistemele ML, nu trebuie să uităm de utilizatori, deoarece pentru noi, mii, milioane de erori de pe grafic sunt statistici, iar pentru utilizator, fiecare bug este o tragedie. Pe lângă faptul că utilizatorul trebuie să trăiască cumva cu eroarea ta în produs, după ce a primit feedback, se așteaptă ca o situație similară să fie eliminată în viitor. Prin urmare, este întotdeauna în valoare de a oferi utilizatorilor nu numai posibilitatea de a vota, ci și de a corecta comportamentul sistemelor ML, creând, de exemplu, euristici personale pentru fiecare clic de feedback; în cazul e-mailului, aceasta ar putea fi capacitatea de a filtra astfel de scrisori după expeditor și titlu pentru acest utilizator.

De asemenea, trebuie să construiți un model pe baza unor rapoarte sau apeluri de asistență în modul semi-automat sau manual, astfel încât alți utilizatori să nu sufere de probleme similare.

Euristică pentru învățare

Există două probleme cu aceste euristice și cârje. Primul este că numărul din ce în ce mai mare de cârje este greu de întreținut, darămite calitatea și performanța lor pe termen lung. A doua problemă este că eroarea poate să nu fie frecventă, iar câteva clicuri pentru a antrena în continuare modelul nu vor fi suficiente. S-ar părea că aceste două efecte necorelate pot fi neutralizate semnificativ dacă se aplică următoarea abordare.

  1. Creăm o cârjă temporară.
  2. Trimitem date din acesta către model, se actualizează în mod regulat, inclusiv pe datele primite. Aici, desigur, este important ca euristicile să aibă o acuratețe ridicată pentru a nu reduce calitatea datelor din setul de antrenament.
  3. Apoi setăm monitorizarea să declanșeze cârja, iar dacă după ceva timp cârja nu mai funcționează și este complet acoperită de model, atunci o poți îndepărta în siguranță. Acum este puțin probabil ca această problemă să se repete.

Deci o armată de cârje este foarte utilă. Principalul lucru este că serviciul lor este urgent și nu permanent.

Formare suplimentară

Recalificarea este procesul de adăugare a datelor noi obținute ca urmare a feedback-ului de la utilizatori sau alte sisteme și de formare a unui model existent pe acesta. Pot exista mai multe probleme cu antrenamentul suplimentar:

  1. Este posibil ca modelul să nu accepte pregătirea suplimentară, ci să învețe doar de la zero.
  2. Nicăieri în cartea naturii nu este scris că pregătirea suplimentară va îmbunătăți cu siguranță calitatea muncii în producție. Adesea se întâmplă contrariul, adică doar deteriorarea este posibilă.
  3. Schimbările pot fi imprevizibile. Acesta este un punct destul de subtil pe care l-am identificat pentru noi înșine. Chiar dacă un model nou într-un test A/B arată rezultate similare față de cel actual, asta nu înseamnă că va funcționa identic. Munca lor poate diferi doar cu un procent, ceea ce poate aduce noi erori sau poate returna erori vechi care au fost deja corectate. Atât noi, cât și utilizatorii știm deja cum să trăim cu erorile actuale, iar atunci când apar un număr mare de erori noi, utilizatorul poate să nu înțeleagă ce se întâmplă, deoarece se așteaptă la un comportament previzibil.

Prin urmare, cel mai important lucru în pregătirea suplimentară este să vă asigurați că modelul este îmbunătățit, sau cel puțin nu este înrăutățit.

Primul lucru care ne vine în minte când vorbim despre formare suplimentară este abordarea Active Learning. Ce înseamnă acest lucru? De exemplu, clasificatorul determină dacă un e-mail are legătură cu finanțele, iar în jurul limitei sale de decizie adăugăm un eșantion de exemple etichetate. Acest lucru funcționează bine, de exemplu, în publicitate, unde există o mulțime de feedback și puteți antrena modelul online. Și dacă există puțin feedback, atunci obținem un eșantion foarte părtinitor în raport cu distribuția datelor de producție, pe baza căruia este imposibil să se evalueze comportamentul modelului în timpul funcționării.

Funcționarea învățării automate în Mail.ru Mail

De fapt, scopul nostru este să păstrăm modele vechi, modele deja cunoscute și să dobândim altele noi. Continuitatea este importantă aici. Modelul, pe care de multe ori ne-am străduit să îl lansăm, funcționează deja, așa că ne putem concentra asupra performanței sale.

În poștă sunt utilizate diferite modele: arbori, liniare, rețele neuronale. Pentru fiecare facem propriul algoritm de antrenament suplimentar. În procesul de instruire suplimentară, primim nu numai date noi, ci și adesea noi funcții, pe care le vom lua în considerare în toți algoritmii de mai jos.

Modele liniare

Să presupunem că avem regresie logistică. Creăm un model de pierdere din următoarele componente:

  • LogLoss pe date noi;
  • regularizăm ponderile noilor funcții (nu le atingem de cele vechi);
  • învățăm și din date vechi pentru a păstra modelele vechi;
  • și, poate, cel mai important lucru: adăugăm Regularizare armonică, care garantează că greutățile nu se vor schimba mult față de modelul vechi conform normei.

Deoarece fiecare componentă Pierdere are coeficienți, putem selecta valorile optime pentru sarcina noastră prin validare încrucișată sau pe baza cerințelor produsului.

Funcționarea învățării automate în Mail.ru Mail

Деревья

Să trecem la arborii de decizie. Am compilat următorul algoritm pentru antrenamentul suplimentar al arborilor:

  1. Producția conduce o pădure de 100-300 de arbori, care este dresată pe un set de date vechi.
  2. La final scoatem M = 5 bucati si adaugam 2M = 10 noi, antrenate pe intregul set de date, dar cu o pondere mare pentru datele noi, ceea ce garanteaza in mod firesc o schimbare incrementala a modelului.

Evident, în timp, numărul de copaci crește foarte mult, iar aceștia trebuie redusi periodic pentru a respecta calendarele. Pentru a face acest lucru, folosim acum omniprezenta Knowledge Distillation (KD). Pe scurt despre principiul funcționării sale.

  1. Avem modelul actual „complex”. Îl rulăm pe setul de date de antrenament și obținem distribuția de probabilitate a clasei la ieșire.
  2. Apoi, antrenăm modelul student (modelul cu mai puțini arbori în acest caz) pentru a repeta rezultatele modelului folosind distribuția clasei ca variabilă țintă.
  3. Este important de reținut aici că nu folosim marcarea setului de date în niciun fel și, prin urmare, putem folosi date arbitrare. Desigur, folosim un eșantion de date din fluxul de luptă ca eșantion de antrenament pentru modelul studentului. Astfel, setul de antrenament ne permite să asigurăm acuratețea modelului, iar eșantionul de flux garantează o performanță similară asupra distribuției producției, compensând părtinirea setului de antrenament.

Funcționarea învățării automate în Mail.ru Mail

Combinația acestor două tehnici (adăugarea arborilor și reducerea periodică a numărului lor folosind Knowledge Distillation) asigură introducerea de noi modele și continuitate completă.

Cu ajutorul KD, efectuăm și diferite operații asupra caracteristicilor modelului, cum ar fi eliminarea caracteristicilor și lucrul la goluri. În cazul nostru, avem o serie de caracteristici statistice importante (de către expeditori, hash-uri de text, URL-uri etc.) care sunt stocate în baza de date, care tind să eșueze. Modelul, desigur, nu este pregătit pentru o astfel de dezvoltare a evenimentelor, deoarece situațiile de eșec nu apar în setul de antrenament. În astfel de cazuri, combinăm tehnicile KD și de augmentare: atunci când antrenăm pentru o parte din date, eliminăm sau resetam caracteristicile necesare și luăm etichetele originale (ieșirile modelului curent), iar modelul student învață să repete această distribuție .

Funcționarea învățării automate în Mail.ru Mail

Am observat că, cu cât are loc o manipulare mai serioasă a modelului, cu atât este mai mare procentul de eșantion de fir necesar.

Eliminarea caracteristicilor, cea mai simplă operațiune, necesită doar o mică parte din flux, deoarece doar câteva caracteristici se schimbă, iar modelul actual a fost antrenat pe același set - diferența este minimă. Pentru a simplifica modelul (reducerea numărului de copaci de mai multe ori), este deja necesar 50 până la 50. Și pentru omisiunile unor caracteristici statistice importante care vor afecta grav performanța modelului, este necesar și mai mult flux pentru a nivela activitatea model nou rezistent la omisiuni pe toate tipurile de litere.

Funcționarea învățării automate în Mail.ru Mail

FastText

Să trecem la FastText. Permiteți-mi să vă reamintesc că reprezentarea (Incorporarea) unui cuvânt constă din suma înglobării cuvântului însuși și a tuturor N-gramelor sale de litere, de obicei trigrame. Deoarece pot exista destul de multe trigrame, se folosește Bucket Hashing, adică conversia întregului spațiu într-o anumită hashmap fixă. Ca urmare, matricea de greutate este obținută cu dimensiunea stratului interior pe număr de cuvinte + găleți.

Cu antrenament suplimentar, apar semne noi: cuvinte și trigrame. Nimic semnificativ nu se întâmplă în instruirea standard de urmărire de la Facebook. Numai greutățile vechi cu entropie încrucișată sunt reantrenate pe date noi. Astfel, nu sunt utilizate funcții noi; desigur, această abordare are toate dezavantajele descrise mai sus asociate cu imprevizibilitatea modelului în producție. De aceea am modificat puțin FastText. Adăugăm toate ponderile noi (cuvinte și trigrame), extindem întreaga matrice cu entropie încrucișată și adăugăm regularizare armonică prin analogie cu modelul liniar, care garantează o modificare nesemnificativă a ponderilor vechi.

Funcționarea învățării automate în Mail.ru Mail

CNN

Rețelele convoluționale sunt puțin mai complicate. Dacă ultimele straturi sunt completate în CNN, atunci, desigur, puteți aplica regularizarea armonică și puteți garanta continuitatea. Dar dacă este necesară o pregătire suplimentară a întregii rețele, atunci o astfel de regularizare nu mai poate fi aplicată tuturor straturilor. Cu toate acestea, există o opțiune de a antrena înglobări complementare prin Triplet Loss (Articol original).

Pierdere triplă

Folosind o sarcină anti-phishing ca exemplu, să ne uităm la Triplet Loss în termeni generali. Luăm logo-ul nostru, precum și exemple pozitive și negative de logo-uri ale altor companii. Minimizăm distanța dintre primul și maximizăm distanța dintre al doilea, facem acest lucru cu un mic decalaj pentru a asigura o mai mare compactitate a claselor.

Funcționarea învățării automate în Mail.ru Mail

Dacă antrenăm în continuare rețeaua, atunci spațiul nostru metric se schimbă complet și devine complet incompatibil cu cel precedent. Aceasta este o problemă serioasă în problemele care folosesc vectori. Pentru a ocoli această problemă, vom amesteca încorporații vechi în timpul antrenamentului.

Am adăugat date noi la setul de antrenament și antrenăm cea de-a doua versiune a modelului de la zero. În a doua etapă, ne antrenăm în continuare rețeaua (Finetuning): mai întâi ultimul strat este finalizat, iar apoi întreaga rețea este dezghețată. În procesul de compunere a tripleților, calculăm doar o parte din înglobări folosind modelul antrenat, restul - folosind cel vechi. Astfel, în procesul de instruire suplimentară, asigurăm compatibilitatea spațiilor metrice v1 și v2. O versiune unică a regularizării armonice.

Funcționarea învățării automate în Mail.ru Mail

Întreaga arhitectură

Dacă luăm în considerare întregul sistem folosind antispam ca exemplu, atunci modelele nu sunt izolate, ci imbricate unele în altele. Facem fotografii, text și alte funcții, folosind CNN și Fast Text obținem încorporare. În continuare, se aplică clasificatoare deasupra înglobărilor, care oferă scoruri pentru diferite clase (tipuri de scrisori, spam, prezența unui logo). Semnalele și indicatoarele intră deja în pădurea de copaci pentru ca decizia finală să fie luată. Clasificatorii individuali din această schemă fac posibilă interpretarea mai bună a rezultatelor sistemului și, mai precis, reantrenarea componentelor în caz de probleme, mai degrabă decât introducerea tuturor datelor în arbori de decizie într-o formă brută.

Funcționarea învățării automate în Mail.ru Mail

Drept urmare, garantam continuitate la fiecare nivel. La nivelul de jos în CNN și Fast Text folosim regularizarea armonică, pentru clasificatorii din mijloc folosim și regularizarea armonică și calibrarea ratei pentru consistența distribuției de probabilitate. Ei bine, creșterea arborilor este antrenată progresiv sau folosind Distilarea cunoștințelor.

În general, menținerea unui astfel de sistem de învățare automată imbricată este de obicei o durere, deoarece orice componentă de la nivelul inferior duce la o actualizare a întregului sistem de mai sus. Dar din moment ce în configurația noastră fiecare componentă se modifică ușor și este compatibilă cu cea anterioară, întregul sistem poate fi actualizat bucată cu piesă fără a fi nevoie de reantrenarea întregii structuri, ceea ce îi permite să fie susținută fără suprasolicitare serioasă.

Implementează

Am discutat despre colectarea datelor și instruirea suplimentară a diferitelor tipuri de modele, așa că trecem la implementarea acestora în mediul de producție.

Testare A/B

După cum am spus mai devreme, în procesul de colectare a datelor, obținem de obicei un eșantion părtinitor, din care este imposibil să evaluăm performanța de producție a modelului. Prin urmare, la implementare, modelul trebuie comparat cu versiunea anterioară pentru a înțelege cum merg lucrurile de fapt, adică, pentru a efectua teste A/B. De fapt, procesul de lansare și analiză a graficelor este destul de obișnuit și poate fi ușor automatizat. Ne lansăm modelele treptat la 5%, 30%, 50% și 100% dintre utilizatori, colectând în același timp toate valorile disponibile privind răspunsurile modelului și feedbackul utilizatorilor. În cazul unor valori aberante grave, derulăm automat înapoi modelul, iar în alte cazuri, după ce a colectat un număr suficient de clicuri ale utilizatorilor, decidem să creștem procentul. Drept urmare, aducem noul model la 50% dintre utilizatori complet automat, iar lansarea către întregul public va fi aprobată de o persoană, deși acest pas poate fi automatizat.

Cu toate acestea, procesul de testare A/B oferă spațiu pentru optimizare. Cert este că orice test A/B este destul de lung (în cazul nostru durează de la 6 la 24 de ore în funcție de cantitatea de feedback), ceea ce îl face destul de costisitor și cu resurse limitate. În plus, este necesar un procent suficient de mare de debit pentru test pentru a accelera, în esență, timpul total al testului A/B (recrutarea unui eșantion semnificativ statistic pentru a evalua valorile la un procent mic poate dura foarte mult timp), ceea ce face ca numărul de sloturi A/B extrem de limitat. Evident, trebuie să testăm doar modelele cele mai promițătoare, dintre care primim destul de multe în timpul procesului de instruire suplimentară.

Pentru a rezolva această problemă, am antrenat un clasificator separat care prezice succesul unui test A/B. Pentru a face acest lucru, luăm ca caracteristici statistici de luare a deciziilor, Precizie, Recall și alte metrici pe setul de antrenament, pe cel amânat și pe eșantionul din flux. De asemenea, comparăm modelul cu cel actual în producție, cu euristică, și ținem cont de Complexitatea modelului. Folosind toate aceste caracteristici, un clasificator instruit pe istoricul testelor evaluează modelele candidate, în cazul nostru acestea sunt păduri de copaci, și decide pe care să le folosească în testul A/B.

Funcționarea învățării automate în Mail.ru Mail

La momentul implementării, această abordare ne-a permis să creștem de mai multe ori numărul de teste A/B reușite.

Testare și monitorizare

Testarea și monitorizarea, destul de ciudat, nu dăunează sănătății noastre, ci, dimpotrivă, o îmbunătățesc și ne eliberează de stresul inutil. Testarea vă permite să preveniți o defecțiune, iar monitorizarea vă permite să o detectați la timp pentru a reduce impactul asupra utilizatorilor.

Este important să înțelegeți aici că mai devreme sau mai târziu sistemul dvs. va face întotdeauna greșeli - acest lucru se datorează ciclului de dezvoltare al oricărui software. La începutul dezvoltării sistemului există întotdeauna o mulțime de erori până când totul se stabilește și etapa principală a inovației este finalizată. Însă, în timp, entropia își face plăcere, iar erorile apar din nou - datorită degradării componentelor din jur și modificărilor datelor, despre care am vorbit la început.

Aici aș dori să remarc că orice sistem de învățare automată ar trebui luat în considerare din punct de vedere al profitului său pe parcursul întregului său ciclu de viață. Graficul de mai jos arată un exemplu despre modul în care sistemul funcționează pentru a captura un tip rar de spam (linia din grafic este aproape de zero). Într-o zi, din cauza unui atribut memorat incorect în cache, a luat-o razna. Din fericire, nu a existat nicio monitorizare pentru declanșarea anormală; ca urmare, sistemul a început să salveze scrisori în cantități mari în folderul „spam” de la limita de luare a deciziilor. În ciuda corectării consecințelor, sistemul a făcut deja greșeli de atâtea ori încât nu se va plăti singur nici în cinci ani. Și acesta este un eșec complet din punctul de vedere al ciclului de viață al modelului.

Funcționarea învățării automate în Mail.ru Mail

Prin urmare, un lucru atât de simplu precum monitorizarea poate deveni cheie în viața unui model. Pe lângă valorile standard și evidente, luăm în considerare distribuția răspunsurilor și a scorurilor modelului, precum și distribuția valorilor caracteristicilor cheie. Folosind divergența KL, putem compara distribuția curentă cu cea istorică sau valorile din testul A/B cu restul fluxului, ceea ce ne permite să observăm anomalii în model și să retragem modificările în timp util.

În cele mai multe cazuri, lansăm primele noastre versiuni de sisteme folosind euristice simple sau modele pe care le folosim ca monitorizare în viitor. De exemplu, monitorizăm modelul NER în comparație cu cele obișnuite pentru anumite magazine online, iar dacă acoperirea clasificatorului scade în comparație cu acestea, atunci înțelegem motivele. O altă utilizare utilă a euristicii!

Rezultatele

Să trecem din nou peste ideile cheie ale articolului.

  • Fibdeck. Ne gândim mereu la utilizator: cum va trăi cu greșelile noastre, cum le va putea raporta. Nu uitați că utilizatorii nu sunt o sursă de feedback pur pentru modelele de antrenament și trebuie să fie eliminate cu ajutorul sistemelor auxiliare ML. Dacă nu este posibil să colectăm un semnal de la utilizator, atunci căutăm surse alternative de feedback, de exemplu, sistemele conectate.
  • Formare suplimentară. Principalul lucru aici este continuitatea, așa că ne bazăm pe modelul actual de producție. Antrenăm modele noi, astfel încât acestea să nu difere mult de precedentul datorită regularizării armonice și trucurilor similare.
  • Implementează. Implementarea automată bazată pe valori reduce foarte mult timpul de implementare a modelelor. Monitorizarea statisticilor și distribuția luării deciziilor, numărul de căderi de la utilizatori este obligatoriu pentru un somn odihnitor și un weekend productiv.

Ei bine, sper că acest lucru vă va ajuta să vă îmbunătățiți mai rapid sistemele ML, să le aduceți pe piață mai repede și să le faceți mai fiabile și mai puțin stresante.

Sursa: www.habr.com

Adauga un comentariu