Koneoppimisen käyttö Mail.ru Mailissa

Koneoppimisen käyttö Mail.ru Mailissa

Perustuu puheisiini Highload++:ssa ja DataFest Minsk 2019:ssä.

Monille nykyään posti on olennainen osa verkkoelämää. Sen avulla hoidamme liikekirjeenvaihtoa, tallennamme kaikenlaista tärkeää talouteen, hotellivarauksiin, tilausten tekemiseen ja moneen muuhun liittyvää tietoa. Vuoden 2018 puolivälissä muotoilimme tuotestrategian postin kehittämiseen. Millaista nykyajan postin pitäisi olla?

Postin pitää olla fiksu, eli auttaa käyttäjiä navigoimaan kasvavassa tiedon määrässä: suodata, jäsentä ja tarjoa se kätevimmällä tavalla. Hänen täytyy olla hyödyllinen, jonka avulla voit ratkaista erilaisia ​​tehtäviä suoraan postilaatikossasi, esimerkiksi maksaa sakkoja (toiminto, jota valitettavasti käytän). Ja samalla tietysti postin on tarjottava tietosuojaus, joka estää roskapostin ja suojaa hakkerointia vastaan, eli olla turvallinen.

Nämä alueet määrittelevät joukon keskeisiä ongelmia, joista monet voidaan ratkaista tehokkaasti koneoppimisen avulla. Tässä on esimerkkejä jo olemassa olevista ominaisuuksista, jotka on kehitetty osana strategiaa - yksi jokaiseen suuntaan.

  • Älykäs vastaus. Mailissa on älykäs vastausominaisuus. Hermoverkko analysoi kirjeen tekstin, ymmärtää sen merkityksen ja tarkoituksen ja tarjoaa tuloksena kolme sopivinta vastausvaihtoehtoa: positiivinen, negatiivinen ja neutraali. Tämä säästää huomattavasti aikaa kirjeisiin vastaamisessa ja vastaa usein myös epätyypillisellä ja hauskalla tavalla.
  • Sähköpostien ryhmittelyliittyvät verkkokauppojen tilauksiin. Teemme usein ostoksia verkossa, ja pääsääntöisesti kaupat voivat lähettää useita sähköpostiviestejä jokaisesta tilauksesta. Esimerkiksi AliExpressistä, suurimmasta palvelusta, yhdestä tilauksesta tulee paljon kirjeitä, ja laskimme, että päätekotelossa niiden lukumäärä voi nousta jopa 29:ään. Siksi nimetyn kokonaisuuden tunnistusmallia käyttämällä poimimme tilausnumeron ja muut tiedot tekstistä ja ryhmittele kaikki kirjaimet yhteen säiettä. Näytämme myös tilauksen perustiedot erillisessä laatikossa, mikä helpottaa tämäntyyppisten sähköpostien käsittelyä.

    Koneoppimisen käyttö Mail.ru Mailissa

  • Tietojenkalastelun torjunta. Tietojenkalastelu on erityisen vaarallinen petollinen sähköpostityyppi, jonka avulla hyökkääjät yrittävät saada taloudellisia tietoja (mukaan lukien käyttäjän pankkikortit) ja kirjautumisia. Tällaiset kirjeet jäljittelevät palvelun lähettämiä todellisia kirjeitä, myös visuaalisesti. Siksi tunnistamme Computer Visionin avulla suurten yritysten (esim. Mail.ru, Sber, Alfa) logot ja kirjeiden suunnittelutyylin ja otamme sen huomioon tekstin ja muiden ominaisuuksien ohella roskaposti- ja tietojenkalasteluluokittelijoissamme. .

Koneoppiminen

Vähän sähköpostin koneoppimisesta yleisesti. Mail on erittäin kuormitettu järjestelmä: keskimäärin 1,5 miljardia kirjettä päivässä kulkee palvelimillamme 30 miljoonalle DAU-käyttäjälle. Noin 30 koneoppimisjärjestelmää tukee kaikkia tarvittavia toimintoja ja ominaisuuksia.

Jokainen kirjain kulkee koko luokitteluputken läpi. Ensin leikkaamme roskapostin ja jätämme hyvät sähköpostit. Käyttäjät eivät usein huomaa roskapostin torjuntaa, koska 95-99% roskapostista ei edes pääty oikeaan kansioon. Roskapostin tunnistus on erittäin tärkeä osa järjestelmäämme ja vaikein, koska roskapostin torjunta-alalla puolustus- ja hyökkäysjärjestelmien välillä tapahtuu jatkuvaa sopeutumista, mikä tarjoaa jatkuvan suunnitteluhaasteen tiimillemme.

