Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Highload++ болон DataFest Minsk 2019 дээр хэлсэн миний хэлсэн үг дээр үндэслэсэн.

Өнөөдөр олон хүмүүсийн хувьд шуудан бол онлайн амьдралын салшгүй хэсэг юм. Үүний тусламжтайгаар бид бизнесийн захидал харилцааг явуулж, санхүү, зочид буудлын захиалга, захиалга хийх гэх мэт бүх төрлийн чухал мэдээллийг хадгалдаг. 2018 оны дундуур бид шуудан хөгжүүлэх бүтээгдэхүүний стратегийг боловсруулсан. Орчин үеийн шуудан ямар байх ёстой вэ?

Мэйл байх ёстой ухаалаг, өөрөөр хэлбэл, хэрэглэгчдэд нэмэгдэж буй мэдээллийн хэмжээг удирдахад нь туслах: шүүлтүүр, бүтэц, хамгийн тохиромжтой байдлаар хангах. Тэр байх ёстой ашигтай, жишээлбэл, торгууль төлөх (харамсалтай нь миний ашигладаг функц) шуудангийн хайрцагтаа янз бүрийн ажлуудыг шийдвэрлэх боломжийг танд олгоно. Үүний зэрэгцээ, мэдээжийн хэрэг, шуудан нь мэдээллийн хамгаалалтыг хангаж, спамыг таслан, хакердахаас хамгаалах ёстой. аюулгүй.

Эдгээр хэсгүүд нь хэд хэдэн гол асуудлуудыг тодорхойлдог бөгөөд тэдгээрийн ихэнхийг машин сургалтын тусламжтайгаар үр дүнтэй шийдвэрлэх боломжтой. Стратегийн нэг хэсэг болгон боловсруулсан аль хэдийн байгаа боломжуудын жишээг энд оруулав - чиглэл тус бүрт нэг.

  • Ухаалаг хариулт. Мэйл ухаалаг хариу бичих функцтэй. Мэдрэлийн сүлжээ нь захидлын текстэд дүн шинжилгээ хийж, утга санаа, зорилгыг нь ойлгож, үр дүнд нь эерэг, сөрөг, төвийг сахисан гэсэн гурван хариултын хамгийн тохиромжтой хувилбарыг санал болгодог. Энэ нь захидалд хариулах цагийг ихээхэн хэмнэхээс гадна стандарт бус, инээдтэй байдлаар хариулдаг.
  • Имэйлийг бүлэглэхонлайн дэлгүүрүүдийн захиалгатай холбоотой. Бид ихэвчлэн онлайнаар худалдан авалт хийдэг бөгөөд дүрэм ёсоор дэлгүүрүүд захиалга бүрт хэд хэдэн имэйл илгээдэг. Жишээлбэл, хамгийн том үйлчилгээ болох AliExpress-аас нэг захиалгад маш олон үсэг ирдэг бөгөөд бид терминалын тохиолдолд тэдний тоо 29 хүртэл хүрч болохыг тооцоолсон. Тиймээс Нэрлэсэн аж ахуйн нэгжийг таних загварыг ашиглан бид захиалгын дугаарыг гаргаж авдаг. Текстээс бусад мэдээлэл болон бүх үсгийг нэг хэлхээнд бүлэглээрэй. Мөн бид захиалгын талаархи үндсэн мэдээллийг тусдаа хайрцагт харуулдаг бөгөөд энэ нь ийм төрлийн имэйлтэй ажиллахад хялбар болгодог.

    Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

  • Фишингийн эсрэг. Фишинг бол маш аюултай залилан мэйлийн төрөл бөгөөд үүний тусламжтайгаар халдагчид санхүүгийн мэдээлэл (хэрэглэгчийн банкны карт гэх мэт) болон нэвтэрч орохыг оролддог. Ийм захидлууд нь үйлчилгээний илгээсэн бодит захидал, түүний дотор харааны хэлбэрээр дуурайдаг. Тиймээс, Computer Vision-ийн тусламжтайгаар бид томоохон компаниудын (жишээлбэл, Mail.ru, Sber, Alfa) лого, захидлын дизайны хэв маягийг таньж, спам болон фишинг ангилагчийн текст болон бусад шинж чанаруудын хамт үүнийг анхаарч үздэг. .

Машины сургалт

Ерөнхийдөө цахим шуудангийн машин сургалтын талаар бага зэрэг. Мэйл бол өндөр ачаалалтай систем юм: 1,5 сая DAU хэрэглэгчдэд өдөрт дунджаар 30 тэрбум захидал манай серверээр дамждаг. 30 орчим машин сургалтын систем нь шаардлагатай бүх функц, функцийг дэмждэг.

Үсэг бүр бүхэл бүтэн ангиллын шугамаар дамждаг. Эхлээд бид спамыг тасалж, сайн имэйл үлдээдэг. Спамын 95-99% нь тохирох хавтсанд ч ордоггүй тул хэрэглэгчид спамын эсрэг үйл ажиллагааг анзаардаггүй. Спам таних нь манай системийн маш чухал хэсэг бөгөөд хамгийн хэцүү нь, учир нь спамын эсрэг талбарт хамгаалалтын болон халдлагын системүүдийн хооронд байнгын дасан зохицох ажиллагаа явагддаг бөгөөд энэ нь манай багийн хувьд тасралтгүй инженерийн сорилт болдог.

Дараа нь бид хүмүүс болон роботуудаас захидал тусгаарладаг. Хүмүүсээс ирсэн имэйлүүд хамгийн чухал тул бид тэдэнд Smart Reply гэх мэт функцуудыг өгдөг. Роботуудаас ирсэн захидлуудыг хоёр хэсэгт хуваадаг: гүйлгээний - эдгээр нь үйлчилгээний чухал захидал, жишээлбэл, худалдан авалт эсвэл зочид буудлын захиалгын баталгаа, санхүү, мэдээллийн тухай - эдгээр нь бизнесийн сурталчилгаа, хөнгөлөлтүүд юм.

