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

Зубрилка і ледар

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

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

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

01 / ПостановкаШістнадцять оголошень

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

Складність у тому, що марка рідкісна. За весь час на дошці зʼявилось лише 16 оголошень із підтвердженою ціною продажу — по кілька на рік із 2010-го по 2025-й. Ознака одна, рік випуску; відповідь одна, ціна в гривнях. Дата виходу моделі відома з точністю до місяця, тому рік у нас дробовий: 2012.5 — це телефон, що вийшов улітку 2012-го.

рік випускуціна, грнрік випускуціна, грн
2010.402 1862017.986 958
2011.633 7432019.067 360
2012.522 2972019.948 741
2013.344 1082020.938 658
2014.543 6642021.5810 233
2015.464 4382022.6314 236
2015.794 9882023.2715 124
2017.274 5592024.4317 201

Далі — рівно те, що вже вміє лінійна регресія. Якщо додати до моделі не лише сам рік, а і його степені, вона починає описувати криві:

ціна ≈ β0 + β1·рік + β2·рік2 + … + βd·рікd

Модель лишається лінійною за коефіцієнтами β, тож навчання не змінюється ні на крок: підбираємо ті самі числа тим самим способом. Змінюється єдине — d, степінь многочлена. Це і є наша ручка складності: при d = 1 модель має право провести лише пряму, при d = 15 — вигинатись як завгодно. Крутячи цю одну ручку, ми пройдемо повз обидві катастрофи.

Щоб було чесно, помилку ми міряємо на двох вибірках окремо: на тих самих 16 оголошеннях, за якими вчились, і на 300 інших, що зʼявились на дошці потім і моделі не показувались. Це той самий поділ, який ми завели в темі Train / Validation / Test. Міра помилки — середня квадратична (RMSE) у гривнях: наскільки в середньому модель промахується повз реальну ціну.

02 / СимптомиДві протилежні невдачі

Подивись на три моделі одразу. Дані ті самі, спосіб навчання той самий, відрізняється тільки степінь.

Схема 1 · Одні дані, три степені, три різні провали

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

Ліворуч пряма фізично не здатна вигнутись — вона однаково промахується і на навчанні, і на нових оголошеннях. Праворуч крива проходить рівно через кожну точку: помилка на навчанні дорівнює 0 грн, а на нових оголошеннях — 740 696 грн. Посередині модель не влучає в жодну точку — і саме тому працює найкраще.

Ліва картинка — недонавчання (underfitting). Модель занадто проста для явища. Ціна телефона падає з віком не по прямій: свіжий флагман втрачає тисячі гривень за рік, а десятирічному апарату вже майже нема куди дешевшати. До того ж на сірій кривій видно невеликий горб коло 2019-го — тодішня серія вийшла вдалою й тримає ціну краще за сусідні роки. Пряма не вміє бути одночасно крутою праворуч, пологою ліворуч і горбатою посередині, тож вона робить середнє з усього й систематично бреше на обох кінцях. Скільки оголошень їй не давай — пряма лишиться прямою.

Права картинка — перенавчання (overfitting). Модель занадто гнучка для тієї кількості даних, що в неї є. Многочлен 15-го степеня має 16 коефіцієнтів, тобто рівно стільки ж вільних чисел, скільки в нас оголошень, — і цієї свободи вистачає, щоб пройти точно через усі 16 точок. Між точками ж крива нічим не обмежена й вигинається як завгодно.

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

03 / ПасткаПастка ідеальної відповіді

Перенавчання підступне не тим, що модель погана. Воно підступне тим, що на навчальних даних модель ідеальна. Нуль гривень помилки. Якби ти дивився лише на це число, ти б доповів команді, що задачу розвʼязано на сто відсотків.

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

Схема 2 · Що саме вивчила складна модель

Бурштинові відрізки — відхилення кожного оголошення від справжньої залежності. Це і є шум: ціна конкретного продавця, а не ціна конкретного року.