Seuraavaksi erotamme kirjeet ihmisistä ja roboteista. Ihmisten sähköpostit ovat tärkeimpiä, joten tarjoamme heille ominaisuuksia, kuten Smart Reply. Robottien kirjeet on jaettu kahteen osaan: transaktio - nämä ovat tärkeitä kirjeitä palveluilta, esimerkiksi vahvistukset ostoista tai hotellivarauksista, talouksista ja tiedotus - nämä ovat yritysmainontaa, alennuksia.

Uskomme, että tapahtumasähköpostit ovat yhtä tärkeitä kuin henkilökohtainen kirjeenvaihto. Niiden pitäisi olla käsillä, koska meidän on usein löydettävä nopeasti tietoa tilauksesta tai lentolipun varauksesta, ja käytämme aikaa näiden kirjeiden etsimiseen. Siksi jaamme ne automaattisesti kuuteen pääluokkaan: matkat, tilaukset, rahoitus, liput, rekisteröinnit ja lopuksi sakot.

Tiedotuskirjeet ovat suurin ja luultavasti vähemmän tärkeä ryhmä, joka ei vaadi välitöntä vastausta, sillä mikään merkittävä ei muutu käyttäjän elämässä, jos hän ei lue tällaista kirjettä. Uudessa käyttöliittymässämme kutistamme ne kahteen säikeeseen: sosiaalisiin verkostoihin ja uutiskirjeisiin, tyhjentäen näin visuaalisesti postilaatikon ja jättäen vain tärkeät viestit näkyviin.

Koneoppimisen käyttö Mail.ru Mailissa

hyväksikäyttö

Suuri määrä järjestelmiä aiheuttaa paljon vaikeuksia käytössä. Loppujen lopuksi mallit heikkenevät ajan myötä, kuten mikä tahansa ohjelmisto: ominaisuudet hajoavat, koneet epäonnistuvat, koodi muuttuu vinoon. Lisäksi data muuttuu jatkuvasti: uusia lisätään, käyttäjien käyttäytymismalleja muutetaan jne., joten malli ilman asianmukaista tukea toimii huonommin ja huonommin ajan myötä.

Emme saa unohtaa, että mitä syvemmälle koneoppiminen tunkeutuu käyttäjien elämään, sitä suurempi vaikutus niillä on ekosysteemiin, ja sen seurauksena markkinatoimijat voivat saada enemmän taloudellisia tappioita tai voittoja. Siksi pelaajat sopeutuvat yhä useammilla alueilla ML-algoritmien työhön (klassisia esimerkkejä ovat mainonta, haku ja jo mainittu roskapostin esto).

Myös koneoppimistehtävissä on erityispiirre: mikä tahansa, pienikin, järjestelmän muutos voi tuottaa mallin kanssa paljon työtä: tietojen käsittelyä, uudelleenkoulutusta, käyttöönottoa, mikä voi viedä viikkoja tai kuukausia. Siksi mitä nopeammin ympäristö, jossa mallisi toimivat, muuttuu, sitä enemmän vaivaa niiden ylläpito vaatii. Tiimi voi luoda paljon järjestelmiä ja olla siitä iloinen, mutta sitten käyttää lähes kaikki resurssinsa niiden ylläpitoon ilman mahdollisuutta tehdä mitään uutta. Törmäsimme kerran tällaiseen tilanteeseen roskapostin torjuntatiimissä. Ja he tekivät ilmeisen johtopäätöksen, että tuki on automatisoitava.

automaatio

Mitä voidaan automatisoida? Itse asiassa melkein kaikki. Olen tunnistanut neljä aluetta, jotka määrittelevät koneoppimisinfrastruktuurin:

  • tiedonkeruu;
  • lisäkoulutus;
  • ottaa käyttöön;
  • testaus ja seuranta.

Jos ympäristö on epävakaa ja jatkuvasti muuttuva, niin koko mallia ympäröivä infrastruktuuri osoittautuu paljon tärkeämmäksi kuin itse malli. Se voi olla vanha kunnon lineaarinen luokitin, mutta jos syötät sille oikeat ominaisuudet ja saat hyvää palautetta käyttäjiltä, ​​se toimii paljon paremmin kuin huippuluokan mallit, joissa on kaikki kellot ja pillit.

Palautesilmukka

Tämä sykli yhdistää tiedonkeruun, lisäkoulutuksen ja käyttöönoton – itse asiassa koko mallin päivityssyklin. Miksi se on tärkeää? Katso ilmoittautumisaikataulu postissa:

Koneoppimisen käyttö Mail.ru Mailissa

