малко проучване за добра оптимизация

здравейте на всички! Нека да поговорим за настройка на хиперпараметри в ансамбълното обучение (предимно смесване). В такива ансамбли прогнозите от един модел на машинно обучение стават предиктори за друг (следващо ниво). Фигурата по-долу показва някои варианти на ансамбли, при които данните се прехвърлят отляво надясно. Такива ансамбли също ще бъдат наричани тръбопроводи или композитни модели (композитни тръбопроводи) в тази публикация.

Използването на такива сложни композитни структури може да намали грешката при прогнозиране. Понякога моделите стават по-здрави. Има обаче недостатък: високата ефективност идва с цената на „консумацията на ансамбъла“ (необходими са много повече време и изчислителни ресурси за ансамбъла, отколкото за самостоятелните модели). Също така, колкото по-сложен е ансамбълът, толкова по-трудно е да се конфигурира. Нека да поговорим за това как хиперпараметрите могат да бъдат настроени в такива ансамбли.

Отказ от отговорност: Ние не обсъждаме конкретни техники за оптимизация, като байесова оптимизация, произволно търсене или еволюционни алгоритми (или други алгоритми). Тук дискусията е за подходи от по-високо ниво за настройка на хиперпараметри независимо от алгоритмите, използвани в ядрото. Примерите в тази публикация използват байесова оптимизация с помощта на библиотеката hyperopt, но тя може да бъде заменена с по-подходяща (за вас или нас), ако е необходимо.

Как се решава този проблем в индустрията

Има сравнително малко материали по темата за настройка на ансамбли с модели за машинно обучение. Нека започнем с „Настройка на хиперпараметър за ансамбъл от ML модели (прост пример на Python)“ (видео). Тогава нека продължим да изучаваме темата с „Смесване на ансамбълно машинно обучение с Python (тук между другото няма настройка на хиперпараметри), да разгледаме интернет и накрая да преминем през готови решения на победители и участници в състезания на kaggle ( например Настройка на хиперпараметри /Методи на ансамбъл).

От елементите по-горе можем да обобщим следния класически подход. Първо всички единични модели от първо ниво се обучават и настройват, — след това моделът(ите) на ансамбъла. След това процесът се повтаря - итеративно движение отляво надясно. Същият подход се използва в „Настройка на хиперпараметъра на претегления среднопретеглен ансамбъл в Python““, където се настройват само теглата на ансамбъла.

В бележника на kaggle „A Data Science Framework: To Achieve 99% Accuracy“ схемата е същата: хиперпараметрите се настройват отделно за всеки модел. Въпреки това, дори шампионите, които се замислят, посочват, че настройката на хиперпараметри в ансамблите е нетривиална: „Можехме да експериментираме и с повече хиперпараметри в нашите модели за откриване. Наистина не харесвам настройката на хиперпараметри (никога не съм разработил добра стратегия за това) и често се опитвам да компенсирам, като комбинирам различни модели заедно. © [1-во място] Преглед и код на решението.

Как този проблем се решава в науката

Тук има много информация и подходи. Има го в научни статии, които обикновено нямат връзки към софтуерни реализации на алгоритми, нито към хранилище с експерименти (Това е голям проблем, честно казано).

Забележителният подход е „не правете нищо“ — с този подход тежестите на ансамбъла (ако е претеглен ансамбъл) изобщо не се настройват. Всички модели от първо ниво са включени в ансамбъла с еднакви тежести. Въпреки това, този метод не винаги е оптимален (вижте „Подреден ансамбъл, комбиниран с размито съпоставяне за биомедицинско разпознаване на наименувани обекти на болести“). Ясно е, че този подход не може да се класифицира като метод за настройка на хиперпараметър, така че нека преминем към реалните методи.

Нека започнем с класическия подход „първо всеки модел се настройва индивидуално, след това ансамбълът се утежнява“. Този подход е описан например в „Оптимизиране на ансамбъл тегла и хиперпараметри на модели за машинно обучение за регресионни проблеми“, където неговата оптималност е критикувана. Всъщност, дори в рамките на тази статия, авторите предлагат по-обещаваща алтернатива - едновременно да се настроят хиперпараметрите на моделите и теглата на ансамбъла.

„Настройка на хиперпараметри на модели на ансамбъл за оценка на софтуерното усилие“ използва абсолютно същия подход, само обобщен за подреждане, където крайните прогнози се комбинират от модела, а не чрез претегляне. Тъй като в техния случай пространството за търсене се оказа доста голямо, за оптимизация бяха използвани методът на рояка частици и генетичният алгоритъм.