Читай так: проста крива (бірюзова) проходить крізь хмару точок і ігнорує бурштинові відрізки. Складна (рожева) дотягується до кінчика кожного з них — тобто повторює шум разом із закономірністю, бо відрізнити їх вона не може. Найдовший відрізок — оголошення 2022 року на 1 423 грн дорожче за типове. Ціною такої точності стають дикі стрибки між точками: між оголошеннями 2010.40 і 2011.63 крива опускається до −610 412 грн.

Ось конкретний приклад. Чотирнадцяте оголошення — телефон кінця 2022 року за 14 236 грн, тоді як справжня крива в цій точці дає 12 813 грн. Ці 1 423 грн зверху — не властивість 2022 року, а властивість одного продавця, який поставив ціну із запасом, щоб було куди торгуватись. Проста модель цього оголошення не помітила й пройшла повз нього. Складна дотяглась і запамʼятала: «телефони кінця 2022-го коштують 14 236 грн». Наступного тижня інший продавець виставить телефон того самого року за 12 900 грн, і модель буде впевнено помилятись.

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

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

04 / ДіагнозДві помилки замість однієї

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

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

RMSE у гривнях: наскільки в середньому модель промахується повз ціну. Ліва колонка — на 16 навчальних оголошеннях, права — на 300 відкладених.

степіньпомилка, навчанняпомилка, тестщо це
11 654 грн1 573 грнобидві високі — недонавчання
3695 грн874 грнобидві низькі — те, що треба
9458 грн1 529 грннавчальна падає, тестова росте
150 грн740 696 грнідеально на вчорашньому, катастрофа на завтрашньому
Уся суть теми — у другому й третьому рядках. Від степеня 3 до степеня 9 навчальна помилка чесно покращилась із 695 до 458 грн. Якби ти дивився тільки на неї, ти б визнав нову модель кращою. Насправді на реальних оголошеннях вона стала гіршою майже вдвічі: 1 529 замість 874 грн.

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

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

05 / КриваПовзунок складності

Знайди цей момент сам. Проведи повзунок від 1 до 15 і дивись на дві речі одночасно: на криву ліворуч і на дві помилки праворуч.

Інтерактив 1 · Степінь многочлена від 1 до 15

Ліворуч — модель на тих самих 16 оголошеннях. Праворуч — обидві помилки для кожного степеня; вертикальна риска показує, де ти зараз.

помилка на навчанні
помилка на тесті
найкращий степінь
його помилка
Шкала помилки праворуч логарифмічна — інакше степінь 15 із його 740 696 грн розчавив би всю решту в лінію біля нуля. Нульова навчальна помилка при степені 15 намальована на самому дні шкали. Прожени обидва краї: при степені 1 криві злипаються високо, при степені 15 вони розлітаються від дна шкали до її верху.

Ти щойно побачив головну картинку машинного навчання. Її варто розібрати по кістках, бо обидві криві мають форму не випадково.

Разом ці дві криві дають характерну картину: навчальна монотонно вниз, тестова — літерою U. Дно цієї літери й є правильна складність. У нашому випадку дно — на степені 3 із помилкою 874 грн.

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

06 / ДаніДруга вісь: скільки даних

Досі ми крутили одну ручку — складність. Але в перенавчання є друга причина, і вона навіть важливіша: складність моделі завжди відносна до обсягу даних. Многочлен 9-го степеня — це не «складна модель». Це складна модель на 16 оголошеннях і цілком помірна модель на пʼятистах.

Зафіксуй степінь на девʼяти й покрути другу ручку.

Інтерактив 2 · Та сама модель на 10 і на 500 оголошеннях

Степінь фіксовано на 9. Змінюється лише кількість навчальних оголошень. Праворуч — обидві помилки залежно від обсягу вибірки.

помилка на навчанні
помилка на тесті
розрив
межа задачі750 грн
Ліва межа: 10 оголошень і 10 коефіцієнтів — крива знову проходить точно через усі точки, навчальна помилка нуль, тестова 26 005 грн. Права межа: 500 оголошень — навчальна 753 грн, тестова 772 грн, розрив стиснувся до 19 грн. Модель не змінилась ані на коефіцієнт. Змінилось те, скільки їй довелось вигадувати.

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

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

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

