За важността да имаш проста цел, но множество начини да я постигнеш.

Проектите за машинно обучение могат да бъдат доставени на два етапа. Първият етап се нарича Проучване и е свързан с отговора на въпроса: можем ли да направим модел за машинно обучение от тази купчина данни, който да обслужва нуждите на клиента? Резултатът е доказателство за концепция или проучване за осъществимост. Вторият етап се нарича Разработване и се отнася до поемането на ангажимент за доставяне на продукт за машинно обучение. Продуктът на този етап е продукт за машинно обучение.

По време на етапа на изследване има два основни аспекта, които считам за уместни, когато ресурсите на проекта са ограничени и времето е кратко: първо е значението на определянето на обхват за вашия проблем и второ, важността на тестването на вашия модел чрез кратки итерации .

Обхват

Една от най-трудните задачи на този етап е да положите усилия. Например, помислете за работа с файлове; можете да избирате между работа с живи данни (свързване с жива база данни) или просто четене на данни от файлове. Работата с бази данни означава, че трябва да имате достъп до инфраструктура, да се занимавате с удостоверяване и такива неща, които в зависимост от компанията могат да забавят началото на проекта; от друга страна, можете да поискате дъмп на данните и да започнете работа на следващия ден.

Доброто (и лошото) нещо на упражнението за обхват е, че то стеснява всичките ви възможни действия. По някакъв начин това е добре, защото премахвате всички неща, които не са необходими за предоставяне на доказателство за концепцията:

  • Съсредоточете се върху един проблем. Ако проблемът е твърде голям, разделете големия проблем на много малки проблеми (разделяй и владей). Например, ако проблемът ви е световен, преопределете обхвата на проблема си, така че да обхваща целия континент или просто се фокусирайте върху една държава. Можете също така да намалите сложността, като преформулирате времевия диапазон на вашия проблем (например, фокусирайте се върху определен период от време: миналата година, последното десетилетие и т.н.).
  • Обхватът не е фиксиран в камък и трябва да бъдете пъргави в това. Докато навлизате в бизнес домейна и придобивате повече опит в споровете с данните, ще има моменти, в които ще изместите обхвата си. Това е една от причините да използвам Kanban вместо Scrum по време на проучване, тъй като е по-гъвкав.
  • До момента, в който имате нулевия модел (обяснен по-долу), няма да знаете дали имате достатъчно данни. Но ще ви кажа една тайна: при машинното обучение никога нямате твърде много данни, но може да имате предубедени или непредставителни данни, което може да доведе до някои проблеми във вашите заключения . Ако имате твърде много данни, винаги можете да намалите набора си от данни; но ако имате твърде малко проби, техниките за повишаване на дискретизацията (увеличаване) може да добавят нежелана вариация към вашия набор от данни. В крайна сметка, ако имате много опции за избор на един обхват, изберете най-големия (по отношение на размера).
  • Проблемът трябва да е възможно да се справи с един компютър. Освен ако използвате модели за задълбочено обучение, тогава ще трябва да добавите един или повече GPU в компютъра. Можете да използвате или собствената си машина, или виртуална машина във VNET на клиента (препоръчва се, когато данните са разумни). Ако имате нужда от искров клъстер за трансформиране на вашите данни, помислете отново за обхвата на вашия проблем.
  • Предайте на клиента критериите за приемане. Тази точка е свързана с договаряне с клиента какво ще бъде резултатът на проекта. Фокус: това не е ML продукт (все още), а доказателство за концепцията, така че например имате ли наистина нужда от синьо-зелено разполагане? може би бихте предпочели да внедрите модела като REST API с помощта на flask? или работи само като записва прогнозите на модела във файл на Excel с цел по-късно да бъдат прегледани от бизнес експерт?
  • Критериите за приемане са един от двигателите на вашето изоставане (Jupyter Notebook или модул на python, докер или локално внедряване, регистрационен файл на проекта, артефакт на модела, прогнози на модела и т.н.). В крайна сметка, метриката и/или критерият за условие (как да оцените добротата на вашето решение) също трябва да бъде разгледана от клиента (повече за това в следващия раздел).
  • Фокусът трябва да повиши простотата, защото намалява времето и усилията. Целта на етапа на проучване трябва да бъде да се получи отговор за осъществимостта на продукта ML възможно най-скоро. Имайте предвид този проблем, когато решавате обхвата и вашите критерии за приемане.
  • Доказателството за концепцията е различно от прототипа за еднократно изхвърляне. Всички усилия, вложени на този етап, трябва да бъдат част от бъдещ продукт. През повечето време опитът на специалиста по данни е това, което ще направи разликата при повторното използване не само на наученото знание, но и на изходния код и инфраструктурата. Инженерът по машинно обучение трябва да помогне за справяне с тези проблеми (например налагане на най-добри практики).
  • Ако не е достатъчно ясно, повторих пет пъти думата „фокус“ ​​в този раздел (сега това е шестият). Има ли смисъл сега?

Тестване на модел

Малък отказ от отговорност: Повечето хора смятат, че изграждането на модел е най-сложната част от ML проект. Но не е така. Не защото има голям шанс ML алгоритъмът, от който се нуждаете, вече да е внедрен в библиотека като sklearn, h2o или pycaret. И дори няма да споменавам autoML техниките или ML библиотеките, налични на езици като R или Julia.

Придържайте се към основите; те ще решат 90% от вашите проекти. След като разберете основите, можете да се осмелите да скочите напред и да използвате по-сложни ML/DL алгоритми. По-лесно е да разберете теорията и основите на алгоритмите, след като ги използвате, така че не мислете, че трябва да ги разберете напълно, за да ги използвате. Това е техниката на учене, използвана от Джеръми Хауърд в техните курсове, която считам за фантастичен начин за учене за хора без докторска степен като мен.

И така, ако изграждането на модела не е най-трудната част, кое е то? Останалите части около ML модела, като инженерство на функции, обслужване на модела и т.н.

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

Итеративен подход

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

PS: Не се чувствайте потиснати, ако не го получите от първия път, когато опитате. Това е само първата стъпка от едно дълго пътуване.

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

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

Метрика

В зависимост от ML модела, който използвате, в крайна сметка ще използвате показател. Например, в случай на проблем с регресия, можете да използвате RMSE, а за проблеми с класификация можете да използвате точност. Наред с други неща, показателите се използват за проследяване на напредъка на ML моделите, така че можете да измерите как промяна в хиперпараметрите на данните/модела влияе върху прогнозите на модела. Вашите експерименти винаги трябва да се ръководят от показатели. Изборът на правилните показатели е толкова важен, колкото и изборът на самия модел и трябва да знаете, че „няма такова нещо като безплатен обяд“. Ще трябва да експериментирате и да проверите какво работи по-добре за вашия проблем.

През повечето време заинтересованата страна няма да знае нищо за RMSE (или друг показател за ML); но вие ще бъдете отговорни да му покажете, че избраният показател е в съответствие с бизнес целта. В този случай имате две възможности: а) както бе споменато по-горе, обяснете значението на показателя за машинно обучение и докажете важността му, или б) разработете паралелен бизнес показател. Бизнес показателят е индикатор, изразен в единици бизнес домейн. Например, в случай на препоръчител за онлайн магазин за дрехи, бизнес показател може да оцени колко добре моделът препоръчва продукти от същия пол като лицето, на което са препоръчани. Бизнес показателят е по-лесен за разбиране от заинтересованите страни и в крайна сметка той ще се окаже важен двигател на вашия модел.

Всяка итерация/експеримент трябва да се записва. Минимумът, който трябва да запишете, са резултатите от вашето обучение: показателите за резултатите. Jupyter Notebooks може да служи като обикновен дневник за тази цел. Оттам можете да използвате по-елегантни решения, които ще ви позволят да проследявате не само показателите, но и данните, използвани за обучението или генерирания модел (заедно с хиперпараметрите, използвани за получаването му): mlFlow, тегла и отклонения , …

Има три резултата от етапа на проучване:

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

Ако се интересувате от този вид проблеми, препоръчвам ви това четиво: „Управление на проекти за машинно обучение“, от „Университета за машинно обучение на Amazon“.

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