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

Това означава, че трябва да се интересуваме кога и как резултатите от тези модели ще се различават от процесите в реалния свят, които те трябва да моделират. Валидирането на модела е един подход за това, напр. под формата на набор от изчерпателни тестове или кръстосано валидиране, но това само ви казва нещо за цялостната статистическа производителност на вашия модел. Какво ще стане, ако искаме да знаем нещо повече за надеждността на една единствена прогноза? Регресионните модели често дават само точкова оценка на вашия резултат и докато класификаторите произвеждат „увереност“, това обикновено е некалибрирано преобразуване на логическите данни на модела, а не стабилна статистическа мярка; не е рядкост да видите класификатор да извежда 99% увереност при очевиден фалшив положителен резултат. Тази липса на прозрачност в индивидуалните прогнози може да затрудни предоставянето на бизнес заинтересованите страни на прозрението и увереността, от които се нуждаят, за да се включат напълно във влака на ML.

За щастие, има нарастващ брой подходи и библиотеки, обслужващи необходимостта от по-количествено третиране на несигурността на модела. В тази публикация в блога разглеждаме широко този пейзаж и обсъждаме някои интересни подходи към несигурността, които сме предприели в предишни проекти. Ние разделяме дискусията на три области: прогнозиране, регресия и класификация [1].

Прогнозиране

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

Prophet е библиотека, разработена от Facebook за покриване на мащабно прогнозиране на бизнес събития [2]. Той създава обобщен адитивен модел, което означава, че окончателното прогнозиране на модела се прави чрез сумиране на три отделни компонентни модела: празници, тенденция и сезонност. В този случай несигурността не е непременно уловена в параметрите на модела (те могат да бъдат представени като постериорни вероятностни разпределения, но по подразбиране са точкови оценки на MAP), но също и в начина, по който се генерират прогнозите. Това позволява симулирането на много потенциални прогнози, от които след това могат да бъдат изчислени „интервали на неопределеност“ за прогнозата. Това отчита несигурността в тенденцията и по избор моделите на сезонността и допълнително позволява моделирането на шума от наблюдението. За съжаление, тази симулация също така добавя допълнителни изчислителни разходи, което означава, че не е постижима във всяка настройка.

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

Алтернативен пакет за вероятностно моделиране на времеви редове идва чрез TensorFlow Probability под формата на пакета tfp.sts. Това също така връща моделирането на структурирани времеви редове към обобщен адитивен модел, но ви оставя гъвкавост оттам, за разлика от Prophet, който е по-труден за персонализиране. Можете да дефинирате и комбинирате различни модели с различни допускания по начин, който най-добре отговаря на вашия контекст на моделиране. Като допълнителен бонус, tfp.sts също така поддържа GPU ускорение и ви позволява да избирате между Variation Inference срещу MCMC. „Тази публикация в блога на авторите предоставя хубаво въведение.

Регресия

Най-общо казано, регресионните проблеми се отнасят до прогнозирането на числова стойност от набор от входни променливи. Стандартните регресионни подходи ви дават само точкова оценка като прогноза, т.е. едно число, без никаква индикация за увереност или несигурност. Независимо от това, може да бъде наистина ценно да се вземе предвид несигурността за регресионните цели. Например прогноза за цена на жилище от 300 000 EUR с марж на несигурност от 100 000 EUR е доста различна история от тази със същата цена и марж от 2 000 EUR. Друг случай на употреба може да бъде в производството: ако трябва да направите точно локализиран разрез, за ​​да разделите два килима, интервал на несигурност от 2 mm върху координатата е добре, но един от 20 cm може да е причина да поискате човешка намеса. Оценяването на продължителността на отделните задачи за целите на планирането е друга област, в която информацията за несигурността може да бъде от решаващо значение.

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

И двата ефекта могат да бъдат моделирани. Алеаторичната несигурност може по същество да бъде представена с шумов фактор във вашия генериращ модел, докато епистемичната несигурност се моделира чрез заместване на фиксирани параметри на модела (напр. линейна регресия или MLP тегла и отклонения) с вероятностни разпределения. След като те бъдат оценени чрез Вариационен извод или MCMC, те могат да бъдат взети от тях, за да се генерира разпределението на изхода за определен вход. Това може да се моделира в няколко вероятностни рамки, като Tensorflow Probability, Pyro, PyMC4,… Тази поредица от публикации в блога се надгражда добре към пълен вероятностен модел в Tensorflow. Използвайки тази методология, на потребителя в крайна сметка се предоставя изход, съдържащ доверителни интервали (алеаторична несигурност) върху множество проби (епистемична несигурност).

Разгледайте и MAPIE. Това е пакет, базиран на scikit-learn, който прилага оценки на несигурността както за регресия, така и за класификация (вижте по-долу).

Класификация

Както бе споменато във въведението, класификационните модели обикновено извеждат стойности на резултата на класа, които не са калибрирани, т.е. когато разглеждаме представителна извадка от входни данни на модела, всички от които водят до изходна достоверност от 0,95 за клас, не сме гарантирани (и не трябва да очакваме ), за да получите 95% истински положителни резултати и 5% фалшиви положителни резултати. Един от начините за по-добро количествено определяне на несигурността тук е да се използва калибриране на модела. Sklearn включва „функционалност“ за това.

Разглеждайки по-сложни невронни мрежи, особено в областта на зрението и НЛП, вероятностните методи със сигурност съществуват (1, 2, 3), но доколкото ни е известно, те все още не са широко използвани в индустрията.

И накрая, друг интересен подход в класификационната област се нарича „Спектрално нормализиран невронен гаусов процес (SNGP)“. Тази методология позволява на обикновен DNN да приближи напълно байесов подход към несигурността без допълнителните изчислителни разходи, които идват с прилагането му към големи входни пространства, чрез добавяне на нормализиране на теглото въз основа на разстоянието до примерите за обучение и Gaussian процес на изхода .

Заключение

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

Бележки под линия

[1] Може да се каже, че прогнозирането е специален тип регресия. За целите на тази статия си струва да го разгледаме отделно, тъй като има свои собствени специализирани подходи и пакети

[2] Има и вариант на Prophet, който използва дълбока мрежа за авторегресивен компонент, наречен NeuralProphet.