Koneoppimisen kehittäjä on ottanut käyttöön anti-bot-mallin, joka estää botteja rekisteröitymästä sähköpostiin. Kaavio putoaa arvoon, jossa jäljellä on vain todellisia käyttäjiä. Kaikki on mahtavaa! Mutta neljä tuntia kuluu, botit säätelevät skriptejä ja kaikki palaa normaaliksi. Tässä toteutuksessa kehittäjä käytti kuukauden lisäten ominaisuuksia ja kouluttaen mallia uudelleen, mutta roskapostittaja pystyi mukautumaan neljässä tunnissa.

Jotta ei olisi niin tuskallisen tuskallista ja kaikkea ei tarvitsisi tehdä uudelleen myöhemmin, meidän on aluksi mietittävä, miltä palautesilmukka näyttää ja mitä teemme, jos ympäristö muuttuu. Aloitetaan tietojen keräämisestä – tämä on algoritmiemme polttoaine.

Tiedonkeruu

On selvää, että nykyaikaisissa neuroverkoissa mitä enemmän dataa, sitä parempi, ja ne ovat itse asiassa tuotteen käyttäjien tuottamia. Käyttäjät voivat auttaa meitä merkitsemällä tietoja, mutta emme voi väärinkäyttää tätä, koska jossain vaiheessa käyttäjät kyllästyvät mallinneiden viimeistelyyn ja siirtyvät toiseen tuotteeseen.

Yksi yleisimmistä virheistä (tässä viittaan Andrew Ng:iin) on liiallinen keskittyminen testitietojoukon mittareihin, eikä käyttäjän palautteeseen, joka on itse asiassa tärkein työn laadun mittari, koska luomme tuote käyttäjälle. Jos käyttäjä ei ymmärrä tai ei pidä mallin työstä, kaikki on pilalla.

Siksi käyttäjän tulee aina voida äänestää ja hänelle tulee antaa työkalu palautetta varten. Jos luulemme, että postilaatikkoon on saapunut talouteen liittyvä kirje, meidän on merkittävä se "rahoitus" ja piirrettävä nappi, jota käyttäjä voi napsauttaa ja sanoa, että tämä ei ole rahoitusta.

Palautteen laatu

Puhutaanpa käyttäjäpalautteen laadusta. Ensinnäkin sinä ja käyttäjä voitte laittaa eri merkityksiä samaan käsitteeseen. Esimerkiksi sinä ja tuotepäällikkösi ajattelette, että "rahoitus" tarkoittaa pankin kirjeitä, ja käyttäjän mielestä mummon kirje hänen eläkkeestään viittaa myös rahoitukseen. Toiseksi, on käyttäjiä, jotka mielettömästi rakastavat painikkeiden painamista ilman logiikkaa. Kolmanneksi käyttäjä voi olla syvästi väärässä päätelmissään. Silmiinpistävä esimerkki käytännöstämme on luokittelijan käyttöönotto Nigerialainen roskaposti, erittäin hauska roskapostityyppi, jossa käyttäjää pyydetään ottamaan useita miljoonia dollareita yllättäen löydetyltä kaukaisesta sukulaisesta Afrikasta. Tämän luokittelun käyttöönoton jälkeen tarkistimme näiden sähköpostien "Ei roskaposti" -napsautukset, ja kävi ilmi, että 80 % niistä oli mehukasta nigerialaista roskapostia, mikä viittaa siihen, että käyttäjät voivat olla erittäin herkkäuskoisia.

Ja älkäämme unohtako, että painikkeita voivat napsauttaa paitsi ihmiset, myös kaikenlaiset selaimeksi esittävät robotit. Raaka palaute ei siis ole hyväksi oppimiselle. Mitä näillä tiedoilla voi tehdä?

Käytämme kahta lähestymistapaa:

  • Palaute linkitetystä ML:stä. Meillä on esimerkiksi verkossa toimiva anti-bot-järjestelmä, joka, kuten mainitsin, tekee nopean päätöksen rajoitetun merkkimäärän perusteella. Ja on toinen, hidas järjestelmä, joka toimii jälkikäteen. Siinä on enemmän tietoa käyttäjästä, hänen käyttäytymisestään jne. Tuloksena tehdään tietoisin päätös, joten se on tarkempi ja täydellisempi. Voit ohjata näiden järjestelmien toiminnan eron ensimmäiseen harjoitustietona. Siten yksinkertaisempi järjestelmä yrittää aina lähestyä monimutkaisemman suorituskykyä.
  • Napsauta luokitusta. Voit yksinkertaisesti luokitella jokaisen käyttäjän napsautuksen, arvioida sen kelpoisuuden ja käytettävyyden. Teemme tämän roskapostin torjuntaan käyttämällä käyttäjän määritteitä, hänen historiaansa, lähettäjän attribuutteja, itse tekstiä ja luokittelutulosta. Tuloksena saamme automaattisen järjestelmän, joka vahvistaa käyttäjien palautteen. Ja koska sitä on koulutettava uudelleen paljon harvemmin, sen työstä voi tulla kaikkien muiden järjestelmien perusta. Pääprioriteetti tässä mallissa on tarkkuus, koska mallin harjoitteleminen epätarkalla tiedolla on täynnä seurauksia.

