Operasyon ng machine learning sa Mail.ru Mail

Operasyon ng machine learning sa Mail.ru Mail

Batay sa aking mga talumpati sa Highload++ at DataFest Minsk 2019.

Para sa marami ngayon, ang mail ay isang mahalagang bahagi ng online na buhay. Sa tulong nito, nagsasagawa kami ng mga sulat sa negosyo, nag-iimbak ng lahat ng uri ng mahalagang impormasyon na may kaugnayan sa pananalapi, mga booking sa hotel, paglalagay ng mga order at marami pang iba. Noong kalagitnaan ng 2018, bumuo kami ng diskarte sa produkto para sa pagbuo ng mail. Ano dapat ang modernong mail?

Ang mail ay dapat matalino, ibig sabihin, pagtulong sa mga user na mag-navigate sa dumaraming dami ng impormasyon: salain, istraktura at ibigay ito sa pinaka-maginhawang paraan. Siya dapat kapaki-pakinabang, na nagpapahintulot sa iyo na malutas ang iba't ibang mga gawain sa iyong mailbox, halimbawa, magbayad ng mga multa (isang function na, sa kasamaang-palad, ginagamit ko). At sa parehong oras, siyempre, ang mail ay dapat magbigay ng proteksyon ng impormasyon, pagputol ng spam at pagprotekta laban sa pag-hack, iyon ay, maging ligtas.

Tinutukoy ng mga lugar na ito ang ilang pangunahing problema, marami sa mga ito ay maaaring epektibong malutas gamit ang machine learning. Narito ang mga halimbawa ng mayroon nang mga feature na binuo bilang bahagi ng diskarte - isa para sa bawat direksyon.

  • Smart Reply. Ang mail ay may tampok na matalinong pagtugon. Sinusuri ng neural network ang teksto ng liham, nauunawaan ang kahulugan at layunin nito, at bilang resulta ay nag-aalok ng tatlong pinaka-angkop na opsyon sa pagtugon: positibo, negatibo at neutral. Nakakatulong ito upang makabuluhang makatipid ng oras kapag sumasagot ng mga titik, at madalas ding tumugon sa isang hindi karaniwan at nakakatawang paraan.
  • Pagpapangkat ng mga emailnauugnay sa mga order sa mga online na tindahan. Madalas kaming namimili online, at, bilang panuntunan, maaaring magpadala ang mga tindahan ng ilang email para sa bawat order. Halimbawa, mula sa AliExpress, ang pinakamalaking serbisyo, maraming mga titik ang pumapasok para sa isang order, at kinakalkula namin na sa terminal case ang kanilang numero ay maaaring umabot ng hanggang 29. Samakatuwid, gamit ang modelo ng Named Entity Recognition, kinukuha namin ang numero ng order at iba pang impormasyon mula sa teksto at pangkatin ang lahat ng mga titik sa isang thread. Nagpapakita rin kami ng pangunahing impormasyon tungkol sa pagkakasunud-sunod sa isang hiwalay na kahon, na ginagawang mas madaling gamitin ang ganitong uri ng email.

    Operasyon ng machine learning sa Mail.ru Mail

  • Antiphishing. Ang phishing ay isang partikular na mapanganib na mapanlinlang na uri ng email, sa tulong kung saan sinusubukan ng mga umaatake na kumuha ng impormasyong pinansyal (kabilang ang mga bank card ng user) at mga pag-login. Ang ganitong mga titik ay ginagaya ang mga tunay na ipinadala ng serbisyo, kabilang ang biswal. Samakatuwid, sa tulong ng Computer Vision, kinikilala namin ang mga logo at ang istilo ng disenyo ng mga titik mula sa malalaking kumpanya (halimbawa, Mail.ru, Sber, Alfa) at isinasaalang-alang ito kasama ng teksto at iba pang mga tampok sa aming mga spam at phishing classifier. .

Pag-aaral ng makina

Kaunti tungkol sa machine learning sa email sa pangkalahatan. Ang mail ay isang napaka-load na sistema: isang average na 1,5 bilyong mga titik bawat araw ay dumadaan sa aming mga server para sa 30 milyong mga gumagamit ng DAU. Humigit-kumulang 30 machine learning system ang sumusuporta sa lahat ng kinakailangang function at feature.

Ang bawat titik ay dumadaan sa isang buong pipeline ng pag-uuri. Pinutol muna namin ang spam at nag-iiwan ng magagandang email. Madalas na hindi napapansin ng mga user ang gawain ng antispam, dahil 95-99% ng spam ay hindi napupunta sa naaangkop na folder. Ang pagkilala sa spam ay isang napakahalagang bahagi ng aming system, at ang pinakamahirap, dahil sa larangan ng anti-spam mayroong patuloy na pagbagay sa pagitan ng mga sistema ng depensa at pag-atake, na nagbibigay ng patuloy na hamon sa engineering para sa aming koponan.

Susunod, pinaghihiwalay namin ang mga titik mula sa mga tao at mga robot. Ang mga email mula sa mga tao ang pinakamahalaga, kaya nagbibigay kami ng mga feature tulad ng Smart Reply para sa kanila. Ang mga liham mula sa mga robot ay nahahati sa dalawang bahagi: transactional - ito ay mahalagang mga sulat mula sa mga serbisyo, halimbawa, mga kumpirmasyon ng mga pagbili o reserbasyon sa hotel, pananalapi, at impormasyon - ito ay advertising sa negosyo, mga diskwento.

