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;
  • біз жаңа мүмкіндіктердің салмақтарын реттейміз (ескілерге қол тигізбейміз);
  • ескі үлгілерді сақтау үшін ескі деректерден де үйренеміз;
  • және, мүмкін, ең бастысы: біз Гармоникалық реттеуді қосамыз, ол салмақтар нормаға сәйкес ескі үлгіге қатысты көп өзгермейтініне кепілдік береді.

Әрбір Loss компонентінің коэффициенттері болғандықтан, біз кросс-валидация арқылы немесе өнім талаптарына негізделген тапсырмамыз үшін оңтайлы мәндерді таңдай аламыз.

Mail.ru Mail-те машиналық оқытудың жұмысы

Ағаштар

Шешім ағаштарына көшейік. Біз ағаштарды қосымша оқыту үшін келесі алгоритмді құрастырдық:

  1. Өндіріс ескі деректер жиынтығы бойынша оқытылатын 100-300 ағаштан тұратын орманды жүргізеді.
  2. Соңында біз M = 5 бөлікті алып тастаймыз және бүкіл деректер жинағында оқытылатын 2М = 10 жаңасын қосамыз, бірақ жаңа деректер үшін салмағы жоғары, бұл табиғи түрде модельдің қадамдық өзгеруіне кепілдік береді.

Уақыт өте келе ағаштардың саны айтарлықтай өсетіні анық және уақытты қанағаттандыру үшін оларды мезгіл-мезгіл азайту керек. Бұл әрекетті орындау үшін біз қазір барлық жерде таралған Білімді дистилляцияны (KD) қолданамыз. Оның жұмыс істеу принципі туралы қысқаша.

  1. Бізде қазіргі «күрделі» модель бар. Біз оны оқу деректер жинағында іске қосамыз және шығыста класс ықтималдығының таралуын аламыз.
  2. Әрі қарай, мақсатты айнымалы ретінде сыныптың таралуын пайдалана отырып, үлгі нәтижелерін қайталауға студент үлгісін (бұл жағдайда ағаштары аз үлгі) үйретеміз.
  3. Бұл жерде біз деректер жиынының белгілеуін ешбір жолмен пайдаланбайтынымызды ескеру маңызды, сондықтан біз ерікті деректерді пайдалана аламыз. Әрине, біз жауынгерлік ағыннан алынған деректер үлгісін студенттік модель үшін жаттығу үлгісі ретінде қолданамыз. Осылайша, оқу жинағы модельдің дәлдігін қамтамасыз етуге мүмкіндік береді, ал ағындық үлгі оқу жиынтығының ауытқуын өтей отырып, өндірісті бөлу бойынша ұқсас өнімділікке кепілдік береді.

Mail.ru Mail-те машиналық оқытудың жұмысы

Осы екі әдісті біріктіру (білімді айдау арқылы ағаштарды қосу және олардың санын мерзімді түрде азайту) жаңа үлгілерді енгізуді және толық сабақтастықты қамтамасыз етеді.

KD көмегімен біз сондай-ақ мүмкіндіктерді жою және бос орындармен жұмыс істеу сияқты модель мүмкіндіктері бойынша әртүрлі операцияларды орындаймыз. Біздің жағдайда бізде деректер базасында сақталатын, сәтсіздікке ұшырайтын бірқатар маңызды статистикалық мүмкіндіктер (жіберушілер бойынша, мәтіндік хэштер, URL мекенжайлары және т.б.) бар. Модель, әрине, оқиғалардың мұндай дамуына дайын емес, өйткені жаттығу жиынында сәтсіздік жағдайлары болмайды. Мұндай жағдайларда біз KD және кеңейту әдістерін біріктіреміз: деректердің бір бөлігін жаттықтыру кезінде біз қажетті мүмкіндіктерді алып тастаймыз немесе қалпына келтіреміз, және біз бастапқы белгілерді аламыз (ағымдағы үлгінің шығыстары), және студент моделі осы бөлуді қайталауды үйренеді. .

Mail.ru Mail-те машиналық оқытудың жұмысы

Модельді манипуляциялау неғұрлым күрделі болса, жіп үлгісінің талап етілетін пайызы соғұрлым көп екенін байқадық.

Функцияларды жою, ең қарапайым операция, ағынның аз ғана бөлігін қажет етеді, өйткені бірнеше функциялар ғана өзгереді, ал ағымдағы модель бір жиынтықта оқытылды - айырмашылық минималды. Модельді жеңілдету үшін (ағаштардың санын бірнеше есе азайту) қазірдің өзінде 50-ден 50-ге дейін қажет.Ал модельдің өнімділігіне елеулі әсер ететін маңызды статистикалық белгілерді жіберіп алу үшін, жұмысты теңестіру үшін одан да көп ағын қажет. әріптердің барлық түрлерінде қалдыруға төзімді жаңа үлгі.

Mail.ru Mail-те машиналық оқытудың жұмысы

Жылдам мәтін

Жылдам мәтінге көшейік. Естеріңізге сала кетейін, сөздің ұсынылуы (Енгізу) сөздің өзін және оның барлық әрпі 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 слоттарының саны өте шектеулі. Әлбетте, бізге ең перспективалы үлгілерді ғана сынақтан өткізу керек, олардан біз қосымша оқу процесінде өте көп аламыз.