07 / ШумСкільки складності можна дозволити

Є ще одна величина, від якої залежить, де саме починається перенавчання, — і вона не про модель узагалі. Це рівень шуму в самих даних.

Уяви два ринки. На першому ціни майже строго визначені роком випуску: розкид навколо закономірності — сотня гривень. На другому продавці ставлять ціну як заманеться, і той самий телефон коштує від 6 до 12 тисяч. Питання: на якому ринку можна дозволити собі складнішу модель?

Інтерактив 3 · Що робить із моделлю шум у даних

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

найкращий степінь
його помилка
помилка при 9
переплата за 9
Прожени від краю до краю: при розкиді 100 грн вигідно брати степінь 7, при 750 грн — вже 3, при 2 600 грн — лише 2. Дані ті самі, закономірність та сама, кількість оголошень та сама. Змінився лише шум — і разом із ним змінилась відповідь на питання «яка модель тут правильна».

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

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

08 / НедонавчанняПротилежна хвороба

Ми довго говорили про надлишок гнучкості. Тепер про її нестачу — бо симптоми там геть інші, і сплутати їх дорого.

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

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

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

09 / ДіагностикаЩо бачу — що роблю

Зберемо все в одну таблицю. Це підсумок теми, придатний для роздруку: якщо в тебе є дві помилки, у тебе вже є діагноз.

Схема 4 · Діагностична таблиця

Дві помилки поруч дають чотири можливі картини. Три з них — справжні діагнози, четверта — привід перевірити самі вибірки.

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

Порядок дій, який варто виконувати механічно, не роздумуючи:

  1. Заміряй обидві помилки. Одна цифра діагнозу не дає ніколи.
  2. Порівняй їх між собою — це дасть напрямок руху.
  3. Порівняй навчальну з тим рівнем, який тебе влаштовує. Якщо вже вона погана, ускладнюй; про перенавчання говорити ще рано.
  4. Зроби один крок у знайденому напрямку й переміряй. Не два кроки одразу — інакше не дізнаєшся, який із них подіяв.

10 / ЧесністьТест, у який підглянули

І тепер незручне зізнання про все, що ми робили в цій лекції.

Ми перебрали всі степені від 1 до 15, подивились на тестову помилку кожного й оголосили переможцем степінь 3. Але тестова вибірка існує для того, щоб оцінити готову модель, а не щоб обрати її. Щойно ми обрали степінь за тестом, число 874 грн перестало бути чесною оцінкою: ми взяли мінімум із пʼятнадцяти спроб, а мінімум із багатьох спроб систематично оптимістичний. Частина цих 874 грн — це те, що степінь 3 випадково вгадав саме цю тестову вибірку.

Правило. Дані, за якими ти щось обираєш, більше не годяться, щоб оцінювати обране. Складність моделі підбирають на валідаційній вибірці — третьому конверті з теми Train / Validation / Test, — а тестової торкаються один раз наприкінці, щоб дізнатись фінальне число. Коли даних мало (а в нас їх 16), окремий валідаційний конверт викроїти нема з чого, і тоді роль валідації бере на себе крос-валідація: вибірка по черзі ділиться на частини, і кожна встигає побути і навчальною, і перевірочною.

Чому ж ми все одно показали тестову криву? Бо ми тут вивчаємо поведінку явища, а не будуємо продукт. Щоб побачити U-подібну форму, потрібна саме та крива, якої на практиці не існує. Це нормальний навчальний прийом — за умови, що ти памʼятаєш: у реальній задачі ця крива будується на валідації, а тестовий конверт лежить запечатаний.

11 / ПідсумокЩо варто винести

Одна ручка — степінь многочлена — провела нас повз дві протилежні катастрофи. Ліворуч модель занадто проста, щоб побачити закономірність. Праворуч — занадто гнучка, щоб її не переплутати з шумом. Посередині вузька смуга, де прогнози справді працюють.

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

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

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

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

Далі в темі

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