Մեքենայի ուսուցման շահագործումը Mail.ru Mail-ում

Մեքենայի ուսուցման շահագործումը Mail.ru Mail-ում

Հիմնվելով Highload++ և DataFest Minsk 2019-ի իմ ելույթների վրա։

Այսօր շատերի համար փոստը առցանց կյանքի անբաժանելի մասն է: Նրա օգնությամբ մենք վարում ենք գործնական նամակագրություն, պահպանում ենք բոլոր տեսակի կարևոր տեղեկություններ՝ կապված ֆինանսների, հյուրանոցների ամրագրումների, պատվերների տեղադրման և շատ ավելին: 2018 թվականի կեսերին մենք մշակեցինք փոստի մշակման արտադրանքի ռազմավարություն: Ինչպիսի՞ն պետք է լինի ժամանակակից փոստը:

Փոստը պետք է լինի խելացի, այսինքն՝ օգնել օգտատերերին նավարկելու տեղեկատվության աճող ծավալը՝ զտել, կառուցվածք և տրամադրել այն ամենահարմար ձևով։ Նա պետք է լինի օգտակար, որը թույլ է տալիս լուծել տարբեր առաջադրանքներ հենց ձեր փոստարկղում, օրինակ՝ վճարել տուգանքներ (գործառույթ, որը, ցավոք, ես օգտագործում եմ)։ Եվ միևնույն ժամանակ, իհարկե, փոստը պետք է ապահովի տեղեկատվության պաշտպանություն՝ կտրելով սպամը և պաշտպանելով հաքերներից, այսինքն՝ լինի ապահով.

Այս ոլորտները սահմանում են մի շարք հիմնական խնդիրներ, որոնցից շատերը կարող են արդյունավետորեն լուծվել՝ օգտագործելով մեքենայական ուսուցումը: Ահա արդեն գոյություն ունեցող առանձնահատկությունների օրինակներ, որոնք մշակվել են որպես ռազմավարության մաս՝ մեկական յուրաքանչյուր ուղղության համար:

  • Smart պատասխան. Փոստն ունի խելացի պատասխանի հատկություն: Նեյրոնային ցանցը վերլուծում է նամակի տեքստը, հասկանում դրա իմաստն ու նպատակը, և արդյունքում առաջարկում է պատասխանի երեք ամենահարմար տարբերակները՝ դրական, բացասական և չեզոք: Սա օգնում է զգալիորեն խնայել ժամանակը նամակներին պատասխանելիս, ինչպես նաև հաճախ պատասխանել ոչ ստանդարտ և զվարճալի ձևով:
  • Նամակների խմբավորումկապված առցանց խանութների պատվերների հետ։ Մենք հաճախ գնումներ ենք կատարում առցանց, և, որպես կանոն, խանութները կարող են մի քանի նամակ ուղարկել յուրաքանչյուր պատվերի համար։ Օրինակ՝ 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 նոր տվյալների վրա;
  • մենք կարգավորում ենք նոր հատկանիշների կշիռները (մենք չենք դիպչում հներին);
  • մենք նաև սովորում ենք հին տվյալներից՝ հին օրինաչափությունները պահպանելու համար.
  • և, թերևս, ամենակարևորը. մենք ավելացնում ենք Հարմոնիկ կանոնավորումը, որը երաշխավորում է, որ կշիռները նորմայի համաձայն հին մոդելի համեմատ շատ չեն փոխվի:

Քանի որ կորստի յուրաքանչյուր բաղադրիչ ունի գործակիցներ, մենք կարող ենք ընտրել մեր առաջադրանքի օպտիմալ արժեքները խաչաձև վավերացման միջոցով կամ արտադրանքի պահանջների հիման վրա:

Մեքենայի ուսուցման շահագործումը 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-ում

FastText

Անցնենք FastText-ին: Հիշեցնեմ, որ բառի ներկայացումը (Embedding) բաղկացած է բուն բառի և նրա բոլոր տառի N-գրամների, սովորաբար եռագրերի ներդրման գումարից: Քանի որ կարող են լինել բավականին շատ եռագրամներ, օգտագործվում է Bucket Hashing, այսինքն՝ ամբողջ տարածությունը փոխակերպում է որոշակի ֆիքսված հաշմապ։ Արդյունքում, քաշի մատրիցը ստացվում է ներքին շերտի չափսերով բառերի քանակով + դույլերով:

Լրացուցիչ ուսուցմամբ հայտնվում են նոր նշաններ՝ բառեր և եռագրեր։ Ոչ մի էական բան տեղի չի ունենում «Facebook»-ի ստանդարտ հաջորդական դասընթացներում: Միայն խաչաձև էնտրոպիայով հին կշիռները վերապատրաստվում են նոր տվյալների վրա: Այսպիսով, նոր առանձնահատկություններ չեն օգտագործվում, իհարկե, այս մոտեցումն ունի բոլոր վերը նկարագրված թերությունները, որոնք կապված են արտադրության մեջ մոդելի անկանխատեսելիության հետ: Դրա համար մենք մի փոքր փոփոխեցինք FastText-ը: Մենք ավելացնում ենք բոլոր նոր կշիռները (բառեր և եռագրեր), ընդլայնում ենք ամբողջ մատրիցը խաչաձև էնտրոպիայով և ավելացնում ենք ներդաշնակ կանոնավորումը գծային մոդելի անալոգիայի միջոցով, ինչը երաշխավորում է հին կշիռների աննշան փոփոխությունը:

Մեքենայի ուսուցման շահագործումը Mail.ru Mail-ում

CNN

Կոնվոլյուցիոն ցանցերը մի փոքր ավելի բարդ են: Եթե ​​CNN-ում ավարտված են վերջին շերտերը, ապա, իհարկե, կարող եք կիրառել ներդաշնակ կանոնավորություն և երաշխավորել շարունակականությունը։ Բայց եթե ամբողջ ցանցի լրացուցիչ վերապատրաստում է պահանջվում, ապա նման կանոնավորացումն այլևս չի կարող կիրառվել բոլոր շերտերի վրա: Այնուամենայնիվ, կա տարբերակ՝ վերապատրաստելու լրացուցիչ ներկառուցումներ Triplet Loss-ի միջոցով (բնօրինակ հոդված).

Եռակի կորուստ

Օգտագործելով հակաֆիշինգ առաջադրանքը որպես օրինակ՝ եկեք նայենք Triplet Loss-ին ընդհանուր առումներով: Մենք վերցնում ենք մեր լոգոն, ինչպես նաև այլ ընկերությունների լոգոների դրական և բացասական օրինակներ: Մենք նվազագույնի ենք հասցնում առաջինի միջև հեռավորությունը և առավելագույնի հասցնում երկրորդի միջև հեռավորությունը, մենք դա անում ենք փոքր բացով, որպեսզի ապահովենք դասերի ավելի մեծ կոմպակտություն:

Մեքենայի ուսուցման շահագործումը 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 slots-ի քանակը չափազանց սահմանափակ է: Ակնհայտ է, որ մենք պետք է փորձարկենք միայն ամենախոստումնալից մոդելները, որոնցից բավական շատ ենք ստանում լրացուցիչ վերապատրաստման գործընթացում։

Այս խնդիրը լուծելու համար մենք պատրաստեցինք առանձին դասակարգիչ, որը կանխատեսում է A/B թեստի հաջողությունը: Դա անելու համար մենք որոշումների կայացման վիճակագրությունը, Ճշգրիտությունը, Հետ կանչելը և այլ չափումներ ենք վերցնում ուսումնական հավաքածուի, հետաձգվածի և հոսքի նմուշի վրա որպես առանձնահատկություններ: Մենք նաև համեմատում ենք մոդելը արտադրության ներկայիս մոդելի հետ, էվրիստիկայի հետ և հաշվի ենք առնում մոդելի բարդությունը: Օգտագործելով այս բոլոր հատկանիշները, թեստի պատմության վրա վերապատրաստված դասակարգիչը գնահատում է թեկնածու մոդելները, մեր դեպքում դրանք ծառերի անտառներ են, և որոշում, թե որն օգտագործել A/B թեստում:

Մեքենայի ուսուցման շահագործումը Mail.ru Mail-ում

Իրականացման պահին այս մոտեցումը մեզ թույլ տվեց մի քանի անգամ ավելացնել հաջող A/B թեստերի քանակը:

Փորձարկում և մոնիտորինգ

Թեստավորումն ու մոնիտորինգը, տարօրինակ կերպով, չեն վնասում մեր առողջությանը, այլ ընդհակառակը, բարելավում են այն և ազատում ավելորդ սթրեսից։ Թեստավորումը թույլ է տալիս կանխել ձախողումը, իսկ մոնիտորինգը թույլ է տալիս ժամանակին հայտնաբերել այն՝ օգտատերերի վրա ազդեցությունը նվազեցնելու համար:

Այստեղ կարևոր է հասկանալ, որ վաղ թե ուշ ձեր համակարգը միշտ սխալներ է թույլ տալու, դա պայմանավորված է ցանկացած ծրագրաշարի մշակման ցիկլով: Համակարգի զարգացման սկզբում միշտ շատ սխալներ են լինում, մինչև ամեն ինչ հարթվի և ավարտվի նորարարության հիմնական փուլը: Բայց ժամանակի ընթացքում էնտրոպիան իր ազդեցությունն է ունենում, և սխալները նորից հայտնվում են՝ կապված բաղադրիչների դեգրադացիայի և տվյալների փոփոխության հետ, ինչի մասին ես խոսեցի սկզբում:

