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

Жорсткість і сплайн

Друга частина теми: чому пік на порозі інтерполяції неминучий, і чому нескінченно велика модель зводиться до давно відомої гладкої кривої.

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

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

01 / СтендШість точок і одна модель

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

x = (0, 1, 2, 3, 4, 5),   y = 4(x − 2.5)2 = (25, 9, 1, 1, 9, 25)

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

Модель — кусково-лінійна функція зі зламами лише в заздалегідь зафіксованих точках t1 … tK, які називають вузлами (knots). Зручний спосіб її записати — через базисні функції-модулі:

φk(x) = ½·|x − tk|
f(x) = α + βx + γ1φ1(x) + … + γKφK(x)

Чому це саме кусково-лінійні функції? Бо |x − t| лінійна всюди, крім самої точки t, де вона зламується. Отже сума таких доданків плюс пряма α + βx — це ламана, у якої злами дозволені рівно у вузлах.

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

02 / Умова гриПравила підгонки

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

Порахуймо параметри. Їх p = K + 2: два на пряму й по одному на кожен вузол. Точок у нас N = 6. Отже поріг інтерполяції p = N досягається при

K = N − 2 = 4 вузли

Правило вибору коефіцієнтів таке саме, як у першій частині:

03 / РозігрівКласичний режим

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

Інтерактив 1 · Від прямої до порогу

Сіра парабола — істина. Рожеві точки — дані. Вертикальні риски внизу — положення вузлів.

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

При K = 4 сума залишків стає нулем: модель пройшла крізь усі точки. І з цим конкретним розкладом вузлів вона виглядає цілком пристойно. Здається, ніякої катастрофи немає. Проблема в тому, що вузли — випадкові, і ми подивились лише на один щасливий жереб.

04 / ПасткаЖорсткість на порозі

Ось у чому суть порогу. Коли K = 4, кількість рівнянь дорівнює кількості невідомих, і вибору немає взагалі. Прослідкуймо ланцюжок, який повністю визначає розвʼязок.

Припустімо, між точками x = 0 і x = 1 вузла не випало. Тоді на цьому проміжку функція обовʼязково пряма — а пряма, яка проходить через (0, 25) і (1, 9), єдина. Її нахил уже зафіксовано: −16.

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

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

Інтерактив 2 · Один вузол вирішує все

Чотири вузли, поріг інтерполяції. Повзунок рухає лише найлівіший вузол. Масштаб осі підлаштовується.

розмах |f|
норма ваг
сума |залишків| на 6 точках
Чому так: перший сегмент — це пряма крізь (0,25) і (1,9), тобто y = 25 − 16x. У вузлі t₁ вона вже встигла впасти до 25 − 16·t₁ — при t₁ біля двійки це майже −7. Щоб звідти дістатись до точки (2, 1), наступному сегменту потрібен нахил близько 8 / (2 − t₁) — і коли t₁ → 2, він летить у нескінченність, тягнучи за собою всю решту кривої. Залишки при цьому весь час нульові: модель ідеально інтерполює дані й одночасно поводиться жахливо.
Головна теза частини. На порозі модель жорстка: інтерполюючий розвʼязок один, і його якість — справа випадку. Достатньо невдалого розташування вузлів, щоб отримати як завгодно погану відповідь.

05 / Міра бідиНаскільки погано насправді

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

Інтерактив 3 · Медіана проти важкого хвоста

Для кожного K — 100 випадкових розкладів вузлів. Вісь помилки логарифмічна.

90-й процентиль
медіана
найгірший зі 100 розкладів
Дві криві розходяться саме на порозі. Медіана (бірюзова) спадає монотонно — типовий розклад вузлів дає стерпну відповідь. А 90-й процентиль (рожевий) робить чіткий пік рівно при K = 4: саме там різко зростає ймовірність катастрофічного розкладу. Середнє тут узагалі не має сенсу рахувати — воно нескінченне.

06 / АргументЕскіз доведення

Те, що ти щойно бачив, — не артефакт вибірки. Твердження, яке можна довести строго, звучить сильно: при K = N − 2 випадкових вузлах математичне сподівання помилки нескінченне — для будь-якої норми, будь-якого набору даних (аби не всі точки лежали на одній прямій) і будь-якої обмеженої істинної функції. Ось скелет міркування.

крок 1 · подія, яка робить погано

Розгляньмо події, у яких найлівіший вузол потрапляє у вузьку смужку завширшки ε ліворуч від точки x = 2, а решта вузлів — праворуч від середини. Імовірність такої події пропорційна ε:

P(ε) ~ ε
крок 2 · наскільки погано в цій події

Як ми бачили в інтерактиві, у цій ситуації сегмент після вузла мусить мати нахил порядку 1/ε. На сусідньому проміжку сталої довжини (там немає інших вузлів) функція відхиляється від істини на величину того самого порядку:

похибка(ε) ~ 1/ε
крок 3 · складаємо внески

Візьмімо послідовність ε = 1/2, 1/4, 1/8, …. Відповідні події не перетинаються, тому їхні внески в середнє просто додаються. Внесок кожної — «ймовірність × величина»:

Σm (1/2m) · (2m)q = Σm 2m(q−1)
крок 4 · висновок

При q = 1 це сума нескінченної кількості однакових доданків, при q > 1 вона взагалі росте геометрично. У будь-якому разі ряд розбігається:

E[‖f̂ − f‖qq] = ∞

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

