Мета всіх трьох рівнів одна: перестати вірити, що «більше параметрів = гірше», і навчитися перевіряти це числом.
рівень 1Рівень 1 — База
Відтвори криву подвійного спуску на своїх даних — з іншою істинною функцією й іншою кількістю навчальних точок.
- Візьми стенд із практики й заміни
істинна_функціяна щось своє (наприклад,np.cos(5 * x) - x**2). - Постав
КІЛЬКІСТЬ_НАВЧАЛЬНИХ = 40замість 24. - Побудуй криву тестової MAE по сітці p від 1 до 300 і познач вертикальною лінією поріг.
Зроблено, якщо: на графіку видно пік, і argmax тестової помилки дорівнює
рівно 40 — це перевіряється одним рядком assert. Дно другого спуску при цьому
нижче за найкращу класичну модель (порівнюй з моделями p ≤ 36).
рівень 2Рівень 2 — Плюс
Покажи, що пік залежить від правила вибору, а не від розміру моделі.
- Для кожного p від 20 до 40 порахуй криву тестової помилки чотири рази: без штрафу і з λ = 0.001, 0.01, 0.1.
- Побудуй усі чотири криві на одному графіку в логарифмічних осях.
- Побудуй окремий графік: висота піку (значення при p = N) як функція λ.
- Знайди найменше λ, при якому крива стає монотонною — тобто пік зникає повністю (немає жодного p, де помилка більша за сусідні дві).
Зроблено, якщо: названо конкретне число λ і словами пояснено, чому штраф за норму прибирає саме пік, а не покращує криву всюди однаково. У поясненні має бути згадана норма ваг ‖γ‖ і те, що з нею робить штраф.
рівень 3Рівень 3 — Виклик
Відтвори epoch-wise double descent — пік уздовж часу навчання, а не уздовж розміру моделі.
- Зафіксуй p = 24 (рівно поріг) і навчай ваги не через
pinv, а звичайним градієнтним спуском із нульової ініціалізації. - Після кожного кроку записуй тестову MAE й норму ваг.
- Побудуй обидві криві як функції номера кроку (лог-шкала по обох осях).
- Потім зроби те саме для p = 200 і порівняй форму кривих.
Зроблено, якщо: для p = 24 крива тестової помилки має видимий максимум десь посередині навчання, а не монотонно спадає; крива норми ваг у цей самий момент теж проходить свій максимум. У висновку — одне речення про те, чому рання зупинка працює як регуляризатор.
Підказки
- Рівень 1. Якщо пік «розмазався» на два-три сусідні p — швидше за все, тестова вибірка замала або ти забув усереднити по кількох жеребах ознак. Обидві причини лікуються збільшенням числа, а не зміною логіки.
- Рівень 2. Найменше λ шукай не на око, а бінарним пошуком: напиши функцію
є_пік(λ), яка повертаєTrue/False, і зменшуй крок удвічі. - Рівень 3. Градієнт MSE по ваг у нашій моделі — це
2/N · Φᵀ(Φγ − y). Крок бери маленький (10⁻³ або менше) і роби багато кроків: пік зʼявляється тоді, коли модель уже майже інтерполює, але ще не встигла «розгладитись».