Kun siivoamme tietoja ja koulutamme edelleen ML-järjestelmiämme, emme saa unohtaa käyttäjiä, sillä meille tuhannet, miljoonat kaavion virheet ovat tilastoja ja käyttäjälle jokainen bugi on tragedia. Sen lisäksi, että käyttäjän on jotenkin elettävä virheesi kanssa tuotteessa, palautteen saatuaan hän odottaa vastaavan tilanteen poistuvan tulevaisuudessa. Siksi käyttäjille kannattaa aina antaa paitsi mahdollisuus äänestää myös korjata ML-järjestelmien käyttäytymistä luomalla esimerkiksi henkilökohtainen heuristiikka jokaiselle palauteklikkaukselle, postin tapauksessa tämä voisi olla kyky suodattaa tällaiset kirjeet lähettäjän ja tämän käyttäjän otsikon mukaan.

Sinun on myös rakennettava malli joidenkin raporttien tai tukipyyntöjen perusteella puoliautomaattisessa tai manuaalisessa tilassa, jotta muut käyttäjät eivät kärsi vastaavista ongelmista.

Heuristiikka oppimiseen

Näissä heuristioissa ja kainalosauvoissa on kaksi ongelmaa. Ensimmäinen on se, että jatkuvasti kasvavaa kainalosauvojen määrää on vaikea ylläpitää, puhumattakaan niiden laadusta ja suorituskyvystä pitkällä aikavälillä. Toinen ongelma on, että virhe ei välttämättä ole yleinen, eikä muutama napsautus mallin edelleen kouluttamiseen riitä. Näyttäisi siltä, ​​että nämä kaksi toisiinsa liittymätöntä vaikutusta voidaan merkittävästi neutraloida, jos sovelletaan seuraavaa lähestymistapaa.

  1. Luomme väliaikaisen kainalosauvan.
  2. Lähetämme siitä tietoja mallille, se päivittää itseään säännöllisesti, myös vastaanotetuista tiedoista. Tässä on tietysti tärkeää, että heuristiikassa on korkea tarkkuus, jotta koulutusjoukon datan laatu ei heikkene.
  3. Sitten asetamme valvonnan laukaisemaan kainalosauvan, ja jos jonkin ajan kuluttua kainalosauva ei enää toimi ja on kokonaan mallin peitossa, voit turvallisesti poistaa sen. Nyt tämä ongelma tuskin toistuu.

Joten kainalosauvojen armeija on erittäin hyödyllinen. Tärkeintä on, että heidän palvelunsa on kiireellinen eikä pysyvä.

Lisäkoulutus

Uudelleenkoulutus on prosessi, jossa lisätään käyttäjiltä tai muilta järjestelmiltä saadun palautteen tuloksena saatua uutta tietoa ja opetetaan olemassa oleva malli. Lisäkoulutuksessa voi olla useita ongelmia:

  1. Malli ei välttämättä tue lisäkoulutusta, vaan oppii vain tyhjästä.
  2. Missään luonnonkirjassa ei ole kirjoitettu, että lisäkoulutus varmasti parantaa työn laatua tuotannossa. Usein tapahtuu päinvastoin, eli vain huononeminen on mahdollista.
  3. Muutokset voivat olla arvaamattomia. Tämä on melko hienovarainen kohta, jonka olemme tunnistaneet itsellemme. Vaikka uusi malli A/B-testissä osoittaisi samanlaisia ​​tuloksia kuin nykyinen, se ei tarkoita, että se toimisi samalla tavalla. Heidän työnsä voi poiketa vain prosentilla, mikä voi tuoda uusia virheitä tai palauttaa vanhoja, jotka on jo korjattu. Sekä me että käyttäjät osaamme jo elää nykyisten virheiden kanssa, ja kun uusia virheitä ilmaantuu suuri määrä, käyttäjä ei välttämättä myöskään ymmärrä mitä tapahtuu, koska hän odottaa ennustettavaa käyttäytymistä.

Siksi lisäkoulutuksessa tärkeintä on varmistaa, että mallia parannetaan tai ei ainakaan huonone.

Ensimmäinen asia, joka tulee mieleen, kun puhumme lisäkoulutuksesta, on aktiivinen oppiminen. Mitä tämä tarkoittaa? Luokitin esimerkiksi määrittää, liittyykö sähköposti talouteen, ja sen päätösrajan ympärille lisäämme näytteen merkittyjä esimerkkejä. Tämä toimii hyvin esimerkiksi mainonnassa, jossa palautetta on paljon ja mallia voi kouluttaa verkossa. Ja jos palautetta on vähän, niin saadaan tuotantotiedon jakautumiseen nähden erittäin puolueellinen otos, jonka perusteella on mahdotonta arvioida mallin käyttäytymistä toiminnan aikana.