Гүйлгээний имэйлүүд нь хувийн захидал харилцаатай адил ач холбогдолтой гэдэгт бид итгэдэг. Бид ихэвчлэн захиалга эсвэл онгоцны тийзний захиалгын талаархи мэдээллийг хурдан хайж олох шаардлагатай байдаг тул эдгээр захидлыг хайж олоход цаг зарцуулдаг тул тэд гартаа байх ёстой. Тиймээс бид ая тухтай байлгах үүднээс аялал, захиалга, санхүү, тасалбар, бүртгэл, эцэст нь торгууль гэсэн зургаан үндсэн ангилалд автоматаар хуваадаг.

Мэдээллийн захидал бол хамгийн том бөгөөд магадгүй бага ач холбогдолтой бүлэг бөгөөд шууд хариу өгөх шаардлагагүй, учир нь тэр ийм захидлыг уншихгүй бол хэрэглэгчийн амьдралд ямар ч чухал зүйл өөрчлөгдөхгүй. Бид шинэ интерфэйсдээ тэдгээрийг нийгмийн сүлжээ, мэдээллийн товхимол гэсэн хоёр хэлхээ болгон задалдаг бөгөөд ингэснээр ирсэн имэйлийг нүдээр цэвэрлэж, зөвхөн чухал мессежүүдийг харуулдаг.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Ашиглалт

Олон тооны системүүд нь үйл ажиллагаанд маш их хүндрэл учруулдаг. Эцсийн эцэст загварууд нь аливаа програм хангамжийн нэгэн адил цаг хугацааны явцад мууддаг: функцууд эвдэрч, машинууд бүтэлгүйтдэг, код нь муруй болдог. Нэмж дурдахад өгөгдөл байнга өөрчлөгдөж байдаг: шинээр нэмэгдэж, хэрэглэгчийн зан төлөв өөрчлөгддөг гэх мэт, тиймээс зохих дэмжлэггүй загвар нь цаг хугацааны явцад улам дордох болно.

Машины сургалт нь хэрэглэгчдийн амьдралд гүнзгий нэвтэрч, экосистемд үзүүлэх нөлөөлөл нь ихсэж, улмаар зах зээлийн тоглогчид илүү их санхүүгийн алдагдал эсвэл ашиг хүртэх боломжтой гэдгийг мартаж болохгүй. Тиймээс улам бүр нэмэгдэж буй бүс нутагт тоглогчид ML алгоритмын ажилд дасан зохицож байна (сонгодог жишээ бол зар сурталчилгаа, хайлт, аль хэдийн дурдсан антиспам).

Түүнчлэн, машин сургалтын даалгаврууд нь нэг онцлог шинж чанартай байдаг: систем дэх аливаа жижиг өөрчлөлт нь загвартай ажиллахад ихээхэн нөлөөлдөг: өгөгдөлтэй ажиллах, давтан сургах, байршуулах, үүнд долоо хоног, сар шаардлагатай. Тиймээс таны загваруудын ажиллах орчин хурдан өөрчлөгдөх тусам тэдгээрийг хадгалахад илүү их хүчин чармайлт шаардагдана. Баг маш олон системийг бүтээж, үүндээ баярлаж чаддаг ч шинэ зүйл хийх боломжгүйгээр бараг бүх нөөцөө тэдгээрийг хадгалахад зарцуулдаг. Бид нэг удаа спамын эсрэг багт ийм нөхцөл байдалтай тулгарсан. Мөн тэд дэмжлэгийг автоматжуулах шаардлагатай гэсэн тодорхой дүгнэлтийг хийсэн.

Автоматжуулалт

Юуг автоматжуулж болох вэ? Үнэндээ бараг бүх зүйл. Би машин сургалтын дэд бүтцийг тодорхойлсон дөрвөн чиглэлийг тодорхойлсон:

  • Өгөгдөл цуглуулах;
  • нэмэлт сургалт;
  • байрлуулах;
  • туршилт, хяналт.

Хэрэв орчин нь тогтворгүй, байнга өөрчлөгдөж байдаг бол тухайн загварыг тойрсон бүх дэд бүтэц нь загвараас хамаагүй илүү чухал болж хувирдаг. Энэ нь хуучин сайн шугаман ангилагч байж болох ч хэрэв та үүнийг зөв функцээр хангаж, хэрэглэгчдээс сайн санал хүсэлтийг хүлээн авбал энэ нь бүх хонх, шүгэл бүхий орчин үеийн загваруудаас хамаагүй дээр ажиллах болно.

Санал хүсэлтийн гогцоо

Энэ мөчлөг нь өгөгдөл цуглуулах, нэмэлт сургалт, байршуулалтыг хослуулсан - үнэндээ бүхэл бүтэн загварыг шинэчлэх мөчлөг. Яагаад чухал вэ? Бүртгэлийн хуваарийг шуудангаар харна уу:

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Машин сургалтын хөгжүүлэгч роботуудыг имэйлээр бүртгүүлэхээс сэргийлсэн роботын эсрэг загварыг хэрэгжүүлсэн. График нь зөвхөн бодит хэрэглэгчид л үлдэх утга хүртэл буурдаг. Бүх зүйл сайхан байна! Гэвч дөрвөн цаг өнгөрч, роботууд скриптүүдээ өөрчилж, бүх зүйл хэвийн байдалдаа орно. Энэхүү хэрэгжилтэд хөгжүүлэгчид нэг сарын турш функцуудыг нэмж, загварыг дахин сургасан боловч спам илгээгч дөрвөн цагийн дотор дасан зохицож чадсан.

