Werking van masjienleer in Mail.ru Mail

Werking van masjienleer in Mail.ru Mail

Gebaseer op my toesprake by Highload++ en DataFest Minsk 2019.

Vir baie vandag is pos 'n integrale deel van die aanlyn lewe. Met sy hulp voer ons besigheidskorrespondensie, stoor ons allerhande belangrike inligting wat verband hou met finansies, hotelbesprekings, bestellings plaas en nog baie meer. In die middel van 2018 het ons 'n produkstrategie vir posontwikkeling geformuleer. Hoe moet moderne pos wees?

Pos moet wees slim, dit wil sê om gebruikers te help om die toenemende volume inligting te navigeer: filter, struktureer en verskaf dit op die gerieflikste manier. Sy moet wees nuttig, sodat jy verskeie take direk in jou posbus kan oplos, byvoorbeeld boetes betaal ('n funksie wat ek ongelukkig gebruik). En terselfdertyd moet pos natuurlik inligtingsbeskerming bied, strooipos afsny en teen inbraak beskerm, dit wil sê veilig.

Hierdie gebiede definieer 'n aantal sleutelprobleme, waarvan baie effektief opgelos kan word deur masjienleer te gebruik. Hier is voorbeelde van reeds bestaande kenmerke wat as deel van die strategie ontwikkel is - een vir elke rigting.

  • Slim Antwoord. Pos het 'n slim antwoord-funksie. Die neurale netwerk ontleed die teks van die brief, verstaan ​​die betekenis en doel daarvan, en bied gevolglik die drie mees geskikte reaksie-opsies: positief, negatief en neutraal. Dit help om aansienlik tyd te bespaar wanneer briewe beantwoord word, en reageer ook dikwels op 'n nie-standaard en snaakse manier.
  • Groepering van e-posseverband hou met bestellings in aanlynwinkels. Ons koop dikwels aanlyn, en winkels kan as 'n reël verskeie e-posse vir elke bestelling stuur. Byvoorbeeld, vanaf AliExpress, die grootste diens, kom baie briewe vir een bestelling in, en ons het bereken dat in die terminale geval hul getal tot 29 kan bereik. Daarom, deur die Benoemde Entiteit-erkenning-model te gebruik, onttrek ons ​​die bestelnommer en ander inligting uit die teks en groepeer alle letters in een draad. Ons vertoon ook basiese inligting oor die bestelling in 'n aparte blokkie, wat dit makliker maak om met hierdie tipe e-pos te werk.

    Werking van masjienleer in Mail.ru Mail

  • Anti-phishing. Uitvissing is 'n besonder gevaarlike bedrieglike tipe e-pos, met die hulp waarmee aanvallers finansiële inligting (insluitend die gebruiker se bankkaarte) en aanmeldings probeer bekom. Sulke briewe boots regte briewe na wat deur die diens gestuur is, insluitend visueel. Daarom herken ons met behulp van Computer Vision logo's en die ontwerpstyl van briewe van groot maatskappye (byvoorbeeld Mail.ru, Sber, Alfa) en neem dit saam met teks en ander kenmerke in ons strooipos- en uitvissingklassifiseerders in ag .

Masjienleer

'N bietjie oor masjienleer in e-pos in die algemeen. Pos is 'n hoogs gelaaide stelsel: 'n gemiddeld van 1,5 miljard briewe per dag gaan deur ons bedieners vir 30 miljoen DAU-gebruikers. Ongeveer 30 masjienleerstelsels ondersteun al die nodige funksies en kenmerke.

Elke letter gaan deur 'n hele klassifikasiepyplyn. Eers sny ons strooipos af en los goeie e-posse. Gebruikers sien dikwels nie die werk van antispam raak nie, want 95-99% van strooipos beland nie eers in die toepaslike vouer nie. Strooiposherkenning is 'n baie belangrike deel van ons stelsel, en die moeilikste, aangesien daar in die veld van anti-spam 'n konstante aanpassing tussen verdediging- en aanvalstelsels is, wat 'n deurlopende ingenieursuitdaging vir ons span bied.

Vervolgens skei ons briewe van mense en robotte. E-posse van mense is die belangrikste, daarom verskaf ons kenmerke soos Smart Reply vir hulle. Briewe van robotte word in twee dele verdeel: transaksioneel - dit is belangrike briewe van dienste, byvoorbeeld bevestigings van aankope of hotelbesprekings, finansies en inligting - dit is besigheidsadvertensies, afslag.

Ons glo dat transaksionele e-posse ewe belangrik is as persoonlike korrespondensie. Hulle moet byderhand wees, want ons moet dikwels vinnig inligting oor 'n bestelling of vliegkaartjiebespreking kry, en ons spandeer tyd om na hierdie briewe te soek. Daarom verdeel ons dit gerieflikheidshalwe outomaties in ses hoofkategorieë: reis, bestellings, finansies, kaartjies, registrasies en laastens boetes.

Inligtingsbriewe is die grootste en waarskynlik minder belangrike groep, wat nie 'n onmiddellike reaksie vereis nie, aangesien niks betekenisvol in die gebruiker se lewe sal verander as hy nie so 'n brief lees nie. In ons nuwe koppelvlak vou ons hulle in twee drade in: sosiale netwerke en nuusbriewe, en maak dus die inkassie visueel skoon en laat net belangrike boodskappe sigbaar.

Werking van masjienleer in Mail.ru Mail

Uitbuiting

'n Groot aantal stelsels veroorsaak baie probleme in werking. Modelle degradeer immers met verloop van tyd, soos enige sagteware: kenmerke breek, masjiene misluk, kode raak krom. Daarbenewens verander data voortdurend: nuwes word bygevoeg, gebruikersgedragspatrone word getransformeer, ens., so 'n model sonder behoorlike ondersteuning sal mettertyd slegter en slegter werk.

Ons moet nie vergeet dat hoe dieper masjienleer in die lewens van gebruikers deurdring, hoe groter is die impak wat hulle op die ekosisteem het nie, en, as gevolg daarvan, hoe meer finansiële verliese of winste kan markspelers ontvang. Daarom pas spelers in 'n toenemende aantal gebiede aan by die werk van ML-algoritmes (klassieke voorbeelde is advertensies, soektogte en die reeds genoemde antispam).

Masjienleertake het ook 'n eienaardigheid: enige, selfs geringe, verandering in die stelsel kan baie werk met die model genereer: werk met data, heropleiding, ontplooiing, wat weke of maande kan neem. Daarom, hoe vinniger die omgewing waarin jou modelle werk verander, hoe meer moeite verg dit om hulle te onderhou. ’n Span kan baie stelsels skep en bly daaroor wees, maar spandeer dan byna al sy hulpbronne om dit in stand te hou, sonder die geleentheid om iets nuuts te doen. Ons het eenkeer so 'n situasie in die antispam-span teëgekom. En hulle het die ooglopende gevolgtrekking gemaak dat ondersteuning geoutomatiseer moet word.

outomatisering

Wat kan geoutomatiseer word? Byna alles, eintlik. Ek het vier areas geïdentifiseer wat die masjienleer-infrastruktuur definieer:

  • data-insameling;
  • bykomende opleiding;
  • ontplooi;
  • toets en monitering.

As die omgewing onstabiel is en voortdurend verander, dan blyk die hele infrastruktuur rondom die model baie belangriker te wees as die model self. Dit is dalk 'n goeie ou lineêre klassifiseerder, maar as jy dit die regte kenmerke voer en goeie terugvoer van gebruikers kry, sal dit baie beter werk as moderne modelle met al die klokkies en fluitjies.

Terugvoerlus

Hierdie siklus kombineer data-insameling, bykomende opleiding en ontplooiing - trouens die hele modelbywerkingsiklus. Hoekom is dit belangrik? Kyk na die registrasieskedule in die pos:

Werking van masjienleer in Mail.ru Mail

'n Masjienleerontwikkelaar het 'n anti-bot-model geïmplementeer wat verhoed dat bots in e-pos registreer. Die grafiek daal tot 'n waarde waar slegs regte gebruikers oorbly. Alles is puik! Maar vier ure gaan verby, die bots pas hul skrifte aan, en alles keer terug na normaal. In hierdie implementering het die ontwikkelaar 'n maand spandeer om kenmerke by te voeg en die model weer op te lei, maar die strooipossender kon binne vier uur aanpas.

Om nie so ontsettend pynlik te wees en nie later alles oor te hoef te doen nie, moet ons aanvanklik dink hoe die terugvoerlus sal lyk en wat ons gaan doen as die omgewing verander. Kom ons begin met die insameling van data - dit is die brandstof vir ons algoritmes.

Data-insameling

Dit is duidelik dat vir moderne neurale netwerke, hoe meer data, hoe beter, en hulle word in werklikheid deur gebruikers van die produk gegenereer. Gebruikers kan ons help deur data te merk, maar ons kan dit nie misbruik nie, want op 'n stadium sal gebruikers moeg word om jou modelle te voltooi en sal oorskakel na 'n ander produk.

Een van die mees algemene foute (hier verwys ek na Andrew Ng) is te veel fokus op maatstawwe op die toetsdatastel, en nie op terugvoer van die gebruiker nie, wat eintlik die belangrikste maatstaf van die kwaliteit van werk is, aangesien ons skep 'n produk vir die gebruiker. As die gebruiker nie die werk van die model verstaan ​​of hou nie, dan is alles verwoes.

Daarom moet die gebruiker altyd kan stem en moet 'n hulpmiddel vir terugvoer gegee word. As ons dink dat 'n brief wat verband hou met finansies in die posbus aangekom het, moet ons dit "finansies" merk en 'n knoppie teken waarop die gebruiker kan klik en sê dat dit nie finansies is nie.

Terugvoer kwaliteit

Kom ons praat oor die kwaliteit van gebruikersterugvoer. Eerstens kan jy en die gebruiker verskillende betekenisse in een konsep plaas. Byvoorbeeld, jy en jou produkbestuurders dink "finansies" beteken briewe van die bank, en die gebruiker dink dat 'n brief van ouma oor haar pensioen ook na finansies verwys. Tweedens, daar is gebruikers wat onbedagsaam daarvan hou om knoppies te druk sonder enige logika. Derdens kan die gebruiker hom diep misgis in sy gevolgtrekkings. 'n Treffende voorbeeld uit ons praktyk is die implementering van 'n klassifiseerder Nigeriese strooipos, 'n baie snaakse tipe strooipos waar die gebruiker gevra word om etlike miljoene dollars te neem van 'n skielik gevind verre familielid in Afrika. Nadat ons hierdie klassifiseerder geïmplementeer het, het ons die "Nie strooipos"-klikke op hierdie e-posse nagegaan, en dit het geblyk dat 80% daarvan sappige Nigeriese strooipos was, wat daarop dui dat gebruikers uiters liggelowig kan wees.

En laat ons nie vergeet dat die knoppies nie net deur mense geklik kan word nie, maar ook deur allerhande bots wat voorgee om 'n blaaier te wees. So rou terugvoer is nie goed vir leer nie. Wat kan jy met hierdie inligting doen?

Ons gebruik twee benaderings:

  • Terugvoer van gekoppelde ML. Ons het byvoorbeeld 'n aanlyn teenbotstelsel, wat, soos ek genoem het, 'n vinnige besluit neem op grond van 'n beperkte aantal tekens. En daar is 'n tweede, stadige stelsel wat agterna werk. Dit het meer data oor die gebruiker, sy gedrag, ens. Gevolglik word die mees ingeligte besluit geneem; gevolglik het dit hoër akkuraatheid en volledigheid. U kan die verskil in die werking van hierdie stelsels na die eerste een as opleidingsdata rig. Dus, 'n eenvoudiger stelsel sal altyd probeer om die prestasie van 'n meer komplekse een te benader.
  • Klik klassifikasie. U kan eenvoudig elke gebruikerkliek klassifiseer, die geldigheid en bruikbaarheid daarvan evalueer. Ons doen dit in antispam-pos, deur gebruik te maak van gebruikerskenmerke, sy geskiedenis, sender-kenmerke, die teks self en die resultaat van die klassifiseerders. As gevolg hiervan kry ons 'n outomatiese stelsel wat gebruikersterugvoer bekragtig. En aangesien dit baie minder gereeld heropgelei moet word, kan sy werk die basis word vir alle ander stelsels. Die hoofprioriteit in hierdie model is presisie, want opleiding van die model op onakkurate data is belaai met gevolge.

Terwyl ons die data skoonmaak en ons ML-stelsels verder oplei, moet ons nie van die gebruikers vergeet nie, want vir ons is duisende, miljoene foute op die grafiek statistiek, en vir die gebruiker is elke fout 'n tragedie. Benewens die feit dat die gebruiker op een of ander manier met jou fout in die produk moet saamleef, verwag hy dat 'n soortgelyke situasie in die toekoms uitgeskakel sal word, nadat hy terugvoer ontvang het. Daarom is dit altyd die moeite werd om gebruikers nie net die geleentheid te gee om te stem nie, maar ook om die gedrag van ML-stelsels reg te stel, deur byvoorbeeld persoonlike heuristieke vir elke terugvoerkliek te skep; in die geval van pos, kan dit die vermoë wees om te filter sulke briewe volgens sender en titel vir hierdie gebruiker.

Jy moet ook 'n model bou wat gebaseer is op sommige verslae of versoeke om te ondersteun in 'n semi-outomatiese of handmatige modus sodat ander gebruikers nie aan soortgelyke probleme ly nie.

Heuristiek vir leer

Daar is twee probleme met hierdie heuristiek en krukke. Die eerste is dat die steeds toenemende aantal krukke moeilik is om in stand te hou, wat nog te sê hul kwaliteit en prestasie oor die langpad. Die tweede probleem is dat die fout dalk nie gereeld voorkom nie, en 'n paar kliks om die model verder op te lei, sal nie genoeg wees nie. Dit wil voorkom asof hierdie twee onverwante effekte aansienlik geneutraliseer kan word indien die volgende benadering toegepas word.

  1. Ons skep 'n tydelike kruk.
  2. Ons stuur data daarvan na die model, dit werk homself gereeld op, insluitend die ontvangde data. Hier is dit natuurlik belangrik dat die heuristiek hoë akkuraatheid het om nie die kwaliteit van die data in die opleidingstel te verminder nie.
  3. Dan stel ons die monitering in om die kruk te aktiveer, en as die kruk na 'n rukkie nie meer werk nie en heeltemal deur die model bedek is, kan u dit veilig verwyder. Nou is dit onwaarskynlik dat hierdie probleem weer sal gebeur.

So 'n leër van krukke is baie nuttig. Die belangrikste ding is dat hul diens dringend is en nie permanent nie.

Bykomende opleiding

Heropleiding is die proses om nuwe data by te voeg wat verkry is as gevolg van terugvoer van gebruikers of ander stelsels, en 'n bestaande model daaroor op te lei. Daar kan verskeie probleme met bykomende opleiding wees:

  1. Die model ondersteun dalk eenvoudig nie bykomende opleiding nie, maar leer net van nuuts af.
  2. Nêrens in die boek van die natuur word geskryf dat bykomende opleiding beslis die kwaliteit van werk in produksie sal verbeter nie. Dikwels gebeur die teenoorgestelde, dit wil sê, slegs agteruitgang is moontlik.
  3. Veranderinge kan onvoorspelbaar wees. Dit is 'n taamlik subtiele punt wat ons vir onsself geïdentifiseer het. Selfs al toon 'n nuwe model in 'n A/B-toets soortgelyke resultate in vergelyking met die huidige een, beteken dit nie dat dit identies sal werk nie. Hul werk kan in net een persent verskil, wat nuwe foute kan meebring of oues kan terugstuur wat reeds reggestel is. Beide ons en die gebruikers weet reeds hoe om met huidige foute saam te leef, en wanneer 'n groot aantal nuwe foute opduik, kan die gebruiker ook nie verstaan ​​wat aan die gebeur is nie, want hy verwag voorspelbare gedrag.

Daarom is die belangrikste ding in bykomende opleiding om te verseker dat die model verbeter word, of ten minste nie vererger nie.

Die eerste ding wat in gedagte kom wanneer ons oor addisionele opleiding praat, is die Aktiewe Leer-benadering. Wat beteken dit? Byvoorbeeld, die klassifiseerder bepaal of 'n e-pos verband hou met finansies, en rondom sy besluitgrens voeg ons 'n voorbeeld van benoemde voorbeelde by. Dit werk goed, byvoorbeeld in advertensies, waar daar baie terugvoer is en jy die model aanlyn kan oplei. En as daar min terugvoer is, kry ons 'n hoogs bevooroordeelde steekproef relatief tot die produksiedataverspreiding, op grond waarvan dit onmoontlik is om die gedrag van die model tydens werking te evalueer.

Werking van masjienleer in Mail.ru Mail

Trouens, ons doel is om ou patrone, reeds bekende modelle, te bewaar en nuwes aan te skaf. Kontinuïteit is hier belangrik. Die model, wat ons dikwels baie moeite gedoen het om uit te rol, werk reeds, so ons kan op sy prestasie fokus.

Verskillende modelle word in pos gebruik: bome, lineêre, neurale netwerke. Vir elkeen maak ons ​​ons eie bykomende opleidingsalgoritme. In die proses van bykomende opleiding ontvang ons nie net nuwe data nie, maar ook dikwels nuwe funksies, wat ons in al die algoritmes hieronder in ag sal neem.

Lineêre modelle

Kom ons sê ons het logistiese regressie. Ons skep 'n verliesmodel uit die volgende komponente:

  • LogLoss op nuwe data;
  • ons reguleer die gewigte van nuwe kenmerke (ons raak nie aan die oues nie);
  • ons leer ook uit ou data om ou patrone te bewaar;
  • en, miskien, die belangrikste ding: ons voeg Harmoniese Regularisering by, wat waarborg dat die gewigte nie veel sal verander relatief tot die ou model volgens die norm nie.

Aangesien elke verlieskomponent koëffisiënte het, kan ons die optimale waardes vir ons taak kies deur kruisvalidering of gebaseer op produkvereistes.

Werking van masjienleer in Mail.ru Mail

Die bome

Kom ons gaan aan na besluitnemingsbome. Ons het die volgende algoritme vir bykomende opleiding van bome saamgestel:

  1. Die produksie bedryf 'n woud van 100-300 bome, wat op 'n ou datastel opgelei is.
  2. Aan die einde verwyder ons M = 5 stukke en voeg 2M = 10 nuwes by, opgelei op die hele datastel, maar met 'n hoë gewig vir die nuwe data, wat natuurlik 'n inkrementele verandering in die model waarborg.

Natuurlik neem die aantal bome met verloop van tyd baie toe, en hulle moet periodiek verminder word om aan die tydsberekeninge te voldoen. Om dit te doen, gebruik ons ​​die nou alomteenwoordige Knowledge Distillation (KD). Kortliks oor die beginsel van die werking daarvan.

  1. Ons het die huidige "komplekse" model. Ons loop dit op die opleidingsdatastel en kry die klaswaarskynlikheidsverspreiding by die uitset.
  2. Vervolgens lei ons die studentemodel (die model met minder bome in hierdie geval) op om die model se resultate te herhaal deur die klasverspreiding as die teikenveranderlike te gebruik.
  3. Dit is belangrik om hier op te let dat ons nie die datastel-opmerking op enige manier gebruik nie, en daarom kan ons arbitrêre data gebruik. Natuurlik gebruik ons ​​'n datamonster uit die gevegstroom as 'n opleidingsmonster vir die studentemodel. Die opleidingstel stel ons dus in staat om die akkuraatheid van die model te verseker, en die stroommonster waarborg 'n soortgelyke prestasie op die produksieverspreiding, wat kompenseer vir die vooroordeel van die opleidingstel.

Werking van masjienleer in Mail.ru Mail

Die kombinasie van hierdie twee tegnieke (byvoeging van bome en periodiek vermindering van hul getal met behulp van Kennisdistillasie) verseker die bekendstelling van nuwe patrone en volledige kontinuïteit.

Met die hulp van KD voer ons ook verskillende bewerkings op modelkenmerke uit, soos die verwydering van kenmerke en werk aan gapings. In ons geval het ons 'n aantal belangrike statistiese kenmerke (deur senders, teks-hashes, URL's, ens.) wat in die databasis gestoor word, wat geneig is om te misluk. Die model is natuurlik nie gereed vir so 'n ontwikkeling van gebeure nie, aangesien mislukkingsituasies nie in die opleidingstel voorkom nie. In sulke gevalle kombineer ons KD- en aanvullingstegnieke: wanneer ons vir 'n deel van die data oefen, verwyder of herstel ons die nodige kenmerke, en ons neem die oorspronklike etikette (uitsette van die huidige model), en die studentemodel leer om hierdie verspreiding te herhaal .

