Машинне навчання · Блок 1 · Тема 01

Правила, яких ніхто не писав

Звичайна програма виконує правила, які придумав ти. Модель робить навпаки: дивиться на готові відповіді й виводить правила сама. Уся решта курсу — про наслідки цього обміну.

За курс Python ти навчився складати програми з правил, які придумуєш сам: якщо ціна менша за поріг — зроби одне, інакше інше. Це працює доти, доки правила знаєш ти. А тепер задача, де їх не знає ніхто.

Уяви дошку оголошень про продаж вживаних телефонів. Щодня туди додають тисячі оголошень, і серед них є шахрайські: телефон не існує, продавець просить передоплату й зникає. Твоє завдання — відсіювати такі оголошення до того, як хтось на них попадеться. Ця дошка буде наскрізним прикладом усієї лекції: усе, що я показуватиму, показуватиму на ній.

01 / ПостановкаЗвідки беруться правила

Спершу розвʼяжімо задачу так, як ти робив це весь курс Python. Сідаєш, дивишся на кілька десятків шахрайських оголошень, помічаєш спільне — і пишеш умови:

якщо ціна < 60 % ринкової → позначити
якщо акаунту менше 7 днів → позначити

Це звичайна програма. У неї на вході дані про оголошення й написані тобою правила, на виході — відповідь для кожного оголошення. Стрілка йде зліва направо, і найдорожчий елемент тут — твоя голова: правила беруться з неї.

Машинне навчання перевертає цю стрілку. Ми даємо машині дані разом із правильними відповідями — десять тисяч оголошень, кожне з яких модератор уже позначив як чесне або шахрайське, — і просимо знайти правило, яке ці відповіді відтворює. На виході отримуємо не відповіді, а правило, яким потім можна відповідати на нові оголошення.

Схема 1 · Куди дивиться стрілка

Один і той самий набір понять, переставлений місцями. Уся різниця — тут.

Головне: у звичайній програмі правила — це вхід, і пишеш їх ти. У машинному навчанні правила — це результат, і знаходить їх машина. Щойно правило знайдене, модель працює як звичайна програма: дані на вході, відповідь на виході.

Тут одразу варто прибрати найпоширеніше непорозуміння. Модель нічого не «розуміє». Вона не знає, що таке телефон, гроші чи обман. Усе, що вона робить, — знаходить закономірність у прикладах: комбінації чисел, які в навчальних даних частіше траплялися поруч із міткою «шахрайське». Якщо ця закономірність випадкова — модель вивчить випадковість із тим самим старанням.

«Правило», яке знаходить модель, теж не схоже на рядок коду. Найчастіше це просто набір чисел — ваг, які показують, наскільки кожна ознака зсуває відповідь. Формула однакова для всіх оголошень, змінюються лише числа в ній. Саме тому модель можна зберегти у файл і переслати: вона вміщується в кілька кілобайтів.

Ось як виглядають наші дані. Це звичайна таблиця — той самий DataFrame, з яким ти працював у темі pandas:

колонкащо цеприклад
модельназва моделі телефонаGalaxy A54
рікрік випуску2021
станоцінка стану продавцемдобрий
памʼятьобсяг памʼяті, ГБ128
цінаціна в оголошенні, грн7 400
чи шахрайськепозначка модераторані

Перші пʼять колонок — це те, що ми знаємо про оголошення. Остання — те, що хочемо передбачати. Різниця між ними принципова, і наступна тема курсу («Дані: ознаки, таргет, типи задач») присвячена саме їй.

02 / ПорівнянняТі самі дані, два підходи

Розмову про переваги легко звести до гасел, тому краще порахувати. Візьмімо 260 оголошень, з яких 128 насправді шахрайські, і всього дві ознаки: наскільки ціна нижча за ринкову й скільки днів акаунту продавця. Обидві реально доступні модератору, обидві щось значать: шахрай зазвичай ставить привабливо низьку ціну й робить свіжий акаунт.

Спершу спробуй ловити шахраїв правилами. Вмикай і вимикай їх у будь-якому поєднанні й дивись на два числа: скільки шахраїв спіймано і скільки чесних продавців потрапило під підозру помилково. Потім перемкнись у режим «вчимо на прикладах» — там ті самі дані, але жодного написаного руками правила.

Інтерактив 1 · Правила проти прикладів

Кожна точка — оголошення. Рожеві справді шахрайські, світлі — чесні. Бурштиновий обідок означає «фільтр позначив».

спіймано
хибних тривог
пропущено
позначено
Що читати: правило руками — це завжди прямий кут: вертикальна або горизонтальна відсічка. Модель не зобовʼязана різати вздовж осей, тому її межа виходить косою. Це не «розум» — це просто ширший набір можливих форм межі.

Зверни увагу на закономірність, яку видно на будь-якому наборі правил: щойно ти розширюєш правило, щоб ловити більше шахраїв, разом із ними під підозру потрапляють чесні продавці. Це не вада конкретного правила, а властивість задачі — два числа завжди рухаються разом, і ціну цього обміну доводиться призначати людині. Ціла тема курсу, Precision і Recall, про те, як цей обмін вимірювати.

Друге спостереження важливіше. Модель не придумала нової ознаки й не дізналася про шахраїв нічого, чого не було в даних. Вона просто підібрала межу під форму хмари точок, а не під форму нашої уяви. Людина мислить відсічками «дешевше за X» — і межа виходить сходинками. Модель шукає компроміс одразу по обох ознаках — і межа виходить похилою. Уся перевага саме в цьому, і вона зникає, щойно даних мало або мітки в них неправильні.

03 / МежаКоли ML доречний, а коли ні

Спокуса після такої демонстрації — вирішити, що моделлю треба розвʼязувати все. Це дорога помилка. Правила руками мають одну властивість, якої в моделі немає ніколи: вони передбачувані. Ти точно знаєш, що станеться на будь-якому вході, можеш пояснити рішення користувачеві й виправити помилку за хвилину.

Тому чесна межа виглядає так:

ситуаціяознакачим розвʼязувати
правил малоїх можна перелічити на аркушізвичайний код
правило записанезакон, договір, тарифзвичайний код
потрібна гарантіяпомилка коштує надто дорогозвичайний код або людина
правил забагатосотні винятків, що перетинаютьсямодель
правила плаваютьшахраї щомісяця змінюють тактикумодель
правило не формулюється«чи гарне фото» ніхто не опише умовамимодель
немає розмічених данихніхто не проставив відповідіспершу дані, потім модель

Розберімо два рядки, у яких найчастіше помиляються. «Правил забагато» — це не про складність окремого правила, а про їхню кількість і взаємодію. Одну умову «ціна нижча за 60 %» ти напишеш і супроводжуватимеш роками. Але коли до неї додаються двісті винятків на кшталт «крім телефонів старших за пʼять років у місті N у грудні», жодна людина вже не втримає систему в голові. Модель тримає таку кількість поєднань без зусиль — саме тому, що не тримає їх у голові, а просто рахує.

«Правила плавають» — про час. Фільтр із чотирьох умов зловить шахраїв цього місяця. Наступного вони поставлять ціну на рівні 90 % ринкової й почекають три тижні перед публікацією — і фільтр осліпне. Модель тут виграє не розумом, а швидкістю оновлення: щоб перевчити її на нових даних, потрібні години, а не нарада.

Насправді їх не протиставляють. У робочих системах правила й модель стоять поруч. Правила відсікають очевидне й гарантують те, що мусить бути гарантовано («оголошення дорожче мільйона не показуємо ніколи»), а модель ранжує сіру зону, де однозначної відповіді немає. Питання не «що краще», а «що на якій ділянці».

04 / ТипиТри способи вчитися

Досі ми говорили про один сценарій: у даних уже є правильні відповіді. Але це не єдиний спосіб навчити модель. За тим, що саме є в даних, розрізняють три типи навчання — і всі три можна показати на нашій дошці оголошень, не міняючи датасету.

Схема 2 · Три типи навчання на одній дошці оголошень

Різниця не в моделі й не в алгоритмі, а в тому, що саме лежить у даних.

Як розрізнити за пʼять секунд: є готові правильні відповіді — з учителем. Відповідей немає взагалі — без учителя. Відповіді немає, але за дію приходить нагорода — з підкріпленням.

Навчання з учителем (supervised learning) — той самий випадок, що й у попередньому розділі. У даних є пари «оголошення → правильна відповідь», і модель вчиться відтворювати цей звʼязок, щоб застосувати його до нових оголошень. «Учитель» тут — не людина поруч із компʼютером, а сама наявність відповідей у таблиці. Хтось їх колись проставив: модератор натиснув кнопку, продавець закрив угоду за конкретну суму.

Навчання без учителя (unsupervised learning) — коли відповідей немає й брати їх нема звідки. Модель отримує самі ознаки й шукає структуру: які оголошення схожі між собою, скільки типових груп узагалі є на дошці, які з них не схожі ні на що. Перевірити такий результат складніше — правильної відповіді, з якою можна звіритись, просто не існує.

Навчання з підкріпленням (reinforcement learning) — коли моделі ніхто не каже правильну відповідь, але за кожну дію вона отримує нагороду. Наш бот обирає, яке оголошення показати покупцеві першим. Правильної відповіді немає: ніхто не знає, що саме треба було показати. Але є сигнал — покупець написав продавцеві або пішов геть. Максимізуючи суму таких сигналів за багато показів, бот поступово вчиться вибирати краще. Про це є окрема тема наприкінці курсу.

Тип навчання тягне за собою тип задачі, а тип задачі — набір придатних моделей. Обери внизу, що саме ми хочемо передбачати на наших оголошеннях, і подивись, як від цього змінюється весь ланцюжок:

Інтерактив 2 · Карта типів задач

Датасет один і той самий — оголошення про телефони. Змінюється лише те, що вважати відповіддю.

Що варто помітити: датасет не змінюється — змінюється питання. Одна й та сама таблиця оголошень дає задачу регресії, класифікації, кластеризації або задачу з підкріпленням залежно від того, який стовпець ти назвеш відповіддю і чи є він у таблиці взагалі.

05 / ТерміниDS, ML, DL, AI: хто кого містить

Ці чотири скорочення новачок плутає постійно — і це не його провина. У літературі вони справді перекриваються: різні автори проводять межі по-різному, а вакансії з однаковою назвою описують різну роботу. Найкорисніше не шукати єдино правильне визначення, а запамʼятати робочу схему й знати, де вона умовна.

Схема 3 · Вкладеність понять і типовий порядок роботи

Угорі — хто в кому міститься. Унизу — у якому порядку це роблять на практиці.

Обережно з вкладеністю: вона зручна, але не строга. Частина штучного інтелекту — наприклад, класичні системи правил і планувальники — нічого не «вчить» на даних і в машинне навчання не потрапляє. Тому фігури радше перекриваються, ніж лежать одна в одній.

DS, наука про дані (data science) — найширше з чотирьох. Це весь комплекс роботи з даними: зібрати, почистити, подивитись, побудувати модель, зробити висновок, показати його людині, яка ухвалює рішення. Математика й статистика тут — інструмент, а не окремий вид спорту.

AI, штучний інтелект (artificial intelligence) — про системи, які розвʼязують задачі, що традиційно вважалися людськими: бачити, розуміти мову, планувати, грати. Історично сюди входять і підходи, які нічого не вчать на даних, — наприклад, шаховий перебір або система правил лікарської діагностики.

ML, машинне навчання (machine learning) — підмножина, у якій модель будується з даних, а не програмується вручну. Саме цим і займається весь наш курс. Той факт, що деякі автори вважають ML ширшим за AI, а не вужчим, — теж чесна частина картини: межа проходить не там, де хочеться, а по-різному в різних школах.

DL, глибоке навчання (deep learning) — частина ML, де моделлю є нейронна мережа з багатьма шарами. Це не окремий вид магії, а конкретне сімейство моделей, яке вчиться тим самим циклом, що й лінійна регресія. У курсі є окрема тема, і виявиться, що нового там менше, ніж здається.

Практичне правило. Коли в тексті вакансії чи статті бачиш «AI», підстав подумки «модель, навчена на даних» — у дев'яти випадках із десяти йдеться саме про ML, а слово AI стоїть там, бо гучніше звучить. Якщо після підстановки речення втрачає сенс — тоді автор і справді має на увазі щось інше, і варто читати уважніше.

06 / МежіЧого модель не вміє

Це найважливіший розділ теми. Усе попереднє можна вивчити за годину; те, що нижче, відрізняє людину, яка навчила модель, від людини, якій можна довірити рішення.

Модель бачила лише те, що було в даних

Модель — це закономірність, знайдена в конкретному діапазоні прикладів. Поза цим діапазоном вона не мовчить і не каже «не знаю». Формула визначена скрізь, тож модель підставить будь-які числа й видасть результат — з тією самою впевненістю, що й завжди.

Нижче — крихітна модель ціни телефона, навчена на оголошеннях 2018–2023 років з памʼяттю 64, 128 і 256 ГБ. Виведи запит за межі цього діапазону й подивись, що вона відповідає — і що при цьому показує метрика її якості.

Інтерактив 3 · Межа моделі

Бірюзова смуга — діапазон, у якому модель бачила приклади. Пряма продовжується й за неї.

прогноз, грн
схожих у даних
R² на навчанні
дані охоплюють
Головне тут — праве верхнє число поруч із лівим. «Схожих у даних» падає до нуля, а «R² на навчанні» не змінюється взагалі: метрика якості міряє, як модель відтворила минулі приклади, і про новий запит не знає нічого. Попередити мусить не модель, а ти.

Звідси практичний висновок: перед тим як вірити прогнозу, перевір, чи схожий обʼєкт узагалі був у навчальних даних. Модель ніколи не зробить цього за тебе — у неї немає поняття «я такого не бачила».

Кореляція — не причина

Припустимо, модель виявила: оголошення з фото на білому тлі продаються дорожче. Спокуса — порадити всім продавцям знімати телефон на аркуші паперу. Але звʼязок, найімовірніше, зовсім інший: на білому тлі знімають магазини, а в магазинів і телефони новіші, і ціни вищі. Тло — не причина ціни, а ознака того, хто продає.

Модель знаходить сумісну зустрічальність: що з чим траплялося поруч. Питання «що станеться, якщо втрутитись і змінити ознаку» — інше питання, і відповідає на нього експеримент, а не навчальна вибірка. Це не дрібниця: більшість дорогих провалів у прикладному ML — саме тут.

Упереджені дані дають упереджену модель

Уяви, що торік модератори з якихось причин ретельніше перевіряли оголошення з одного міста. Шахраїв там знайшли більше — не тому, що їх було більше, а тому, що більше шукали. Модель, навчена на цих мітках, чесно вивчить: «місто N — підозріло». Далі вона починає позначати звідти більше оголошень, модератори перевіряють їх ще ретельніше, знаходять ще більше — і наступна версія моделі впевнена вже сильніше.

Ключове тут: модель не помилилась. Вона точно відтворила закономірність, яка справді була в даних. Помилка в тому, що ця закономірність описувала роботу модераторів, а не поведінку продавців. Дані ніколи не бувають нейтральним знімком світу — вони завжди знімок того, як їх збирали. Тема Equality of Odds у другому семестрі саме про це.

Немає закономірності — не буде моделі

І найпростіше обмеження, яке чомусь згадують останнім. Якщо звʼязку між ознаками й відповіддю не існує, жодна модель його не знайде. Спробуй передбачити, о котрій годині покупець напише продавцеві, маючи лише марку телефона й ціну, — отримаєш модель, чия якість на нових даних не відрізняється від випадкового вгадування.

Прикро тут те, що на навчальних даних така модель усе одно покаже якийсь результат: досить складна модель завжди знайде спосіб запамʼятати шум. Саме тому якість вимірюють лише на прикладах, яких модель не бачила, — і цьому присвячена тема Train / Validation / Test.

Одним реченням. Модель не знає нічого поза даними, не відрізняє звʼязок від причини, успадковує всі перекоси збору й не вміє відповісти «тут закономірності немає». Усі чотири речі мусить перевіряти людина — і саме за це, а не за виклик fit, платять інженерові.

07 / ДаліЩо з цим робити

Підсумуймо коротко. Звичайна програма — це дані плюс правила на вході й відповіді на виході. Машинне навчання міняє місцями відповіді й правила: ми даємо приклади з готовими відповідями, а отримуємо правило. Правило це не розумне й нічого не розуміє — воно лише відтворює закономірність, яка була в прикладах, і рівно настільки добре, наскільки ці приклади описують реальність.

Далі курс іде по цьому ланцюжку. Наступна тема — «Дані: ознаки, таргет, типи задач» — розбирає найперший практичний крок: як з таблиці оголошень зробити те, що модель узагалі здатна прийняти. Що вважати ознакою, що таргетом, куди подіти текст і категорії, чому рік випуску й ціна в тисячах гривень погано живуть в одній формулі. Далі — як чесно міряти якість, перша модель для чисел і перша модель для міток.

Один наскрізний приклад — дошка оголошень про вживані телефони — пройде з тобою кілька перших тем. Це зроблено навмисно: коли датасет не змінюється, добре видно, що змінюється насправді.

Далі в практиці. У зошиті ти спершу напишеш фільтр шахрайства правилами руками й поміряєш, скільки він ловить, а потім даси ті самі дані моделі зі scikit-learn і порівняєш два стовпчики чисел. Наприкінці — крихітна регресія ціни та її межа.

Далі в темі

Теорію прочитано. Тепер закріпи її на практиці.