07 / За порогомПростір інтерполянтів

Додамо вузлів. При K = 12 параметрів p = 14, а рівнянь усього шість. Множина розвʼязків, які проходять крізь усі точки, — це вже не одна точка, а восьмивимірний плоский шматок простору параметрів.

Усі ці функції однаково ідеальні на даних. Але між точками вони поводяться цілком по-різному. Покрути повзунок: він відходить від розвʼязку мінімальної норми вздовж випадкових напрямків, які не змінюють жодного значення в шести точках.

Інтерактив 4 · Усі проходять крізь точки — але по-різному

Бірюзова товста крива — розвʼязок мінімальної норми. Бурштинові — інші законні інтерполянти.

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

08 / СпостереженняНорма як міра негладкості

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

Інтерактив 5 · Норма розвʼязку на осі кількості вузлів

Медіана по 100 випадкових розкладах вузлів. Пунктирна вертикаль — поріг K = 4.

‖ваг‖
похибка (медіана)
Форма та сама: максимум рівно на порозі, далі повільне спадання. Норма веде себе як 1/√K — і саме це спадання ми зараз пояснимо.

09 / Ядро аргументуВід норми до другої похідної

Тепер найкрасивіша частина. Покажімо, що мінімізація ‖γ‖² — це насправді мінімізація інтеграла від квадрата другої похідної. Тобто пошук найменш вигнутої кривої.

крок 1 · коефіцієнт = стрибок нахилу

Візьмімо вузол ti і нахили ламаної ліворуч і праворуч від нього — δi та δi+1. Усі доданки моделі, крім γiφi, у цій точці лінійні й нахилу не змінюють. А ½|x − ti| змінює нахил рівно на одиницю. Отже:

δi+1 − δi = γi

Коефіцієнт при вузлі — це буквально те, наскільки крива в ньому зламується.

крок 2 · стрибок нахилу = друга похідна

Якщо вузли густі, ламана майже збігається з деякою гладкою функцією g. Нахили сусідніх сегментів — це приблизно g′, а їхня різниця, поділена на відстань Δi між серединами сегментів, — це друга похідна:

g″(ti) ≈ γi / Δi   ⇒   γi ≈ g″(ti)·Δi
крок 3 · відстань між вузлами

K вузлів кинуто рівномірно на відрізок довжини L, отже типова відстань між сусідніми:

Δi ≈ L / K
крок 4 · збираємо суму

Підставляємо в квадрат норми та впізнаємо інтегральну суму:

‖γ‖2 = Σ γk2 ≈ Σ g″(tk)2 Δk2 ≈ (L/K) · Σ g″(tk)2 Δk
‖γ‖2 ≈ (L/K) · ∫ g″(x)2 dx

Множник L/K від функції не залежить — на нього ж і припадає те саме спадання норми як 1/√K, яке ти щойно бачив на графіку.

Ось і відповідь. Мінімізуючи довжину вектора коефіцієнтів, ми насправді мінімізуємо

ab g″(x)2 dx

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

10 / ВпізнаванняНатуральний кубічний сплайн

Функція, яка проходить крізь задані точки й мінімізує ∫(g″)², — це класика чисельних методів. Вона називається натуральним кубічним сплайном: кусково-кубічний многочлен, двічі неперервно диференційовний у вузлах, із нульовою другою похідною на кінцях відрізка. Саме таку криву дає команда «провести плавну лінію крізь точки» в будь-якому графічному пакеті.

Тобто теорема звучить так: послідовність наших моделей мінімальної норми при K → ∞ рівномірно збігається до натурального кубічного сплайна. Перевіримо це очима:

Інтерактив 6 · Границя нескінченно багатьох вузлів

Бурштинова товста крива — натуральний кубічний сплайн. Бірюзова — наша модель мінімальної норми.

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

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

11 / ПеренесенняІндуктивне зміщення архітектури

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

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

базисмінімальна норма означаєде зустрічається
½|x − t|найменша ∫(g″)² — кубічний сплайннаша модель, ReLU-мережі
гладкі хвилінайменше високочастотної енергіївипадкові ознаки, ядрові методи
згорткилокальність і стійкість до зсувузображення
увагазалежності між позиціями, а не абсолютні позиціїтекст, послідовності

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

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

12 / ПідсумокЩо ми довели

Пройдімось по логіці ще раз, коротко:

  1. Класичний режим. Поки вузлів мало, кожен новий злам зменшує помилку — рівно як обіцяє компроміс зміщення-дисперсії.
  2. Поріг. При K = N − 2 інтерполюючий розвʼязок один. Вибору немає, і невдале розташування вузлів робить його як завгодно поганим. Середня помилка нескінченна — навіть без шуму в даних.
  3. За порогом. Інтерполянтів стає багато, зʼявляється свобода вибору. Критерій мінімальної норми еквівалентний мінімізації ∫(g″)².
  4. Границя. При K → ∞ розвʼязок збігається до натурального кубічного сплайна — гладкої й розумної кривої, яка наближає істину краще за будь-яку коротку ламану.

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

Що спробувати самому. Візьми ту саму шістку точок, реалізуй базис ½|x − t| у NumPy, порівняй np.linalg.lstsq (він за замовчуванням дає саме розвʼязок мінімальної норми) з scipy.interpolate.CubicSpline(..., bc_type='natural') і подивись, як розбіжність спадає зі зростанням кількості вузлів.

Далі в темі

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