Werking van masjienleer in Mail.ru Mail

Ons het opgemerk dat hoe ernstiger modelmanipulasie plaasvind, hoe groter word die persentasie draadmonster benodig.

Funksieverwydering, die eenvoudigste operasie, vereis slegs 'n klein deel van die vloei, aangesien slegs 'n paar kenmerke verander, en die huidige model op dieselfde stel opgelei is - die verskil is minimaal. Om die model te vereenvoudig (die aantal bome 'n paar keer te verminder), word 50 tot 50 reeds vereis. En vir weglatings van belangrike statistiese kenmerke wat die prestasie van die model ernstig sal beïnvloed, word nog meer vloei vereis om die werk van die nuwe weglatingsbestande model op alle soorte letters.

Werking van masjienleer in Mail.ru Mail

FastTeks

Kom ons gaan aan na FastText. Laat ek jou daaraan herinner dat die voorstelling (Inbedding) van 'n woord bestaan ​​uit die som van die inbedding van die woord self en al sy letter N-gramme, gewoonlik trigramme. Aangesien daar nogal baie trigramme kan wees, word Bucket Hashing gebruik, dit wil sê om die hele spasie in 'n sekere vaste hashmap om te skakel. As gevolg hiervan word die gewigmatriks verkry met die afmeting van die binneste laag per aantal woorde + emmers.

Met bykomende opleiding verskyn nuwe tekens: woorde en trigramme. Niks betekenisvol gebeur in standaardopvolgopleiding vanaf Facebook nie. Slegs ou gewigte met kruisentropie word heropgelei op nuwe data. Nuwe kenmerke word dus nie gebruik nie; natuurlik het hierdie benadering al die bogenoemde nadele wat verband hou met die onvoorspelbaarheid van die model in produksie. Dit is hoekom ons FastText 'n bietjie verander het. Ons voeg alle nuwe gewigte (woorde en trigramme) by, brei die hele matriks uit met kruisentropie en voeg harmoniese regularisering by na analogie met die lineêre model, wat 'n onbeduidende verandering in die ou gewigte waarborg.

Werking van masjienleer in Mail.ru Mail

CNN

Konvolusionêre netwerke is 'n bietjie meer ingewikkeld. As die laaste lae in die CNN voltooi is, dan kan jy natuurlik harmoniese regularisering toepas en kontinuïteit waarborg. Maar as addisionele opleiding van die hele netwerk nodig is, kan so 'n regularisering nie meer op alle lae toegepas word nie. Daar is egter 'n opsie om komplementêre inbeddings op te lei deur Triplet Loss (oorspronklike artikel).

Drievoudige verlies

Deur 'n teenvissingtaak as voorbeeld te gebruik, kom ons kyk na Triplet Loss in algemene terme. Ons neem ons logo, sowel as positiewe en negatiewe voorbeelde van logo's van ander maatskappye. Ons minimaliseer die afstand tussen die eerste en maksimeer die afstand tussen die tweede, ons doen dit met 'n klein gaping om groter kompaktheid van die klasse te verseker.

Werking van masjienleer in Mail.ru Mail

As ons die netwerk verder oplei, verander ons metrieke ruimte heeltemal, en dit word heeltemal onversoenbaar met die vorige een. Dit is 'n ernstige probleem in probleme wat vektore gebruik. Om hierdie probleem te omseil, sal ons ou inbeddings tydens opleiding inmeng.

Ons het nuwe data by die opleidingstel gevoeg en oefen die tweede weergawe van die model van voor af op. In die tweede stadium lei ons ons netwerk verder op (Finetuning): eers word die laaste laag voltooi, en dan word die hele netwerk ontvries. In die proses om drieling saam te stel, bereken ons slegs 'n deel van die inbeddings deur die opgeleide model te gebruik, die res - deur die ou een te gebruik. Dus, in die proses van bykomende opleiding, verseker ons die verenigbaarheid van metrieke spasies v1 en v2. 'n Unieke weergawe van harmoniese regularisering.

Werking van masjienleer in Mail.ru Mail

Hele argitektuur

As ons die hele stelsel met antispam as 'n voorbeeld beskou, dan is die modelle nie geïsoleer nie, maar in mekaar geneste. Ons neem foto's, teks en ander kenmerke, met behulp van CNN en Fast Text kry ons inbeddings. Vervolgens word klassifiseerders bo-op die inbeddings toegepas, wat tellings vir verskeie klasse verskaf (soorte briewe, strooipos, teenwoordigheid van 'n logo). Die seine en tekens is reeds besig om die bos van bome binne te gaan vir die finale besluit wat geneem moet word. Individuele klassifiseerders in hierdie skema maak dit moontlik om die resultate van die stelsel beter te interpreteer en meer spesifiek komponente te heroplei in geval van probleme, eerder as om al die data in 'n rou vorm in besluitbome in te voer.

Werking van masjienleer in Mail.ru Mail

As gevolg hiervan waarborg ons kontinuïteit op elke vlak. Op die onderste vlak in CNN en Fast Text gebruik ons ​​harmoniese regularisering, vir die klassifiseerders in die middel gebruik ons ​​ook harmoniese regularisering en tempokalibrasie vir konsekwentheid van die waarskynlikheidsverdeling. Wel, boomversterking word inkrementeel opgelei of met behulp van Knowledge Distillation.

Oor die algemeen is die instandhouding van so 'n geneste masjienleerstelsel gewoonlik 'n pyn, aangesien enige komponent op die laer vlak lei tot 'n opdatering van die hele stelsel hierbo. Maar aangesien in ons opstelling elke komponent effens verander en versoenbaar is met die vorige een, kan die hele stelsel stuk vir stuk opgedateer word sonder dat dit nodig is om die hele struktuur op te lei, wat dit moontlik maak om dit te ondersteun sonder ernstige oorkoste.

Ontplooi

Ons het data-insameling en bykomende opleiding van verskillende tipes modelle bespreek, so ons gaan voort met die ontplooiing daarvan in die produksie-omgewing.

A/B-toetsing

Soos ek vroeër gesê het, in die proses om data in te samel, kry ons gewoonlik 'n bevooroordeelde steekproef, waaruit dit onmoontlik is om die produksieprestasie van die model te evalueer. Daarom, wanneer dit ontplooi word, moet die model met die vorige weergawe vergelyk word om te verstaan ​​hoe dinge eintlik gaan, dit wil sê om A/B-toetse uit te voer. Trouens, die proses van uitrol en ontleding van kaarte is redelik roetine en kan maklik geoutomatiseer word. Ons ontplooi ons modelle geleidelik na 5%, 30%, 50% en 100% van gebruikers, terwyl ons alle beskikbare maatstawwe oor modelreaksies en gebruikerterugvoer versamel. In die geval van 'n paar ernstige uitskieters, draai ons die model outomaties terug, en vir ander gevalle, nadat ons 'n voldoende aantal gebruikersklikke ingesamel het, besluit ons om die persentasie te verhoog. Gevolglik bring ons die nuwe model heeltemal outomaties na 50% van gebruikers, en die ontplooiing na die hele gehoor sal deur 'n persoon goedgekeur word, hoewel hierdie stap geoutomatiseer kan word.

Die A/B-toetsproses bied egter ruimte vir optimalisering. Die feit is dat enige A/B-toets redelik lank is (in ons geval neem dit van 6 tot 24 uur, afhangend van die hoeveelheid terugvoer), wat dit redelik duur maak en met beperkte hulpbronne. Daarbenewens word 'n voldoende hoë persentasie vloei vir die toets vereis om die algehele tyd van die A/B-toets in wese te versnel (om 'n statisties beduidende steekproef te werf om maatstawwe teen 'n klein persentasie te evalueer kan baie lank neem), wat maak die aantal A/B-gleuwe uiters beperk. Dit is duidelik dat ons net die mees belowende modelle moet toets, waarvan ons heelwat tydens die bykomende opleidingsproses ontvang.

Om hierdie probleem op te los, het ons 'n aparte klassifiseerder opgelei wat die sukses van 'n A/B-toets voorspel. Om dit te doen, neem ons besluitnemingstatistieke, Presisie, Herroeping en ander maatstawwe op die opleidingstel, op die uitgestelde een en op die steekproef uit die stroom as kenmerke. Ons vergelyk ook die model met die huidige een in produksie, met heuristiek, en neem die kompleksiteit van die model in ag. Deur al hierdie kenmerke te gebruik, evalueer 'n klassifiseerder wat in toetsgeskiedenis opgelei is, kandidaatmodelle, in ons geval is dit woude van bome, en besluit watter een om in die A/B-toets te gebruik.

Werking van masjienleer in Mail.ru Mail

Ten tyde van implementering het hierdie benadering ons in staat gestel om die aantal suksesvolle A/B-toetse verskeie kere te vermeerder.

Toets & Monitering

Toetsing en monitering, vreemd genoeg, benadeel nie ons gesondheid nie, inteendeel, dit verbeter dit en verlig ons van onnodige stres. Toetsing laat jou toe om 'n mislukking te voorkom, en monitering laat jou toe om dit betyds op te spoor om die impak op gebruikers te verminder.

Dit is belangrik om hier te verstaan ​​dat jou stelsel vroeër of later altyd foute sal maak - dit is as gevolg van die ontwikkelingsiklus van enige sagteware. Aan die begin van stelselontwikkeling is daar altyd baie foute totdat alles regkom en die hoofstadium van innovasie voltooi is. Maar met verloop van tyd eis entropie sy tol, en foute verskyn weer - as gevolg van die agteruitgang van komponente rondom en veranderinge in data, waaroor ek aan die begin gepraat het.

Hier wil ek daarop let dat enige masjienleerstelsel beskou moet word vanuit die oogpunt van sy wins deur sy hele lewensiklus. Die grafiek hieronder toon 'n voorbeeld van hoe die stelsel werk om 'n seldsame tipe strooipos op te vang (die lyn in die grafiek is naby nul). Op 'n dag het sy mal geword as gevolg van 'n kenmerk wat verkeerd gekas is. Soos die geluk dit wou hê, was daar geen monitering vir abnormale snellers nie; gevolglik het die stelsel briewe in groot hoeveelhede na die "spam"-lêergids by die besluitnemingsgrens begin stoor. Ten spyte van die regstelling van die gevolge, het die stelsel al soveel keer foute gemaak dat dit selfs oor vyf jaar nie vir homself sal betaal nie. En dit is 'n totale mislukking vanuit die oogpunt van die model se lewensiklus.

Werking van masjienleer in Mail.ru Mail

Daarom kan so 'n eenvoudige ding soos monitering die sleutel in die lewe van 'n model word. Benewens standaard en ooglopende maatstawwe, oorweeg ons die verspreiding van modelresponse en tellings, sowel as die verspreiding van sleutelkenmerkwaardes. Deur KL-divergensie te gebruik, kan ons die huidige verspreiding vergelyk met die historiese een of die waardes in die A/B-toets met die res van die stroom, wat ons in staat stel om anomalieë in die model op te let en veranderinge betyds terug te rol.

In die meeste gevalle stel ons ons eerste weergawes van stelsels bekend deur eenvoudige heuristieke of modelle te gebruik wat ons in die toekoms as monitering gebruik. Byvoorbeeld, ons monitor die NER-model in vergelyking met die gewones vir spesifieke aanlynwinkels, en as die klassifiseerderdekking daal in vergelyking met hulle, verstaan ​​ons die redes. Nog 'n nuttige gebruik van heuristiek!

Resultate van

Kom ons gaan weer oor die sleutelgedagtes van die artikel.

  • Fibdeck. Ons dink altyd aan die gebruiker: hoe hy met ons foute sal saamleef, hoe hy dit sal kan rapporteer. Moenie vergeet dat gebruikers nie 'n bron van suiwer terugvoer vir opleidingsmodelle is nie, en dit moet skoongemaak word met behulp van hulp-ML-stelsels. As dit nie moontlik is om 'n sein van die gebruiker in te samel nie, soek ons ​​alternatiewe bronne van terugvoer, byvoorbeeld gekoppelde stelsels.
  • Bykomende opleiding. Die belangrikste ding hier is kontinuïteit, so ons maak staat op die huidige produksiemodel. Ons lei nuwe modelle op sodat hulle nie veel van die vorige een verskil nie as gevolg van harmoniese regularisering en soortgelyke truuks.
  • Ontplooi. Outo-ontplooiing gebaseer op maatstawwe verminder die tyd vir die implementering van modelle aansienlik. Monitering van statistieke en verspreiding van besluitneming, die aantal val van gebruikers is verpligtend vir jou rustige slaap en produktiewe naweek.

Wel, ek hoop dit help u om u ML-stelsels vinniger te verbeter, dit vinniger te laat bemark en dit meer betroubaar en minder stresvol te maak.

Bron: will.com

Voeg 'n opmerking