Як навчаються нейронні мережі
Нейронна мережа — це просто велика вкладена функція. Навчання — це лише пошук вхідних параметрів (ваг), які мінімізують одне число (втрати). Математика — множення матриць, частинні похідні, градієнтний спуск — виявляється напрочуд доступною, щойно ви побачите весь конвеєр одразу.
Архітектура: шари та ваги
Нейронна мережа складається з шарів нейронів. Кожне з'єднання між нейронами має вагу (число, зазвичай від −1 до 1), а кожен нейрон має зсув (bias). Навчання повністю зводиться до пошуку правильних значень для цих чисел.
Мережа з nin входами та nh прихованими нейронами має матрицю ваг W розмірності [nh × nin] для першого шару та вектор зсувів b розмірності [nh]. Другий шар має власну матрицю ваг та зсуви.
Типова невелика мережа для класифікації зображень (MNIST, 28×28 пікселів) з одним прихованим шаром зі 128 нейронів має 784×128 + 128 + 128×10 + 10 = 101 770 ваг. GPT-4 має, за оцінками, 1,8 трильйона.
Прямий прохід: обчислення прогнозу
Щоб зробити прогноз, ви пропускаєте дані через мережу зліва направо. Для одного прихованого шару обчислення таке:
ŷ = W₂ · h + b₂
Де · — це множення матриці на вектор. У Python/NumPy це буквально записується так:
Це каскадно проходить через стільки шарів, скільки у вас є — кожен шар отримує активації попереднього шару як свій вхід. Кінцевий результат — це необроблений прогноз мережі.
Функції активації
Без функції активації будь-який стек лінійних шарів еквівалентний одному лінійному шару — незалежно від глибини. Ви могли б згорнути всю мережу в одне множення матриць.
Функції активації вносять нелінійність, що дозволяє мережі апроксимувати будь-яку функцію, а не лише лінійні.
ReLU (Rectified Linear Unit)
Найпоширеніша. Просто видає 0 для від'ємних входів та x для додатних. Дуже швидка в обчисленні й не страждає від затухання градієнтів у неглибоких та середніх мережах.
Сигмоїда
Стискає вихід до (0, 1). Використовується у вихідному шарі для бінарної класифікації (ймовірність того, що відповідь — «так»).
Softmax
Як сигмоїда, але для кількох класів. Перетворює логіти на розподіл ймовірностей, сума якого дорівнює 1. Використовується у вихідному шарі для багатокласової класифікації.
Функції втрат: вимірювання похибки
Функція втрат (або функція вартості) вимірює, наскільки помилковим є прогноз. Навчання полягає в мінімізації цього числа.
Середньоквадратична похибка (MSE) — для регресії
Середній квадрат різниці між передбаченими та фактичними значеннями. Піднесення до квадрата суворіше штрафує великі похибки.
Перехресна ентропія — для класифікації
Вимірює різницю між передбаченим розподілом ймовірностей та істинним. Якщо мережа впевнена на 99% і має рацію, втрати → 0. Якщо впевнена на 99% і помиляється, втрати → ∞.
Зворотне поширення: ланцюгове правило
Зворотне поширення обчислює, наскільки кожна вага вплинула на втрати — тобто градієнт ∂L/∂wᵢⱼ для кожної ваги. Це робиться ефективно за допомогою ланцюгового правила з математичного аналізу.
Ланцюгове правило стверджує: якщо y залежить від u, а u залежить від x, то:
Для мережі з шарами L₁ → L₂ → L₃ → Втрати ми обчислюємо градієнти, рухаючись назад:
- Обчислюємо ∂Loss/∂L₃ (градієнт втрат щодо виходу)
- Множимо на ∂L₃/∂L₂ (за ланцюговим правилом через ваги шару 3)
- Множимо на ∂L₂/∂L₁ (ланцюгове правило через шар 2)
- Продовжуємо до кожної ваги в мережі
Сучасні бібліотеки, як-от PyTorch, використовують автоматичне диференціювання (autograd) — граф обчислень відстежується під час прямого проходу, а градієнти обчислюються точно шляхом його обходу у зворотному напрямку. Вам ніколи не доводиться писати ланцюгове правило вручну.
Градієнтний спуск та оптимізатори
Коли ми маємо градієнт ∂L/∂w для кожної ваги, ми трохи зсуваємо ваги в напрямку, що зменшує втрати:
Де η (ета) — це швидкість навчання — наскільки великий крок ми робимо. Завеликий: проскакує мінімум. Замалий: триває вічно.
SGD → Adam → AdamW
- SGD (стохастичний градієнтний спуск): Оновлення ваг після кожного випадкового зразка (або міні-пакета). Шумний, але швидкий.
- Momentum (момент): Зберігає ковзне середнє попередніх градієнтів, щоб згладити напрямок оновлення. Наче м'яч, що котиться з гори й набирає швидкість.
- Adam: Поєднує момент з адаптивними швидкостями навчання для кожної ваги. Стандартний оптимізатор для більшості завдань глибокого навчання. Підтримує ковзні середні як градієнтів (m), так і квадратів градієнтів (v), а потім обчислює: w ← w − η × m̂/(√v̂ + ε).
- AdamW: Adam + спад ваг (L2-регуляризація). Стандарт для навчання мовних моделей.
Повний цикл навчання
Один прохід через всі навчальні дані називається епохою. Мережі зазвичай навчаються 10–100 епох. Кожна епоха використовує весь набір даних малими випадковими пакетами (градієнтний спуск за міні-пакетами) для ефективності.
Спробуйте самі
- Симуляція «Нейронна мережа з нуля» — Візуалізуйте навчання нейронної мережі в реальному часі: спостерігайте, як оновлюються ваги, зменшуються втрати й формується межа прийняття рішень.