AI-For-Beginners/translations/uk/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] 132c5c3f8f chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00
OwnFramework.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:51:30 +00:00

README.md

Вступ до нейронних мереж. Багатошаровий перцептрон

У попередньому розділі ви ознайомилися з найпростішою моделлю нейронної мережі — одношаровим перцептроном, лінійною моделлю класифікації для двох класів.

У цьому розділі ми розширимо цю модель до більш гнучкої структури, яка дозволить нам:

  • виконувати класифікацію для кількох класів на додаток до двокласової
  • вирішувати задачі регресії на додаток до класифікації
  • розділяти класи, які не є лінійно роздільними

Ми також розробимо власну модульну структуру на Python, яка дозволить нам створювати різні архітектури нейронних мереж.

Квіз перед лекцією

Формалізація машинного навчання

Почнемо з формалізації задачі машинного навчання. Припустимо, у нас є навчальний набір даних X з мітками Y, і нам потрібно побудувати модель f, яка буде робити найбільш точні прогнози. Якість прогнозів вимірюється за допомогою функції втрат . Часто використовуються такі функції втрат:

  • Для задачі регресії, коли потрібно передбачити число, можна використовувати абсолютну похибкуi|f(x(i))-y(i)| або квадратичну похибкуi(f(x(i))-y(i))2
  • Для класифікації використовують 0-1 втрати (що фактично є точністю моделі) або логістичні втрати.

Для одношарового перцептрона функція f визначалась як лінійна функція f(x)=wx+b (де w — матриця ваг, x — вектор вхідних ознак, а b — вектор зміщення). Для різних архітектур нейронних мереж ця функція може набувати більш складної форми.

У випадку класифікації часто бажано отримати ймовірності відповідних класів як вихід мережі. Для перетворення довільних чисел у ймовірності (наприклад, для нормалізації виходу) часто використовують функцію softmax σ, і функція f стає f(x)=σ(wx+b).

У визначенні f вище, w і b називаються параметрами θ=⟨w,b⟩. Маючи набір даних ⟨X,Y⟩, ми можемо обчислити загальну похибку для всього набору даних як функцію параметрів θ.

Мета навчання нейронної мережі — мінімізувати похибку, змінюючи параметри θ

Оптимізація методом градієнтного спуску

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

  • Ініціалізувати параметри випадковими значеннями w(0), b(0)
  • Багаторазово повторювати наступний крок:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

Під час навчання оптимізаційні кроки повинні розраховуватися з урахуванням усього набору даних (пам’ятайте, що втрати обчислюються як сума для всіх навчальних зразків). Однак на практиці ми беремо невеликі частини набору даних, які називаються мініпакетами, і обчислюємо градієнти на основі підмножини даних. Оскільки підмножина кожного разу вибирається випадково, такий метод називається стохастичним градієнтним спуском (SGD).

Багатошарові перцептрони та зворотне поширення

Одношарова мережа, як ми бачили вище, здатна класифікувати лінійно роздільні класи. Щоб побудувати більш багату модель, ми можемо об’єднати кілька шарів мережі. Математично це означатиме, що функція f матиме більш складну форму і буде обчислюватися в кілька етапів:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Тут α — це нелінійна функція активації, σ — функція softmax, а параметри θ=<w1,b1,w2,b2>.

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

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

Правило диференціювання складної функції використовується для обчислення похідних функції втрат за параметрами.

Зверніть увагу, що ліва частина всіх цих виразів однакова, і тому ми можемо ефективно обчислювати похідні, починаючи з функції втрат і рухаючись "назад" через граф обчислень. Таким чином, метод навчання багатошарового перцептрона називається зворотним поширенням, або 'backprop'.

граф обчислень

TODO: цитування зображення

Ми розглянемо зворотне поширення набагато детальніше в нашому прикладі в ноутбуці.

Висновок

У цьому уроці ми створили власну бібліотеку нейронних мереж і використали її для простої задачі класифікації у двовимірному просторі.

🚀 Виклик

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

Перейдіть до ноутбука OwnFramework і виконайте завдання.

Квіз після лекції

Огляд і самостійне навчання

Зворотне поширення — це поширений алгоритм, який використовується в AI та ML, варто вивчити його детальніше.

Завдання

У цій лабораторній роботі вам пропонується використати структуру, яку ви створили в цьому уроці, для вирішення задачі класифікації рукописних цифр MNIST.