Այստեղ ես կցանկանայի նշել, որ ցանկացած մեքենայական ուսուցման համակարգ պետք է դիտարկել իր ողջ կյանքի ցիկլի ընթացքում իր շահույթի տեսանկյունից: Ստորև բերված գրաֆիկը ցույց է տալիս մի օրինակ, թե ինչպես է համակարգը աշխատում հազվագյուտ տեսակի սպամ հայտնաբերելու համար (գրաֆիկի գիծը մոտ զրոյի է): Մի օր սխալ պահված հատկանիշի պատճառով նա խելագարվեց: Բախտի բերումով, աննորմալ գործարկման մոնիտորինգ չկար, արդյունքում համակարգը սկսեց մեծ քանակությամբ տառեր պահել «սպամ» թղթապանակում՝ որոշումների կայացման սահմանին: Չնայած հետեւանքները շտկելուն, համակարգն արդեն այնքան սխալներ է թույլ տվել, որ նույնիսկ հինգ տարի հետո չի վճարի իր համար։ Եվ սա լրիվ ձախողում է մոդելի կյանքի ցիկլի տեսանկյունից:

Մեքենայի ուսուցման շահագործումը Mail.ru Mail-ում

Հետևաբար, այնպիսի պարզ բան, ինչպիսին մոնիտորինգն է, կարող է առանցքային դառնալ մոդելի կյանքում: Ի լրումն ստանդարտ և ակնհայտ չափումների, մենք հաշվի ենք առնում մոդելի պատասխանների և միավորների բաշխումը, ինչպես նաև հիմնական հատկանիշների արժեքների բաշխումը: Օգտագործելով KL շեղումը, մենք կարող ենք համեմատել ընթացիկ բաշխումը պատմականի հետ կամ A/B թեստի արժեքները մնացած հոսքի հետ, ինչը թույլ է տալիս մեզ նկատել անոմալիաներ մոդելում և ժամանակին հետ գցել փոփոխությունները:

Շատ դեպքերում մենք գործարկում ենք համակարգերի մեր առաջին տարբերակները՝ օգտագործելով պարզ էվրիստիկա կամ մոդելներ, որոնք մենք ապագայում օգտագործում ենք որպես մոնիտորինգ: Օրինակ, մենք վերահսկում ենք NER մոդելը, համեմատած սովորականների հետ կոնկրետ առցանց խանութների համար, և եթե դասակարգիչի ծածկույթը նվազում է նրանց համեմատ, ապա մենք հասկանում ենք պատճառները: Էվրիստիկայի ևս մեկ օգտակար օգտագործում:

Արդյունքները

Եկեք նորից անցնենք հոդվածի հիմնական գաղափարներին:

  • Fibdeck. Մենք միշտ մտածում ենք օգտատիրոջ մասին՝ ինչպես նա կապրի մեր սխալների հետ, ինչպես կկարողանա հաղորդել դրանք։ Մի մոռացեք, որ օգտվողները վերապատրաստման մոդելների համար մաքուր հետադարձ կապի աղբյուր չեն, և այն պետք է մաքրվի օժանդակ ML համակարգերի օգնությամբ: Եթե ​​հնարավոր չէ օգտատիրոջից ազդանշան հավաքել, ապա մենք փնտրում ենք հետադարձ կապի այլընտրանքային աղբյուրներ, օրինակ՝ միացված համակարգեր։
  • Լրացուցիչ ուսուցում. Այստեղ գլխավորը շարունակականությունն է, ուստի մենք ապավինում ենք ներկայիս արտադրական մոդելին: Մենք նոր մոդելներ ենք պատրաստում, որպեսզի ներդաշնակ կանոնավորացման և նմանատիպ հնարքների շնորհիվ դրանք շատ չտարբերվեն նախորդից։
  • Տեղակայել. Մետրիկայի վրա հիմնված ավտոմատ տեղակայումը զգալիորեն նվազեցնում է մոդելների ներդրման ժամանակը: Վիճակագրության մոնիտորինգը և որոշումների կայացման բաշխումը, օգտատերերից ընկածների թիվը պարտադիր է ձեր հանգիստ քնի և արդյունավետ հանգստյան օրերի համար:

Դե, հուսով եմ, որ սա կօգնի ձեզ ավելի արագ բարելավել ձեր ML համակարգերը, դրանք ավելի արագ շուկա հանել և դրանք դարձնել ավելի հուսալի և ավելի քիչ սթրեսային:

Source: www.habr.com

Добавить комментарий