Уяви двох студентів перед іспитом. Перший прочитав підручник по діагоналі й запамʼятав, що «десь там була формула». Другий вивчив напамʼять усі задачі з торішнього збірника разом із номерами сторінок і опечатками. На іспиті обидва провалились: перший не знає нічого, другий знає не те. І порада «вчи більше» допоможе рівно одному з них, а другому зашкодить.
Моделі хворіють точно так само. Спершу ми навчимося розрізняти дві хвороби за симптомами — бо саме тут найлегше зробити рух у неправильний бік і витратити тиждень на те, щоб зробити модель гіршою. А потім розберемо помилку на частини й побачимо, звідки ці симптоми беруться.
ПостановкаШістнадцять оголошень
Повертаємось на нашу дошку оголошень про вживані телефони. Задача цього разу не про шахрайство, а найпростіша з можливих: підказати продавцю ціну. Людина відкриває форму, вибирає рік випуску свого телефона — і дошка показує, скільки за такий зазвичай просять.
Складність у тому, що марка рідкісна. За весь час на дошці зʼявилось лише 16 оголошень із підтвердженою ціною продажу — по кілька на рік із 2010-го по 2025-й. Ознака одна, рік випуску; відповідь одна, ціна в гривнях. Дата виходу моделі відома з точністю до місяця, тому рік у нас дробовий: 2012.5 — це телефон, що вийшов улітку 2012-го.
| рік випуску | ціна, грн | рік випуску | ціна, грн |
|---|---|---|---|
| 2010.40 | 2 186 | 2017.98 | 6 958 |
| 2011.63 | 3 743 | 2019.06 | 7 360 |
| 2012.52 | 2 297 | 2019.94 | 8 741 |
| 2013.34 | 4 108 | 2020.93 | 8 658 |
| 2014.54 | 3 664 | 2021.58 | 10 233 |
| 2015.46 | 4 438 | 2022.63 | 14 236 |
| 2015.79 | 4 988 | 2023.27 | 15 124 |
| 2017.27 | 4 559 | 2024.43 | 17 201 |
Далі — рівно те, що вже вміє лінійна регресія. Якщо додати до моделі не лише сам рік, а і його степені, вона починає описувати криві:
Модель лишається лінійною за коефіцієнтами β, тож
навчання не змінюється ні на крок:
підбираємо ті самі числа тим самим способом. Змінюється єдине — d,
степінь многочлена. Це і є наша ручка складності: при d = 1
модель має право провести лише пряму, при d = 15 — вигинатись як завгодно.
Крутячи цю одну ручку, ми пройдемо повз обидві катастрофи.
СимптомиДві протилежні невдачі
Подивись на три моделі одразу. Дані ті самі, спосіб навчання той самий, відрізняється тільки степінь.
Одні дані, три степені, три різні провали
Рожеві точки — 16 навчальних оголошень. Сіра пунктирна крива — справжня залежність ціни від року, яку ми й шукаємо. Суцільна крива — те, що знайшла модель.
Ліва картинка — недонавчання (underfitting). Модель занадто проста для явища. Ціна телефона падає з віком не по прямій: свіжий флагман втрачає тисячі гривень за рік, а десятирічному апарату вже майже нема куди дешевшати. До того ж на сірій кривій видно невеликий горб коло 2019-го — тодішня серія вийшла вдалою й тримає ціну краще за сусідні роки. Пряма не вміє бути одночасно крутою праворуч, пологою ліворуч і горбатою посередині, тож вона робить середнє з усього й систематично бреше на обох кінцях. Скільки оголошень їй не давай — пряма лишиться прямою.
Права картинка — перенавчання (overfitting). Модель занадто гнучка для тієї кількості даних, що в неї є. Многочлен 15-го степеня має 16 коефіцієнтів, тобто рівно стільки ж вільних чисел, скільки в нас оголошень, — і цієї свободи вистачає, щоб пройти точно через усі 16 точок. Між точками ж крива нічим не обмежена й вигинається як завгодно.
Головне, що варто помітити просто зараз: обидві моделі дають погані прогнози, але з протилежних причин. Одну треба відпустити, другу — приборкати. Порада «візьми складнішу модель» рятує ліву й добиває праву.
ПасткаПастка ідеальної відповіді
Перенавчання підступне не тим, що модель погана. Воно підступне тим, що на навчальних даних модель ідеальна. Нуль гривень помилки. Якби ти дивився лише на це число, ти б доповів команді, що задачу розвʼязано на сто відсотків.
Щоб зрозуміти, що саме пішло не так, треба згадати, звідки взялись ці 16 цін. Ціна оголошення — це не чиста закономірність. Це закономірність плюс усе інше: подряпина на корпусі, продавець поспішає перед відʼїздом, інший продавець вирішив поторгуватись і поставив із запасом. Усе це «інше» ми називаємо шумом — воно існує, воно реальне, але воно ніяк не повʼязане з роком випуску й тому непередбачуване.
Що саме вивчила складна модель
Бурштинові відрізки — відхилення кожного оголошення від справжньої залежності. Це і є шум: ціна конкретного продавця, а не ціна конкретного року.
Ось конкретний приклад. Чотирнадцяте оголошення — телефон кінця 2022 року за 14 236 грн, тоді як справжня крива в цій точці дає 12 813 грн. Ці 1 423 грн зверху — не властивість 2022 року, а властивість одного продавця, який поставив ціну із запасом, щоб було куди торгуватись. Проста модель цього оголошення не помітила й пройшла повз нього. Складна дотяглась і запамʼятала: «телефони кінця 2022-го коштують 14 236 грн». Наступного тижня інший продавець виставить телефон того самого року за 12 900 грн, і модель буде впевнено помилятись.
Це та сама межа, з якої почався курс. У темі Що таке машинне навчання ми домовились, що навчання — це узагальнення, а не запамʼятовування прикладів. Перенавчена модель переступає цю межу: вона запамʼятала таблицю замість того, щоб вивести з неї правило. До речі, найчистіший приклад такої моделі ти вже бачив — це kNN при k = 1, у якого точність на навчальних даних завжди дорівнює одиниці просто тому, що найближчий сусід кожного навчального обʼєкта — він сам.
ДіагнозДві помилки замість однієї
Звідси випливає єдиний надійний спосіб помітити перенавчання: дивитись не на одне число, а на два поруч. Помилка на навчальних оголошеннях і помилка на відкладених. Ось вони для чотирьох степенів — RMSE у гривнях, ліва колонка на 16 навчальних оголошеннях, права на 300 відкладених:
| степінь | помилка, навчання | помилка, тест | що це |
|---|---|---|---|
| 1 | 1 654 грн | 1 573 грн | обидві високі — недонавчання |
| 3 | 695 грн | 874 грн | обидві низькі — те, що треба |
| 9 | 458 грн | 1 529 грн | навчальна падає, тестова росте |
| 15 | 0 грн | 740 696 грн | ідеально на вчорашньому, катастрофа на завтрашньому |
Уся суть теми — у другому й третьому рядках. Від степеня 3 до степеня 9 навчальна помилка чесно покращилась із 695 до 458 грн. Якби ти дивився тільки на неї, ти б визнав нову модель кращою. Насправді на реальних оголошеннях вона стала гіршою майже вдвічі: 1 529 замість 874 грн.
Придивись до першого рядка окремо: при степені 1 тестова помилка навіть трохи менша за навчальну. Ніякого розриву немає — і це діагностична ознака. Модель не запамʼятовує нічого зайвого просто тому, що їй нема чим запамʼятовувати; вона однаково безпорадна скрізь.
А тепер сформулюємо те, що ми шукаємо, одним реченням. Момент, коли навчальна помилка ще падає, а тестова вже почала рости, — це і є перехід у перенавчання. До цієї точки додаткова гнучкість витрачається на опис закономірності. Після неї — на опис шуму.
КриваПовзунок складності
Знайди цей момент сам. Проведи повзунок від 1 до 15 і дивись на дві речі одночасно: на криву ліворуч і на дві помилки праворуч.
Степінь многочлена від 1 до 15
Ліворуч — модель на тих самих 16 оголошеннях. Праворуч — обидві помилки для кожного степеня; вертикальна риска показує, де ти зараз.
Ти щойно побачив головну картинку машинного навчання. Її варто розібрати по кістках, бо обидві криві мають форму не випадково.
Навчальна помилка падає завжди. Це не емпіричне спостереження, а майже теорема. Многочлен 4-го степеня вміє все, що вміє многочлен 3-го (достатньо взяти нульовий старший коефіцієнт), і ще трохи. Тож найкраще, що він може зробити на навчальних даних, ніяк не гірше. Звідси головний висновок: навчальна помилка не несе інформації про якість моделі. Вона міряє памʼять, а не розуміння.
Тестова помилка спершу падає. Поки моделі бракує гнучкості, кожен доданий степінь витрачається на щось справжнє: на вигин, який реально є в даних. Прогнози на нових оголошеннях покращуються.
Потім вона розвертається вгору. Коли форму вже описано, наступний степінь описувати нічого. Але оптимізатор не вміє сказати «мені досить»: він зобовʼязаний зменшувати помилку на навчанні, а єдине, що там лишилось зменшувати, — це шум. Модель починає підганятись під випадкові відхилення 16 конкретних продавців. На нових оголошеннях відхилення інші, і вивчене стає активною завадою.
Разом ці дві криві дають характерну картину: навчальна монотонно вниз, тестова — літерою U. Дно цієї літери й є правильна складність. У нашому випадку дно — на степені 3 із помилкою 874 грн.
ДаніДруга вісь: скільки даних
Досі ми крутили одну ручку — складність. Але в перенавчання є друга причина, і вона навіть важливіша: складність моделі завжди відносна до обсягу даних. Многочлен 9-го степеня — це не «складна модель». Це складна модель на 16 оголошеннях і цілком помірна модель на пʼятистах.
Зафіксуй степінь на девʼяти й покрути другу ручку.
Та сама модель на 10 і на 500 оголошеннях
Степінь фіксовано на 9. Змінюється лише кількість навчальних оголошень. Праворуч — обидві помилки залежно від обсягу вибірки.
Механізм простий і варто його промовити. Щоб крива пройшла точно через 10 точок, досить 10 коефіцієнтів. Щоб вона пройшла точно через 500 точок, коефіцієнтів треба 500 — а їх у неї лише 10. Дані перестають поміщатись у модель, і їй уже нічого не лишається, крім як описувати те спільне, що є в усіх оголошеннях, тобто закономірність. Шум окремих продавців у великій вибірці взаємно гаситься: хтось поставив дорожче, хтось дешевше, у сумі — нуль.
Тому дані — найдешевший засіб від перенавчання, коли вони є. Він не вимагає ані вибору моделі, ані підбору гіперпараметрів, ані розуміння задачі: просто зачекай, поки на дошці накопичиться більше оголошень. І це ж пояснює, чому засіб доступний не завжди: дані бувають дорогі (розмітити 500 медичних знімків має лікар), рідкісні (наша марка дає 16 оголошень за 15 років) і застарілі (оголошення пʼятирічної давності описують ринок, якого вже немає).
Є й третя вісь, про яку варто знати одразу: рівень шуму. Уяви два ринки. На першому ціни майже строго визначені роком випуску, розкид навколо закономірності — сотня гривень. На другому продавці ставлять ціну як заманеться. На першому ринку тонкі вигини, які модель бачить у даних, справжні — їх варто повторювати, і високий степінь окупається. На другому ті самі вигини — це переважно випадковість конкретних продавців, і повторювати їх означає вчити нісенітницю. Звідси правило, яке рятує чимало часу: питання «яка модель складна?» не має відповіді без даних. Складна — відносно обсягу вибірки й відносно рівня шуму.
НедонавчанняПротилежна хвороба
Ми довго говорили про надлишок гнучкості. Тепер про її нестачу — бо симптоми там геть інші, і сплутати їх дорого.
При степені 1 наша модель має помилку 1 654 грн на навчанні й 1 573 грн на тесті. Дивись на цю пару уважно: обидва числа високі, і розриву між ними немає. Модель не вивчила зайвого — вона взагалі майже нічого не вивчила. Пряма фізично не може бути крутою праворуч і пологою ліворуч, тож вона стабільно, передбачувано й однаково помиляється скрізь.
І тут ключова відмінність у лікуванні. Перенавченій моделі ми віднімаємо свободу: знижуємо степінь, додаємо дані, вводимо штраф за великі коефіцієнти. Недонавченій моделі все це протипоказано — вона й так задихається. Їй треба дати більше:
- більше гнучкості — вищий степінь, глибше дерево, більше нейронів;
- кращі ознаки — і це зазвичай дає найбільший приріст. Наша модель знає про телефон лише рік випуску. Додай обсяг памʼяті, стан за пʼятибальною шкалою, чи є рідний зарядний пристрій — і навіть проста пряма по цих ознаках побʼє будь-який многочлен по одному року;
- слабший штраф — якщо регуляризацію вже ввели й перестарались;
- довше навчання — для ітеративних методів на кшталт градієнтного спуску висока помилка на навчанні іноді означає просто, що спуск ще не дійшов до дна.
Зверни увагу на найважчий випадок: додавання даних недонавченій моделі не допомагає взагалі. Пряма, навчена на мільйоні оголошень, — це та сама пряма, тільки проведена трохи впевненіше. Тому перед тим, як замовляти дані, діагноз треба ставити чесно: за розривом, а не за відчуттям.
ДіагностикаЩо бачу — що роблю
Зберемо все в одну таблицю. Дві помилки поруч дають чотири можливі картини: три з них — справжні діагнози, четверта — привід перевірити самі вибірки.
| помилка на навчанні | помилка на тесті | діагноз | що робити |
|---|---|---|---|
| висока | висока, розриву майже немає | недонавчання | ускладнити модель, додати ознак, послабити штраф, навчати довше |
| низька | низька, розрив невеликий | усе гаразд | не чіпати; далі покращувати вже за рахунок ознак |
| дуже низька | помітно вища, великий розрив | перенавчання | спростити модель, додати даних, увести регуляризацію |
| висока | помітно нижча | підозріло | шукати помилку: витік даних, різні вибірки, зсув у розподілі |
Останній рядок — не жарт. Якщо модель раптом працює на нових даних краще, ніж на тих, за якими вчилась, це майже завжди означає, що вибірки різні: у навчальну потрапили якісь важчі випадки або у тестову — легші. У нашому степені 1 тестова помилка теж трохи нижча за навчальну, і причина саме така: 16 оголошень — надто мало, щоб їхня складність збіглася з середньою.
Порядок дій, який варто виконувати механічно, не роздумуючи:
- Заміряй обидві помилки. Одна цифра діагнозу не дає ніколи.
- Порівняй їх між собою — це дасть напрямок руху.
- Порівняй навчальну з тим рівнем, який тебе влаштовує. Якщо вже вона погана, ускладнюй; про перенавчання говорити ще рано.
- Зроби один крок у знайденому напрямку й переміряй. Не два кроки одразу — інакше не дізнаєшся, який із них подіяв.
ЧесністьТест, у який підглянули
І тепер незручне зізнання про все, що ми робили дотепер.
Ми перебрали всі степені від 1 до 15, подивились на тестову помилку кожного й оголосили переможцем степінь 3. Але тестова вибірка існує для того, щоб оцінити готову модель, а не щоб обрати її. Щойно ми обрали степінь за тестом, число 874 грн перестало бути чесною оцінкою: ми взяли мінімум із пʼятнадцяти спроб, а мінімум із багатьох спроб систематично оптимістичний. Частина цих 874 грн — це те, що степінь 3 випадково вгадав саме цю тестову вибірку.
Чому ж ми все одно показали тестову криву? Бо ми тут вивчаємо поведінку явища, а не будуємо продукт. Щоб побачити U-подібну форму, потрібна саме та крива, якої на практиці не існує. Це нормальний навчальний прийом — за умови, що ти памʼятаєш: у реальній задачі ця крива будується на валідації, а тестовий конверт лежить запечатаний.
АнатоміяЗвідки береться літера U
Досі ми описували те, що бачили: навчальна помилка вниз, тестова літерою U, розрив як симптом. Жодного разу ми не сказали, чому тестова крива має саме таку форму. Що росте праворуч і що падає ліворуч?
Відповідь у тому, що помилка складається з трьох частин, які поводяться по-різному. Розділити її на ці частини можна точно, і зараз ми це зробимо. Але спершу — сама ідея, без жодної формули.
Уяви, що ми повторюємо всю нашу роботу багато разів. Дошка оголошень щоразу інша: знову 16 телефонів тих самих років, але виставили їх інші люди — з іншими подряпинами й іншим настроєм. Кожна така дошка дає свою навчену модель. Виходить не одна модель, а ціла купа моделей — і ось у цій купі й ховається відповідь.
- Незвідний шум. Усе, чого в принципі не можна передбачити за роком випуску: подряпина, настрій продавця, терміновість продажу. Наші 750 грн розкиду. Жодна модель, навіть ідеальна, не опуститься нижче цієї межі. Це підлога, а не недолік алгоритму.
- Зміщення (bias) — систематична похибка. Наскільки усереднена по всіх цих дошках модель промахується повз справжню криву. Виникає, коли клас моделей просто не здатен описати залежність: прямою не намалюєш горб 2019 року, скільки оголошень не давай.
- Дисперсія (variance) — нестабільність. Наскільки моделі, навчені на різних дошках, розходяться між собою. Виникає, коли модель настільки гнучка, що вивчає не залежність, а конкретні відхилення саме цих 16 продавців.
Найкоротший спосіб відчути різницю — уявити стрільбу по мішені. Кожен постріл — це модель, навчена на своїй дошці. Центр мішені — істина. Тоді влучність — де опинився центр купи пострілів (змістився вбік — це зміщення), а купчастість — наскільки постріли тримаються один одного (розкидані — це дисперсія). Чотири комбінації дають чотири типові діагнози:
Мішень: влучність і купчастість
Кожна точка — модель, навчена на своїй дошці оголошень. Центр мішені — справжня залежність. Бірюзовий хрестик — середня модель.
ВиведенняРозклад крок за кроком
Тепер те саме формально. Знадобиться один новий символ — 𝔼, велика
латинська «E». Це «середнє по всіх можливих випадках»: запис
𝔼D[…] читається «усередни те, що в дужках, по всіх
можливих навчальних дошках D». Нижній індекс каже, по чому саме
усереднюємо, і саме тут найчастіше плутають.
Позначимо через D навчальну вибірку, а через
f̂D — модель, яку ми отримали, навчившись на ній.
Справжню залежність назвемо f, а спостережувану ціну — y:
Тут ε (грецька «епсилон») — випадкове відхилення однієї ціни від типової,
той самий шум. Запис 𝔼[ε] = 0 каже, що в середньому це відхилення нульове:
завищень і занижень порівну. Var(·) — дисперсія, тобто
середній квадрат відхилення від середнього; це та сама величина, корінь із якої ми звемо
стандартним відхиленням. Отже σ2 — дисперсія шуму,
у нас це 750 грн у квадраті. Ключова ідея: D — випадкова величина.
Ми витягли одну дошку, могли б витягти іншу. Отже, і навчена модель
f̂D — теж випадкова величина, тільки значеннями її
є цілі функції. Тоді:
«Середня модель» 𝔼D[f̂D] —
це не середнє значення прогнозів по тестових точках і не середня лінія по осі років.
Це результат уявного експерименту: витягти тисячу різних дощок, навчити тисячу моделей
і в кожному році x усереднити тисячу прогнозів.
Тепер зафіксуємо один рік x і порахуємо очікуваний квадрат помилки.
Справжня ціна дорівнює y = f(x) + ε, прогноз —
f̂D(x). Квадрат їхньої різниці, усереднений
і по дошках, і по шуму:
Шум ε не залежить від того, які оголошення потрапили в навчання, і
в середньому дорівнює нулю. Тому при розкритті квадрата подвійний добуток зникає,
і шум відходить в окремий доданок:
Позначимо f̄(x) — ту саму «середню модель». Вставимо її всередину
дужок, нічого не змінивши: додали й одразу відняли те саме число.
Квадрат суми дає три доданки. Перший не залежить від дошки, тому усереднення
його не змінює. Третій, подвійний добуток, обертається на нуль: у ньому є множник
𝔼D[f̄(x) − f̂D(x)], а
це нуль за самим означенням середнього.
Три доданки — це рівно шум, квадрат зміщення й дисперсія:
Три речі, які варто витягти з цього виведення. По-перше, розклад точний, а не наближений: це тотожність, доданків рівно три, вони не перекриваються й усі невідʼємні. По-друге, він працює для квадратичної помилки; для інших функцій втрат — скажімо, для частки помилкових класифікацій — аналог існує, але доданки там уже можуть взаємодіяти. Інтуїція «влучність проти купчастості» переноситься, точна формула — ні. По-третє, зменшувати треба суму: модель зі зміщенням 0 і дисперсією 10 гірша за модель зі зміщенням 1 і дисперсією 1. Саме тому свідомо внесене зміщення часто окупається.
ВіялоСорок паралельних дощок
Тепер побудуємо той уявний експеримент по-справжньому. Візьмемо 40 різних дощок оголошень — усі з тієї самої закономірності, усі по 16 оголошень, але з різними випадковими відхиленнями цін. На кожній навчимо свою модель обраного степеня. Вийде 40 різних кривих — «віяло».
Віяло з 40 паралельних дощок
Кожна тонка бірюзова лінія — модель, навчена на своїй дошці з 16 оголошень. Товста рожева — їхнє середнє. Сірий пунктир — справжня залежність.
Прожени обидва краї. При степені 1 усі 40 прямих лежать майже одна на одній — дисперсія лише 173 грн, — але жодна навіть не намагається повторити форму сірого пунктиру: зміщення 1 221 грн, тобто майже вся помилка. При степені 12 навпаки: зміщення падає до 155 грн, а дисперсія розганяється до 1 205 грн і переростає навіть незвідний шум. Середня крива вже гарна — а окремій моделі, навченій на твоїй єдиній дошці, вірити не можна.
І ось відповідь на питання, з якого почався розділ 10. Зміщення зі зростанням складності падає: гнучкішій моделі є чим описати горб 2019 року. Дисперсія росте: та сама гнучкість дає їй свободу піти слідом за випадковими відхиленнями. Шум стоїть на місці завжди. Сума трьох доданків і є та U-подібна крива, яку ми бачили в інтерактиві 1 — тільки тепер видно, з чого вона зроблена. Мінімум суми майже ніколи не там, де мінімум кожного доданка окремо: тут він на степені 5, хоча найменше зміщення — аж на степені 11, а найменша дисперсія — на степені 1.
Зверни увагу ще на одну дрібницю. Інтерактив 1 називав найкращим степінь 3, а сорок дощок кажуть — степінь 5. Суперечності немає: там ми міряли одну конкретну дошку, тут — середнє по сорока. Різниця між цими двома відповідями і є те саме «підглядання», про яке йшлося в розділі 09: степінь 3 виграв на нашій єдиній дошці почасти випадково.
Тут же стає зрозуміло, чому дані такі цінні. Більше оголошень — менше можливостей
для окремого відхилення зрушити криву, тому дисперсія падає приблизно як 1/n,
де n — кількість навчальних оголошень. А зміщення від кількості даних не
залежить взагалі: пряма, навчена на мільйоні оголошень, лишається прямою. Ось чому дані
лікують рівно одну з двох хвороб — і чому перед тим, як замовляти розмітку, будують
криву навчання: залежність помилки від обсягу вибірки. Якщо вона вийшла
на плато — проблема в моделі, а не в даних.
РучкиКуди крутити в кожній моделі
У кожної моделі є свої важелі, які рухають її вздовж тієї самої шкали. Коли діагноз поставлено, залишається знайти правильну ручку.
Одне позначення в таблиці зустрічається вперше: λ («лямбда») — сила штрафу
за великі коефіцієнти в моделях Ridge і Lasso. Що більша λ, то дорожче моделі
обходиться кожен великий коефіцієнт, то обережніше вона поводиться — і то простішою
фактично стає. Це предмет теми 19;
тут від неї потрібне лише те, що це ручка того самого компромісу.
| модель | більше дисперсії | більше зміщення |
|---|---|---|
| многочлен | вищий степінь | нижчий степінь |
| Ridge / Lasso | менше λ | більше λ |
| kNN | менше k (аж до k = 1) | більше k |
| дерево | більша глибина, менший лист | обрізання, min_samples_leaf |
| випадковий ліс | глибші дерева | більше дерев*, менше ознак на розбиття |
| бустинг | більше ітерацій, глибші дерева | менша швидкість навчання, рання зупинка |
| нейромережа | більше шарів і нейронів | dropout, спад ваг, рання зупинка |
* Зірочка біля випадкового лісу не випадкова. Збільшення кількості дерев — рідкісний випадок, коли дисперсія падає майже без зростання зміщення. Причина в тому, що усереднення багатьох майже незалежних моделей знижує розкид, не зачіпаючи середню модель. На цьому й тримається весь беггінг: беремо навмисно перенавчені глибокі дерева (мале зміщення, величезна дисперсія) і гасимо дисперсію усередненням. Бустинг рухається з протилежного боку: бере навмисно слабкі, зміщені пеньки й послідовно зменшує зміщення.
Окрема ручка, якої в таблиці немає, бо вона працює майже скрізь: лишити модель гнучкою, але заборонити її коефіцієнтам розбігатись — додати штраф за їхню величину прямо у функцію втрат. Модель формально лишається такою самою складною, а фактично поводиться як значно простіша: дисперсія падає, зміщення трохи росте, і сума виграє. Це регуляризація, і їй присвячена окрема тема далі в курсі.
МежаЧому класична крива ламається у великих мережах
Усе сказане вище описує 90 % задач, які ти зустрінеш: лінійні моделі, дерева, бустинг на таблицях. Але є режим, у якому U-подібна крива поводиться інакше, і про нього варто знати, щоб не зробити хибного висновку.
Позначимо кількість навчальних прикладів через N, а кількість вільних
параметрів моделі — через p. Наш многочлен 15-го степеня на 16 оголошеннях
стояв рівно в точці p = N: коефіцієнтів стільки ж, скільки прикладів, і
крива проходить точно через кожну точку. Ця точка називається
порогом інтерполяції (interpolation threshold), і саме там ми бачили
катастрофу. Класична інтуїція каже: далі буде тільки гірше.
Виявляється, ні. Якщо продовжити нарощувати p далеко за поріг, тестова
помилка спершу справді злітає до піку — а потім знову починає падати,
і друга спадна гілка може опуститись нижче за будь-яку класичну модель. Крива має не
одну яму, а дві. Явище називають подвійним спуском (double descent).
Розширена крива: другий спуск за порогом
Вісь параметрів продовжено далеко праворуч від точки, де модель уже проходить точно через усі навчальні приклади.
Пояснення тримається на одній думці. Поки p < N, рівнянь більше, ніж
невідомих, і модель шукає компроміс. Рівно на порозі рівнянь і невідомих порівну:
спосіб пройти крізь усі точки рівно один, і ніхто не гарантував, що він
хороший — зазвичай він вимагає велетенських коефіцієнтів, які гасять один одного в самих
точках і розлітаються між ними. Це не перенавчання у звичному сенсі, а жорсткість:
вибору немає. А коли p > N, розвʼязків із нульовою помилкою на навчанні
стає нескінченно багато, і дані більше не визначають модель. Вибір робить
алгоритм навчання — і градієнтний спуск систематично обирає найгладший варіант, той,
у якого найменша норма ваг. Це називають неявною регуляризацією: штрафу
ніхто не дописував, він виникає із самого способу навчання. Для найпростішої
кусково-лінійної моделі це навіть доводиться: у границі багатьох параметрів розвʼязок
мінімальної норми — це натуральний кубічний сплайн, тобто буквально найменш вигнута
крива крізь задані точки.
Чи скасовує це розклад із розділу 11? Ні. Дисперсію в цьому режимі стримує не малий розмір моделі, а неявна регуляризація — доданки на місці, змінився лише механізм, який тисне на другий із них. Що подвійний спуск справді скасовує, так це звичку міряти схильність до перенавчання кількістю параметрів. Практичних висновків із цього два: обходь околиці порогу (найризикованіша конфігурація — та, де параметрів приблизно стільки ж, скільки прикладів: краще суттєво менше або суттєво більше) і не роби висновків із двох точок — якщо збільшення моделі погіршило метрику, це може бути підйом до піку, а не межа корисності.
ПідсумокЩо варто винести
Одна ручка — степінь многочлена — провела нас повз дві протилежні катастрофи. Ліворуч модель занадто проста, щоб побачити закономірність. Праворуч — занадто гнучка, щоб її не переплутати з шумом. Посередині вузька смуга, де прогнози справді працюють. А розклад помилки на три доданки пояснив, чому ця смуга взагалі існує.
| ідея | суть | чому важливо |
|---|---|---|
| дві невдачі | надто просто або надто гнучко | лікуються протилежним |
| перенавчання | вивчено шум разом із закономірністю | на навчанні модель ідеальна |
| діагноз | дві помилки поруч, не одна | розрив між ними і є симптом |
| крива | навчальна вниз, тестова літерою U | дно U — правильна складність |
| розклад | шум + зміщення² + дисперсія | тотожність, а не оцінка згори |
| зміщення | промах середньої моделі | падає зі складністю |
| дисперсія | розліт моделей від дошки до дошки | росте зі складністю |
| дані | бʼють лише по дисперсії, як 1/n | недонавчання ними не лікується |
| шум | більше шуму — простіша модель | «складна модель» без даних не визначена |
| чесність | вибір по тесту псує тест | складність підбирають на валідації |
І остання думка. Компроміс зміщення й дисперсії — це не технічна деталь окремого алгоритму. Це властивість самого навчання за скінченною вибіркою: щоб щось узагальнити, доводиться щось ігнорувати. Модель, яка не ігнорує нічого, запамʼятовує шум. Модель, яка ігнорує забагато, не бачить закономірності. Уся інженерна робота в машинному навчанні — це пошук правильної міри ігнорування.
І одне питання лишилось без відповіді. Ми весь час користувались відкладеною вибіркою — а в розділі 09 самі визнали, що обирати по ній не можна. Окремий валідаційний конверт із 16 оголошень теж не викроїш. Як тоді чесно порівнювати степені, коли даних мало? Відповідь — у наступній темі: та сама вибірка по черзі побуде і навчальною, і перевірочною. Це крос-валідація.