# Домашнє завдання · Регуляризація нейромереж

> Лекція: [lecture.html](lecture.html) · Практика: [practice.ipynb](practice.ipynb) · Тест: [quiz.html](quiz.html)

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

---

## 🟢 Рівень 1 — База

Візьми з практики функцію `навчити` й побудуй **криву сили регуляризації** — ту саму,
що в темі 23, тільки для мережі.

Прожени спад ваг по сітці `[0, 0.01, 0.03, 0.1, 0.3, 1.0, 3.0, 10.0]` і для кожного
значення запиши три числа: навчальну втрату, втрату на валідації й норму ваг
`√(сума квадратів усіх ваг)`. Побудуй два графіки: (1) обидві втрати від `λ` на
логарифмічній горизонтальній осі, (2) норма ваг від `λ`.

**Зроблено, якщо:** обидва графіки побудовані, ти назвав(ла) значення `λ`, на якому
валідаційна втрата найменша, і пояснив(ла) двома реченнями, чому **навчальна** втрата
росте монотонно, а **валідаційна** має дно. У поясненні мусить бути слово «шум» і
слово «сигнал».

---

## 🟡 Рівень 2 — Плюс

Перевір твердження з розділу 03 лекції: спад ваг і L2-штраф у функції втрат — це
**різні** методи для Adam і **однакові** для простого спуску.

Додай до `навчити` другий спосіб реалізації: замість окремого рядка після кроку
дописуй `λ·w` **до градієнта**, перед тим як він потрапить в оптимізатор. Тоді в тебе
буде два перемикачі: спосіб реалізації (`AdamW` проти `Adam + L2`) і сам оптимізатор
(Adam проти простого спуску з моментом — його код є в
[практиці теми 34](../34-optimizers/practice.html)).

Прожени всі чотири комбінації при `λ = 0.3` і при `λ = 1.0`.

**Зроблено, якщо:** ти показав(ла) таблицею з восьми рядків фінальну норму ваг і точність
на тесті для кожної комбінації, і відповів(ла) на два питання числами. Перше: наскільки
відрізняються два способи для простого спуску з моментом? Друге: наскільки — для Adam?
Окремо назви `λ`, при якому `Adam + L2` дає ту саму норму ваг, що `AdamW` при `λ = 0.3`.

---

## 🔴 Рівень 3 — Виклик

Побудуй **карту сумісності** двох способів. Це вже не одна крива, а поверхня: сила
регуляризації в нас тепер двовимірна.

Прожени сітку 5 × 5: спад ваг з `[0, 0.03, 0.1, 0.3, 1.0]` проти dropout з
`[0, 0.1, 0.2, 0.3, 0.5]`. Для кожної з 25 комбінацій запиши найкращу валідаційну втрату
(з ранньою зупинкою, терпіння 20) і точність на тесті з відповідними вагами. Намалюй
результат тепловою картою: спад ваг по одній осі, dropout по другій.

**Зроблено, якщо:** карта побудована, ти назвав(ла) координати найкращої клітинки й
відповів(ла) на головне питання числом: **чи виграє найкраща пара в найкращого
одиничного способу**, і на скільки. Окремо поясни одним абзацом, чому лінія
«однакової якості» на твоїй карті йде по діагоналі, а не паралельно осям.

---

## Підказки

* На рівні 1 не бери `λ` більше за 10: мережа при цьому просто перестає існувати —
  усі ваги стягуються в нуль, і обидві втрати виходять на значення сталої відповіді.
  Це не помилка, але й не цікава точка: крива після неї плоска.
* На рівні 2 найпростіший спосіб побачити різницю — не точність, а **норма ваг**. Вона
  міряє силу стягування напряму, без посередництва задачі. Якщо два способи справді
  однакові, норми мають збігтися до третього знака.
* На рівні 2 памʼятай, що `λ·w` у градієнті відповідає похідній від `0.5·λ·Σw²`, а не
  від `λ·Σw²`. Множник два — найчастіша причина того, чому «однакові» способи не
  збігаються.
* На рівні 3 сітка 5 × 5 — це 25 прогонів по 300 епох. Візьми 150 епох: у практиці дно
  валідаційної кривої було в районі пʼятдесятої, і половини бюджету вистачить із запасом.
* Діагональ на карті рівня 3 з'являється тому, що обидва способи стримують **одну й ту
  саму** величину. Спробуй порахувати норму ваг у кожній клітинці — і подивись, чи не
  йдуть лінії однакової норми туди ж, куди лінії однакової якості.