Naniniwala kami na ang mga transaksyonal na email ay katumbas ng kahalagahan sa personal na sulat. Dapat ay nasa kamay na sila, dahil madalas ay kailangan nating mabilis na makahanap ng impormasyon tungkol sa isang order o pagpapareserba ng tiket sa himpapawid, at gumugugol tayo ng oras sa paghahanap sa mga liham na ito. Samakatuwid, para sa kaginhawahan, awtomatiko naming hinahati ang mga ito sa anim na pangunahing kategorya: paglalakbay, mga order, pananalapi, mga tiket, pagpaparehistro at, sa wakas, mga multa.

Ang mga liham ng impormasyon ay ang pinakamalaki at malamang na hindi gaanong mahalagang grupo, na hindi nangangailangan ng agarang tugon, dahil walang makabuluhang magbabago sa buhay ng gumagamit kung hindi niya babasahin ang naturang sulat. Sa aming bagong interface, i-collapse namin ang mga ito sa dalawang thread: mga social network at newsletter, kaya biswal na nililinis ang inbox at nag-iiwan lamang ng mahahalagang mensahe na nakikita.

Operasyon ng machine learning sa Mail.ru Mail

Pagsasamantala

Ang isang malaking bilang ng mga sistema ay nagdudulot ng maraming kahirapan sa pagpapatakbo. Pagkatapos ng lahat, bumababa ang mga modelo sa paglipas ng panahon, tulad ng anumang software: nasira ang mga feature, nabigo ang mga makina, nagiging baluktot ang code. Bilang karagdagan, ang data ay patuloy na nagbabago: ang mga bago ay idinagdag, ang mga pattern ng pag-uugali ng gumagamit ay binago, atbp., kaya ang isang modelo na walang wastong suporta ay gagana nang mas malala at mas masahol pa sa paglipas ng panahon.

Hindi natin dapat kalimutan na ang mas malalim na machine learning ay tumagos sa buhay ng mga user, mas malaki ang epekto ng mga ito sa ecosystem, at, bilang resulta, mas maraming pagkalugi sa pananalapi o kita ang matatanggap ng mga manlalaro sa merkado. Samakatuwid, sa dumaraming bilang ng mga lugar, ang mga manlalaro ay umaangkop sa gawain ng mga ML algorithm (mga klasikong halimbawa ay advertising, paghahanap at ang nabanggit na antispam).

Gayundin, ang mga gawain sa pag-aaral ng machine ay may kakaiba: anuman, kahit maliit, ang pagbabago sa system ay maaaring makabuo ng maraming trabaho sa modelo: pagtatrabaho sa data, muling pagsasanay, pag-deploy, na maaaring tumagal ng ilang linggo o buwan. Samakatuwid, mas mabilis na nagbabago ang kapaligiran kung saan gumagana ang iyong mga modelo, mas maraming pagsisikap ang kinakailangan upang mapanatili ang mga ito. Ang isang koponan ay maaaring lumikha ng maraming mga sistema at maging masaya tungkol dito, ngunit pagkatapos ay gugulin ang halos lahat ng mga mapagkukunan nito sa pagpapanatili ng mga ito, nang walang pagkakataon na gumawa ng anumang bagay na bago. Minsan ay nakatagpo kami ng ganoong sitwasyon sa antispam team. At ginawa nila ang malinaw na konklusyon na ang suporta ay kailangang awtomatiko.

Pag-aautomat

Ano ang maaaring awtomatiko? Halos lahat, actually. Natukoy ko ang apat na bahagi na tumutukoy sa imprastraktura ng machine learning:

  • pagkolekta ng data;
  • karagdagang pagsasanay;
  • i-deploy;
  • pagsubok at pagsubaybay.

Kung ang kapaligiran ay hindi matatag at patuloy na nagbabago, kung gayon ang buong imprastraktura sa paligid ng modelo ay lumalabas na mas mahalaga kaysa sa modelo mismo. Maaaring ito ay isang magandang lumang linear classifier, ngunit kung bibigyan mo ito ng mga tamang feature at makakakuha ng magandang feedback mula sa mga user, mas gagana ito kaysa sa mga State-Of-The-Art na modelo na may lahat ng mga kampanilya at sipol.

Loop ng Feedback

Pinagsasama ng cycle na ito ang pagkolekta ng data, karagdagang pagsasanay at deployment - sa katunayan, ang buong ikot ng pag-update ng modelo. Bakit ito mahalaga? Tingnan ang iskedyul ng pagpaparehistro sa koreo:

Operasyon ng machine learning sa Mail.ru Mail

Ang isang machine learning developer ay nagpatupad ng isang anti-bot na modelo na pumipigil sa mga bot na magrehistro sa email. Ang graph ay bumaba sa isang halaga kung saan ang mga tunay na user lang ang nananatili. Lahat ay magaling! Ngunit lumipas ang apat na oras, inaayos ng mga bot ang kanilang mga script, at bumalik sa normal ang lahat. Sa pagpapatupad na ito, gumugol ang developer ng isang buwan sa pagdaragdag ng mga feature at muling pagsasanay sa modelo, ngunit nagawang umangkop ng spammer sa loob ng apat na oras.