Като цяло има доста вариации на няколко подхода, описани по-горе, но има само два фундаментално различни метода: настройка на основните модели поотделно и настройка на всички модели в ансамбъл едновременно.

Кои подходи най-накрая идентифицирахме

Имайте предвид, че направихме всички горепосочени изследвания, за да подобрим модула за настройка на хиперпараметри в нашата AutoML рамка с отворен код FEDOT. Това е типичен пример за научноизследователска и развойна дейност: искахме да подобрим настройката на хиперпараметъра и трябваше да изберем един от най-подходящите подходи. В този случай е необходимо 1) да се идентифицират конкурентни решения, 2) да се внедрят прототипни подходи, 3) да се оцени и 4) да се избере най-добрият (според дадени критерии) и 5) да се интегрира избраният подход в проекта. Когато прегледахме подходите, внедрихме три подхода за настройка на хиперпараметри в рамките на избрания „клон“. И след това проведохме експерименти, за да определим най-успешния подход. Подчертаваме два основни критерия за успешен подход: алгоритъмът за настройка трябва да работи бързо и точно, т.е. грешката на ансамбъла след настройка на хиперпараметрите трябва да бъде по-малка, отколкото при параметрите по подразбиране.

Направихме следните три сладурчета (имена измислени от автора):

  • изолирана настройка;
  • последователна настройка;
  • едновременна настройка.

Нека сега обсъдим всяка стратегия поотделно. Ще използваме анимации, за да стане по-ясно. Първият ще бъде изолираният (анимация 1).

Възлите, в които се настройват хиперпараметрите, са маркирани в червено, а стрелките показват през кои възли се предават данните. Анимацията показва, че само един възел се настройва по време на всяка итерация. Показателят за грешка се измерва от прогнозите от този възел. Това означава, че в една итерация данните се прехвърлят само през предшестващите възли на настроения модел. Тази стратегия следва принципа „една итерация, един обучен модел“.

Сега да преминем към анализите. Едно от предимствата на горния подход е неговата изчислителна ефективност. Наистина, при всяка итерация не е необходимо да обучавате отново всички модели на тръбопроводи.

Особено си струва да разгледаме по-отблизо недостатъците. Първото и най-важно ограничение е спецификата на модела на алгоритъма — той работи само върху онези възли, чийто изход може да бъде съпоставен с целевата променлива и да се получи метрика, т.е. само върху модели. Ако има операции за предварителна обработка в структурата на конвейера (напр. алгоритъм за избор на функция или анализ на главни компоненти), този подход не може да бъде приложен. Тъй като изходът на някои възли не може да бъде директно съпоставен с целевата променлива за оценка на грешката, такива операции не могат да бъдат настроени. Този проблем може да бъде частично решен чрез включване на допълнителни правила: например е възможно да се игнорират такива случаи или да се настроят хиперпараметрите за предварителна обработка заедно с параметрите на моделите наследници. Тези модификации обаче отнемат време за внедряване, така че решихме да ги отложим, докато не се уверим, че подходът е най-обещаващият — прототипът се справи без такива модификации. Вторият недостатък е, че алгоритъмът е алчен. На всяка стъпка се опитваме да получим локално оптимална конфигурация на хиперпараметри за всеки подграф на голям тръбопровод. Няма гаранция, че в преследването на оптимума на всяка стъпка, няма да пропуснем глобалния за целия тръбопровод.

Недостатъците на първия подход (поне някои от тях) могат да бъдат преодолени чрез втората, последователна настройка (анимация 2).

При този подход пълните данни сега се предават през целия конвейер при всяка итерация (червените стрелки светят за пълния конвейер), въпреки че все още е само една операция, чиито хиперпараметри са оптимизирани.

Плюсове на подхода:

  • Възможно е да се оптимизира конвейер с всякаква структура, включително такива, съдържащи операции за предварителна обработка;
  • При всяка итерация изходът на целия съставен модел се съпоставя. Следователно моделът е оптимизиран спрямо крайните, а не междинните прогнози.

Но има и недостатъци. Тъй като започваме отляво надясно, се оказва, че по време на оптимизацията на хиперпараметрите на предишните модели се настройват към една конфигурация на следващите модели (потомци). И вече на следващия възел конфигурацията на наследника се променя на новата. Може би това не е голям проблем, защото винаги е възможно да се запазят първоначалните стойности на хиперпараметрите в наследствените възли, ако други комбинации не водят до подобряване на показателите.