Хэт их өвдөж, дараа нь бүх зүйлийг дахин хийх шаардлагагүй байхын тулд бид эхлээд санал хүсэлтийн гогцоо ямар байх, орчин өөрчлөгдвөл бид юу хийх талаар бодох хэрэгтэй. Мэдээлэл цуглуулж эхэлцгээе - энэ бол бидний алгоритмын түлш юм.

Өгөгдөл цуглуулах

Орчин үеийн мэдрэлийн сүлжээнүүдийн хувьд өгөгдөл их байх тусам илүү сайн байдаг нь тодорхой бөгөөд үнэн хэрэгтээ тэдгээр нь тухайн бүтээгдэхүүний хэрэглэгчид бий болдог. Хэрэглэгчид бидэнд өгөгдлийг тэмдэглэх замаар тусалж чадна, гэхдээ бид үүнийг буруугаар ашиглах боломжгүй, учир нь хэрэглэгчид хэзээ нэгэн цагт таны загварыг дуусгахаас залхаж, өөр бүтээгдэхүүн рүү шилжих болно.

Хамгийн нийтлэг алдаануудын нэг нь (энд би Эндрю Нг-ийн талаар дурдаж байна) нь бид бүтээдэг тул хэрэглэгчийн санал хүсэлтийг бус харин туршилтын өгөгдлийн багц дээрх хэмжигдэхүүнд хэт их анхаарал хандуулдаг бөгөөд энэ нь үнэндээ ажлын чанарын гол хэмжүүр юм. хэрэглэгчдэд зориулсан бүтээгдэхүүн. Хэрэв хэрэглэгч загварын ажлыг ойлгохгүй эсвэл дургүй бол бүх зүйл сүйрнэ.

Тиймээс хэрэглэгч үргэлж санал өгөх боломжтой байх ёстой бөгөөд санал хүсэлт өгөх хэрэгсэлтэй байх ёстой. Хэрэв бид шуудангийн хайрцагт санхүүтэй холбоотой захидал ирсэн гэж үзвэл "санхүү" гэж тэмдэглээд, хэрэглэгч дарж болохуйц товчлуурыг зурж, энэ нь санхүү биш гэдгийг хэлэх хэрэгтэй.

Санал хүсэлтийн чанар

Хэрэглэгчийн санал хүсэлтийн чанарын талаар ярилцъя. Нэгдүгээрт, та болон хэрэглэгч өөр өөр утгыг нэг ойлголтод оруулж болно. Жишээлбэл, та болон танай бүтээгдэхүүний менежерүүд "санхүү" гэдэг нь банкнаас ирсэн захидал гэсэн үг гэж боддог бол хэрэглэгч эмээгийн тэтгэврийн тухай захидал нь санхүүгийн талаар мөн адил гэж үздэг. Хоёрдугаарт, ямар ч логикгүйгээр товчлуур дарах дуртай хэрэглэгчид байдаг. Гуравдугаарт, хэрэглэгч дүгнэлтэндээ гүн андуурч магадгүй. Манай практикийн тод жишээ бол ангилагчийн хэрэгжилт юм Нигерийн спам, хэрэглэгчээс Африкт гэнэт олдсон холын хамаатан саднаасаа хэдэн сая доллар авахыг хүссэн маш инээдтэй төрлийн спам. Энэхүү ангилагчийг хэрэгжүүлсний дараа бид эдгээр имэйлүүд дээр "Спам биш" гэсэн товшилтуудыг шалгасан бөгөөд тэдгээрийн 80% нь Нигерийн шүүслэг спам байсан нь хэрэглэгчид туйлын итгэмтгий байж болохыг харуулж байна.

Товчлуур дээр зөвхөн хүмүүс төдийгүй хөтөч мэт дүр эсгэдэг бүх төрлийн роботууд дарах боломжтой гэдгийг мартаж болохгүй. Тиймээс түүхий санал хүсэлт нь суралцахад тийм ч сайн биш юм. Та энэ мэдээллээр юу хийж чадах вэ?

Бид хоёр аргыг ашигладаг:

  • Холбогдсон ML-ийн санал хүсэлт. Жишээлбэл, манайд роботын эсрэг онлайн систем байдаг бөгөөд энэ нь миний дурдсанчлан хязгаарлагдмал тооны шинж тэмдгүүд дээр үндэслэн хурдан шийдвэр гаргадаг. Мөн бодит байдлын дараа ажилладаг хоёр дахь, удаан систем байдаг. Энэ нь хэрэглэгчийн тухай, түүний зан байдал гэх мэт илүү их мэдээлэлтэй. Үүний үр дүнд хамгийн мэдээлэлтэй шийдвэр гарч, үүний дагуу илүү нарийвчлалтай, бүрэн дүүрэн байдаг. Та эдгээр системийн үйл ажиллагааны ялгааг сургалтын өгөгдөл болгон эхнийх рүү чиглүүлж болно. Тиймээс илүү энгийн систем нь илүү төвөгтэй системийн гүйцэтгэлд ойртохыг үргэлж хичээдэг.
  • Ангилал дээр дарна уу. Та зүгээр л хэрэглэгчийн товшилт бүрийг ангилж, түүний хүчинтэй байдал, ашиглах боломжтой байдлыг үнэлэх боломжтой. Бид үүнийг хэрэглэгчийн шинж чанар, түүний түүх, илгээгчийн шинж чанар, текст өөрөө болон ангилагчийн үр дүнг ашиглан спамын эсрэг шуудангаар хийдэг. Үүний үр дүнд бид хэрэглэгчийн санал хүсэлтийг баталгаажуулдаг автомат системийг авдаг. Үүнийг давтан сургах шаардлагатай байдаг тул түүний ажил бусад бүх системийн үндэс суурь болж чадна. Загварыг буруу өгөгдөл дээр сургах нь үр дагавраар дүүрэн байдаг тул энэ загварын гол давуу тал бол нарийвчлал юм.