Koneoppimisen käyttö Mail.ru Mailissa

Tavoitteenamme onkin säilyttää vanhoja malleja, jo tuttuja malleja ja hankkia uusia. Jatkuvuus on tässä tärkeää. Malli, jonka käyttöönotossa käytimme usein paljon vaivaa, on jo toiminnassa, joten voimme keskittyä sen suorituskykyyn.

Postissa käytetään erilaisia ​​malleja: puita, lineaarisia, neuroverkkoja. Jokaiselle teemme oman lisäharjoitusalgoritmimme. Lisäkoulutuksen aikana saamme uusien tietojen lisäksi usein myös uusia ominaisuuksia, jotka otamme huomioon kaikissa alla olevissa algoritmeissa.

Lineaariset mallit

Oletetaan, että meillä on logistinen regressio. Luomme häviömallin seuraavista komponenteista:

  • LogLoss uusista tiedoista;
  • tasaamme uusien ominaisuuksien painot (emme koske vanhoihin);
  • opimme myös vanhoista tiedoista säilyttääksemme vanhat mallit;
  • ja ehkä tärkein: lisäämme Harmonisen Regularisoinnin, joka takaa, että painot eivät juurikaan muutu suhteessa vanhaan malliin normin mukaan.

Koska jokaisella Loss-komponentilla on kertoimet, voimme valita tehtävällemme optimaaliset arvot ristiinvalidoinnin tai tuotevaatimusten perusteella.

Koneoppimisen käyttö Mail.ru Mailissa

Puut

Siirrytään päätöspuihin. Olemme koonneet seuraavan algoritmin puiden lisäkoulutukseen:

  1. Tuotanto pyörittää 100-300 puun metsää, joka on koulutettu vanhalle tietojoukolle.
  2. Lopussa poistetaan M = 5 kappaletta ja lisätään 2M = 10 uutta, jotka on koulutettu koko tietojoukolle, mutta suurella painolla uudelle tiedolle, mikä luonnollisesti takaa mallin inkrementaalisen muutoksen.

On selvää, että ajan myötä puiden määrä kasvaa suuresti, ja niitä on ajoittain vähennettävä ajoituksen saavuttamiseksi. Käytämme tähän nyt kaikkialla olevaa Knowledge Distillation (KD) -tislausmenetelmää. Lyhyesti sen toimintaperiaatteesta.

  1. Meillä on nykyinen "monimutkainen" malli. Suoritamme sen harjoitustietojoukossa ja saamme luokan todennäköisyysjakauman lähdössä.
  2. Seuraavaksi opetetaan opiskelijamalli (tässä tapauksessa malli, jossa on vähemmän puita) toistamaan mallin tulokset käyttämällä kohdemuuttujana luokkajakaumaa.
  3. Tässä on tärkeää huomata, että emme käytä tietojoukkomerkintöjä millään tavalla, ja siksi voimme käyttää mielivaltaisia ​​tietoja. Tietenkin käytämme oppilasmallin harjoitusnäytteenä taisteluvirran datanäytettä. Siten koulutussarjan avulla voimme varmistaa mallin tarkkuuden, ja stream-näyte takaa samanlaisen suorituskyvyn tuotannon jakelussa, kompensoiden koulutusjoukon harhaa.

Koneoppimisen käyttö Mail.ru Mailissa

Näiden kahden tekniikan yhdistelmä (puiden lisääminen ja määräajoin niiden lukumäärän vähentäminen Knowledge Distillation -tekniikalla) varmistaa uusien kuvioiden käyttöönoton ja täydellisen jatkuvuuden.

KD:n avulla teemme myös erilaisia ​​operaatioita mallin ominaisuuksille, kuten piirteiden poistaminen ja aukkojen korjaaminen. Meidän tapauksessamme meillä on useita tärkeitä tilastollisia ominaisuuksia (lähettäjien, tekstitiivisteiden, URL-osoitteiden jne. mukaan), jotka on tallennettu tietokantaan, jotka yleensä epäonnistuvat. Malli ei tietenkään ole valmis tällaiseen tapahtumien kehitykseen, koska epäonnistumistilanteita ei esiinny harjoitussarjassa. Tällaisissa tapauksissa yhdistämme KD- ja augmentaatiotekniikat: kun harjoittelemme osaa tiedoista, poistamme tai nollaamme tarvittavat ominaisuudet ja otamme alkuperäiset etiketit (nykyisen mallin lähdöt) ja opiskelijamalli oppii toistamaan tämän jakauman. .

