Mail.ru Mail-da mashina o'rganishning ishlashi

Mail.ru Mail-da mashina o'rganishning ishlashi

Highload++ va DataFest Minsk 2019 da qilgan chiqishlarim asosida.

Bugungi kunda ko'pchilik uchun pochta onlayn hayotning ajralmas qismidir. Uning yordami bilan biz biznes yozishmalarini olib boramiz, moliya, mehmonxonalarni bron qilish, buyurtmalarni joylashtirish va boshqalar bilan bog'liq barcha turdagi muhim ma'lumotlarni saqlaymiz. 2018 yil o'rtalarida biz pochtani rivojlantirish uchun mahsulot strategiyasini ishlab chiqdik. Zamonaviy pochta qanday bo'lishi kerak?

Pochta bo'lishi kerak aqlli, ya'ni foydalanuvchilarga axborotning ortib borayotgan hajmini boshqarishga yordam berish: filtrlash, tuzilish va uni eng qulay tarzda taqdim etish. U shunday bo'lishi kerak foydali, to'g'ridan-to'g'ri pochta qutingizdagi turli xil vazifalarni hal qilish imkonini beradi, masalan, jarimalarni to'lash (afsuski, men foydalanadigan funktsiya). Shu bilan birga, albatta, pochta axborotni himoya qilish, spamni yo'q qilish va xakerlikdan himoya qilish, ya'ni bo'lishi kerak. xavfsiz.

Ushbu sohalar bir qator asosiy muammolarni belgilaydi, ularning aksariyati mashinani o'rganish yordamida samarali hal qilinishi mumkin. Bu erda strategiyaning bir qismi sifatida ishlab chiqilgan mavjud xususiyatlarning misollari - har bir yo'nalish uchun bittadan.

  • Matnni javob. Pochtada aqlli javob berish xususiyati mavjud. Neyron tarmoq maktub matnini tahlil qiladi, uning ma'nosi va maqsadini tushunadi va natijada uchta eng mos javob variantini taklif qiladi: ijobiy, salbiy va neytral. Bu xatlarga javob berishda vaqtni sezilarli darajada tejashga yordam beradi, shuningdek, ko'pincha nostandart va kulgili tarzda javob beradi.
  • Elektron pochta xabarlarini guruhlashonlayn-do'konlardagi buyurtmalar bilan bog'liq. Biz tez-tez onlayn xarid qilamiz va, qoida tariqasida, do'konlar har bir buyurtma uchun bir nechta elektron pochta xabarlarini yuborishi mumkin. Misol uchun, eng katta xizmat bo'lgan AliExpress'dan bitta buyurtma uchun juda ko'p harflar keladi va biz terminalda ularning soni 29 tagacha yetishi mumkinligini hisoblab chiqdik. Shuning uchun nomlangan shaxsni tanib olish modelidan foydalanib, buyurtma raqamini chiqaramiz. va matndagi boshqa ma'lumotlar va barcha harflarni bitta ipda guruhlang. Shuningdek, biz buyurtma haqidagi asosiy ma'lumotlarni alohida qutida ko'rsatamiz, bu esa ushbu turdagi elektron pochta bilan ishlashni osonlashtiradi.

    Mail.ru Mail-da mashina o'rganishning ishlashi

  • Antiphishing. Fishing elektron pochtaning o'ta xavfli firibgar turi bo'lib, uning yordamida tajovuzkorlar moliyaviy ma'lumotlarni (jumladan, foydalanuvchining bank kartalari) va loginlarni olishga harakat qilishadi. Bunday xatlar xizmat tomonidan yuborilgan haqiqiylarga taqlid qiladi, shu jumladan ingl. Shuning uchun, Computer Vision yordamida biz yirik kompaniyalarning (masalan, Mail.ru, Sber, Alfa) logotiplari va harflarining dizayn uslubini taniymiz va buni spam va fishing tasniflagichlarimizdagi matn va boshqa xususiyatlar bilan birga hisobga olamiz. .

Mashinani o'rganish

Umuman olganda, elektron pochtada mashinani o'rganish haqida bir oz. Pochta juda yuklangan tizimdir: 1,5 million DAU foydalanuvchisi uchun serverlarimiz orqali kuniga o'rtacha 30 milliard xat o'tadi. Taxminan 30 ta mashinani o'rganish tizimlari barcha kerakli funktsiyalar va xususiyatlarni qo'llab-quvvatlaydi.

Har bir harf butun tasniflash quvuridan o'tadi. Avval biz spamni kesib, yaxshi elektron pochta xabarlarini qoldiramiz. Foydalanuvchilar ko'pincha antispam ishini sezmaydilar, chunki spamning 95-99% hatto tegishli papkaga tushmaydi. Spamni aniqlash bizning tizimimizning juda muhim qismidir va eng qiyini, chunki spamga qarshi sohada mudofaa va hujum tizimlari o'rtasida doimiy moslashuv mavjud bo'lib, bu bizning jamoamiz uchun doimiy muhandislik muammosini ta'minlaydi.

Keyinchalik, biz odamlar va robotlardan harflarni ajratamiz. Odamlardan kelgan xatlar eng muhimi, shuning uchun biz ular uchun Smart Reply kabi funksiyalarni taqdim etamiz. Robotlardan kelgan xatlar ikki qismga bo'linadi: tranzaksiya - bu xizmatlardan muhim xatlar, masalan, xaridlar yoki mehmonxonalarni bron qilish tasdiqlari, moliyaviy va axborot - bular biznes reklamasi, chegirmalar.