Өгөгдлийг цэвэрлэж, ML системээ цаашид сургаж байхдаа бид хэрэглэгчдийн талаар мартаж болохгүй, учир нь бидний хувьд график дээрх мянга, сая сая алдаа нь статистик мэдээлэл бөгөөд хэрэглэгчийн хувьд алдаа бүр эмгэнэлтэй байдаг. Хэрэглэгч ямар нэгэн байдлаар бүтээгдэхүүн дэх таны алдаатай амьдрах ёстой гэдгээс гадна санал хүсэлтийг хүлээн авсны дараа ирээдүйд ижил төстэй нөхцөл байдлыг арилгах болно гэж найдаж байна. Тиймээс хэрэглэгчдэд зөвхөн санал өгөх боломжийг олгохоос гадна ML системийн үйл ажиллагааг засч залруулах, жишээлбэл, санал хүсэлтийн товшилт бүрт хувийн эвристикийг бий болгох нь үргэлж үнэ цэнэтэй юм; шуудангийн хувьд энэ нь шүүлтүүр хийх чадвартай байж болно. энэ хэрэглэгчийн хувьд илгээгч болон гарчгийн ийм захидал.

Та бусад хэрэглэгчид ижил төстэй асуудалд өртөхгүйн тулд хагас автомат эсвэл гарын авлагын горимд дэмжлэг үзүүлэх зарим тайлан эсвэл хүсэлт дээр үндэслэн загвар бүтээх хэрэгтэй.

Сурах эвристик

Эдгээр эвристик болон таягтай холбоотой хоёр асуудал байна. Эхнийх нь, байнга өсөн нэмэгдэж буй суга таяг нь урт хугацааны туршид чанар, гүйцэтгэлийг нь хадгалах нь бүү хэл арчлахад хэцүү байдаг. Хоёрдахь асуудал бол алдаа байнга гарахгүй байж болох бөгөөд загварыг цаашид сургах хэд хэдэн товшилт хангалттай биш байх болно. Дараах аргыг хэрэглэвэл эдгээр хоёр хамааралгүй үр нөлөөг мэдэгдэхүйц саармагжуулах боломжтой юм шиг санагдаж байна.

  1. Бид түр зуурын таяг бий болгодог.
  2. Бид үүнээс загвар руу өгөгдөл илгээдэг бөгөөд энэ нь хүлээн авсан өгөгдлийг оруулаад өөрийгөө байнга шинэчилдэг. Мэдээжийн хэрэг, сургалтын багц дахь өгөгдлийн чанарыг бууруулахгүйн тулд эвристик нь өндөр нарийвчлалтай байх нь чухал юм.
  3. Дараа нь бид таяг өдөөх хяналтыг тохируулсан бөгөөд хэрвээ хэсэг хугацааны дараа таяг ажиллахаа больж, загварт бүрэн хамрагдсан бол та үүнийг аюулгүйгээр арилгаж болно. Одоо энэ асуудал дахин гарах магадлал багатай.

Тиймээс суга таягны арми маш хэрэгтэй. Хамгийн гол нь тэдний үйлчилгээ яаралтай бөгөөд байнгын биш юм.

Нэмэлт сургалт

Дахин сургах гэдэг нь хэрэглэгчид эсвэл бусад системүүдийн санал хүсэлтийн үр дүнд олж авсан шинэ өгөгдлийг нэмж, одоо байгаа загварыг сургах үйл явц юм. Нэмэлт сургалтанд хэд хэдэн асуудал гарч болзошгүй:

  1. Загвар нь нэмэлт сургалтыг дэмжихгүй байж болох ч зөвхөн эхнээс нь суралц.
  2. Нэмэлт сургалт нь үйлдвэрлэлийн ажлын чанарыг сайжруулна гэж байгалийн номонд хаана ч бичээгүй. Ихэнхдээ эсрэгээрээ тохиолддог, өөрөөр хэлбэл зөвхөн муудах боломжтой байдаг.
  3. Өөрчлөлтийг урьдчилан таамаглах аргагүй байж болно. Энэ бол бидний өөрсөддөө тодорхойлсон нэлээд нарийн цэг юм. Хэдийгээр A/B тестийн шинэ загвар нь одоогийнхтой харьцуулахад ижил төстэй үр дүнг харуулсан ч энэ нь адилхан ажиллана гэсэн үг биш юм. Тэдний ажил зөвхөн нэг хувиар ялгаатай байж болох бөгөөд энэ нь шинэ алдаа гаргах эсвэл аль хэдийн зассан хуучин алдааг буцааж өгөх болно. Бид болон хэрэглэгчид хоёулаа одоогийн алдаатай хэрхэн амьдрахаа аль хэдийн мэддэг бөгөөд олон тооны шинэ алдаа гарч ирэхэд хэрэглэгч юу болж байгааг ойлгохгүй байж магадгүй, учир нь тэр урьдчилан таамаглах боломжтой зан үйлийг хүлээж байдаг.

Тиймээс нэмэлт сургалтанд хамгийн чухал зүйл бол загварыг сайжруулах, эсвэл дор хаяж дордуулахгүй байх явдал юм.