Koneoppimisen käyttö Mail.ru Mailissa

Huomasimme, että mitä vakavampaa mallinkäsittelyä tapahtuu, sitä suurempi on tarvittava lankanäytteen prosenttiosuus.

Ominaisuuden poisto, yksinkertaisin toimenpide, vaatii vain pienen osan virtauksesta, koska vain pari ominaisuutta vaihtuu ja nykyinen malli on koulutettu samalla sarjalla - ero on minimaalinen. Mallin yksinkertaistamiseksi (puiden lukumäärän vähentäminen useita kertoja) tarvitaan jo 50 - 50. Ja tärkeiden tilastollisten ominaisuuksien jättämisestä pois, jotka vaikuttavat vakavasti mallin suorituskykyyn, tarvitaan vielä enemmän virtausta tasoittamaan puiden työtä. uusi puutetta kestävä malli kaikentyyppisille kirjaimille.

Koneoppimisen käyttö Mail.ru Mailissa

FastText

Siirrytään FastTextiin. Muistutan teitä siitä, että sanan esitystapa (Upottaminen) koostuu itse sanan ja sen kaikkien kirjainten N-grammien, yleensä trigrammien, upottamisen summasta. Koska trigrammeja voi olla melko paljon, käytetään Bucket Hashingia eli koko tilan muuntamista tietyksi kiinteäksi hashmapiksi. Seurauksena on, että painomatriisi saadaan sisäkerroksen mitalla sanojen + kauhojen lukumäärää kohti.

Lisäkoulutuksen myötä ilmestyy uusia merkkejä: sanoja ja trigrammeja. Mitään merkittävää ei tapahdu tavallisessa Facebook-seurantakoulutuksessa. Vain vanhat painot, joilla on ristientropia, koulutetaan uudelleen uusille tiedoille. Uusia ominaisuuksia ei siis käytetä, vaan tähän lähestymistapaan liittyy tietysti kaikki edellä kuvatut haitat, jotka liittyvät mallin ennakoimattomuuteen tuotannossa. Siksi muokkasimme FastTextiä hieman. Lisäämme kaikki uudet painot (sanat ja trigrammit), laajennamme koko matriisia ristientropialla ja lisäämme harmonisen regularisoinnin analogisesti lineaarisen mallin kanssa, mikä takaa merkityksettömän muutoksen vanhoissa painoissa.

Koneoppimisen käyttö Mail.ru Mailissa

CNN

Konvoluutioverkot ovat hieman monimutkaisempia. Jos viimeiset kerrokset valmistuvat CNN:ssä, voit tietysti soveltaa harmonista säännöstelyä ja taata jatkuvuus. Mutta jos koko verkon lisäkoulutusta tarvitaan, tällaista laillistamista ei voida enää soveltaa kaikkiin kerroksiin. On kuitenkin mahdollisuus kouluttaa täydentäviä upotuksia Triplet Lossin (alkuperäinen artikkeli).

Kolminkertainen tappio

Käyttämällä esimerkkinä tietojenkalastelun vastaista tehtävää, tarkastellaan Triplet Lossia yleisesti. Otamme logomme sekä positiivisia ja negatiivisia esimerkkejä muiden yritysten logoista. Minimoimme ensimmäisen ja maksimoimme toisen välisen etäisyyden, teemme tämän pienellä raolla varmistaaksemme luokkien suuremman tiiviyden.

Koneoppimisen käyttö Mail.ru Mailissa

Jos koulutamme verkkoa edelleen, metriavaruutemme muuttuu täysin ja siitä tulee täysin yhteensopimaton edellisen kanssa. Tämä on vakava ongelma ongelmissa, jotka käyttävät vektoreita. Tämän ongelman kiertämiseksi sekoitamme vanhoja upotuksia koulutuksen aikana.

Olemme lisänneet uutta dataa harjoitussarjaan ja harjoittelemme mallin toista versiota tyhjästä. Toisessa vaiheessa harjoitamme edelleen verkkoamme (Finetuning): ensin valmistuu viimeinen kerros ja sitten koko verkko avataan. Kolmosten muodostamisen aikana laskemme vain osan upotuksista käyttämällä opetettua mallia, loput - käyttämällä vanhaa mallia. Näin ollen lisäkoulutuksessa varmistamme metriavaruuksien v1 ja v2 yhteensopivuuden. Ainutlaatuinen versio harmonisesta regularisoinnista.

Koneoppimisen käyttö Mail.ru Mailissa

Koko arkkitehtuuri