Biz tranzaktsion elektron pochta xabarlari shaxsiy yozishmalarga teng ahamiyatga ega deb hisoblaymiz. Ular qo'l ostida bo'lishi kerak, chunki biz tez-tez buyurtma yoki aviachipta bron qilish haqida ma'lumotni tezda topishimiz kerak va biz bu harflarni qidirishga vaqt sarflaymiz. Shuning uchun, qulaylik uchun biz ularni avtomatik ravishda oltita asosiy toifaga ajratamiz: sayohat, buyurtmalar, moliya, chiptalar, ro'yxatga olish va nihoyat, jarimalar.

Ma'lumot xatlari eng katta va ehtimol unchalik muhim bo'lmagan guruh bo'lib, ular darhol javob berishni talab qilmaydi, chunki agar u bunday xatni o'qimasa, foydalanuvchi hayotida hech qanday muhim narsa o'zgarmaydi. Yangi interfeysimizda biz ularni ikkita mavzuga ajratamiz: ijtimoiy tarmoqlar va axborot byulletenlari, shu tariqa kiruvchi qutini vizual ravishda tozalaymiz va faqat muhim xabarlarni ko'rinadigan qilib qo'yamiz.

Mail.ru Mail-da mashina o'rganishning ishlashi

Operatsiya

Ko'p sonli tizimlar ishlashda juda ko'p qiyinchiliklarni keltirib chiqaradi. Axir, modellar, har qanday dasturiy ta'minot kabi, vaqt o'tishi bilan yomonlashadi: funktsiyalar buziladi, mashinalar ishlamay qoladi, kod egri bo'ladi. Bundan tashqari, ma'lumotlar doimiy ravishda o'zgarib turadi: yangilari qo'shiladi, foydalanuvchi xatti-harakatlari o'zgartiriladi va hokazo, shuning uchun tegishli yordamga ega bo'lmagan model vaqt o'tishi bilan yomonroq va yomonroq ishlaydi.

Shuni unutmasligimiz kerakki, mashinani o'rganish foydalanuvchilarning hayotiga qanchalik chuqurroq kirsa, ular ekotizimga shunchalik ta'sir qiladi va natijada bozor ishtirokchilari shunchalik ko'p moliyaviy yo'qotishlar yoki foyda olishlari mumkin. Shu sababli, tobora ko'payib borayotgan sohalarda o'yinchilar ML algoritmlari ishiga moslashmoqda (klassik misollar - reklama, qidiruv va yuqorida aytib o'tilgan antispam).

Shuningdek, mashinani o'rganish vazifalari o'ziga xos xususiyatga ega: tizimdagi har qanday, hatto kichik o'zgarishlar ham model bilan juda ko'p ishlarni keltirib chiqarishi mumkin: ma'lumotlar bilan ishlash, qayta tayyorlash, joylashtirish haftalar yoki oylar davom etishi mumkin. Shu sababli, modellaringiz ishlaydigan muhit qanchalik tez o'zgarsa, ularni saqlash uchun shunchalik ko'p harakat talab etiladi. Jamoa juda ko'p tizimlarni yaratishi va bundan xursand bo'lishi mumkin, lekin keyin deyarli barcha resurslarini yangi hech narsa qilish imkoniyatisiz ularni saqlashga sarflashi mumkin. Biz bir marta antispam jamoasida bunday holatga duch keldik. Va ular qo'llab-quvvatlashni avtomatlashtirish kerak degan aniq xulosaga kelishdi.

Avtomatlashtirish

Nimani avtomatlashtirish mumkin? Deyarli hamma narsa, aslida. Men mashinani o'rganish infratuzilmasini belgilaydigan to'rtta sohani aniqladim:

  • ma'lumotlar yig'ish;
  • qo'shimcha ta'lim;
  • joylashtirish;
  • sinov va monitoring.

Agar atrof-muhit beqaror va doimiy ravishda o'zgarib tursa, model atrofidagi barcha infratuzilma modelning o'zidan ko'ra muhimroq bo'lib chiqadi. Bu yaxshi eski chiziqli tasniflagich bo'lishi mumkin, lekin agar siz uni to'g'ri xususiyatlar bilan ta'minlasangiz va foydalanuvchilardan yaxshi fikr-mulohazalarni olsangiz, u barcha qo'ng'iroq va hushtaklarga ega zamonaviy modellarga qaraganda ancha yaxshi ishlaydi.

Teskari aloqa davri

Ushbu tsikl ma'lumotlar yig'ish, qo'shimcha o'qitish va joylashtirishni - aslida butun modelni yangilash tsiklini birlashtiradi. Nima uchun bu muhim? Pochtadagi ro'yxatdan o'tish jadvaliga qarang:

Mail.ru Mail-da mashina o'rganishning ishlashi

Mashinani o'rganishni ishlab chiquvchi botlarni elektron pochtada ro'yxatdan o'tishga to'sqinlik qiluvchi anti-bot modelini joriy qildi. Grafik faqat haqiqiy foydalanuvchilar qoladigan qiymatga tushadi. Hammasi ajoyib! Ammo to'rt soat o'tadi, botlar o'zlarining skriptlarini o'zgartiradilar va hamma narsa normal holatga qaytadi. Ushbu amalga oshirishda ishlab chiquvchi bir oy davomida xususiyatlarni qo'shib, modelni qayta tayyorlashga sarfladi, ammo spamer to'rt soat ichida moslasha oldi.

Bunchalik og'riqli bo'lmaslik va keyin hamma narsani takrorlamaslik uchun, avvalo, fikr-mulohaza zanjiri qanday ko'rinishi va atrof-muhit o'zgarsa, nima qilishimiz haqida o'ylashimiz kerak. Keling, ma'lumotlarni yig'ishdan boshlaylik - bu bizning algoritmlarimiz uchun yoqilg'i.

Ma'lumotlar yig'ish

Ma'lumki, zamonaviy neyron tarmoqlar uchun ma'lumotlar qancha ko'p bo'lsa, shuncha yaxshi bo'ladi va ular, aslida, mahsulot foydalanuvchilari tomonidan ishlab chiqariladi. Foydalanuvchilar ma'lumotlarni belgilash orqali bizga yordam berishi mumkin, ammo biz bundan suiiste'mol qila olmaymiz, chunki foydalanuvchilar bir nuqtada modellaringizni to'ldirishdan charchashadi va boshqa mahsulotga o'tishadi.

Eng keng tarqalgan xatolardan biri (bu erda men Endryu Ngga havola qilaman) foydalanuvchining fikr-mulohazasiga emas, balki test ma'lumotlar to'plamidagi ko'rsatkichlarga haddan tashqari e'tibor berishdir, bu aslida ish sifatining asosiy o'lchovidir, chunki biz yaratamiz. foydalanuvchi uchun mahsulot. Agar foydalanuvchi modelning ishini tushunmasa yoki yoqtirmasa, unda hamma narsa buziladi.

Shuning uchun foydalanuvchi har doim ovoz berish imkoniyatiga ega bo'lishi kerak va unga fikr-mulohazalar uchun vosita berilishi kerak. Agar biz pochta qutisiga moliya bilan bog'liq xat kelgan deb hisoblasak, biz uni "moliya" deb belgilashimiz va foydalanuvchi bosishi va bu moliya emasligini aytishi mumkin bo'lgan tugmani chizishimiz kerak.

Qayta aloqa sifati

Keling, foydalanuvchilarning fikr-mulohazalarining sifati haqida gapiraylik. Birinchidan, siz va foydalanuvchi bir kontseptsiyaga turli ma'nolarni kiritishingiz mumkin. Misol uchun, siz va sizning mahsulot menejerlaringiz "moliya" bankdan kelgan xatlarni anglatadi deb o'ylaysiz va foydalanuvchi buvisining pensiyasi haqidagi xati ham moliyaga tegishli deb o'ylaydi. Ikkinchidan, hech qanday mantiqsiz tugmachalarni bosishni yaxshi ko'radigan foydalanuvchilar bor. Uchinchidan, foydalanuvchi o'z xulosalarida chuqur xato qilishi mumkin. Bizning amaliyotimizdan yorqin misol klassifikatorni amalga oshirishdir Nigeriya spam, foydalanuvchidan Afrikadagi to'satdan topilgan uzoq qarindoshidan bir necha million dollar olish so'raladigan spamning juda kulgili turi. Ushbu tasniflagichni qo'llaganimizdan so'ng, biz ushbu elektron pochta xabarlariga "Spam emas" bosishlarini tekshirdik va ularning 80% shirali Nigeriya spamlari ekanligi ma'lum bo'ldi, bu foydalanuvchilar juda ishonuvchan bo'lishi mumkinligini ko'rsatadi.

Shuni ham unutmasligimiz kerakki, tugmachalarni nafaqat odamlar, balki o‘zini brauzerdek ko‘rsatuvchi har xil botlar ham bosishi mumkin. Shunday qilib, xom fikr-mulohaza o'rganish uchun yaxshi emas. Ushbu ma'lumot bilan nima qila olasiz?

Biz ikkita yondashuvdan foydalanamiz:

  • Bog'langan ML dan fikr-mulohazalar. Misol uchun, bizda onlayn anti-bot tizimi mavjud bo'lib, u men aytib o'tganimdek, cheklangan miqdordagi belgilarga asoslangan holda tezkor qaror qabul qiladi. Va haqiqatdan keyin ishlaydigan ikkinchi, sekin tizim mavjud. Unda foydalanuvchi, uning xatti-harakati va boshqalar haqida ko'proq ma'lumotlar mavjud. Natijada, eng asosli qaror qabul qilinadi, shunga ko'ra u yuqori aniqlik va to'liqlikka ega. Siz ushbu tizimlarning ishlashidagi farqni o'quv ma'lumotlari sifatida birinchisiga yo'naltirishingiz mumkin. Shunday qilib, oddiyroq tizim har doim murakkabroqning ishlashiga yaqinlashishga harakat qiladi.
  • Klassifikatsiyani bosing. Siz shunchaki har bir foydalanuvchi bosishini tasniflashingiz, uning haqiqiyligi va qulayligini baholashingiz mumkin. Biz buni foydalanuvchi atributlari, uning tarixi, jo'natuvchining atributlari, matnning o'zi va tasniflagichlar natijasi yordamida spamga qarshi pochta orqali qilamiz. Natijada biz foydalanuvchilarning fikr-mulohazalarini tasdiqlovchi avtomatik tizimga ega bo'lamiz. Va uni kamroq tez-tez qayta tayyorlash kerakligi sababli, uning ishi boshqa barcha tizimlar uchun asos bo'lishi mumkin. Ushbu modeldagi asosiy ustuvorlik aniqlikdir, chunki modelni noto'g'ri ma'lumotlarga o'rgatish oqibatlarga olib keladi.

Biz ma'lumotlarni tozalash va ML tizimlarimizni yanada o'rgatish jarayonida foydalanuvchilar haqida unutmasligimiz kerak, chunki biz uchun grafikdagi minglab, millionlab xatolar statistika, foydalanuvchi uchun esa har bir xato fojiadir. Foydalanuvchi qandaydir tarzda mahsulotdagi xatoingiz bilan yashashi kerakligiga qo'shimcha ravishda, fikr-mulohazalarni olgandan so'ng, u kelajakda shunga o'xshash vaziyatni bartaraf etishini kutadi. Shu sababli, foydalanuvchilarga nafaqat ovoz berish imkoniyatini berish, balki ML tizimlarining xatti-harakatlarini to'g'rilash, masalan, har bir fikr-mulohaza bosish uchun shaxsiy evristika yaratish har doim arziydi; pochta holatida, bu filtrlash qobiliyati bo'lishi mumkin. bu foydalanuvchi uchun jo'natuvchi va sarlavha bo'yicha bunday harflar.

Bundan tashqari, boshqa foydalanuvchilar shu kabi muammolarga duch kelmasligi uchun yarim avtomatik yoki qo'lda rejimda qo'llab-quvvatlash uchun ba'zi hisobotlar yoki so'rovlar asosida model yaratishingiz kerak.

O'rganish uchun evristika

Bu evristika va tayoqchalarda ikkita muammo bor. Birinchisi, tobora ortib borayotgan tayoqchalarni uzoq vaqt davomida sifati va ishlashi u yoqda tursin, saqlab qolish qiyin. Ikkinchi muammo shundaki, xato tez-tez bo'lmasligi mumkin va modelni yanada o'rgatish uchun bir necha marta bosish etarli bo'lmaydi. Agar quyidagi yondashuv qo'llanilsa, bu ikki bog'liq bo'lmagan ta'sir sezilarli darajada zararsizlantirilishi mumkin.

  1. Biz vaqtinchalik tayoqchani yaratamiz.
  2. Biz undan ma'lumotlarni modelga yuboramiz, u muntazam ravishda o'zini yangilaydi, shu jumladan olingan ma'lumotlar bo'yicha. Bu erda, albatta, o'quv majmuasidagi ma'lumotlar sifatini pasaytirmaslik uchun evristikaning yuqori aniqlikka ega bo'lishi muhimdir.
  3. Keyin biz qo'ltiq tayoqchasini ishga tushirish uchun monitoringni o'rnatdik va agar bir muncha vaqt o'tgach, tayoq endi ishlamasa va model bilan to'liq qoplangan bo'lsa, uni xavfsiz olib tashlashingiz mumkin. Endi bu muammoning yana takrorlanishi dargumon.

Shunday qilib, tayoqlar armiyasi juda foydali. Asosiysi, ularning xizmati shoshilinch va doimiy emas.

Qo'shimcha trening

Qayta tayyorlash - bu foydalanuvchilar yoki boshqa tizimlarning fikr-mulohazalari natijasida olingan yangi ma'lumotlarni qo'shish va unga mavjud modelni o'rgatish jarayoni. Qo'shimcha mashg'ulotlarda bir nechta muammolar bo'lishi mumkin:

  1. Model oddiygina qo'shimcha mashg'ulotlarni qo'llab-quvvatlamasligi mumkin, lekin faqat noldan o'rganing.
  2. Tabiat kitobining hech bir joyida qo'shimcha o'qitish ishlab chiqarishdagi ish sifatini albatta yaxshilaydi, deb yozilmagan. Ko'pincha buning aksi sodir bo'ladi, ya'ni faqat buzilish mumkin.
  3. O'zgarishlar oldindan aytib bo'lmaydigan bo'lishi mumkin. Bu biz o'zimiz uchun aniqlagan juda nozik nuqta. A/B testidagi yangi model joriy bilan solishtirganda o'xshash natijalarni ko'rsatsa ham, bu uning bir xil ishlashini anglatmaydi. Ularning ishi faqat bir foizda farq qilishi mumkin, bu yangi xatolarni keltirib chiqarishi yoki allaqachon tuzatilgan eskilarini qaytarishi mumkin. Biz ham, foydalanuvchilar ham hozirgi xatolar bilan qanday yashashni allaqachon bilamiz va ko'p sonli yangi xatolar paydo bo'lganda, foydalanuvchi ham nima bo'layotganini tushunmasligi mumkin, chunki u oldindan aytib bo'ladigan xatti-harakatlarni kutadi.

Shu sababli, qo'shimcha mashg'ulotlarda eng muhimi, modelni takomillashtirish yoki hech bo'lmaganda yomonlashmasligini ta'minlashdir.

Qo'shimcha ta'lim haqida gapirganda, birinchi navbatda, "Faol o'rganish" yondashuvi aqlga keladi. Bu nimani anglatadi? Misol uchun, tasniflagich elektron pochtaning moliya bilan bog'liqligini aniqlaydi va uning qaror chegarasi atrofida biz etiketli misollar namunasini qo'shamiz. Bu, masalan, ko'p fikr-mulohazalar mavjud bo'lgan reklamada yaxshi ishlaydi va siz modelni onlayn tarzda o'rgatishingiz mumkin. Va agar kam fikr-mulohaza bo'lsa, biz ishlab chiqarish ma'lumotlarini taqsimlashga nisbatan juda noaniq namunani olamiz, uning asosida ish paytida modelning xatti-harakatlarini baholash mumkin emas.

Mail.ru Mail-da mashina o'rganishning ishlashi

Aslida, bizning maqsadimiz eski naqshlarni, allaqachon ma'lum bo'lgan modellarni saqlab qolish va yangilarini olishdir. Bu erda doimiylik muhim ahamiyatga ega. Biz tez-tez ishlab chiqarish uchun juda ko'p mashaqqatli bo'lgan model allaqachon ishlamoqda, shuning uchun biz uning ishlashiga e'tibor qaratishimiz mumkin.

Pochtada turli xil modellar qo'llaniladi: daraxtlar, chiziqli, neyron tarmoqlar. Har biri uchun biz o'z qo'shimcha trening algoritmimizni yaratamiz. Qo'shimcha trening jarayonida biz nafaqat yangi ma'lumotlarni, balki ko'pincha yangi xususiyatlarni ham olamiz, biz quyida keltirilgan barcha algoritmlarda hisobga olamiz.

Chiziqli modellar

Aytaylik, bizda logistik regressiya bor. Biz quyidagi komponentlardan yo'qotish modelini yaratamiz:

  • Yangi ma'lumotlarda LogLoss;
  • biz yangi xususiyatlarning og'irliklarini tartibga solamiz (biz eskilariga tegmaymiz);
  • biz eski namunalarni saqlab qolish uchun eski ma'lumotlardan ham o'rganamiz;
  • va, ehtimol, eng muhimi: biz Harmonik tartibga solishni qo'shamiz, bu normaga muvofiq og'irliklar eski modelga nisbatan unchalik o'zgarmasligini kafolatlaydi.

Har bir Loss komponenti koeffitsientlarga ega bo'lganligi sababli, biz o'zaro tekshirish orqali yoki mahsulot talablariga asoslanib, vazifamiz uchun maqbul qiymatlarni tanlashimiz mumkin.

Mail.ru Mail-da mashina o'rganishning ishlashi

Daraxtlar

Keling, qaror daraxtlariga o'tamiz. Biz daraxtlarni qo'shimcha o'rgatish uchun quyidagi algoritmni tuzdik:

  1. Ishlab chiqarish eski ma'lumotlar to'plamida o'qitilgan 100-300 daraxtdan iborat o'rmonni boshqaradi.
  2. Oxirida biz M = 5 bo'lakni olib tashlaymiz va 2M = 10 ta yangisini qo'shamiz, ular butun ma'lumotlar to'plamiga o'rgatilgan, lekin yangi ma'lumotlar uchun katta vaznga ega, bu tabiiy ravishda modelning bosqichma-bosqich o'zgarishini kafolatlaydi.

Shubhasiz, vaqt o'tishi bilan daraxtlar soni sezilarli darajada oshadi va vaqtni qondirish uchun ularni vaqti-vaqti bilan kamaytirish kerak. Buning uchun biz hozir hamma joyda mavjud bo'lgan Knowledge Distillation (KD) dan foydalanamiz. Uning ishlash printsipi haqida qisqacha.

  1. Bizda hozirgi "murakkab" model mavjud. Biz uni o'quv ma'lumotlar to'plamida ishga tushiramiz va chiqishda sinf ehtimoli taqsimotini olamiz.
  2. Keyinchalik, biz talaba modelini (bu holda kamroq daraxtlarga ega model) maqsadli o'zgaruvchi sifatida sinf taqsimotidan foydalangan holda model natijalarini takrorlashga o'rgatamiz.
  3. Shuni ta'kidlash kerakki, biz ma'lumotlar to'plamining belgilaridan hech qanday tarzda foydalanmaymiz va shuning uchun biz o'zboshimchalik bilan ma'lumotlardan foydalanishimiz mumkin. Albatta, biz talaba modeli uchun o'quv namunasi sifatida jangovar oqimdan ma'lumotlar namunasidan foydalanamiz. Shunday qilib, o'quv majmuasi bizga modelning to'g'riligini ta'minlashga imkon beradi va oqim namunasi o'quv majmuasining noto'g'riligini qoplagan holda ishlab chiqarishni taqsimlash bo'yicha shunga o'xshash ishlashni kafolatlaydi.

Mail.ru Mail-da mashina o'rganishning ishlashi

Ushbu ikki usulning kombinatsiyasi (daraxtlarni qo'shish va bilimlarni distillashdan foydalangan holda ularning sonini vaqti-vaqti bilan kamaytirish) yangi naqshlarni joriy etish va to'liq davomiylikni ta'minlaydi.

KD yordamida biz model funksiyalari ustida ham turli operatsiyalarni bajaramiz, masalan, xususiyatlarni olib tashlash va bo'shliqlar ustida ishlash. Bizning holatda, bizda bir qator muhim statistik xususiyatlar mavjud (yuboruvchilar, matn xeshlari, URL manzillari va boshqalar bo'yicha), ular ma'lumotlar bazasida saqlanadi, ular muvaffaqiyatsizlikka uchraydi. Model, shubhasiz, voqealarning bunday rivojlanishiga tayyor emas, chunki o'quv majmuasida muvaffaqiyatsizlik holatlari yuzaga kelmaydi. Bunday hollarda biz KD va ko'paytirish usullarini birlashtiramiz: ma'lumotlarning bir qismini o'rgatishda biz kerakli xususiyatlarni olib tashlaymiz yoki qayta o'rnatamiz va biz asl teglarni olamiz (joriy modelning natijalari) va talaba modeli ushbu taqsimotni takrorlashni o'rganadi. .

Mail.ru Mail-da mashina o'rganishning ishlashi

Biz qanchalik jiddiy model manipulyatsiyasi sodir bo'lsa, ip namunasining foizi shunchalik ko'p ekanligini payqadik.

Xususiyatlarni olib tashlash, eng oddiy operatsiya, oqimning faqat kichik qismini talab qiladi, chunki faqat bir nechta xususiyatlar o'zgaradi va joriy model bir xil to'plamda o'qitilgan - farq minimaldir. Modelni soddalashtirish uchun (daraxtlar sonini bir necha marta qisqartirish) allaqachon 50 dan 50 gacha talab qilinadi va modelning ishlashiga jiddiy ta'sir ko'rsatadigan muhim statistik xususiyatlarni o'tkazib yuborish uchun, ishini tekislash uchun yanada ko'proq oqim talab qilinadi. barcha turdagi harflar bo'yicha qoldirmaslikka chidamli yangi model.

Mail.ru Mail-da mashina o'rganishning ishlashi

Tez matn

Tez matnga o'tamiz. Shuni eslatib o'tamanki, so'zning ko'rinishi (Embedding) so'zning o'zi va uning barcha harfi N-grammlari, odatda trigramlar yig'indisidan iborat. Trigramlar juda ko'p bo'lishi mumkinligi sababli, Bucket Hashing ishlatiladi, ya'ni butun bo'shliqni ma'lum bir sobit xashmapga aylantiradi. Natijada, og'irlik matritsasi so'zlar soni + chelaklar uchun ichki qatlamning o'lchami bilan olinadi.

Qo'shimcha mashg'ulotlar bilan yangi belgilar paydo bo'ladi: so'zlar va trigrammalar. Facebook-dan standart kuzatuv mashg'ulotlarida hech qanday muhim narsa sodir bo'lmaydi. Yangi ma'lumotlar bo'yicha faqat o'zaro entropiyaga ega eski og'irliklar qayta o'rganiladi. Shunday qilib, yangi xususiyatlar qo'llanilmaydi, albatta, bu yondashuv ishlab chiqarishda modelning oldindan aytib bo'lmaydiganligi bilan bog'liq yuqorida tavsiflangan barcha kamchiliklarga ega. Shuning uchun biz FastText-ni biroz o'zgartirdik. Biz barcha yangi og'irliklarni (so'zlar va trigramlar) qo'shamiz, butun matritsani o'zaro entropiya bilan kengaytiramiz va chiziqli modelga o'xshash garmonik tartibga solishni qo'shamiz, bu eski vaznlarning ahamiyatsiz o'zgarishini kafolatlaydi.

Mail.ru Mail-da mashina o'rganishning ishlashi

CNN

Konvolyutsion tarmoqlar biroz murakkabroq. Agar oxirgi qatlamlar CNNda to'ldirilgan bo'lsa, unda, albatta, siz harmonik tartibga solishni qo'llashingiz va uzluksizlikni kafolatlashingiz mumkin. Ammo agar butun tarmoqni qo'shimcha o'qitish kerak bo'lsa, unda bunday tartibga solish endi barcha qatlamlarga qo'llanilmaydi. Biroq, Triplet Loss (Triplet Loss) orqali qo'shimcha joylashtirishlarni o'rgatish imkoniyati mavjud.original maqola).

Uch karra yo'qotish

Misol sifatida fishingga qarshi vazifadan foydalanib, umumiy ma'noda Triplet Loss-ni ko'rib chiqaylik. Biz logotipimizni, shuningdek, boshqa kompaniyalar logotiplarining ijobiy va salbiy misollarini olamiz. Biz birinchisi orasidagi masofani minimallashtiramiz va ikkinchisi orasidagi masofani maksimal darajada oshiramiz, sinflarning ko'proq ixchamligini ta'minlash uchun buni kichik bo'shliq bilan qilamiz.

Mail.ru Mail-da mashina o'rganishning ishlashi

Agar biz tarmoqni yanada o'rgatadigan bo'lsak, unda bizning metrik makonimiz butunlay o'zgaradi va u avvalgisiga mutlaqo mos kelmaydi. Bu vektorlardan foydalanadigan muammolarda jiddiy muammo. Ushbu muammoni hal qilish uchun biz mashg'ulot paytida eski o'rnatishlarni aralashtiramiz.

Biz o'quv majmuasiga yangi ma'lumotlarni qo'shdik va modelning ikkinchi versiyasini noldan o'rgatmoqdamiz. Ikkinchi bosqichda biz o'z tarmog'imizni qo'shimcha o'qitamiz (Finetuning): birinchi navbatda oxirgi qatlam tugallanadi, so'ngra butun tarmoq muzlatilmaydi. Uchliklarni yaratish jarayonida biz o'rgatilgan modeldan foydalangan holda o'rnatishning faqat bir qismini hisoblaymiz, qolganlari - eskisidan. Shunday qilib, qo'shimcha o'qitish jarayonida biz v1 va v2 metrik bo'shliqlarining mosligini ta'minlaymiz. Harmonik tartibga solishning noyob versiyasi.

Mail.ru Mail-da mashina o'rganishning ishlashi

Butun arxitektura

Agar biz antispamdan foydalanadigan butun tizimni misol sifatida ko'rib chiqsak, u holda modellar izolyatsiyalanmagan, balki bir-birining ichiga joylashtirilgan. Biz rasm, matn va boshqa xususiyatlarni olamiz, CNN va Fast Text yordamida biz o'rnatishlarni olamiz. Keyinchalik, turli sinflar (harflar turlari, spam, logotip mavjudligi) uchun ballarni ta'minlaydigan o'rnatishlar ustiga tasniflagichlar qo'llaniladi. Yakuniy qaror qabul qilish uchun signallar va belgilar allaqachon daraxtlar o'rmoniga kirib bormoqda. Ushbu sxemadagi individual klassifikatorlar barcha ma'lumotlarni qarorlar daraxtlariga xom shaklda berishdan ko'ra, tizim natijalarini yaxshiroq talqin qilish va aniqrog'i muammolar yuzaga kelganda komponentlarni qayta tayyorlash imkonini beradi.

Mail.ru Mail-da mashina o'rganishning ishlashi

Natijada, biz har bir darajada uzluksizlikni kafolatlaymiz. CNN va Fast Text-ning pastki darajasida biz garmonik tartibga solishdan foydalanamiz, o'rtadagi tasniflagichlar uchun biz ehtimollik taqsimotining izchilligi uchun garmonik tartibga solish va tezlikni kalibrlashdan foydalanamiz. Daraxtni ko'paytirish bosqichma-bosqich yoki bilimlarni distillash yordamida o'qitiladi.

Umuman olganda, bunday ichki o'rnatilgan mashinani o'rganish tizimini saqlash odatda og'riqdir, chunki quyi darajadagi har qanday komponent yuqoridagi butun tizimni yangilashga olib keladi. Ammo bizning sozlashimizda har bir komponent biroz o'zgarib turadi va avvalgisiga mos keladi, butun tizim butun tuzilmani qayta o'qitishga hojat qoldirmasdan parcha-parcha yangilanishi mumkin, bu esa uni jiddiy ortiqcha xarajatlarsiz qo'llab-quvvatlashga imkon beradi.

Joylashtirish

Biz ma'lumotlarni yig'ish va har xil turdagi modellarni qo'shimcha o'qitishni muhokama qildik, shuning uchun biz ularni ishlab chiqarish muhitiga joylashtirishga o'tmoqdamiz.

A/B testi

Yuqorida aytib o'tganimdek, ma'lumotlarni yig'ish jarayonida biz odatda noxolis namunani olamiz, undan modelning ishlab chiqarish ko'rsatkichlarini baholash mumkin emas. Shuning uchun, joylashtirishda ishlar aslida qanday ketayotganini tushunish uchun modelni oldingi versiya bilan solishtirish kerak, ya'ni A/B testlarini o'tkazish kerak. Darhaqiqat, diagrammalarni chiqarish va tahlil qilish jarayoni juda odatiy va osonlik bilan avtomatlashtirilishi mumkin. Biz modellarimizni asta-sekin 5%, 30%, 50% va 100% foydalanuvchilarga tarqatamiz, shu bilan birga model javoblari va foydalanuvchilarning fikr-mulohazalari bo'yicha barcha mavjud ko'rsatkichlarni to'playmiz. Ba'zi jiddiy o'zgarishlar bo'lsa, biz avtomatik ravishda modelni orqaga qaytaramiz va boshqa hollarda foydalanuvchining etarli miqdordagi bosishlarini yig'ib, biz foizni oshirishga qaror qilamiz. Natijada, biz yangi modelni foydalanuvchilarning 50 foiziga to'liq avtomatik tarzda keltiramiz va bu bosqichni avtomatlashtirish mumkin bo'lsa-da, butun auditoriyaga tarqatish shaxs tomonidan tasdiqlanadi.

Biroq, A/B test jarayoni optimallashtirish uchun joy taklif etadi. Gap shundaki, har qanday A/B testi ancha uzoq davom etadi (bizning holatlarimizda fikr-mulohazalar miqdoriga qarab 6 dan 24 soatgacha davom etadi), bu esa uni ancha qimmat va cheklangan resurslarga olib keladi. Bundan tashqari, A/B testining umumiy vaqtini sezilarli darajada tezlashtirish uchun test uchun yetarlicha yuqori oqim foizi talab qilinadi (kichik foizda ko'rsatkichlarni baholash uchun statistik ahamiyatga ega namunani jalb qilish juda uzoq vaqt talab qilishi mumkin), bu A/B slotlari soni juda cheklangan. Shubhasiz, biz faqat eng istiqbolli modellarni sinab ko'rishimiz kerak, ulardan biz qo'shimcha o'quv jarayonida juda ko'p narsalarni olamiz.

Ushbu muammoni hal qilish uchun biz A / B testining muvaffaqiyatini bashorat qiladigan alohida tasniflagichni o'qidik. Buning uchun biz qaror qabul qilish statistikasi, aniqlik, eslab qolish va boshqa ko'rsatkichlarni o'quv to'plamida, kechiktirilganda va oqimdan namunada xususiyat sifatida olamiz. Shuningdek, biz modelni ishlab chiqarishda mavjud bo'lgan, evristika bilan solishtiramiz va modelning murakkabligini hisobga olamiz. Bu barcha xususiyatlardan foydalangan holda, test tarixi bo'yicha o'qitilgan klassifikator nomzod modellarini baholaydi, bizning holatlarimizda bu daraxtlar o'rmonlari va A/B testida qaysi birini ishlatishni hal qiladi.

Mail.ru Mail-da mashina o'rganishning ishlashi

Amalga oshirish vaqtida bu yondashuv muvaffaqiyatli A/B testlari sonini bir necha barobar oshirish imkonini berdi.

Sinov va monitoring

Sinov va monitoring, g'alati, bizning sog'lig'imizga zarar etkazmaydi, aksincha, uni yaxshilaydi va bizni keraksiz stressdan xalos qiladi. Sinov nosozlikning oldini olishga imkon beradi va monitoring foydalanuvchilarga ta'sirni kamaytirish uchun uni o'z vaqtida aniqlash imkonini beradi.

Bu erda shuni tushunish kerakki, ertami-kechmi sizning tizimingiz har doim xato qiladi - bu har qanday dasturiy ta'minotni ishlab chiqish aylanishi bilan bog'liq. Tizimni ishlab chiqishning boshida, hamma narsa hal bo'lgunga qadar va innovatsiyalarning asosiy bosqichi tugamaguncha, har doim juda ko'p xatolar mavjud. Ammo vaqt o'tishi bilan entropiya o'z ta'sirini ko'rsatadi va xatolar yana paydo bo'ladi - atrofdagi tarkibiy qismlarning buzilishi va boshida aytib o'tgan ma'lumotlarning o'zgarishi tufayli.

Bu erda shuni ta'kidlashni istardimki, har qanday mashinani o'rganish tizimi butun hayot aylanishi davomida uning foydasi nuqtai nazaridan ko'rib chiqilishi kerak. Quyidagi grafikda tizimning kamdan-kam uchraydigan spam turini ushlash uchun qanday ishlashiga misol keltirilgan (grafikdagi chiziq nolga yaqin). Bir kuni, noto'g'ri keshlangan atribut tufayli u aqldan ozdi. Nasib qilsa, g'ayritabiiy ishga tushirish monitoringi o'tkazilmadi, natijada tizim qaror qabul qilish chegarasida "spam" jildiga katta hajmdagi xatlarni saqlashni boshladi. Oqibatlarni tuzatganiga qaramay, tizim shu qadar ko'p marta xatolarga yo'l qo'yganki, hatto besh yil ichida ham o'zini oqlamaydi. Va bu modelning hayot aylanishi nuqtai nazaridan to'liq muvaffaqiyatsizlik.

Mail.ru Mail-da mashina o'rganishning ishlashi

Shuning uchun, monitoring kabi oddiy narsa modelning hayotida kalit bo'lishi mumkin. Standart va aniq ko'rsatkichlarga qo'shimcha ravishda, biz namunaviy javoblar va ballarni taqsimlashni, shuningdek, asosiy xususiyatlar qiymatlarini taqsimlashni ko'rib chiqamiz. KL divergensiyasidan foydalanib, biz joriy taqsimotni tarixiy bilan yoki A/B testidagi qiymatlarni oqimning qolgan qismi bilan solishtirishimiz mumkin, bu bizga modeldagi anomaliyalarni sezish va o'zgarishlarni o'z vaqtida qaytarish imkonini beradi.

Aksariyat hollarda biz tizimlarning birinchi versiyalarini oddiy evristika yoki kelajakda monitoring sifatida ishlatadigan modellar yordamida ishga tushiramiz. Misol uchun, biz NER modelini ma'lum onlayn-do'konlar uchun oddiy modellar bilan solishtirganda kuzatib boramiz va agar tasniflagich qamrovi ular bilan solishtirganda pasaysa, biz sabablarni tushunamiz. Evristikadan yana bir foydali foydalanish!

natijalar

Keling, maqolaning asosiy fikrlarini yana bir bor ko'rib chiqaylik.

  • Fibdeck. Biz har doim foydalanuvchi haqida o'ylaymiz: u bizning xatolarimiz bilan qanday yashaydi, qanday qilib ular haqida xabar bera oladi. Shuni unutmangki, foydalanuvchilar o'qitish modellari uchun sof fikr-mulohazalar manbai emas va uni yordamchi ML tizimlari yordamida tozalash kerak. Agar foydalanuvchidan signal yig'ishning iloji bo'lmasa, biz muqobil aloqa manbalarini, masalan, ulangan tizimlarni qidiramiz.
  • Qo'shimcha trening. Bu erda asosiy narsa - uzluksizlik, shuning uchun biz hozirgi ishlab chiqarish modeliga tayanamiz. Biz yangi modellarni garmonik tartibga solish va shunga o'xshash fokuslar tufayli avvalgisidan unchalik farq qilmasligi uchun o'qitamiz.
  • Joylashtirish. Ko'rsatkichlarga asoslangan avtomatik joylashtirish modellarni amalga oshirish vaqtini sezilarli darajada qisqartiradi. Statistikani kuzatish va qarorlar qabul qilishni taqsimlash, foydalanuvchilar tomonidan yiqilishlar soni tinch uyqu va samarali dam olish kunlari uchun majburiydir.

Umid qilamanki, bu sizga ML tizimlaringizni tezroq takomillashtirishga, ularni tezroq bozorga chiqarishga va ularni yanada ishonchli va kamroq stressli qilishga yordam beradi.

Manba: www.habr.com

a Izoh qo'shish