Нэмэлт сургалтын талаар ярихад хамгийн түрүүнд Идэвхтэй Сургалтын арга барил санаанд орж ирдэг. Энэ юу гэсэн үг вэ? Жишээлбэл, ангилагч нь имэйл нь санхүүтэй холбоотой эсэхийг тодорхойлдог бөгөөд түүний шийдвэрийн хязгаарын эргэн тойронд бид шошготой жишээнүүдийн жишээг нэмж өгдөг. Энэ нь жишээлбэл зар сурталчилгаанд маш сайн ажилладаг, санал хүсэлт ихтэй байдаг бөгөөд та онлайнаар загварыг сургаж болно. Хэрэв санал хүсэлт бага байвал бид үйлдвэрлэлийн өгөгдлийн хуваарилалттай харьцуулахад өндөр хэвийсэн дээжийг авдаг бөгөөд үүний үндсэн дээр ашиглалтын явцад загварын зан төлөвийг үнэлэх боломжгүй юм.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Үнэн хэрэгтээ бидний зорилго бол хуучин хэв маяг, аль хэдийн мэдэгдэж байсан загваруудыг хадгалах, шинэ загваруудыг олж авах явдал юм. Энд тасралтгүй байдал чухал. Бидний гаргах гэж ихэд зовдог байсан загвар нь аль хэдийн ажиллаж байгаа тул гүйцэтгэлд нь анхаарлаа хандуулж чадна.

Шуудангаар янз бүрийн загваруудыг ашигладаг: мод, шугаман, мэдрэлийн сүлжээ. Тус бүрийн хувьд бид өөрсдийн нэмэлт сургалтын алгоритмыг хийдэг. Нэмэлт сургалтын явцад бид зөвхөн шинэ мэдээлэл төдийгүй ихэвчлэн шинэ боломжуудыг хүлээн авдаг бөгөөд үүнийг доорх бүх алгоритмд харгалзан үзэх болно.

Шугаман загварууд

Бидэнд логистикийн регресс байна гэж бодъё. Бид дараах бүрэлдэхүүн хэсгүүдээс алдагдлын загварыг бий болгодог.

  • Шинэ өгөгдөл дээр LogLoss;
  • бид шинэ функцүүдийн жинг тогтмолжуулдаг (бид хуучин зүйлд хүрдэггүй);
  • бид хуучин хэв маягийг хадгалахын тулд хуучин мэдээллээс суралцдаг;
  • магадгүй, хамгийн чухал зүйл бол: бид Harmonic Regularization-ийг нэмсэн бөгөөд энэ нь нормын дагуу жин нь хуучин загвартай харьцуулахад тийм ч их өөрчлөгдөхгүй гэдгийг баталгаажуулдаг.

Алдагдлын бүрэлдэхүүн хэсэг бүр коэффициенттэй байдаг тул бид хөндлөн баталгаажуулалт эсвэл бүтээгдэхүүний шаардлагад үндэслэн даалгаврынхаа оновчтой утгыг сонгох боломжтой.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Моднууд

Шийдвэрийн мод руу шилжье. Модыг нэмэлт сургах зорилгоор бид дараах алгоритмыг эмхэтгэсэн.

  1. Үйлдвэр нь 100-300 мод бүхий ой модыг хуучин мэдээллийн багц дээр сургадаг.
  2. Төгсгөлд нь бид M = 5 ширхэгийг хасч, бүх өгөгдлийн багц дээр сургагдсан 2M = 10 шинэ зүйлийг нэмж өгдөг, гэхдээ шинэ өгөгдлийн хувьд өндөр жинтэй бөгөөд энэ нь мэдээжийн хэрэг загварт өсөн нэмэгдэж буй өөрчлөлтийг баталгаажуулдаг.

Мэдээжийн хэрэг, цаг хугацаа өнгөрөх тусам модны тоо их хэмжээгээр нэмэгдэж, цаг хугацаагаа хангахын тулд тэдгээрийг үе үе багасгах шаардлагатай болдог. Үүнийг хийхийн тулд бид одоо хаа сайгүй байдаг Мэдлэгийн нэрэлтийг (KD) ашигладаг. Үйл ажиллагааны зарчмын талаар товчхон.

  1. Бидэнд одоогийн "цогцолбор" загвар бий. Бид үүнийг сургалтын өгөгдлийн багц дээр ажиллуулж, гаралт дээр ангийн магадлалын тархалтыг авдаг.
  2. Дараа нь бид оюутны загварыг (энэ тохиолдолд цөөн модтой загвар) ангиллын тархалтыг зорилтот хувьсагч болгон ашиглан загварын үр дүнг давтахад сургадаг.
  3. Энд бид өгөгдлийн багц тэмдэглэгээг ямар ч байдлаар ашигладаггүй тул дур зоргоороо өгөгдлийг ашиглаж болно гэдгийг анхаарах нь чухал юм. Мэдээжийн хэрэг, бид байлдааны урсгалаас авсан мэдээллийн дээжийг оюутны загварт зориулсан сургалтын дээж болгон ашигладаг. Тиймээс сургалтын багц нь загварын нарийвчлалыг баталгаажуулах боломжийг олгодог бөгөөд урсгалын дээж нь сургалтын багцын хэвийсэн байдлыг нөхөж, үйлдвэрлэлийн хуваарилалт дээр ижил төстэй гүйцэтгэлийг баталгаажуулдаг.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Эдгээр хоёр аргын хослол (мэдлэгийн нэрэлтийг ашиглан мод нэмж, тэдгээрийн тоог үе үе багасгах) нь шинэ хэв маягийг нэвтрүүлэх, бүрэн тасралтгүй байдлыг баталгаажуулдаг.

KD-ийн тусламжтайгаар бид мөн загварын функцууд дээр функцуудыг арилгах, цоорхой дээр ажиллах зэрэг янз бүрийн үйлдлүүдийг гүйцэтгэдэг. Манай тохиолдолд мэдээллийн санд хадгалагдсан хэд хэдэн чухал статистик шинж чанарууд (илгээгч, текст хэш, URL гэх мэт) байдаг бөгөөд тэдгээр нь амжилтгүй болох хандлагатай байдаг. Сургалтын багцад бүтэлгүйтлийн нөхцөл байдал үүсдэггүй тул загвар нь мэдээжийн хэрэг үйл явдлын ийм хөгжилд бэлэн биш байна. Ийм тохиолдолд бид KD болон нэмэгдүүлэх аргуудыг хослуулдаг: өгөгдлийн нэг хэсгийг сургахдаа шаардлагатай функцуудыг устгаж эсвэл дахин тохируулж, анхны шошго (одоогийн загварын гаралт) авдаг бөгөөд оюутны загвар нь энэ хуваарилалтыг давтаж сурдаг. .

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Загварт илүү ноцтой заль мэх хийх тусам утаснуудын дээжийн эзлэх хувь их байх болно гэдгийг бид анзаарсан.

Онцлогыг арилгах, хамгийн энгийн ажиллагаа нь урсгалын зөвхөн багахан хэсгийг шаарддаг, учир нь зөвхөн хэд хэдэн шинж чанар өөрчлөгдөж, одоогийн загварыг ижил багц дээр сургасан - ялгаа нь хамгийн бага юм. Загварыг хялбарчлахын тулд (модны тоог хэд хэдэн удаа багасгах) 50-аас 50 хүртэл шаардлагатай байна. Мөн загварын гүйцэтгэлд ноцтой нөлөөлөх статистикийн чухал үзүүлэлтүүдийг орхигдуулсан тохиолдолд модны ажлыг тэгшитгэхийн тулд илүү их урсгал шаардагдана. бүх төрлийн үсгэн дээр орхигддоггүй шинэ загвар.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Хурдан текст

Хурдан текст рүү шилжье. Үгийн дүрслэл (Embedding) нь үгийн өөрөө болон түүний бүх N-грамм үсэг, ихэвчлэн триграммуудын нийлбэрээс бүрддэг гэдгийг сануулъя. Маш олон триграм байж болох тул Bucket Hashing ашигладаг, өөрөөр хэлбэл бүх орон зайг тодорхой тогтмол хэшмап болгон хувиргадаг. Үүний үр дүнд жингийн матрицыг үгийн тоо + хувин дахь дотоод давхаргын хэмжээсээр олж авдаг.

Нэмэлт бэлтгэл хийснээр шинэ тэмдгүүд гарч ирдэг: үг, триграмм. Фэйсбүүкээс стандарт дагаж мөрдөх сургалтанд чухал зүйл тохиолддоггүй. Зөвхөн крос-энтропи бүхий хуучин жинг шинэ өгөгдөл дээр дахин сургадаг. Тиймээс шинэ боломжуудыг ашигладаггүй, мэдээжийн хэрэг, энэ арга нь үйлдвэрлэлийн явцад урьдчилан таамаглах боломжгүй загвартай холбоотой дээр дурдсан бүх сул талуудтай. Тиймээс бид FastText-ийг бага зэрэг өөрчилсөн. Бид бүх шинэ жинг (үг ба триграмм) нэмж, матрицыг бүхэлд нь кросс-энтропиар өргөжүүлж, шугаман загвартай адилтган гармоник зохицуулалтыг нэмдэг бөгөөд энэ нь хуучин жингийн өчүүхэн өөрчлөлтийг баталгаажуулдаг.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

CNN

Convolutional сүлжээ нь арай илүү төвөгтэй байдаг. Хэрэв CNN-д сүүлийн давхаргууд дууссан бол мэдээжийн хэрэг та гармоник зохицуулалтыг хэрэглэж, тасралтгүй байдлыг баталгаажуулах боломжтой. Гэхдээ бүхэл бүтэн сүлжээг нэмэлт сургалтанд хамруулах шаардлагатай бол ийм зохицуулалтыг бүх давхаргад ашиглах боломжгүй болно. Гэсэн хэдий ч Гурвалсан алдагдлыг ашиглан нэмэлт суулгацыг сургах сонголт байдаг (анхны нийтлэл).

Гурвалсан алдагдал

Фишингийн эсрэг даалгаврыг жишээ болгон гурвалсан алдагдлыг ерөнхийд нь авч үзье. Бид өөрсдийн лого, бусад компанийн логоны эерэг ба сөрөг жишээг авдаг. Бид эхнийх нь хоорондын зайг багасгаж, хоёр дахь хоорондын зайг ихэсгэдэг бөгөөд ангиудын нягтралыг хангахын тулд бид үүнийг жижиг цоорхойгоор хийдэг.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Хэрэв бид сүлжээг цаашид сургах юм бол бидний хэмжүүрийн орон зай бүрэн өөрчлөгдөж, өмнөхтэй нь огт нийцэхгүй болно. Энэ нь вектор ашигладаг асуудлуудад ноцтой асуудал юм. Энэ асуудлыг даван туулахын тулд бид сургалтын явцад хуучин суулгацуудыг холих болно.

Бид сургалтын багцад шинэ өгөгдөл нэмж, загварын хоёр дахь хувилбарыг эхнээс нь сургаж байна. Хоёрдахь шатанд бид сүлжээгээ үргэлжлүүлэн сургадаг (Finetuning): эхлээд сүүлчийн давхарга дуусч, дараа нь сүлжээг бүхэлд нь тайлна. Гурвалсан зургийг бүтээх явцад бид бэлтгэгдсэн загварыг ашиглан суулгацын зөвхөн нэг хэсгийг, үлдсэнийг нь хуучин загварыг ашиглан тооцоолно. Тиймээс нэмэлт сургалтын явцад бид v1 ба v2 хэмжигдэхүүнүүдийн нийцтэй байдлыг хангадаг. Гармоник зохицуулалтын өвөрмөц хувилбар.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Бүхэл бүтэн архитектур