Jos tarkastellaan koko järjestelmää käyttämällä esimerkkinä roskapostin estoa, mallit eivät ole eristettyjä, vaan sisäkkäisiä toistensa sisällä. Otamme kuvia, tekstiä ja muita ominaisuuksia, CNN:n ja Fast Textin avulla saamme upotuksia. Seuraavaksi upotusten päälle asetetaan luokituksia, jotka antavat pisteet eri luokille (kirjetyypit, roskaposti, logon läsnäolo). Signaalit ja kyltit tulevat jo puiden metsään lopullisen päätöksen tekemistä varten. Yksittäiset luokittimet tässä kaaviossa mahdollistavat järjestelmän tulosten paremman tulkinnan ja tarkemmin sanoen komponenttien uudelleenkoulutuksen ongelmatilanteissa sen sijaan, että syöttäisivät kaikki tiedot päätöspuihin raakamuodossa.

Koneoppimisen käyttö Mail.ru Mailissa

Tämän seurauksena takaamme jatkuvuuden kaikilla tasoilla. CNN:n ja Fast Textin alimmalla tasolla käytämme harmonista regularisointia, keskimmäisille luokittelijoille myös harmonista regularisointia ja nopeuskalibrointia todennäköisyysjakauman johdonmukaisuuden varmistamiseksi. No, puun lisäämistä harjoitellaan asteittain tai käyttämällä Knowledge Distilation -tekniikkaa.

Yleensä tällaisen sisäkkäisen koneoppimisjärjestelmän ylläpitäminen on yleensä tuskaa, koska mikä tahansa alemman tason komponentti johtaa koko yllä olevan järjestelmän päivitykseen. Mutta koska asetelmissamme jokainen komponentti muuttuu hieman ja on yhteensopiva edellisen kanssa, koko järjestelmä voidaan päivittää pala kerrallaan ilman, että koko rakennetta tarvitsee kouluttaa uudelleen, mikä mahdollistaa sen tukemisen ilman vakavaa lisäkustannuksia.

Ota käyttöön

Olemme keskustelleet tiedonkeruusta ja erityyppisten mallien lisäkoulutuksesta, joten siirrymme niiden käyttöönottoon tuotantoympäristöön.

A/B-testaus

Kuten aiemmin sanoin, tiedonkeruuprosessissa saamme yleensä puolueellisen otoksen, josta on mahdotonta arvioida mallin tuotantosuorituskykyä. Siksi käyttöönoton yhteydessä mallia on verrattava edelliseen versioon, jotta voidaan ymmärtää, miten asiat todellisuudessa etenevät, eli tehdä A/B-testejä. Itse asiassa kaavioiden käyttöönotto ja analysointi on melko rutiinia ja se voidaan helposti automatisoida. Otamme mallimme käyttöön asteittain 5 %:lle, 30 %:lle, 50 %:lle ja 100 %:lle käyttäjistä samalla, kun keräämme kaikki saatavilla olevat mittarit mallivastauksista ja käyttäjien palautteesta. Joidenkin vakavien poikkeamien tapauksessa peruutamme mallin automaattisesti, ja muissa tapauksissa päätämme nostaa prosenttiosuutta kerättyään riittävän määrän käyttäjien napsautuksia. Tämän seurauksena tuomme uuden mallin 50 %:lle käyttäjistä täysin automaattisesti, ja koko yleisön käyttöönoton hyväksyy henkilö, vaikka tämä vaihe voidaan automatisoida.

A/B-testausprosessi tarjoaa kuitenkin tilaa optimoinnille. Tosiasia on, että mikä tahansa A/B-testi on melko pitkä (meillämme se kestää 6-24 tuntia palautteen määrästä riippuen), mikä tekee siitä melko kalliin ja rajallisilla resursseilla. Lisäksi vaaditaan riittävän suuri virtausprosentti testiä varten, jotta A/B-testin kokonaisaika oleellisesti nopeuttaisi (tilastollisesti merkitsevän otoksen rekrytointi mittareiden arvioimiseksi pienellä prosenttimäärällä voi kestää hyvin kauan), mikä tekee A/B-paikkojen määrä on erittäin rajallinen. Ilmeisesti meidän täytyy testata vain lupaavimpia malleja, joista saamme melko paljon lisäkoulutusprosessin aikana.

Tämän ongelman ratkaisemiseksi koulutimme erillisen luokittelijan, joka ennustaa A/B-testin onnistumisen. Tätä varten otamme ominaisuuksiksi päätöksentekotilastot, Precision, Recall ja muut mittaukset harjoitusjoukosta, viivästetystä mittausjoukosta ja streamista peräisin olevasta näytteestä. Vertaamme mallia myös nykyiseen tuotannossa olevaan heuristiikalla ja otamme huomioon mallin monimutkaisuuden. Kaikkia näitä ominaisuuksia hyödyntäen testihistoriaan koulutettu luokittelija arvioi ehdokasmalleja, meidän tapauksessamme nämä ovat puiden metsiä, ja päättää kumpaa käyttää A/B-testissä.