Въпреки това, като се движим последователно, ние стесняваме пространството за търсене, тъй като предварително оптимизираните възли не могат да променят присвоените хиперпараметри. По този начин можем да се закараме в „неоптимален ъгъл“ и въпреки че все още можем да оптимизираме окончателния модел на ансамбъла, нищо няма да бъде подобрено. Аналогията, която ми идва на ум с тортата е, че хората минават покрай опашката, отхапвайки парче по парче. Последният човек на тази опашка може да не получи нищо — въпреки че може да открие тайната на готвенето му и тогава никога няма да ни се налага да стоим на опашка за торти…

Колеги: И така, как да преодолеем проблемите с предишните подходи?
Аз: Нека просто да изхвърлим всичко на куп!

Това сме направили. Анимация 3 показва, че е възможно да се оптимизира цял конвейер като една голяма „черна кутия“, където наборът от хиперпараметри на конвейера е равен на обединението на наборите от параметри на модела в неговата структура.

Професионалисти:

  • Оптимизира стойността на показателя за целия конвейер;
  • Пространството за търсене не се намалява по време на оптимизацията - възможно е едновременно да се променят хиперпараметрите както на основния модел, така и на предходните модели.

Недостатъци, произтичащи от предимствата на подхода:

  • Най-скъпият от изчислителна гледна точка метод;
  • Много голямо пространство за търсене, особено за големи ансамбли.

По този начин третият подход изглежда най-ефективен за проблема с намирането на оптимални комбинации от хиперпараметри в ансамбъл - нека го проверим!

Експерименти

И така, нека изберем най-подходящия подход за интегрирането му. За да направим това, ние настроихме експеримента, както следва (Таблица 1). Важно уточнение: крайните показатели се измерват на забавена проба, до която тунерът не е имал достъп по време на оптимизацията.

Картината по-долу (Фигура 2) показва три различни тръбопровода, които са участвали в експериментите.

Броят на операциите (моделите) в тръбопроводите варира от две (тръбопровод A) до десет (тръбопровод C). Обяснение на имената на моделите: ridge — ridge regression, lasso — LASSO regression, knnreg — K-най-близки съседи за регресионна задача, svr — поддържаща векторна машина за регресионна задача, rfr — произволна гора за регресия, dtreg — дърво на решенията за регресионна задача, knn — K-най-близки съседи за задача за класификация, rf — произволна гора за класификация, dt — дърво на решенията за задача за класификация.

Експериментални резултати

Както бе споменато по-горе, сравнението ще бъде направено според два критерия: време за изпълнение и показатели на извадката за валидиране. С показателя на извадката за валидиране ще въведем и допълнителен критерий: колкото по-стабилен (при 30 стартирания) е резултатът, толкова по-предпочитан е методът. Т.е. ще разгледаме не само средната метрична стойност, но и дисперсията. Освен това ще проверим при кои типове тръбопроводи разглежданите подходи работят по-добре: прост линеен A; относително прости, но разклонени B и сложни многостепенни C. Ние също така ще направим изводи за това дали количеството налични изчислителни ресурси (определено от броя на итерациите) влияе върху ефективността на подхода.

Важна информация. Тъй като не се интересуваме от това колко добре могат да предсказват тръбопроводите тип A, B или C, а по-скоро от ефективността на алгоритмите за настройка на параметрите, по-долу ще говорим за печалбите в показателите (вместо абсолютните стойности). За симетрична абсолютна процентна грешка (SMAPE), делтата ще бъде изчислена като разликата между метричната стойност преди настройката и метричната стойност след това. За класификация ще извадим от показателя след настройката на показателя преди настройката на хиперпараметъра. По този начин твърдението „колкото по-голяма е делтата, толкова по-добър е алгоритъмът“ ще бъде вярно за всички задачи.

Отказ от отговорност: Следното не е предназначено да бъде пълномащабно научно изследване, а е направено в рамките на рутинен процес на разработка. Използвали сме подобен бенчмаркинг по време на прототипиране. Така че, ако искате да напишете научна статия в Q1-журнал по такава тема, ще трябва да направите още няколко експеримента: да изчислите повече показатели, да вземете 10–15 набора от данни за всяка задача, да формализирате хипотези, да извършите статистическо тестване и т.н.

И така, резултатите от сравнението на подобряването на показателя за задачата за регресия са показани на Фигура 3.

На фигурата всеки облак от точки представлява извадка от тридесет цикъла, т.е. тридесет цикъла за всеки тип конвейер (A, B, C), за всеки подход (изолиран, последователен, едновременен), за всеки набор от данни (три регресии) и за два варианта на разпределения брой итерации за оптимизация (20 и 100). Общо 1620 стартирания на модула за настройка за регресия и същия брой за класификация.