Хэрэв бид бүхэл бүтэн системийг антиспам ашиглан жишээ болгон авч үзвэл загварууд нь тусгаарлагдаагүй, харин бие биендээ байрладаг. Бид зураг, текст болон бусад функцуудыг авч, CNN болон Fast Text ашиглан оруулга авдаг. Дараа нь төрөл бүрийн ангиудын оноог (үсгийн төрөл, спам, лого байгаа эсэх) өгдөг ангилагчийг суулгацын дээд талд байрлуулна. Эцсийн шийдвэрийг гаргахын тулд дохио, тэмдгүүд аль хэдийн модны ойд орж байна. Энэхүү схемийн бие даасан ангилагч нь бүх өгөгдлийг түүхий хэлбэрээр шийдвэрийн мод руу оруулахаас илүүтэйгээр системийн үр дүнг илүү сайн тайлбарлаж, асуудал гарсан тохиолдолд бүрэлдэхүүн хэсгүүдийг дахин сургах боломжийг олгодог.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Үүний үр дүнд бид бүх түвшинд тасралтгүй байдлыг баталгаажуулдаг. CNN болон Fast Text-ийн доод түвшинд бид гармоник зохицуулалтыг ашигладаг бол дунд хэсэгт байгаа ангилагчдын хувьд магадлалын тархалтын тогтвортой байдлын үүднээс гармоник зохицуулалт, хурдны тохируулгыг ашигладаг. За, мод нэмэгдүүлэх нь үе шаттайгаар эсвэл Мэдлэгийн нэрэлтийг ашиглан сургагддаг.

Ерөнхийдөө ийм үүрлэсэн машин сургалтын системийг хадгалах нь ихэвчлэн зовлонтой байдаг, учир нь доод түвшний аливаа бүрэлдэхүүн хэсэг нь дээрх бүх системийг шинэчлэхэд хүргэдэг. Гэхдээ бидний тохиргоонд бүрэлдэхүүн хэсэг бүр бага зэрэг өөрчлөгдөж, өмнөхтэй нь нийцдэг тул бүхэл бүтэн бүтцийг дахин сургах шаардлагагүйгээр бүхэл бүтэн системийг хэсэг хэсгээр нь шинэчлэх боломжтой бөгөөд энэ нь ноцтой ачаалалгүйгээр дэмжих боломжийг олгодог.

Байрлуулах

Бид янз бүрийн төрлийн загваруудын мэдээлэл цуглуулах, нэмэлт сургалт явуулах талаар ярилцсан тул тэдгээрийг үйлдвэрлэлийн орчинд нэвтрүүлэхээр ажиллаж байна.

A/B тест

Өмнө дурьдсанчлан, өгөгдөл цуглуулах явцад бид ихэвчлэн нэг талыг барьсан түүврийг авдаг бөгөөд үүнээс загварын үйлдвэрлэлийн гүйцэтгэлийг үнэлэх боломжгүй байдаг. Тиймээс, байрлуулахдаа бүх зүйл хэрхэн явагдаж байгааг ойлгохын тулд загварыг өмнөх хувилбартай харьцуулах ёстой, өөрөөр хэлбэл A/B тест хийх хэрэгтэй. Үнэн хэрэгтээ диаграммыг дэлгэх, дүн шинжилгээ хийх үйл явц нь маш энгийн бөгөөд амархан автоматжуулж болно. Бид загваруудаа хэрэглэгчдийн 5%, 30%, 50%, 100% хүртэл аажмаар нэвтрүүлж, загварын хариултууд болон хэрэглэгчийн санал хүсэлт дээр байгаа бүх хэмжүүрүүдийг цуглуулдаг. Зарим ноцтой гажуудлын хувьд бид загварыг автоматаар буцааж, бусад тохиолдолд хангалттай тооны хэрэглэгчийн товшилтыг цуглуулсны дараа бид хувь хэмжээг нэмэгдүүлэхээр шийддэг. Үүний үр дүнд бид шинэ загварыг хэрэглэгчдийн 50% -д бүрэн автоматаар хүргэж байгаа бөгөөд энэ алхамыг автоматжуулах боломжтой хэдий ч бүх үзэгчдэд хүргэхийг хүн батлах болно.

Гэсэн хэдий ч A/B тестийн процесс нь оновчтой болгох боломжийг олгодог. Үнэн хэрэгтээ аливаа A/B тест нь нэлээд урт (манай тохиолдолд санал хүсэлтийн хэмжээнээс хамааран 6-аас 24 цаг зарцуулдаг) бөгөөд энэ нь нэлээд үнэтэй бөгөөд хязгаарлагдмал нөөцтэй байдаг. Нэмж дурдахад, A/B тестийн нийт хугацааг хурдасгахын тулд тестийн урсгалын хангалттай өндөр хувь шаардагдана (бага хувиар хэмжигдэхүүнийг үнэлэхийн тулд статистикийн ач холбогдолтой түүврийг элсүүлэх нь маш удаан хугацаа шаардагдана). A/B слотуудын тоо маш хязгаарлагдмал. Мэдээжийн хэрэг, бид зөвхөн хамгийн ирээдүйтэй загваруудыг туршиж үзэх хэрэгтэй бөгөөд үүнээс бид нэмэлт сургалтын явцад маш их зүйлийг авдаг.

Энэ асуудлыг шийдэхийн тулд бид A/B тестийн амжилтыг урьдчилан таамаглах тусдаа ангилагч бэлтгэсэн. Үүнийг хийхийн тулд бид шийдвэр гаргах статистик, Нарийвчлал, Эргэн дуудах болон бусад хэмжүүрүүдийг сургалтын багц, хойшлуулсан болон урсгалаас түүврээс онцлог болгон авдаг. Мөн бид загварыг одоогийн үйлдвэрлэсэн загвартай, эвристиктэй харьцуулж, загварын нарийн төвөгтэй байдлыг харгалзан үздэг. Эдгээр бүх боломжуудыг ашиглан туршилтын түүх дээр бэлтгэгдсэн ангилагч нь нэр дэвшигчдийн загваруудыг үнэлж, манай тохиолдолд эдгээр нь ой мод бөгөөд A/B тестэнд алийг нь ашиглахаа шийддэг.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Хэрэгжүүлэх үед энэ арга нь амжилттай A/B тестийн тоог хэд дахин нэмэгдүүлэх боломжийг бидэнд олгосон.