Koneoppimisen käyttö Mail.ru Mailissa

Toteutushetkellä tämä lähestymistapa antoi meille mahdollisuuden kasvattaa onnistuneiden A/B-testien määrää useita kertoja.

Testaus ja valvonta

Testaus ja seuranta, kummallista kyllä, eivät vahingoita terveyttämme, päinvastoin, ne parantavat sitä ja vapauttavat meidät tarpeettomasta stressistä. Testauksen avulla voit estää vian, ja seuranta mahdollistaa sen havaitsemisen ajoissa, jotta sen vaikutusta käyttäjiin voidaan vähentää.

Tässä on tärkeää ymmärtää, että ennemmin tai myöhemmin järjestelmäsi tekee aina virheitä - tämä johtuu minkä tahansa ohjelmiston kehityssyklistä. Järjestelmäkehityksen alussa on aina paljon bugeja, kunnes kaikki rauhoittuu ja innovaation päävaihe on valmis. Mutta ajan myötä entropia tekee veronsa ja virheitä tulee taas - johtuen komponenttien huonontumisesta ja muutoksista tiedoissa, joista puhuin alussa.

Tässä huomautan, että mitä tahansa koneoppimisjärjestelmää tulee tarkastella sen tuoton kannalta koko sen elinkaaren ajan. Alla olevassa kaaviossa on esimerkki siitä, kuinka järjestelmä pyrkii saamaan kiinni harvinaisen tyyppisen roskapostin (kaavion viiva on lähellä nollaa). Eräänä päivänä hän meni hulluksi väärin välimuistiin tallennetun attribuutin vuoksi. Onneksi epänormaalia laukaisua ei valvottu, minkä seurauksena järjestelmä alkoi tallentaa suuria määriä kirjeitä "roskaposti"-kansioon päätöksentekorajalla. Seurausten korjaamisesta huolimatta järjestelmä on tehnyt virheitä jo niin monta kertaa, ettei se maksa itsensä takaisin edes viidessä vuodessa. Ja tämä on täydellinen epäonnistuminen mallin elinkaaren kannalta.

Koneoppimisen käyttö Mail.ru Mailissa

Siksi niin yksinkertaisesta asiasta kuin monitoroinnista voi tulla avain mallin elämässä. Tavallisten ja ilmeisten mittareiden lisäksi huomioimme mallin vastausten ja pisteiden jakauman sekä tärkeimpien ominaisuusarvojen jakautumisen. KL-divergenssin avulla voimme verrata nykyistä jakaumaa historialliseen tai A/B-testin arvoja muuhun streamiin, jolloin voimme havaita mallin poikkeavuuksia ja peruuttaa muutoksia ajoissa.

Useimmissa tapauksissa lanseeraamme ensimmäiset järjestelmäversiomme käyttämällä yksinkertaisia ​​heuristiikkaa tai malleja, joita käytämme jatkossa valvontana. Seuraamme esimerkiksi NER-mallia verrattuna tavallisiin tiettyjen verkkokauppojen malliin, ja jos luokittelun kattavuus laskee niihin verrattuna, ymmärrämme syyt. Toinen hyödyllinen heuristiikan käyttö!

Tulokset

Käydään läpi artikkelin keskeiset ideat uudelleen.

  • Fibdeck. Ajattelemme aina käyttäjää: kuinka hän elää virheidemme kanssa, miten hän pystyy ilmoittamaan niistä. Älä unohda, että käyttäjät eivät ole pelkän palautteen lähde harjoitusmalleista, vaan se on tyhjennettävä ML-apujärjestelmien avulla. Mikäli signaalin kerääminen käyttäjältä ei ole mahdollista, etsimme vaihtoehtoisia palautteen lähteitä, esimerkiksi liitettyjä järjestelmiä.
  • Lisäkoulutus. Tärkeintä tässä on jatkuvuus, joten luotamme nykyiseen tuotantomalliin. Koulutamme uusia malleja niin, että ne eivät juurikaan poikkea edellisestä harmonisen säätelyn ja vastaavien temppujen vuoksi.
  • Ota käyttöön. Mittareihin perustuva automaattinen käyttöönotto lyhentää huomattavasti mallien käyttöönottoaikaa. Tilastojen seuranta ja päätöksenteon jakautuminen, käyttäjien kaatumisten määrä on pakollista levollisen unen ja tuottavan viikonlopun takaamiseksi.

Toivon, että tämä auttaa sinua parantamaan ML-järjestelmiäsi nopeammin, saamaan ne nopeammin markkinoille ja tekemään niistä luotettavampia ja vähemmän stressaavia.

Lähde: will.com

Lisää kommentti