Бұл мәселені шешу үшін біз A/B тестінің сәттілігін болжайтын бөлек классификаторды оқыттық. Бұл әрекетті орындау үшін біз мүмкіндіктер ретінде оқыту жиынында, кейінге қалдырылғанда және ағыннан үлгіде шешім қабылдау статистикасын, Дәлдік, Еске түсіру және басқа көрсеткіштерді аламыз. Сондай-ақ біз модельді қазіргі өндірістегі, эвристикамен салыстырып, модельдің Күрделілігін ескереміз. Осы мүмкіндіктердің барлығын пайдалана отырып, сынақ тарихында дайындалған классификатор үміткер үлгілерді бағалайды, біздің жағдайда бұл ағаштардың ормандары және A/B тестінде қайсысын пайдалану керектігін шешеді.

Mail.ru Mail-те машиналық оқытудың жұмысы

Іске асыру кезінде бұл тәсіл сәтті A/B сынақтарының санын бірнеше есе арттыруға мүмкіндік берді.

Тестілеу және бақылау

Тестілеу және бақылау, таң қаларлықтай, біздің денсаулығымызға зиян тигізбейді, керісінше, оны жақсартады және бізді қажетсіз стресстен босатады. Тестілеу сәтсіздікті болдырмауға мүмкіндік береді, ал мониторинг пайдаланушыларға әсер етуді азайту үшін оны уақытында анықтауға мүмкіндік береді.

Бұл жерде ерте ме, кеш пе сіздің жүйеңіз әрқашан қателіктер жіберетінін түсіну маңызды - бұл кез келген бағдарламалық жасақтаманы әзірлеу цикліне байланысты. Жүйені дамытудың басында бәрі реттелмейінше және инновацияның негізгі кезеңі аяқталмайынша, әрқашан көптеген қателер болады. Бірақ уақыт өте келе энтропия зардап шегеді және қателер қайтадан пайда болады - айналасындағы компоненттердің деградациясына және мен басында айтқан деректердің өзгеруіне байланысты.

Бұл жерде кез келген машиналық оқыту жүйесін оның бүкіл өмірлік циклі бойына пайдасы тұрғысынан қарастыру керектігін атап өткім келеді. Төмендегі график спамның сирек түрін ұстау үшін жүйенің қалай жұмыс істейтінінің мысалын көрсетеді (графиктегі сызық нөлге жақын). Бір күні ол дұрыс емес кэштелген атрибутқа байланысты есінен танып қалды. Сәттілік болса, қалыптан тыс триггерге мониторинг жүргізілмеді; нәтижесінде жүйе шешім қабылдау шекарасындағы «спам» қалтасына үлкен көлемдегі хаттарды сақтай бастады. Салдарын түзетсе де, жүйенің талай рет қателік жібергені сонша, тіпті бес жылда өзін ақтай алмайды. Бұл модельдің өмірлік циклі тұрғысынан толық сәтсіздік.

Mail.ru Mail-те машиналық оқытудың жұмысы

Сондықтан, бақылау сияқты қарапайым нәрсе модель өмірінің кілті бола алады. Стандартты және айқын көрсеткіштерден басқа, біз үлгі жауаптары мен ұпайларды бөлуді, сондай-ақ негізгі мүмкіндік мәндерін бөлуді қарастырамыз. KL дивергенциясын қолдана отырып, біз ағымдағы үлестіруді тарихимен немесе A/B тестіндегі мәндерді ағынның қалған бөлігімен салыстыра аламыз, бұл модельдегі ауытқуларды байқауға және өзгерістерді дер кезінде қайтаруға мүмкіндік береді.

Көп жағдайда біз қарапайым эвристика немесе болашақта бақылау ретінде пайдаланатын модельдер арқылы жүйелердің алғашқы нұсқаларын іске қосамыз. Мысалы, біз NER үлгісін белгілі бір интернет-дүкендерге арналған кәдімгі модельдермен салыстырғанда бақылаймыз және егер олармен салыстырғанда жіктеуіштің қамтуы төмендесе, онда біз оның себептерін түсінеміз. Эвристиканың тағы бір пайдалы қолданылуы!

Нәтижелері

Мақаланың негізгі идеяларына тағы да тоқталайық.

  • Fibdeck. Біз әрқашан пайдаланушы туралы ойлаймыз: ол біздің қателіктерімізбен қалай өмір сүреді, ол оларды қалай хабарлай алады. Пайдаланушылар оқу үлгілері үшін таза кері байланыс көзі емес екенін және оны қосалқы ML жүйелерінің көмегімен тазалау қажет екенін ұмытпаңыз. Егер пайдаланушыдан сигнал жинау мүмкін болмаса, біз кері байланыстың балама көздерін іздейміз, мысалы, қосылған жүйелер.
  • Қосымша тренинг. Мұнда ең бастысы сабақтастық, сондықтан біз қазіргі өндіріс үлгісіне сүйенеміз. Біз жаңа үлгілерді гармоникалық регуляризация мен ұқсас трюктердің арқасында бұрынғысынан көп ерекшеленбейтін етіп жаттықтырамыз.
  • Орналастыру. Көрсеткіштерге негізделген автоматты орналастыру үлгілерді енгізу уақытын айтарлықтай қысқартады. Статистиканы бақылау және шешім қабылдауды бөлу, пайдаланушылардың құлау саны тыныш ұйқыңыз бен өнімді демалыс күндеріңіз үшін міндетті болып табылады.

Бұл ML жүйелерін тезірек жақсартуға, оларды тезірек нарыққа шығаруға және сенімдірек және стрессті азайтуға көмектеседі деп үміттенемін.

Ақпарат көзі: www.habr.com

пікір қалдыру