Туршилт ба хяналт

Туршилт, хяналт нь хачирхалтай нь бидний эрүүл мэндэд хор хөнөөл учруулахгүй, харин ч эсрэгээрээ үүнийг сайжруулж, шаардлагагүй стрессээс ангижруулдаг. Туршилт нь алдаа гарахаас урьдчилан сэргийлэх боломжийг олгодог бөгөөд хяналт нь хэрэглэгчдэд үзүүлэх нөлөөллийг багасгахын тулд үүнийг цаг тухайд нь илрүүлэх боломжийг олгодог.

Эрт орой хэзээ нэгэн цагт таны систем үргэлж алдаа гаргах болно гэдгийг энд ойлгох нь чухал бөгөөд энэ нь аливаа програм хангамжийн хөгжлийн мөчлөгтэй холбоотой юм. Системийг хөгжүүлэх эхэн үед бүх зүйл цэгцэрч, инновацийн үндсэн үе шат дуусах хүртэл үргэлж олон алдаа гардаг. Гэвч цаг хугацаа өнгөрөхөд энтропи нь хохирч, эргэн тойрон дахь бүрэлдэхүүн хэсгүүдийн доройтол, өгөгдлийн өөрчлөлтөөс болж алдаа дахин гарч ирдэг.

Аливаа машин сургалтын системийг амьдралынхаа туршид ашиг олох үүднээс авч үзэх ёстой гэдгийг энд тэмдэглэхийг хүсч байна. Доорх график нь ховор төрлийн спамыг барихын тулд систем хэрхэн ажилладаг тухай жишээг харуулж байна (график дахь мөр тэгтэй ойролцоо байна). Нэг өдөр буруу хадгалсан шинж чанараас болж тэр галзуурав. Аз таарч, хэвийн бус өдөөлтийг хянах ямар ч арга байхгүй бөгөөд үүний үр дүнд систем нь шийдвэр гаргах зааг дахь "спам" хавтсанд захидлыг их хэмжээгээр хадгалж эхэлсэн. Үр дагаврыг нь засч залруулсан хэдий ч энэ систем аль хэдийн маш олон удаа алдаа гаргасан тул таван жилийн дараа ч гэсэн өөрийгөө нөхөхгүй. Загварын амьдралын мөчлөгийн үүднээс энэ бол бүрэн бүтэлгүйтэл юм.

Mail.ru Mail дахь машин сургалтын үйл ажиллагаа

Тиймээс мониторинг гэх мэт энгийн зүйл нь загвар өмсөгчдийн амьдралын түлхүүр болж чадна. Стандарт, тодорхой хэмжүүрээс гадна бид загварын хариулт, онооны хуваарилалт, мөн гол онцлогуудын утгын хуваарилалтыг авч үздэг. KL-ийн зөрүүг ашиглан бид одоогийн тархалтыг түүхэн эсвэл A/B тестийн утгыг бусад урсгалтай харьцуулж болох бөгөөд энэ нь загвар дахь гажигийг анзаарч, өөрчлөлтийг цаг тухайд нь буцаах боломжийг олгодог.

Ихэнх тохиолдолд бид энгийн эвристик эсвэл ирээдүйд хяналт болгон ашиглах загваруудыг ашиглан системийн анхны хувилбаруудыг гаргадаг. Жишээлбэл, бид NER загварыг тодорхой онлайн дэлгүүрүүдийн ердийн загвартай харьцуулан хянаж, ангилагчийн хамрах хүрээ тэдэнтэй харьцуулахад буурсан бол бид шалтгааныг нь ойлгодог. Эвристикийн өөр нэг ашигтай хэрэглээ!

Үр дүн

Өгүүллийн гол санааг дахин авч үзье.

  • Фибдек. Хэрэглэгчийн тухай бид үргэлж боддог: тэр бидний алдаатай хэрхэн амьдрах вэ, тэр үүнийг хэрхэн мэдээлэх боломжтой вэ. Хэрэглэгчид сургалтын загварт зориулсан цэвэр санал хүсэлтийн эх сурвалж биш бөгөөд үүнийг туслах ML системийн тусламжтайгаар цэвэрлэх шаардлагатай гэдгийг бүү мартаарай. Хэрэв хэрэглэгчээс дохио цуглуулах боломжгүй бол бид санал хүсэлтийн өөр эх үүсвэр, жишээлбэл, холбогдсон системүүдийг хайж байна.
  • Нэмэлт сургалт. Энд гол зүйл бол залгамж чанар, тиймээс бид одоогийн үйлдвэрлэлийн загварт найдаж байна. Гармоник зохицуулалт болон ижил төстэй заль мэхийн улмаас өмнөх загвараасаа нэг их ялгарахгүйн тулд бид шинэ загваруудыг сургадаг.
  • Байрлуулах. Хэмжигдэхүүн дээр тулгуурлан автоматаар байршуулах нь загварыг хэрэгжүүлэх хугацааг ихээхэн бууруулдаг. Статистикийн хяналт, шийдвэр гаргалтын хуваарилалт, хэрэглэгчдийн уналтын тоо нь таны амарч унтах, амралтын өдрийг үр бүтээлтэй өнгөрүүлэхэд зайлшгүй шаардлагатай.

Энэ нь танд ML системээ илүү хурдан сайжруулж, зах зээлд хурдан гаргаж, илүү найдвартай, стресс багатай болгоход тусална гэж найдаж байна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх