За курс Python ти навчився складати програми з правил, які придумуєш сам: якщо ціна менша за поріг — зроби одне, інакше інше. Це працює доти, доки правила знаєш ти. А тепер задача, де їх не знає ніхто.
Уяви дошку оголошень про продаж вживаних телефонів. Щодня туди додають тисячі оголошень, і серед них є шахрайські: телефон не існує, продавець просить передоплату й зникає. Твоє завдання — відсіювати такі оголошення до того, як хтось на них попадеться. Ця дошка буде наскрізним прикладом усієї лекції: усе, що я показуватиму, показуватиму на ній.
01 / ПостановкаЗвідки беруться правила
Спершу розвʼяжімо задачу так, як ти робив це весь курс Python. Сідаєш, дивишся на кілька десятків шахрайських оголошень, помічаєш спільне — і пишеш умови:
якщо акаунту менше 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, де моделлю є нейронна мережа з багатьма шарами. Це не окремий вид магії, а конкретне сімейство моделей, яке вчиться тим самим циклом, що й лінійна регресія. У курсі є окрема тема, і виявиться, що нового там менше, ніж здається.
06 / МежіЧого модель не вміє
Це найважливіший розділ теми. Усе попереднє можна вивчити за годину; те, що нижче, відрізняє людину, яка навчила модель, від людини, якій можна довірити рішення.
Модель бачила лише те, що було в даних
Модель — це закономірність, знайдена в конкретному діапазоні прикладів. Поза цим діапазоном вона не мовчить і не каже «не знаю». Формула визначена скрізь, тож модель підставить будь-які числа й видасть результат — з тією самою впевненістю, що й завжди.
Нижче — крихітна модель ціни телефона, навчена на оголошеннях 2018–2023 років з памʼяттю 64, 128 і 256 ГБ. Виведи запит за межі цього діапазону й подивись, що вона відповідає — і що при цьому показує метрика її якості.
Інтерактив 3 · Межа моделі
Бірюзова смуга — діапазон, у якому модель бачила приклади. Пряма продовжується й за неї.
Звідси практичний висновок: перед тим як вірити прогнозу, перевір, чи схожий обʼєкт узагалі був у навчальних даних. Модель ніколи не зробить цього за тебе — у неї немає поняття «я такого не бачила».
Кореляція — не причина
Припустимо, модель виявила: оголошення з фото на білому тлі продаються дорожче. Спокуса — порадити всім продавцям знімати телефон на аркуші паперу. Але звʼязок, найімовірніше, зовсім інший: на білому тлі знімають магазини, а в магазинів і телефони новіші, і ціни вищі. Тло — не причина ціни, а ознака того, хто продає.
Модель знаходить сумісну зустрічальність: що з чим траплялося поруч. Питання «що станеться, якщо втрутитись і змінити ознаку» — інше питання, і відповідає на нього експеримент, а не навчальна вибірка. Це не дрібниця: більшість дорогих провалів у прикладному ML — саме тут.
Упереджені дані дають упереджену модель
Уяви, що торік модератори з якихось причин ретельніше перевіряли оголошення з одного міста. Шахраїв там знайшли більше — не тому, що їх було більше, а тому, що більше шукали. Модель, навчена на цих мітках, чесно вивчить: «місто N — підозріло». Далі вона починає позначати звідти більше оголошень, модератори перевіряють їх ще ретельніше, знаходять ще більше — і наступна версія моделі впевнена вже сильніше.
Ключове тут: модель не помилилась. Вона точно відтворила закономірність, яка справді була в даних. Помилка в тому, що ця закономірність описувала роботу модераторів, а не поведінку продавців. Дані ніколи не бувають нейтральним знімком світу — вони завжди знімок того, як їх збирали. Тема Equality of Odds у другому семестрі саме про це.
Немає закономірності — не буде моделі
І найпростіше обмеження, яке чомусь згадують останнім. Якщо звʼязку між ознаками й відповіддю не існує, жодна модель його не знайде. Спробуй передбачити, о котрій годині покупець напише продавцеві, маючи лише марку телефона й ціну, — отримаєш модель, чия якість на нових даних не відрізняється від випадкового вгадування.
Прикро тут те, що на навчальних даних така модель усе одно покаже якийсь результат: досить складна модель завжди знайде спосіб запамʼятати шум. Саме тому якість вимірюють лише на прикладах, яких модель не бачила, — і цьому присвячена тема Train / Validation / Test.
fit, платять інженерові.07 / ДаліЩо з цим робити
Підсумуймо коротко. Звичайна програма — це дані плюс правила на вході й відповіді на виході. Машинне навчання міняє місцями відповіді й правила: ми даємо приклади з готовими відповідями, а отримуємо правило. Правило це не розумне й нічого не розуміє — воно лише відтворює закономірність, яка була в прикладах, і рівно настільки добре, наскільки ці приклади описують реальність.
Далі курс іде по цьому ланцюжку. Наступна тема — «Дані: ознаки, таргет, типи задач» — розбирає найперший практичний крок: як з таблиці оголошень зробити те, що модель узагалі здатна прийняти. Що вважати ознакою, що таргетом, куди подіти текст і категорії, чому рік випуску й ціна в тисячах гривень погано живуть в одній формулі. Далі — як чесно міряти якість, перша модель для чисел і перша модель для міток.
Один наскрізний приклад — дошка оголошень про вживані телефони — пройде з тобою кілька перших тем. Це зроблено навмисно: коли датасет не змінюється, добре видно, що змінюється насправді.
scikit-learn і порівняєш два стовпчики чисел. Наприкінці —
крихітна регресія ціни та її межа.Далі в темі
Теорію прочитано. Тепер закріпи її на практиці.