Нейронні мережі та зворотне поширення — математика в основі ШІ
Кожне зображення, розпізнане вашим телефоном, кожне речення, дописане мовною моделлю, кожна рекомендація, показана стрімінговою платформою — усе це походить з одного й того самого алгоритму: мережі зважених сум, сформованої зворотним поширенням. Основна ідея обеззброююче проста: зробіть прогноз, виміряйте помилку і трохи зсуньте кожну вагу в напрямку, який зменшив би цю помилку. Повторіть мільйони разів. Далі — точна математика, що перетворює цю інтуїцію на двигун революції ШІ.
1. Від персептрона до багатошарового персептрона
Історія починається 1958 року з персептрона Френка Розенблатта — моделі однієї біологічної нейронної клітини. Він приймає n вхідних сигналів x₁, x₂, ..., xₙ, множить кожен на навчувану вагу, підсумовує їх зі зсувом і «спрацьовує» (видає 1), якщо результат перевищує поріг, інакше залишається «мовчазним» (видає 0):
Було показано, що правило навчання персептрона — збільшувати ваги для правильно класифікованих входів, зменшувати для неправильно класифікованих — збігається для будь-якої лінійно роздільної задачі. У знаменитій книзі 1969 року Perceptrons Мінський і Пейперт довели, що однoшаровий персептрон не може обчислити XOR, що фактично заморозило дослідження ШІ більш ніж на десятиліття.
Розв'язок, уже відомий теоретично, полягав у тому, щоб укладати персептрони в шари. Багатошаровий персептрон (MLP) — також званий мережею прямого поширення (feedforward) або глибокою мережею — має:
- Один вхідний шар розмірності n (по одному вузлу на кожну вхідну ознаку)
- Один або кілька прихованих шарів, що вивчають проміжні представлення
- Один вихідний шар, що видає кінцевий прогноз
З щонайменше одним прихованим шаром і нелінійною функцією активації MLP може апроксимувати будь-яку неперервну функцію на компактній області — факт, формалізований теоремою універсальної апроксимації (Розділ 9). Практична революція відбулась у 1980-х, коли Румельгарт, Гінтон і Вільямс показали, як ефективно навчати MLP за допомогою зворотного поширення.
2. Прямий прохід: z = Wx + b
Розгляньмо мережу з L шарами. Нехай шар l має nₗ нейронів. Обчислення на кожному шарі відбувається у два кроки:
Крок 1 — лінійне перетворення: сформуйте вектор передактивації z, помноживши матрицю ваг W^(l) (розміру nₗ × nₗ₋₁) на активації з попереднього шару a^(l-1) і додавши вектор зсуву b^(l):
Крок 2 — нелінійна активація: застосуйте скалярну функцію активації σ поелементно, щоб отримати активації для наступного шару:
Вхід мережі задає a^(0) = x (сирі ознаки). Вихід останнього шару a^(L) = ŷ — це прогноз мережі. Для задач класифікації до останнього шару зазвичай застосовують функцію softmax, щоб перетворити сирі оцінки (логіти) на розподіл імовірностей за класами:
Кожен вихідний вузол ŷ_k дає оцінену мережею імовірність того, що вхід x належить до класу k. Усі виходи додатні й у сумі дають 1, задовольняючи аксіоми розподілу ймовірностей.
3. Функції активації
Функція активації σ — джерело всієї нелінійності, а отже й усієї виражальної сили нейронної мережі. У сучасній практиці домінують три родини:
Сигмоїда
Історично домінувала. Відображає будь-яке дійсне число на (0,1), що робить її природною для вихідних шарів бінарної класифікації. Її похідна σ'(z) = σ(z)(1 − σ(z)) досягає піку 0.25 і згасає до нуля при |z| > 3 — корінна причина проблеми згасання градієнта (Розділ 7).
Гіперболічний тангенс (tanh)
Центрований відносно нуля варіант сигмоїди, часто застосовується в прихованих шарах. Має ту саму проблему згасання градієнта.
Випрямлена лінійна одиниця (ReLU)
Введена як активація для глибоких мереж Наіром і Гінтоном (2010). Обчислювально тривіальна, градієнт дорівнює 1 для z > 0 і 0 для z < 0 — драматично полегшує згасання градієнтів. Живить практично всі сучасні глибокі мережі. Варіанти включають Leaky ReLU (малий від'ємний нахил для z < 0), ELU і GELU (застосовується в трансформерах).
Симулятор нейронної мережі Створюйте шари, обирайте активації та спостерігайте, як навчання збігається в реальному часі4. Функція втрат: крос-ентропія
Навчання потребує скалярної міри того, наскільки помилковими є прогнози мережі. Для багатокласової класифікації з C класами стандартний вибір — функція втрат крос-ентропії:
де y_k ∈ {0,1} — істинна мітка у форматі one-hot (1 для правильного класу, 0 для решти), а ŷ_k — передбачена мережею імовірність класу k. Оскільки рівно одне y_k = 1, це зводиться до:
Втрата дорівнює нулю, коли ŷ_correct = 1 (ідеальна впевненість), і прямує до нескінченності, коли ŷ_correct → 0. Це саме те, чого ми хочемо: суворо карати впевнені неправильні прогнози.
Крос-ентропія природно випливає з оцінки максимальної правдоподібності. Якщо ми моделюємо вихід як категоріальний розподіл, максимізація логарифмічної правдоподібності навчальних міток еквівалентна мінімізації втрати крос-ентропії. Це надає втраті солідне ймовірнісне обґрунтування, а не просто зручність.
Для бінарної класифікації (C = 2) це спрощується до бінарної крос-ентропії:
Для задач регресії поширений вибір — середньоквадратична похибка (MSE):
5. Зворотне поширення та ланцюгове правило
Нам потрібно обчислити ∂L/∂w для кожної ваги w у мережі, щоб оновлювати ваги й зменшувати втрати. Мережа з мільйонами параметрів робить це на перший погляд нездійсненним, але зворотне поширення розв'язує задачу за один зворотний прохід за допомогою ланцюгового правила математичного аналізу.
Ланцюгове правило стверджує, що якщо L залежить від z, яке залежить від w, то:
У мережі втрата L залежить від виходу ŷ, який залежить від активацій, які залежать від передактивацій z, які залежать від ваг W. Розгортаючи ланцюг:
Ключова ідея зворотного поширення полягає в тому, що ці часткові похідні можна обчислити ефективно, передаючи сигнал градієнта (звана дельта, δ) назад через мережу, повторно використовуючи обчислення на кожному шарі. Для шару l визначимо:
Починаючи з вихідного шару (використовуючи, наприклад, softmax + крос-ентропію, де градієнт просто дорівнює ŷ − y), поширюємо назад:
де ⊙ позначає поелементне множення, а σ'(z^(l)) — похідна функції активації, обчислена в передактиваціях шару l. Градієнт ваг тоді просто:
Загальний обсяг обчислень: один прямий прохід + один зворотний прохід = 2× прямого проходу. Незалежно від глибини мережі всі градієнти обчислюються за сталу кратність одного прямого проходу — саме це робить навчання глибоких мереж здійсненним.
6. Стохастичний градієнтний спуск
Коли градієнти обчислено, ваги оновлюють, щоб спускатися ландшафтом втрат. Градієнтний спуск робить крок у напрямку від'ємного градієнта:
де η (ета) — швидкість навчання — розмір кроку. Занадто велика — і оновлення проскакують мінімуми; занадто мала — і навчання непрактично повільне.
На практиці обчислення точного градієнта за всім навчальним набором (пакетний градієнтний спуск) обчислювально непідйомне для великих наборів даних. Натомість стохастичний градієнтний спуск (SGD) оцінює градієнт за випадково обраним міні-пакетом із B прикладів (зазвичай B = 32–512):
Ця шумна оцінка градієнта дивовижно ефективна: шум діє як неявна регуляризація, допомагаючи вирватися з неглибоких локальних мінімумів, а паралелізм міні-пакетів робить прискорення на GPU простим.
Момент та адаптивні методи
Звичайний SGD повільно збігається в ярах — областях, де кривизна набагато вища в одному напрямку, ніж в іншому. Сучасні оптимізатори вирішують це:
- SGD із моментом накопичує експоненційно згасаюче середнє минулих градієнтів, прискорюючись у послідовних напрямках.
- Adam (Кінгма і Ба, 2014) підтримує для кожного параметра оцінки як першого моменту (середній градієнт), так і другого моменту (нецентрована дисперсія), ділячи на квадратний корінь останнього, щоб адаптивно масштабувати швидкість навчання. Adam — типовий вибір для більшості сучасних систем глибокого навчання.
- AdamW відокремлює спад ваг від оновлення Adam, покращуючи узагальнення, і зараз домінує в навчанні мовних моделей.
7. Проблема згасання градієнта
Зворотне поширення множить градієнти шар за шаром, використовуючи σ'(z). Для сигмоїди максимальне значення σ'(z) дорівнює 0.25. У мережі з L = 20 шарами градієнт втрати відносно ваг першого шару проходить через 20 множень на значення, які зазвичай набагато менші за 1:
Для сигмоїди типові добутки на кшталт 0.2^20 ≈ 10⁻¹⁴ роблять градієнт практично нульовим. Ранні шари отримують майже жодного навчального сигналу — їхні ваги ледь рухаються, тоді як пізніші шари перенавчаються. Це було головною перешкодою для глибоких мереж упродовж 1990-х.
Виникло кілька рішень:
- Активація ReLU — градієнт дорівнює 1 для додатних передактивацій, усуваючи повторне множення на значення менші за 1.
- Ретельна ініціалізація ваг — ініціалізація He для ReLU (ваги з N(0, 2/nₗ)) та ініціалізація Глоро/Ксав'є для tanh підтримують дисперсію сигналу по шарах.
- Залишкові з'єднання (Хе та ін., ResNet 2015) — з'єднання-перемички, що додають вхід блоку безпосередньо до його виходу, створюючи «магістралі» градієнта: ∂L/∂W_early = ∂L/∂W_late + (∂L/∂W_late · ∂block/∂W_early). Доданок суми гарантує, що градієнт досягає ранніх шарів незалежно від глибини.
- Пакетна нормалізація — контролює розподіл передактивацій, утримуючи їх в областях, де градієнти здорові (див. Розділ 8).
Проблема вибухового градієнта (добуток > 1 на кожному кроці) вирішується обрізанням градієнта: якщо ||∇L|| > поріг, перемасштабуйте ∇L → поріг · ∇L / ||∇L||.
Візуалізатор зворотного поширення Спостерігайте потік градієнта по шарах і бачте згасання градієнтів наживо8. Пакетна нормалізація
Запропонована Іоффе та Сегеді 2015 року, пакетна нормалізація (BN) нормалізує передактивації в межах кожного міні-пакета до нульового середнього й одиничної дисперсії, а потім застосовує навчувані параметри масштабу γ та зсуву β:
σ²_B = (1/B) · Σ (z_i − μ_B)² (дисперсія міні-пакета)
z_hat_i = (z_i − μ_B) / √(σ²_B + ε)
BN(z_i) = γ · z_hat_i + β
де ε ≈ 10⁻⁵ — мала константа для чисельної стабільності. Навчувані параметри γ і β дозволяють мережі скасувати нормалізацію за потреби, зберігаючи здатність до представлення.
Пакетна нормалізація має кілька корисних ефектів:
- Зменшує внутрішній коваріантний зсув — утримує розподіл входів кожного шару стабільним під час навчання, дозволяючи вищі швидкості навчання.
- Діє як регуляризатор — шум від статистики міні-пакета має регуляризаційний ефект, схожий на dropout, часто зменшуючи потребу в явному dropout.
- Згладжує ландшафт втрат — теоретичний аналіз (Сантуркар та ін., 2018) показує, що BN робить поверхню втрат гладшою, а градієнти передбачуванішими, і саме це є її головною перевагою.
- Пом'якшує згасання/вибух градієнтів — утримуючи передактивації в здоровому діапазоні.
На етапі інференсу статистика міні-пакета замінюється на ковзні середні, обчислені під час навчання. Для послідовних моделей і налаштувань із малим пакетом перевагу надають нормалізації шару (Layer Normalisation) (нормалізація по ознаках, а не по вимірі пакета) — вона живить кожен сучасний трансформер.
9. Теорема універсальної апроксимації
Чому нейронні мережі взагалі працюють? Теоретичне обґрунтування — теорема універсальної апроксимації, доведена в різних формах Сайбенко (1989), Хорніком (1991) і Барроном (1993).
Класична версія стверджує:
Простими словами: один прихований шар з достатньою кількістю нейронів може апроксимувати будь-яку неперервну функцію як завгодно точно. Це встановлює, що MLP не обмежені простими гіпотезами — вони, в принципі, настільки ж виражальні, як будь-яка модель.
Однак теорема має важливі застереження:
- Ширина проти глибини — універсальна апроксимація каже нам, що неглибока мережа може представити будь-яку функцію, але необхідна ширина може бути експоненційною відносно розмірності входу. Глибокі мережі можуть представляти багато функцій експоненційно ефективніше (за кількістю параметрів), ніж неглибокі.
- Апроксимація ≠ навчання — теорема гарантує існування правильних ваг, але нічого не каже про те, чи знайде їх SGD. Оптимізація та узагальнення — окремі питання.
- Узагальнення — мережа, яка ідеально підганяється під навчальні дані, може провалитися на невідомих прикладах. Регуляризація (спад ваг, dropout, аугментація даних) необхідна для моделей, що узагальнюють.
Новіші результати (Баррон 1993; Елдан і Шамір 2016) точно кількісно визначають компроміс глибини й ширини. Для функцій з обмеженою фур'є-енергією двошаровій мережі потрібно O(1/ε²) нейронів, тоді як глибші мережі можуть досягти такої самої якості апроксимації з експоненційно меншою кількістю нейронів. Глибина — не просто зручність, вона обчислювально фундаментальна.
Разом теорема універсальної апроксимації та ефективність зворотного поширення пояснюють, чому нейронні мережі стали домінантною парадигмою в машинному навчанні: вони достатньо виражальні, щоб моделювати складність реального світу, і достатньо навчувані, щоб градієнтний спуск справді знаходив хороші розв'язки.