Резултатите от набора от данни „pol“ се открояват. Наистина, в огромното мнозинство от случаите настройката на хиперпараметъра доведе до по-лошо прогнозиране на забавената проба. Е, дори в случай, че настройката на хиперпараметъра в крайна сметка води до увеличаване на грешката при прогнозиране, пак е по-добре да изберете алгоритъма, който вреди по-малко от останалите. Ако разгледаме по-„адекватни“ стартирания, можем да видим, че средно едновременната настройка дава по-постоянно висок резултат: вариацията в стойностите е по-малка и облакът е позициониран по-високо от конкурентите.

Друго наблюдение е, че експериментите използват тръбопроводи с различна степен на разклоняване или сложност. Фигура 3 показва, че по правило колкото по-сложен е конвейерът, толкова по-голямо е пространството за търсене за неговата настройка и толкова по-голяма печалба в показателя може да бъде получена.

Фигура 4 показва резултатите за наборите от данни за класификация.

Като цяло резултатите за класификацията са същите като за регресия, с победител по отношение на метричното усилване и дисперсията — едновременна настройка на хиперпараметрите.

Сега нека разгледаме по-подробно някои случаи, а именно серии от по 20 итерации всяка (Фигура 5) за таблиците „Amazon_employee_access“ (класификация) и „cal_housing“ (регресия).

Какво се вижда от фигурата? — Първо, може да се забележи, че в случай на подобрение показателите за класификация постепенно се плъзгат „надясно“ в реда на изолирана настройка — последователна настройка — едновременна. Това показва, че едновременният подход позволява по-добра настройка на хиперпараметъра от последователния подход, който е по-надежден от изолираната настройка. Може също да се види, че само третият подход постига последователно подобрение на показателите; с други алгоритми това не е гарантирано.

Сега разгледайте разпределенията за тръбопровод C, когато решавате проблема с регресията: може да се види, че само в случай на едновременна настройка се откроява един забележим висок пик (мода) в разпределението. В другите два случая разпределенията или не са унимодални (изолирана настройка), или са опънати почти по цялата ос x. С други думи, само в случай на едновременна настройка беше възможно да се постигнат високи плътности. Това показва, че ако приложим третия подход, вероятно ще получим същия висок резултат, както при предишното стартиране.

Сега проверете времето за изпълнение на подходите, като използвате примера на регресионните таблици в „цигулковия график“ (Фигура 6). В такъв график оценките на плътността на ядрото на разпределението се нанасят отстрани спрямо централната ос на всеки елемент. По този начин местата на разширенията в такива „цигулки“ показват режима.

Нека започнем с очевидното: колкото повече итерации са разпределени, толкова по-дълго работи алгоритъмът. Сега имайте предвид, че както се очакваше, изолираната настройка се оказа доста бърз алгоритъм.

Имайте предвид обаче, че в случай на последователна настройка има възможност за значително подобрение. Всички операции в тръбопроводите, които не се обучават с нови хиперпараметри по време на дадена итерация и не зависят от модела за настройка (напр. разположени в тръбопроводите преди него), не могат да бъдат обучени, а просто извикват метода за прогнозиране на вече обучения модел . Наистина предикторите са непроменени и хиперпараметрите на модела също не са се променили. Това означава, че такива операции могат да бъдат кеширани и използвани само за генериране на прогнози. В случай на едновременна настройка на хиперпараметри, няма възможност за извършване на такава модификация.

Сега, след като стигнахме до финала, предлагам да завършим под формата на обобщена таблица с показатели (Таблица 2).

Заключение

В тази статия разгледахме как хиперпараметрите могат да бъдат настроени в ансамбли от модели за машинно обучение. Създадохме прототипи на всеки от трите подхода, които идентифицирахме, за да определим кой е най-обещаващият. След това проведохме експерименти върху шест различни набора от данни.

Заключенията са, че едновременната настройка постига по-големи метрични печалби и в същото време позволява тези печалби да бъдат постигнати по по-стабилен начин. Изолираният подход беше най-бързият (по отношение на средното време за изпълнение). Като цяло, последователната настройка е по-ефективна от изолираната настройка, но по-малко ефективна от едновременната настройка. Времето за изпълнение на последователната настройка обаче може да бъде намалено чрез използване на кеширане на операциите.

P.S. В нашата рамка FEDOT решихме все пак да приложим и поддържаме едновременна и последователна настройка. Стандартната настройка за настройка е едновременна стратегия.

Полезни връзки: