Werking van machine learning in Mail.ru Mail

Werking van machine learning in Mail.ru Mail

Gebaseerd op mijn toespraken op Highload++ en DataFest Minsk 2019.

Voor velen is post tegenwoordig een integraal onderdeel van het onlineleven. Met zijn hulp voeren we zakelijke correspondentie uit, slaan we allerlei belangrijke informatie op met betrekking tot financiën, hotelboekingen, het plaatsen van bestellingen en nog veel meer. Medio 2018 hebben we een productstrategie voor postontwikkeling geformuleerd. Hoe zou moderne post eruit moeten zien?

Post moet slim, dat wil zeggen: gebruikers helpen bij het navigeren door de toenemende hoeveelheid informatie: deze op de meest handige manier filteren, structureren en aanbieden. Ze moet zijn bruikbaar, waarmee u verschillende taken rechtstreeks in uw mailbox kunt oplossen, bijvoorbeeld boetes betalen (een functie die ik helaas gebruik). En tegelijkertijd moet mail uiteraard informatiebescherming bieden, spam tegenhouden en bescherming bieden tegen hacking. veilig.

Deze gebieden definiëren een aantal belangrijke problemen, waarvan er vele effectief kunnen worden opgelost met behulp van machinaal leren. Hier volgen voorbeelden van reeds bestaande functies die zijn ontwikkeld als onderdeel van de strategie: één voor elke richting.

  • Smart Reply. Mail heeft een slimme antwoordfunctie. Het neurale netwerk analyseert de tekst van de brief, begrijpt de betekenis en het doel ervan en biedt als resultaat de drie meest geschikte antwoordmogelijkheden: positief, negatief en neutraal. Dit helpt om aanzienlijk tijd te besparen bij het beantwoorden van brieven, en reageert ook vaak op een niet-standaard en grappige manier.
  • E-mails groeperengerelateerd aan bestellingen in online winkels. We winkelen vaak online en in de regel kunnen winkels voor elke bestelling meerdere e-mails sturen. Van AliExpress, de grootste dienst, komen bijvoorbeeld veel brieven binnen voor één bestelling, en we hebben berekend dat in het terminalgeval hun aantal kan oplopen tot 29. Daarom extraheren we met behulp van het Named Entity Recognition-model het bestelnummer en andere informatie uit de tekst en groepeer alle letters in één draad. Ook geven wij de basisinformatie over de bestelling in een apart vak weer, waardoor het makkelijker is om met dit soort e-mail te werken.

    Werking van machine learning in Mail.ru Mail

  • Anti-phishing. Phishing is een bijzonder gevaarlijke, frauduleuze vorm van e-mail, waarmee aanvallers financiële informatie (waaronder de bankkaarten van de gebruiker) en inloggegevens proberen te verkrijgen. Dergelijke brieven bootsen echte brieven na die door de dienst zijn verzonden, ook visueel. Daarom herkennen we met behulp van Computer Vision logo's en de ontwerpstijl van brieven van grote bedrijven (bijvoorbeeld Mail.ru, Sber, Alfa) en houden we hier samen met tekst en andere kenmerken rekening mee in onze spam- en phishing-classificatoren .

Machine learning

Iets over machine learning in e-mail in het algemeen. Mail is een zwaarbelast systeem: gemiddeld 1,5 miljard brieven per dag passeren onze servers voor 30 miljoen DAU-gebruikers. Ongeveer 30 machine learning-systemen ondersteunen alle noodzakelijke functies en features.

Elke letter doorloopt een volledige classificatiepijplijn. Eerst sluiten we spam af en laten goede e-mails achter. Gebruikers merken het werk van antispam vaak niet op, omdat 95-99% van de spam niet eens in de juiste map terechtkomt. Spamherkenning is een zeer belangrijk onderdeel van ons systeem, en het moeilijkste, omdat er op het gebied van antispam een ​​voortdurende aanpassing plaatsvindt tussen verdedigings- en aanvalssystemen, wat een voortdurende technische uitdaging voor ons team oplevert.

Vervolgens scheiden we letters van mensen en robots. E-mails van mensen zijn het belangrijkst, daarom bieden we functies zoals Smart Reply voor hen. Brieven van robots zijn onderverdeeld in twee delen: transactioneel - dit zijn belangrijke brieven van diensten, bijvoorbeeld bevestigingen van aankopen of hotelreserveringen, financiën en informatief - dit zijn zakelijke advertenties, kortingen.

Wij zijn van mening dat transactionele e-mails even belangrijk zijn als persoonlijke correspondentie. Ze moeten bij de hand zijn, omdat we vaak snel informatie moeten vinden over een bestelling of vliegticketreservering, en we besteden tijd aan het zoeken naar deze brieven. Daarom verdelen we ze voor het gemak automatisch in zes hoofdcategorieën: reizen, bestellingen, financiën, tickets, registraties en ten slotte boetes.

Informatiebrieven vormen de grootste en waarschijnlijk minder belangrijke groep, die geen onmiddellijk antwoord vereisen, aangezien er niets significants zal veranderen in het leven van de gebruiker als hij zo'n brief niet leest. In onze nieuwe interface vouwen we ze samen in twee threads: sociale netwerken en nieuwsbrieven, waardoor de inbox visueel wordt leeggemaakt en alleen belangrijke berichten zichtbaar blijven.

Werking van machine learning in Mail.ru Mail

Exploitatie

Een groot aantal systemen veroorzaakt veel bedieningsproblemen. Modellen gaan immers na verloop van tijd achteruit, net als elke andere software: functies gaan kapot, machines vallen uit, code wordt krom. Bovendien veranderen gegevens voortdurend: er worden nieuwe toegevoegd, gedragspatronen van gebruikers worden getransformeerd, enz., dus een model zonder de juiste ondersteuning zal in de loop van de tijd steeds slechter werken.

We mogen niet vergeten dat hoe dieper machinaal leren doordringt in de levens van gebruikers, hoe groter de impact is die zij hebben op het ecosysteem, en, als gevolg daarvan, hoe meer financiële verliezen of winsten marktspelers kunnen ontvangen. Daarom passen spelers zich op steeds meer gebieden aan het werk van ML-algoritmen aan (klassieke voorbeelden zijn adverteren, zoeken en de reeds genoemde antispam).

Bovendien hebben machine learning-taken een eigenaardigheid: elke, zelfs kleine, verandering in het systeem kan veel werk met het model opleveren: werken met data, omscholing, implementatie, wat weken of maanden kan duren. Hoe sneller de omgeving waarin uw modellen opereren verandert, hoe meer moeite het kost om ze te onderhouden. Een team kan veel systemen maken en daar blij mee zijn, maar vervolgens bijna al zijn middelen besteden aan het onderhoud ervan, zonder de mogelijkheid om iets nieuws te doen. We zijn een dergelijke situatie ooit tegengekomen in het antispamteam. En ze kwamen tot de voor de hand liggende conclusie dat ondersteuning geautomatiseerd moet worden.

Automatisering

Wat kan geautomatiseerd worden? Bijna alles eigenlijk. Ik heb vier gebieden geïdentificeerd die de machine learning-infrastructuur definiëren:

  • gegevensverzameling;
  • aanvullende opleiding;
  • aanwenden;
  • testen en monitoren.

Als de omgeving instabiel is en voortdurend verandert, dan blijkt de hele infrastructuur rondom het model veel belangrijker dan het model zelf. Het mag dan een goede oude lineaire classificator zijn, maar als je het de juiste functies geeft en goede feedback krijgt van gebruikers, zal het veel beter werken dan State-Of-The-Art-modellen met alle toeters en bellen.

Terugkoppeling

Deze cyclus combineert gegevensverzameling, aanvullende training en implementatie - in feite de hele modelupdatecyclus. Waarom is het belangrijk? Kijk naar het inschrijfschema in de mail:

Werking van machine learning in Mail.ru Mail

Een machine learning-ontwikkelaar heeft een anti-botmodel geïmplementeerd dat voorkomt dat bots zich in e-mail registreren. De grafiek daalt naar een waarde waarbij alleen echte gebruikers overblijven. Alles is geweldig! Maar vier uur gaan voorbij, de bots passen hun scripts aan en alles wordt weer normaal. Bij deze implementatie was de ontwikkelaar een maand bezig met het toevoegen van functies en het opnieuw trainen van het model, maar de spammer kon zich binnen vier uur aanpassen.

Om niet zo ondraaglijk pijnlijk te zijn en later niet alles opnieuw te hoeven doen, moeten we in eerste instantie nadenken over hoe de feedbackloop eruit zal zien en wat we zullen doen als de omgeving verandert. Laten we beginnen met het verzamelen van gegevens: dit is de brandstof voor onze algoritmen.

Gegevensverzameling

Het is duidelijk dat voor moderne neurale netwerken geldt: hoe meer gegevens, hoe beter, en deze worden in feite gegenereerd door gebruikers van het product. Gebruikers kunnen ons helpen door gegevens te markeren, maar we kunnen hier geen misbruik van maken, omdat gebruikers op een gegeven moment het beu worden om uw modellen in te vullen en overstappen op een ander product.

Een van de meest voorkomende fouten (hier verwijs ik naar Andrew Ng) is dat er te veel aandacht wordt besteed aan de statistieken van de testdataset, en niet aan de feedback van de gebruiker, wat eigenlijk de belangrijkste maatstaf is voor de kwaliteit van het werk, omdat we een product voor de gebruiker. Als de gebruiker het werk van het model niet begrijpt of niet leuk vindt, is alles verpest.

Daarom moet de gebruiker altijd kunnen stemmen en een tool voor feedback krijgen. Als we denken dat er een brief met betrekking tot financiën in de brievenbus is aangekomen, moeten we deze als 'financiën' markeren en een knop tekenen waarop de gebruiker kan klikken en zeggen dat dit geen financiën is.

Feedbackkwaliteit

Laten we het hebben over de kwaliteit van gebruikersfeedback. Ten eerste kunnen jij en de gebruiker verschillende betekenissen in één concept stoppen. U en uw productmanagers denken bijvoorbeeld dat met ‘financiën’ brieven van de bank bedoeld worden, en de gebruiker denkt dat een brief van oma over haar pensioen ook over financiën gaat. Ten tweede zijn er gebruikers die er gedachteloos van houden om zonder enige logica op knoppen te drukken. Ten derde kan de gebruiker zich ernstig vergissen in zijn conclusies. Een sprekend voorbeeld uit onze praktijk is de implementatie van een classifier Nigeriaanse spam, een zeer grappige vorm van spam waarbij de gebruiker wordt gevraagd enkele miljoenen dollars af te nemen van een plotseling gevonden ver familielid in Afrika. Na het implementeren van deze classificatie hebben we de ‘Geen spam’-klikken op deze e-mails gecontroleerd en het bleek dat 80% ervan sappige Nigeriaanse spam was, wat erop wijst dat gebruikers uiterst goedgelovig kunnen zijn.

En laten we niet vergeten dat de knoppen niet alleen door mensen kunnen worden aangeklikt, maar ook door allerlei bots die zich voordoen als een browser. Ruwe feedback is dus niet goed voor het leren. Wat kunt u met deze informatie doen?

We gebruiken twee benaderingen:

  • Feedback van gekoppelde ML. We hebben bijvoorbeeld een online antibotsysteem dat, zoals ik al zei, snel een beslissing neemt op basis van een beperkt aantal signalen. En er is een tweede, langzaam systeem dat achteraf werkt. Het heeft meer gegevens over de gebruiker, zijn gedrag, enz. Als gevolg hiervan wordt de best geïnformeerde beslissing genomen; dienovereenkomstig is deze nauwkeuriger en vollediger. Het verschil in de werking van deze systemen kun je als trainingsgegevens aan het eerste koppelen. Een eenvoudiger systeem zal dus altijd proberen de prestaties van een complexer systeem te benaderen.
  • Klik op classificatie. U kunt eenvoudig elke gebruikersklik classificeren en de geldigheid en bruikbaarheid ervan evalueren. Dit doen we in antispammail, met behulp van gebruikersattributen, zijn geschiedenis, afzenderattributen, de tekst zelf en het resultaat van de classifiers. Als resultaat krijgen we een automatisch systeem dat gebruikersfeedback valideert. En omdat het veel minder vaak hoeft te worden omgeschoold, kan zijn werk de basis worden voor alle andere systemen. De belangrijkste prioriteit in dit model is precisie, omdat het trainen van het model op onnauwkeurige gegevens gepaard gaat met consequenties.

Terwijl we de gegevens opschonen en onze ML-systemen verder trainen, mogen we de gebruikers niet vergeten, want voor ons zijn duizenden, miljoenen fouten in de grafiek statistieken, en voor de gebruiker is elke bug een tragedie. Naast het feit dat de gebruiker op de een of andere manier met uw fout in het product moet leven, verwacht hij na het ontvangen van feedback dat een soortgelijke situatie in de toekomst zal worden geëlimineerd. Daarom is het altijd de moeite waard om gebruikers niet alleen de mogelijkheid te geven om te stemmen, maar ook om het gedrag van ML-systemen te corrigeren, door bijvoorbeeld persoonlijke heuristieken te creëren voor elke feedbackklik; in het geval van e-mail kan dit de mogelijkheid zijn om te filteren dergelijke brieven op afzender en titel voor deze gebruiker.

U moet ook een model bouwen op basis van enkele rapporten of verzoeken om dit in een semi-automatische of handmatige modus te ondersteunen, zodat andere gebruikers niet met soortgelijke problemen te maken krijgen.

Heuristieken voor leren

Er zijn twee problemen met deze heuristieken en krukken. De eerste is dat het steeds groter wordende aantal krukken moeilijk te onderhouden is, laat staan ​​de kwaliteit en prestaties ervan op de lange termijn. Het tweede probleem is dat de fout misschien niet vaak voorkomt en dat een paar klikken om het model verder te trainen niet voldoende zullen zijn. Het lijkt erop dat deze twee niet-gerelateerde effecten aanzienlijk kunnen worden geneutraliseerd als de volgende aanpak wordt toegepast.

  1. We creëren een tijdelijke kruk.
  2. We sturen er gegevens van naar het model, het werkt zichzelf regelmatig bij, ook over de ontvangen gegevens. Hier is het uiteraard belangrijk dat de heuristieken een hoge nauwkeurigheid hebben om de kwaliteit van de gegevens in de trainingsset niet te verminderen.
  3. Vervolgens stellen we de monitoring zo in dat de kruk wordt geactiveerd, en als de kruk na enige tijd niet meer werkt en volledig door het model wordt bedekt, kunt u deze veilig verwijderen. Het is onwaarschijnlijk dat dit probleem zich nog eens zal voordoen.

Een leger krukken is dus erg handig. Het belangrijkste is dat hun service urgent is en niet permanent.

Aanvullende opleiding

Omscholing is het proces waarbij nieuwe gegevens worden toegevoegd die zijn verkregen als resultaat van feedback van gebruikers of andere systemen, en waarop een bestaand model wordt getraind. Er kunnen verschillende problemen zijn met aanvullende training:

  1. Het model ondersteunt mogelijk eenvoudigweg geen aanvullende training, maar leert alleen vanaf nul.
  2. Nergens in het boek van de natuur staat dat aanvullende training de kwaliteit van het werk in de productie zeker zal verbeteren. Vaak gebeurt het tegenovergestelde, dat wil zeggen dat alleen verslechtering mogelijk is.
  3. Veranderingen kunnen onvoorspelbaar zijn. Dit is een nogal subtiel punt dat we voor onszelf hebben geïdentificeerd. Zelfs als een nieuw model in een A/B-test vergelijkbare resultaten laat zien als het huidige, betekent dit niet dat het identiek zal werken. Hun werk kan slechts één procent verschillen, wat nieuwe fouten kan opleveren of oude fouten kan opleveren die al zijn gecorrigeerd. Zowel wij als de gebruikers weten al hoe te leven met huidige fouten, en wanneer er een groot aantal nieuwe fouten optreden, begrijpt de gebruiker mogelijk ook niet wat er gebeurt, omdat hij voorspelbaar gedrag verwacht.

Daarom is het belangrijkste bij aanvullende training ervoor te zorgen dat het model wordt verbeterd, of in ieder geval niet verslechterd.

Het eerste dat in ons opkomt als we het over aanvullende training hebben, is de Active Learning-aanpak. Wat betekent dit? De classificator bepaalt bijvoorbeeld of een e-mail verband houdt met financiën, en rond de beslissingsgrens voegen we een voorbeeld van gelabelde voorbeelden toe. Dit werkt bijvoorbeeld goed in de reclame, waar veel feedback is en je het model online kunt trainen. En als er weinig feedback is, krijgen we een zeer vertekende steekproef ten opzichte van de distributie van productiegegevens, op basis waarvan het onmogelijk is om het gedrag van het model tijdens bedrijf te evalueren.

Werking van machine learning in Mail.ru Mail

In feite is ons doel om oude patronen en reeds bekende modellen te behouden en nieuwe te verwerven. Continuïteit is hierbij belangrijk. Het model, waarvan we vaak veel moeite hebben gedaan om het uit te rollen, werkt al, dus we kunnen ons concentreren op de prestaties ervan.

In mail worden verschillende modellen gebruikt: bomen, lineaire, neurale netwerken. Voor elk maken we ons eigen aanvullende trainingsalgoritme. Tijdens aanvullende training ontvangen we niet alleen nieuwe gegevens, maar vaak ook nieuwe functies, waarmee we in alle onderstaande algoritmen rekening zullen houden.

Lineaire modellen

Laten we zeggen dat we logistieke regressie hebben. We maken een verliesmodel op basis van de volgende componenten:

  • LogLoss op nieuwe gegevens;
  • we regulariseren de gewichten van nieuwe functies (we raken de oude niet aan);
  • we leren ook van oude data om oude patronen te behouden;
  • en misschien wel het allerbelangrijkste: we voegen Harmonische Regularisatie toe, wat garandeert dat de gewichten niet veel zullen veranderen ten opzichte van het oude model volgens de norm.

Omdat elke verliescomponent coëfficiënten heeft, kunnen we de optimale waarden voor onze taak selecteren door middel van kruisvalidatie of op basis van productvereisten.

Werking van machine learning in Mail.ru Mail

Деревья

Laten we verder gaan met de beslisbomen. We hebben het volgende algoritme samengesteld voor aanvullende training van bomen:

  1. De productie beheert een bos van 100-300 bomen, dat is getraind op een oude dataset.
  2. Aan het einde verwijderen we M = 5 stuks en voegen we 2M = 10 nieuwe toe, getraind op de gehele dataset, maar met een hoog gewicht voor de nieuwe gegevens, wat uiteraard een incrementele verandering in het model garandeert.

Het is duidelijk dat het aantal bomen in de loop van de tijd enorm toeneemt, en dat ze periodiek moeten worden verminderd om aan de timing te voldoen. Om dit te doen, gebruiken we de inmiddels alomtegenwoordige Knowledge Distillation (KD). Kort over het principe van de werking ervan.

  1. We hebben het huidige ‘complexe’ model. We voeren het uit op de trainingsgegevensset en krijgen de klassenkansverdeling bij de uitvoer.
  2. Vervolgens trainen we het leerlingmodel (in dit geval het model met minder bomen) om de resultaten van het model te herhalen met de klassenverdeling als doelvariabele.
  3. Het is belangrijk op te merken dat we op geen enkele manier gebruik maken van de opmaak van de dataset, en dat we daarom willekeurige gegevens kunnen gebruiken. Uiteraard gebruiken we een datavoorbeeld uit de gevechtsstroom als trainingsvoorbeeld voor het studentenmodel. De trainingsset stelt ons dus in staat de nauwkeurigheid van het model te garanderen, en het stroommonster garandeert vergelijkbare prestaties op de productiedistributie, waardoor de bias van de trainingsset wordt gecompenseerd.

Werking van machine learning in Mail.ru Mail

De combinatie van deze twee technieken (bomen toevoegen en periodiek verminderen met behulp van Knowledge Distillation) zorgt voor de introductie van nieuwe patronen en volledige continuïteit.

Met behulp van KD voeren we ook verschillende bewerkingen uit op modelkenmerken, zoals het verwijderen van kenmerken en het werken aan gaten. In ons geval hebben we een aantal belangrijke statistische kenmerken (door afzenders, teksthashes, URL's, enz.) die in de database zijn opgeslagen en die vaak mislukken. Het model is natuurlijk niet klaar voor een dergelijke ontwikkeling van gebeurtenissen, omdat faalsituaties niet voorkomen in de trainingsset. In dergelijke gevallen combineren we KD- en augmentatietechnieken: bij het trainen voor een deel van de gegevens verwijderen of resetten we de noodzakelijke functies, en nemen we de originele labels (uitvoer van het huidige model), en het studentenmodel leert deze verdeling te herhalen .

Werking van machine learning in Mail.ru Mail

We hebben gemerkt dat hoe serieuzer modelmanipulatie plaatsvindt, hoe groter het vereiste percentage draadmonster is.

Het verwijderen van functies, de eenvoudigste handeling, vereist slechts een klein deel van de stroom, aangezien slechts een paar functies veranderen en het huidige model op dezelfde set is getraind - het verschil is minimaal. Om het model te vereenvoudigen (het aantal bomen meerdere keren terug te brengen) zijn er al 50 tot 50 nodig. En voor het weglaten van belangrijke statistische kenmerken die de prestaties van het model ernstig zullen beïnvloeden, is er nog meer stroom nodig om het werk van de nieuw weglatingbestendig model op alle soorten letters.

Werking van machine learning in Mail.ru Mail

SnelTekst

Laten we verder gaan met FastText. Laat me je eraan herinneren dat de representatie (inbedding) van een woord bestaat uit de som van de inbedding van het woord zelf en al zijn letter N-grammen, meestal trigrammen. Omdat er nogal wat trigrammen kunnen zijn, wordt er gebruik gemaakt van Bucket Hashing, dat wil zeggen het omzetten van de hele ruimte in een bepaalde vaste hashmap. Hierdoor wordt de gewichtsmatrix verkregen met de afmeting van de binnenlaag per aantal woorden + emmers.

Met aanvullende training verschijnen er nieuwe tekens: woorden en trigrammen. Bij de standaard vervolgtrainingen van Facebook gebeurt er niets noemenswaardigs. Alleen oude gewichten met kruis-entropie worden omgeschoold op basis van nieuwe gegevens. Er worden dus geen nieuwe functies gebruikt; uiteraard heeft deze aanpak alle hierboven beschreven nadelen die verband houden met de onvoorspelbaarheid van het model tijdens de productie. Daarom hebben we FastText een beetje aangepast. We voegen alle nieuwe gewichten toe (woorden en trigrammen), breiden de hele matrix uit met kruis-entropie en voegen harmonische regularisatie toe naar analogie met het lineaire model, wat een onbeduidende verandering in de oude gewichten garandeert.

Werking van machine learning in Mail.ru Mail

CNN

Convolutionele netwerken zijn iets ingewikkelder. Als de laatste lagen in het CNN zijn afgerond, kun je uiteraard harmonische regularisatie toepassen en de continuïteit garanderen. Maar als aanvullende training van het hele netwerk nodig is, kan een dergelijke regularisatie niet langer op alle lagen worden toegepast. Er is echter een optie om complementaire inbedding te trainen via Triplet Loss (origineel artikel).

Triplet verlies

Laten we, met een anti-phishing-taak als voorbeeld, Triplet Loss in algemene termen bekijken. We nemen ons logo, evenals positieve en negatieve voorbeelden van logo's van andere bedrijven. We minimaliseren de afstand tussen de eerste en maximaliseren de afstand tussen de tweede, we doen dit met een kleine opening om een ​​grotere compactheid van de klassen te garanderen.

Werking van machine learning in Mail.ru Mail

Als we het netwerk verder trainen, verandert onze metrische ruimte volledig en wordt deze volledig incompatibel met de vorige. Dit is een serieus probleem bij problemen waarbij vectoren worden gebruikt. Om dit probleem te omzeilen, zullen we tijdens de training oude inbedding toevoegen.

We hebben nieuwe gegevens aan de trainingsset toegevoegd en trainen de tweede versie van het model helemaal opnieuw. In de tweede fase trainen we ons netwerk verder (Finetuning): eerst wordt de laatste laag voltooid en vervolgens wordt het hele netwerk ontdooid. Tijdens het samenstellen van tripletten berekenen we slechts een deel van de inbedding met behulp van het getrainde model, de rest - met behulp van het oude. Tijdens het aanvullende trainingsproces zorgen we dus voor de compatibiliteit van metrische spaties v1 en v2. Een unieke versie van harmonische regularisatie.

Werking van machine learning in Mail.ru Mail

Volledige architectuur

Als we het hele systeem met antispam als voorbeeld beschouwen, staan ​​de modellen niet geïsoleerd, maar zijn ze in elkaar genest. We maken foto's, tekst en andere functies, en met behulp van CNN en Fast Text krijgen we insluitingen. Vervolgens worden er classifiers bovenop de embeddings toegepast, die scores opleveren voor verschillende klassen (soorten letters, spam, aanwezigheid van een logo). De signalen en borden gaan al het bomenbos in om de definitieve beslissing te nemen. Individuele classificatoren in dit schema maken het mogelijk om de resultaten van het systeem beter te interpreteren en meer specifiek componenten opnieuw te trainen in geval van problemen, in plaats van alle gegevens in ruwe vorm in beslissingsbomen in te voeren.

Werking van machine learning in Mail.ru Mail

Hierdoor garanderen wij continuïteit op elk niveau. Op het onderste niveau in CNN en Fast Text gebruiken we harmonische regularisatie, voor de classificatoren in het midden gebruiken we ook harmonische regularisatie en snelheidskalibratie voor consistentie van de waarschijnlijkheidsverdeling. Welnu, het stimuleren van bomen wordt stapsgewijs getraind of met behulp van Knowledge Distillation.

Over het algemeen is het onderhouden van een dergelijk genest machine learning-systeem meestal lastig, omdat elk onderdeel op het lagere niveau leidt tot een update van het hele systeem erboven. Maar aangezien in onze opstelling elk onderdeel enigszins verandert en compatibel is met het vorige, kan het hele systeem stukje bij beetje worden bijgewerkt zonder dat de hele structuur opnieuw hoeft te worden getraind, waardoor het kan worden ondersteund zonder serieuze overhead.

Aanwenden

We hebben het verzamelen van gegevens en aanvullende training van verschillende soorten modellen besproken, dus we gaan verder met de implementatie ervan in de productieomgeving.

A/B-testen

Zoals ik al eerder zei, krijgen we tijdens het verzamelen van gegevens meestal een vertekende steekproef, waaruit het onmogelijk is om de productieprestaties van het model te evalueren. Daarom moet het model bij de implementatie worden vergeleken met de vorige versie om te begrijpen hoe het werkelijk gaat, dat wil zeggen om A/B-tests uit te voeren. In feite is het proces van het uitrollen en analyseren van grafieken vrij routinematig en kan eenvoudig worden geautomatiseerd. We rollen onze modellen geleidelijk uit naar 5%, 30%, 50% en 100% van de gebruikers, terwijl we alle beschikbare statistieken over modelreacties en gebruikersfeedback verzamelen. In het geval van enkele ernstige uitschieters draaien we het model automatisch terug, en voor andere gevallen, nadat we voldoende gebruikersklikken hebben verzameld, besluiten we het percentage te verhogen. Als gevolg hiervan brengen we het nieuwe model volledig automatisch naar 50% van de gebruikers en wordt de uitrol naar het gehele publiek door een persoon goedgekeurd, hoewel deze stap geautomatiseerd kan worden.

Het A/B-testproces biedt echter ruimte voor optimalisatie. Feit is dat elke A/B-test behoorlijk lang duurt (in ons geval duurt het 6 tot 24 uur, afhankelijk van de hoeveelheid feedback), wat het behoorlijk duur maakt en met beperkte middelen. Bovendien is er een voldoende hoog percentage flow voor de test vereist om de totale tijd van de A/B-test aanzienlijk te versnellen (het werven van een statistisch significante steekproef om met een klein percentage de statistieken te evalueren kan erg lang duren), waardoor het aantal A/B-slots is uiterst beperkt. Uiteraard hoeven we alleen de meest veelbelovende modellen te testen, waarvan we tijdens het aanvullende trainingsproces behoorlijk wat krijgen.

Om dit probleem op te lossen hebben we een aparte classifier getraind die het succes van een A/B-test voorspelt. Om dit te doen, nemen we besluitvormingsstatistieken, precisie, herinnering en andere statistieken over de trainingsset, de uitgestelde training en het voorbeeld uit de stream als functies. We vergelijken het model ook met het huidige in productie, met heuristieken, en houden rekening met de complexiteit van het model. Met behulp van al deze functies evalueert een classificator die is getraind in de testgeschiedenis kandidaat-modellen (in ons geval zijn dit bossen met bomen) en beslist welke hij in de A/B-test moet gebruiken.

Werking van machine learning in Mail.ru Mail

Deze aanpak heeft ons ten tijde van de implementatie in staat gesteld het aantal succesvolle A/B-tests meerdere malen te vergroten.

Testen en monitoren

Testen en monitoren zijn, vreemd genoeg, niet schadelijk voor onze gezondheid; integendeel, ze verbeteren deze en bevrijden ons van onnodige stress. Door te testen kunt u een storing voorkomen, en door te monitoren kunt u deze tijdig detecteren om de impact voor gebruikers te beperken.

Het is belangrijk om te begrijpen dat uw systeem vroeg of laat altijd fouten zal maken - dit komt door de ontwikkelingscyclus van welke software dan ook. Aan het begin van de systeemontwikkeling zijn er altijd veel bugs totdat alles is opgelost en de hoofdfase van innovatie is voltooid. Maar na verloop van tijd eist entropie zijn tol en verschijnen er opnieuw fouten - als gevolg van de degradatie van componenten en veranderingen in gegevens, waar ik het in het begin over had.

Hier zou ik willen opmerken dat elk machine learning-systeem moet worden bekeken vanuit het oogpunt van de winst gedurende de gehele levenscyclus ervan. De onderstaande grafiek toont een voorbeeld van hoe het systeem werkt om een ​​zeldzame vorm van spam te onderscheppen (de lijn in de grafiek is bijna nul). Op een dag werd ze gek vanwege een verkeerd in de cache opgeslagen attribuut. Het toeval wilde dat er geen controle was op abnormale triggers; als gevolg daarvan begon het systeem brieven in grote hoeveelheden op te slaan in de map ‘spam’ op de besluitvormingsgrens. Ondanks het corrigeren van de gevolgen heeft het systeem al zo vaak fouten gemaakt dat het zichzelf zelfs over vijf jaar niet zal terugbetalen. En dit is een complete mislukking vanuit het oogpunt van de levenscyclus van het model.

Werking van machine learning in Mail.ru Mail

Daarom kan zoiets eenvoudigs als monitoring een sleutelrol spelen in de levensduur van een model. Naast standaard en voor de hand liggende meetgegevens houden we rekening met de verdeling van modelreacties en -scores, evenals met de verdeling van de belangrijkste kenmerkwaarden. Met behulp van KL-divergentie kunnen we de huidige distributie vergelijken met de historische of de waarden in de A/B-test met de rest van de stream, waardoor we afwijkingen in het model kunnen opmerken en wijzigingen tijdig kunnen terugdraaien.

In de meeste gevallen lanceren we onze eerste versies van systemen met behulp van eenvoudige heuristieken of modellen die we in de toekomst als monitoring gebruiken. We monitoren bijvoorbeeld het NER-model in vergelijking met de reguliere modellen voor specifieke online winkels, en als de classificatiedekking in vergelijking daarmee daalt, begrijpen we de redenen. Nog een nuttig gebruik van heuristiek!

Resultaten van

Laten we de belangrijkste ideeën van het artikel nog eens doornemen.

  • Fibdek. Wij denken altijd aan de gebruiker: hoe hij met onze fouten zal leven, hoe hij deze zal kunnen melden. Vergeet niet dat gebruikers geen bron van pure feedback zijn voor trainingsmodellen, en dat dit moet worden opgelost met behulp van aanvullende ML-systemen. Als het niet mogelijk is om een ​​signaal van de gebruiker te verzamelen, zoeken we naar alternatieve feedbackbronnen, bijvoorbeeld verbonden systemen.
  • Aanvullende opleiding. Het belangrijkste hier is continuïteit, dus we vertrouwen op het huidige productiemodel. We trainen nieuwe modellen zodat ze niet veel verschillen van de vorige als gevolg van harmonische regularisatie en soortgelijke trucs.
  • Aanwenden. Automatische implementatie op basis van statistieken verkort de tijd voor het implementeren van modellen aanzienlijk. Het monitoren van statistieken en distributie van besluitvorming, het aantal valpartijen van gebruikers is verplicht voor uw goede nachtrust en een productief weekend.

Ik hoop dat dit je helpt je ML-systemen sneller te verbeteren, ze sneller op de markt te brengen en ze betrouwbaarder en minder stressvol te maken.

Bron: www.habr.com

Voeg een reactie