Upang hindi masyadong masakit at hindi na kailangang ulitin ang lahat sa ibang pagkakataon, dapat muna nating isipin kung ano ang magiging hitsura ng feedback loop at kung ano ang gagawin natin kung magbabago ang kapaligiran. Magsimula tayo sa pagkolekta ng data - ito ang gasolina para sa aming mga algorithm.

Pagkolekta ng data

Malinaw na para sa mga modernong neural network, mas maraming data, mas mabuti, at ang mga ito, sa katunayan, ay nabuo ng mga gumagamit ng produkto. Matutulungan kami ng mga user sa pamamagitan ng pagmamarka ng data, ngunit hindi namin ito maaaring abusuhin, dahil sa ilang sandali ay mapapagod ang mga user sa pagkumpleto ng iyong mga modelo at lilipat sa ibang produkto.

Ang isa sa mga pinakakaraniwang pagkakamali (dito ay gumagawa ako ng sanggunian kay Andrew Ng) ay masyadong nakatuon sa mga sukatan sa test dataset, at hindi sa feedback mula sa user, na talagang ang pangunahing sukatan ng kalidad ng trabaho, dahil gumagawa kami isang produkto para sa gumagamit. Kung ang gumagamit ay hindi naiintindihan o hindi gusto ang gawain ng modelo, kung gayon ang lahat ay nasira.

Samakatuwid, ang user ay dapat palaging makakaboto at dapat bigyan ng tool para sa feedback. Kung sa tingin namin ay dumating sa mailbox ang isang liham na may kaugnayan sa pananalapi, kailangan naming markahan ito ng "finance" at gumuhit ng button na maaaring i-click ng user at sabihin na hindi ito pananalapi.

Kalidad ng feedback

Pag-usapan natin ang kalidad ng feedback ng user. Una, ikaw at ang gumagamit ay maaaring maglagay ng iba't ibang kahulugan sa isang konsepto. Halimbawa, iniisip mo at ng iyong mga tagapamahala ng produkto na ang ibig sabihin ng "pinansya" ay mga sulat mula sa bangko, at iniisip ng gumagamit na ang isang liham mula kay lola tungkol sa kanyang pensiyon ay tumutukoy din sa pananalapi. Pangalawa, may mga gumagamit na walang pag-iisip na gustong pindutin ang mga pindutan nang walang anumang lohika. Pangatlo, ang gumagamit ay maaaring malalim na nagkakamali sa kanyang mga konklusyon. Ang isang kapansin-pansing halimbawa mula sa aming pagsasanay ay ang pagpapatupad ng isang classifier spam ng Nigerian, isang napaka nakakatawang uri ng spam kung saan hinihiling sa user na kumuha ng ilang milyong dolyar mula sa isang biglaang natagpuang malayong kamag-anak sa Africa. Pagkatapos ipatupad ang classifier na ito, sinuri namin ang mga pag-click na "Hindi Spam" sa mga email na ito, at lumabas na 80% sa mga ito ay makatas na Nigerian na spam, na nagmumungkahi na ang mga user ay maaaring maging lubhang madaling paniwalaan.

At huwag nating kalimutan na ang mga pindutan ay maaaring i-click hindi lamang ng mga tao, kundi pati na rin ng lahat ng uri ng mga bot na nagpapanggap na isang browser. Kaya ang hilaw na feedback ay hindi maganda para sa pag-aaral. Ano ang maaari mong gawin sa impormasyong ito?

Gumagamit kami ng dalawang diskarte:

  • Feedback mula sa naka-link na ML. Halimbawa, mayroon kaming online na anti-bot system, na, tulad ng nabanggit ko, ay gumagawa ng mabilis na desisyon batay sa isang limitadong bilang ng mga palatandaan. At mayroong pangalawang, mabagal na sistema na gumagana pagkatapos ng katotohanan. Mayroon itong higit pang data tungkol sa user, sa kanyang pag-uugali, atbp. Bilang resulta, ang pinaka-kaalamang desisyon ay ginawa; nang naaayon, mayroon itong mas mataas na katumpakan at pagkakumpleto. Maaari mong idirekta ang pagkakaiba sa pagpapatakbo ng mga system na ito sa una bilang data ng pagsasanay. Kaya, ang isang mas simpleng sistema ay palaging susubukan na lapitan ang pagganap ng isang mas kumplikado.
  • Pag-uuri ng pag-click. Maaari mo lamang uriin ang bawat pag-click ng user, suriin ang bisa at kakayahang magamit nito. Ginagawa namin ito sa antispam mail, gamit ang mga katangian ng user, ang kanyang kasaysayan, mga katangian ng nagpadala, ang mismong text at ang resulta ng mga classifier. Bilang resulta, nakakakuha kami ng awtomatikong system na nagpapatunay ng feedback ng user. At dahil kailangan itong muling sanayin nang mas madalas, ang gawain nito ay maaaring maging batayan para sa lahat ng iba pang mga sistema. Ang pangunahing priyoridad sa modelong ito ay katumpakan, dahil ang pagsasanay sa modelo sa hindi tumpak na data ay puno ng mga kahihinatnan.

Habang nililinis namin ang data at higit pang sinasanay ang aming mga ML system, hindi namin dapat kalimutan ang tungkol sa mga gumagamit, dahil para sa amin, libu-libo, milyon-milyong mga error sa graph ay mga istatistika, at para sa gumagamit, ang bawat bug ay isang trahedya. Bilang karagdagan sa katotohanan na ang gumagamit ay dapat na mabuhay sa anumang paraan sa iyong error sa produkto, pagkatapos makatanggap ng feedback, inaasahan niya na ang isang katulad na sitwasyon ay aalisin sa hinaharap. Samakatuwid, ito ay palaging nagkakahalaga ng pagbibigay sa mga user hindi lamang ng pagkakataong bumoto, kundi pati na rin upang itama ang pag-uugali ng mga ML system, na lumilikha, halimbawa, ng mga personal na heuristic para sa bawat pag-click sa feedback; sa kaso ng mail, ito ay maaaring ang kakayahang mag-filter naturang mga liham ng nagpadala at pamagat para sa user na ito.

Kailangan mo ring bumuo ng isang modelo batay sa ilang mga ulat o mga kahilingan upang suportahan sa isang semi-awtomatiko o manu-manong mode upang ang ibang mga gumagamit ay hindi makaranas ng mga katulad na problema.

Heuristics para sa pag-aaral

Mayroong dalawang problema sa mga heuristic at saklay na ito. Ang una ay ang patuloy na pagtaas ng bilang ng mga saklay ay mahirap mapanatili, pabayaan ang kanilang kalidad at pagganap sa mahabang panahon. Ang pangalawang problema ay ang error ay maaaring hindi madalas, at ang ilang mga pag-click upang higit pang sanayin ang modelo ay hindi magiging sapat. Mukhang ang dalawang hindi magkakaugnay na epekto na ito ay maaaring makabuluhang neutralisahin kung ang sumusunod na diskarte ay inilapat.

  1. Lumilikha kami ng pansamantalang saklay.
  2. Nagpapadala kami ng data mula dito sa modelo, regular nitong ina-update ang sarili nito, kasama ang natanggap na data. Dito, siyempre, mahalaga na ang heuristics ay may mataas na katumpakan upang hindi mabawasan ang kalidad ng data sa set ng pagsasanay.
  3. Pagkatapos ay itinakda namin ang pagsubaybay upang ma-trigger ang saklay, at kung pagkatapos ng ilang oras ang saklay ay hindi na gumagana at ganap na sakop ng modelo, pagkatapos ay maaari mong ligtas na alisin ito. Ngayon ang problemang ito ay malabong mangyari muli.

Kaya ang isang hukbo ng mga saklay ay lubhang kapaki-pakinabang. Ang pangunahing bagay ay ang kanilang serbisyo ay kagyat at hindi permanente.

Karagdagang pagsasanay

Ang muling pagsasanay ay ang proseso ng pagdaragdag ng bagong data na nakuha bilang resulta ng feedback mula sa mga user o iba pang mga system, at pagsasanay ng isang umiiral na modelo dito. Maaaring may ilang mga problema sa karagdagang pagsasanay:

  1. Maaaring hindi lang sinusuportahan ng modelo ang karagdagang pagsasanay, ngunit matuto lamang mula sa simula.
  2. Wala saanman sa aklat ng kalikasan na nakasulat na ang karagdagang pagsasanay ay tiyak na magpapahusay sa kalidad ng trabaho sa produksyon. Kadalasan ang kabaligtaran ay nangyayari, iyon ay, ang pagkasira lamang ang posible.
  3. Ang mga pagbabago ay maaaring hindi mahuhulaan. Ito ay isang medyo banayad na punto na natukoy natin para sa ating sarili. Kahit na ang isang bagong modelo sa isang pagsubok sa A/B ay nagpapakita ng mga katulad na resulta kumpara sa kasalukuyan, hindi ito nangangahulugan na ito ay gagana nang pareho. Maaaring mag-iba ang kanilang trabaho sa isang porsyento lamang, na maaaring magdulot ng mga bagong pagkakamali o ibalik ang mga luma na naitama na. Parehong alam na namin at ng mga user kung paano mamuhay sa mga kasalukuyang error, at kapag lumitaw ang malaking bilang ng mga bagong error, maaaring hindi rin maintindihan ng user kung ano ang nangyayari, dahil inaasahan niya ang predictable na pag-uugali.

Samakatuwid, ang pinakamahalagang bagay sa karagdagang pagsasanay ay upang matiyak na ang modelo ay napabuti, o hindi bababa sa hindi lumala.

Ang unang bagay na pumapasok sa isip kapag pinag-uusapan natin ang tungkol sa karagdagang pagsasanay ay ang Active Learning approach. Ano ang ibig sabihin nito? Halimbawa, tinutukoy ng classifier kung ang isang email ay nauugnay sa pananalapi, at sa paligid ng hangganan ng desisyon nito ay nagdaragdag kami ng sample ng mga may label na halimbawa. Ito ay mahusay na gumagana, halimbawa, sa advertising, kung saan mayroong maraming feedback at maaari mong sanayin ang modelo online. At kung mayroong maliit na feedback, pagkatapos ay nakakakuha kami ng isang mataas na bias na sample na may kaugnayan sa pamamahagi ng data ng produksyon, sa batayan kung saan imposibleng suriin ang pag-uugali ng modelo sa panahon ng operasyon.

Operasyon ng machine learning sa Mail.ru Mail

Sa katunayan, ang aming layunin ay upang mapanatili ang mga lumang pattern, kilala nang mga modelo, at makakuha ng mga bago. Ang pagpapatuloy ay mahalaga dito. Gumagana na ang modelo, na madalas naming pinaghirapan na ilunsad, para makapag-focus kami sa pagganap nito.

Iba't ibang modelo ang ginagamit sa mail: mga puno, linear, neural network. Para sa bawat isa ay gumagawa kami ng sarili naming karagdagang algorithm sa pagsasanay. Sa proseso ng karagdagang pagsasanay, natatanggap namin hindi lamang ang mga bagong data, ngunit madalas ding mga bagong tampok, na aming isasaalang-alang sa lahat ng mga algorithm sa ibaba.

Mga linear na modelo

Sabihin nating mayroon tayong logistic regression. Lumilikha kami ng modelo ng pagkawala mula sa mga sumusunod na bahagi:

  • LogLoss sa bagong data;
  • regular namin ang mga timbang ng mga bagong tampok (hindi namin hinawakan ang mga luma);
  • natututo din tayo mula sa lumang data upang mapanatili ang mga lumang pattern;
  • at, marahil, ang pinakamahalagang bagay: idinagdag namin ang Harmonic Regularization, na ginagarantiyahan na ang mga timbang ay hindi magbabago nang malaki sa lumang modelo ayon sa pamantayan.

Dahil ang bawat bahagi ng Pagkawala ay may mga coefficient, maaari naming piliin ang pinakamainam na halaga para sa aming gawain sa pamamagitan ng cross-validation o batay sa mga kinakailangan ng produkto.

Operasyon ng machine learning sa Mail.ru Mail

Π”Π΅Ρ€Π΅Π²ΡŒΡ

Lumipat tayo sa mga puno ng desisyon. Inipon namin ang sumusunod na algorithm para sa karagdagang pagsasanay ng mga puno:

  1. Ang produksyon ay nagpapatakbo ng kagubatan ng 100-300 puno, na sinanay sa isang lumang set ng data.
  2. Sa dulo ay aalisin namin ang M = 5 piraso at magdagdag ng 2M = 10 bago, sinanay sa buong set ng data, ngunit may mataas na timbang para sa bagong data, na natural na ginagarantiyahan ang isang incremental na pagbabago sa modelo.

Malinaw, sa paglipas ng panahon, ang bilang ng mga puno ay tumataas nang husto, at dapat itong pana-panahong bawasan upang matugunan ang mga timing. Upang gawin ito, ginagamit namin ang ngayon ubiquitous Knowledge Distillation (KD). Maikling tungkol sa prinsipyo ng pagpapatakbo nito.

  1. Mayroon kaming kasalukuyang "kumplikadong" modelo. Pinapatakbo namin ito sa set ng data ng pagsasanay at makuha ang pamamahagi ng posibilidad ng klase sa output.
  2. Susunod, sinasanay namin ang modelo ng mag-aaral (ang modelo na may mas kaunting mga puno sa kasong ito) upang ulitin ang mga resulta ng modelo gamit ang pamamahagi ng klase bilang target na variable.
  3. Mahalagang tandaan dito na hindi namin ginagamit ang markup ng set ng data sa anumang paraan, at samakatuwid ay maaari kaming gumamit ng arbitrary na data. Siyempre, gumagamit kami ng sample ng data mula sa combat stream bilang sample ng pagsasanay para sa modelo ng estudyante. Kaya, ang hanay ng pagsasanay ay nagbibigay-daan sa amin upang matiyak ang katumpakan ng modelo, at ginagarantiyahan ng sample ng stream ang isang katulad na pagganap sa pamamahagi ng produksyon, na nagbabayad para sa bias ng set ng pagsasanay.

Operasyon ng machine learning sa Mail.ru Mail

Ang kumbinasyon ng dalawang pamamaraan na ito (pagdaragdag ng mga puno at pana-panahong pagbabawas ng kanilang bilang gamit ang Knowledge Distillation) ay nagsisiguro sa pagpapakilala ng mga bagong pattern at kumpletong pagpapatuloy.

Sa tulong ng KD, nagsasagawa rin kami ng iba't ibang operasyon sa mga feature ng modelo, tulad ng pag-alis ng mga feature at paggawa sa mga gaps. Sa aming kaso, mayroon kaming ilang mahahalagang istatistikal na feature (ng mga nagpadala, text hash, URL, atbp.) na naka-imbak sa database, na malamang na mabigo. Ang modelo, siyempre, ay hindi handa para sa gayong pag-unlad ng mga kaganapan, dahil ang mga sitwasyon ng pagkabigo ay hindi nangyayari sa set ng pagsasanay. Sa ganitong mga kaso, pinagsasama namin ang KD at mga diskarte sa pagpapalaki: kapag nagsasanay para sa bahagi ng data, inaalis o ni-reset namin ang mga kinakailangang feature, at kinukuha namin ang mga orihinal na label (mga output ng kasalukuyang modelo), at natututo ang modelo ng mag-aaral na ulitin ang pamamahaging ito. .

Operasyon ng machine learning sa Mail.ru Mail

Napansin namin na ang mas malubhang pagmamanipula ng modelo ay nangyayari, mas malaki ang porsyento ng kinakailangang sample ng thread.

Ang pag-alis ng tampok, ang pinakasimpleng operasyon, ay nangangailangan lamang ng isang maliit na bahagi ng daloy, dahil ang ilang mga tampok lamang ang nagbabago, at ang kasalukuyang modelo ay sinanay sa parehong hanay - ang pagkakaiba ay minimal. Upang pasimplehin ang modelo (pagbabawas ng bilang ng mga puno nang maraming beses), kinakailangan na ang 50 hanggang 50. At para sa mga pagtanggal ng mahahalagang istatistikal na tampok na seryosong makakaapekto sa pagganap ng modelo, kailangan ng mas maraming daloy upang i-level out ang gawain ng bagong modelong lumalaban sa pagkukulang sa lahat ng uri ng mga titik.

Operasyon ng machine learning sa Mail.ru Mail

FastText

Lumipat tayo sa FastText. Hayaan mong ipaalala ko sa iyo na ang representasyon (Pag-embedding) ng isang salita ay binubuo ng kabuuan ng pag-embed ng salita mismo at lahat ng letrang N-grams nito, kadalasang mga trigram. Dahil maaaring mayroong napakaraming trigram, ginagamit ang Bucket Hashing, iyon ay, ang pag-convert ng buong espasyo sa isang tiyak na nakapirming hashmap. Bilang isang resulta, ang weight matrix ay nakuha na may sukat ng panloob na layer sa bawat bilang ng mga salita + mga balde.

Sa karagdagang pagsasanay, lumilitaw ang mga bagong palatandaan: mga salita at trigram. Walang makabuluhang nangyayari sa karaniwang follow-up na pagsasanay mula sa Facebook. Tanging ang mga lumang timbang na may cross-entropy ang muling sinasanay sa bagong data. Kaya, ang mga bagong tampok ay hindi ginagamit; siyempre, ang diskarte na ito ay may lahat ng inilarawan sa itaas na mga disadvantages na nauugnay sa hindi mahuhulaan ng modelo sa produksyon. Kaya naman medyo binago namin ang FastText. Idinaragdag namin ang lahat ng bagong timbang (mga salita at trigram), palawakin ang buong matrix na may cross-entropy at idinagdag ang harmonic regularization sa pamamagitan ng pagkakatulad sa linear na modelo, na ginagarantiyahan ang hindi gaanong pagbabago sa mga lumang timbang.

Operasyon ng machine learning sa Mail.ru Mail

CNN

Ang mga convolutional network ay medyo mas kumplikado. Kung ang mga huling layer ay nakumpleto sa CNN, kung gayon, siyempre, maaari mong ilapat ang harmonic regularization at ginagarantiyahan ang pagpapatuloy. Ngunit kung kinakailangan ang karagdagang pagsasanay ng buong network, hindi na mailalapat ang naturang regularisasyon sa lahat ng mga layer. Gayunpaman, mayroong opsyon na sanayin ang mga pantulong na pag-embed sa pamamagitan ng Triplet Loss (orihinal na artikulo).

Triple Loss

Gamit ang isang anti-phishing na gawain bilang isang halimbawa, tingnan natin ang Triplet Loss sa mga pangkalahatang termino. Kinukuha namin ang aming logo, pati na rin ang mga positibo at negatibong halimbawa ng mga logo ng ibang mga kumpanya. Pinaliit namin ang distansya sa pagitan ng una at i-maximize ang distansya sa pagitan ng pangalawa, ginagawa namin ito nang may maliit na agwat upang matiyak ang higit na compactness ng mga klase.

Operasyon ng machine learning sa Mail.ru Mail

Kung sanayin pa namin ang network, ganap na magbabago ang aming metric space, at magiging ganap itong hindi tugma sa nauna. Ito ay isang malubhang problema sa mga problema na gumagamit ng mga vectors. Para malampasan ang problemang ito, ihahalo namin ang mga lumang embeddings sa panahon ng pagsasanay.

Nagdagdag kami ng bagong data sa set ng pagsasanay at sinasanay ang pangalawang bersyon ng modelo mula sa simula. Sa ikalawang yugto, lalo naming sinasanay ang aming network (Finetuning): una ang huling layer ay nakumpleto, at pagkatapos ay ang buong network ay hindi na-frozen. Sa proseso ng pagbubuo ng mga triplet, kinakalkula lamang namin ang bahagi ng mga pag-embed gamit ang sinanay na modelo, ang natitira - gamit ang luma. Kaya, sa proseso ng karagdagang pagsasanay, tinitiyak namin ang pagiging tugma ng mga metric space v1 at v2. Isang natatanging bersyon ng harmonic regularization.

Operasyon ng machine learning sa Mail.ru Mail

Buong arkitektura

Kung isasaalang-alang namin ang buong system na gumagamit ng antispam bilang isang halimbawa, kung gayon ang mga modelo ay hindi nakahiwalay, ngunit naka-nest sa bawat isa. Kumuha kami ng mga larawan, teksto at iba pang mga tampok, gamit ang CNN at Mabilis na Teksto nakakakuha kami ng mga pag-embed. Susunod, inilalapat ang mga classifier sa ibabaw ng mga embed, na nagbibigay ng mga marka para sa iba't ibang klase (mga uri ng mga titik, spam, pagkakaroon ng isang logo). Ang mga senyales at palatandaan ay pumapasok na sa kagubatan ng mga puno para sa huling desisyon na gagawin. Ginagawang posible ng mga indibidwal na classifier sa scheme na ito na mas mahusay na bigyang-kahulugan ang mga resulta ng system at mas partikular na muling sanayin ang mga bahagi kung sakaling magkaroon ng mga problema, sa halip na ilagay ang lahat ng data sa mga decision tree sa isang raw na anyo.

Operasyon ng machine learning sa Mail.ru Mail

Bilang resulta, ginagarantiya namin ang pagpapatuloy sa bawat antas. Sa ibabang antas sa CNN at Mabilis na Teksto ay gumagamit kami ng harmonic regularization, para sa mga classifier sa gitna ay gumagamit din kami ng harmonic regularization at rate calibration para sa consistency ng probability distribution. Well, ang tree boosting ay sinanay nang paunti-unti o gumagamit ng Knowledge Distillation.

Sa pangkalahatan, ang pagpapanatili ng naturang nested machine learning system ay karaniwang isang sakit, dahil ang anumang bahagi sa mas mababang antas ay humahantong sa isang update sa buong system sa itaas. Ngunit dahil sa aming pag-setup, ang bawat bahagi ay bahagyang nagbabago at tugma sa nauna, ang buong sistema ay maaaring i-update nang paisa-isa nang hindi na kailangang muling sanayin ang buong istraktura, na nagpapahintulot na ito ay suportahan nang walang seryosong overhead.

I-deploy

Napag-usapan namin ang pagkolekta ng data at karagdagang pagsasanay ng iba't ibang uri ng mga modelo, kaya nagpapatuloy kami sa kanilang pag-deploy sa kapaligiran ng produksyon.

Pagsubok sa A/B

Tulad ng sinabi ko kanina, sa proseso ng pagkolekta ng data, kadalasan ay nakakakuha kami ng isang bias na sample, kung saan imposibleng suriin ang pagganap ng produksyon ng modelo. Samakatuwid, kapag nagde-deploy, ang modelo ay dapat ihambing sa nakaraang bersyon upang maunawaan kung paano aktwal na nangyayari ang mga bagay, iyon ay, magsagawa ng mga pagsubok sa A/B. Sa katunayan, ang proseso ng paglulunsad at pagsusuri ng mga chart ay medyo nakagawian at madaling ma-automate. Unti-unti naming inilalabas ang aming mga modelo sa 5%, 30%, 50% at 100% ng mga user, habang kinokolekta ang lahat ng available na sukatan sa mga tugon ng modelo at feedback ng user. Sa kaso ng ilang malubhang outlier, awtomatiko naming ibinabalik ang modelo, at para sa iba pang mga kaso, nang makakolekta ng sapat na bilang ng mga pag-click ng user, nagpasya kaming pataasin ang porsyento. Bilang resulta, awtomatikong dinadala namin ang bagong modelo sa 50% ng mga user, at ang paglulunsad sa buong audience ay maaaprubahan ng isang tao, bagama't maaaring i-automate ang hakbang na ito.

Gayunpaman, ang proseso ng pagsubok sa A/B ay nag-aalok ng puwang para sa pag-optimize. Ang katotohanan ay ang anumang pagsubok sa A/B ay medyo mahaba (sa aming kaso ito ay tumatagal mula 6 hanggang 24 na oras depende sa dami ng feedback), na ginagawang medyo mahal at may limitadong mga mapagkukunan. Bilang karagdagan, ang isang sapat na mataas na porsyento ng daloy para sa pagsubok ay kinakailangan upang mapabilis ang kabuuang oras ng pagsubok sa A/B (ang pag-recruit ng isang sample na makabuluhang istatistika upang suriin ang mga sukatan sa isang maliit na porsyento ay maaaring tumagal ng napakatagal), na ginagawang ang bilang ng mga A/B slot ay lubhang limitado. Malinaw, kailangan lang nating subukan ang mga pinaka-promising na modelo, kung saan marami kaming natatanggap sa panahon ng karagdagang proseso ng pagsasanay.

Upang malutas ang problemang ito, nagsanay kami ng isang hiwalay na classifier na hinuhulaan ang tagumpay ng isang pagsubok sa A/B. Para magawa ito, kinukuha namin ang mga istatistika sa paggawa ng desisyon, Katumpakan, Pag-recall at iba pang sukatan sa set ng pagsasanay, sa ipinagpaliban, at sa sample mula sa stream bilang mga feature. Inihahambing din namin ang modelo sa kasalukuyang nasa produksyon, gamit ang heuristic, at isinasaalang-alang ang pagiging kumplikado ng modelo. Gamit ang lahat ng feature na ito, sinusuri ng classifier na sinanay sa history ng pagsubok ang mga modelo ng kandidato, sa aming kaso, ito ay kagubatan ng mga puno, at nagpapasya kung alin ang gagamitin sa A/B test.

Operasyon ng machine learning sa Mail.ru Mail

Sa oras ng pagpapatupad, pinahintulutan kami ng diskarteng ito na madagdagan ang bilang ng mga matagumpay na pagsubok sa A/B nang maraming beses.

Pagsubok at Pagsubaybay

Ang pagsubok at pagsubaybay, kakaiba, ay hindi nakakasama sa ating kalusugan; sa halip, sa kabaligtaran, pinapabuti nila ito at pinapawi ang hindi kinakailangang stress. Binibigyang-daan ka ng pagsubok na maiwasan ang isang pagkabigo, at nagbibigay-daan sa iyo ang pagsubaybay na matukoy ito sa oras upang mabawasan ang epekto sa mga user.

Mahalagang maunawaan dito na maaga o huli ang iyong system ay palaging magkakamali - ito ay dahil sa pag-unlad ng ikot ng anumang software. Sa simula ng pag-unlad ng system palaging mayroong maraming mga bug hanggang sa ang lahat ay umayos at ang pangunahing yugto ng pagbabago ay nakumpleto. Ngunit sa paglipas ng panahon, ang entropy ay tumatagal, at ang mga error ay lilitaw muli - dahil sa pagkasira ng mga bahagi sa paligid at mga pagbabago sa data, na pinag-usapan ko sa simula.

Dito gusto kong tandaan na ang anumang machine learning system ay dapat isaalang-alang mula sa punto ng view ng tubo nito sa buong ikot ng buhay nito. Ang graph sa ibaba ay nagpapakita ng isang halimbawa kung paano gumagana ang system upang mahuli ang isang bihirang uri ng spam (ang linya sa graph ay malapit sa zero). Isang araw, dahil sa maling naka-cache na katangian, nabaliw siya. Tulad ng swerte, walang pagsubaybay para sa abnormal na pag-trigger; bilang isang resulta, ang system ay nagsimulang mag-save ng mga titik sa malalaking dami sa folder na "spam" sa hangganan ng paggawa ng desisyon. Sa kabila ng pagwawasto sa mga kahihinatnan, ang sistema ay nakagawa na ng maraming beses na nagkamali na hindi nito babayaran ang sarili nito kahit sa loob ng limang taon. At ito ay isang kumpletong kabiguan mula sa punto ng view ng ikot ng buhay ng modelo.

Operasyon ng machine learning sa Mail.ru Mail

Samakatuwid, ang isang simpleng bagay tulad ng pagsubaybay ay maaaring maging susi sa buhay ng isang modelo. Bilang karagdagan sa mga karaniwan at malinaw na sukatan, isinasaalang-alang namin ang pamamahagi ng mga tugon at marka ng modelo, pati na rin ang pamamahagi ng mga halaga ng pangunahing tampok. Gamit ang KL divergence, maaari nating ihambing ang kasalukuyang distribusyon sa makasaysayang isa o ang mga halaga sa pagsubok ng A/B sa natitirang bahagi ng stream, na nagpapahintulot sa amin na mapansin ang mga anomalya sa modelo at ibalik ang mga pagbabago sa isang napapanahong paraan.

Sa karamihan ng mga kaso, inilulunsad namin ang aming mga unang bersyon ng mga system gamit ang mga simpleng heuristic o modelo na ginagamit namin bilang pagsubaybay sa hinaharap. Halimbawa, sinusubaybayan namin ang modelo ng NER kumpara sa mga regular para sa mga partikular na online na tindahan, at kung bumaba ang saklaw ng classifier kumpara sa kanila, naiintindihan namin ang mga dahilan. Isa pang kapaki-pakinabang na paggamit ng heuristic!

Mga resulta ng

Balikan natin muli ang mga pangunahing ideya ng artikulo.

  • Fibdeck. Palagi naming iniisip ang gumagamit: kung paano siya mabubuhay sa aming mga pagkakamali, kung paano niya maiuulat ang mga ito. Huwag kalimutan na ang mga user ay hindi pinagmumulan ng purong feedback para sa mga modelo ng pagsasanay, at kailangan itong i-clear sa tulong ng mga auxiliary ML system. Kung hindi posible na mangolekta ng signal mula sa gumagamit, pagkatapos ay naghahanap kami ng mga alternatibong mapagkukunan ng feedback, halimbawa, mga konektadong system.
  • Karagdagang pagsasanay. Ang pangunahing bagay dito ay pagpapatuloy, kaya umaasa kami sa kasalukuyang modelo ng produksyon. Nagsasanay kami ng mga bagong modelo upang hindi sila magkaiba mula sa nauna dahil sa harmonic regularization at katulad na mga trick.
  • I-deploy. Ang awtomatikong pag-deploy batay sa mga sukatan ay lubos na nakakabawas sa oras para sa pagpapatupad ng mga modelo. Pagsubaybay sa mga istatistika at pamamahagi ng paggawa ng desisyon, ang bilang ng mga pagbagsak mula sa mga user ay sapilitan para sa iyong mahimbing na pagtulog at produktibong katapusan ng linggo.

Well, umaasa ako na makakatulong ito sa iyo na mapabuti ang iyong mga ML system nang mas mabilis, mas mabilis silang mai-market, at gawing mas maaasahan at hindi gaanong nakaka-stress ang mga ito.

Pinagmulan: www.habr.com

Magdagdag ng komento