Зворотне поширення в нейронній мережі: алгоритм машинного навчання та приклад
⚡ Розумний підсумок
Зворотне поширення помилки (Зворотне поширення помилки) – це основний алгоритм навчання нейронної мережі, який точно налаштовує кожну вагу на основі помилки, виміряної в попередню епоху, щоб модель краще узагальнювалася на невидимих даних, шар за шаром.
Що таке штучна нейронна мережа?
Штучна нейронна мережа — це група пов’язаних пристроїв вводу/виводу, де кожне з’єднання має вагу. Вона допомагає створювати прогнозні моделі з великих баз даних, а її конструкція запозичує словник у нервової системи людини. Мережі такого типу підтримують розуміння зображень, машинне навчання, комп’ютерне мовлення та багато інших завдань розпізнавання образів.
Зворотне поширення — це алгоритм, який визначає, якими мають бути ці ваги, тому ці дві ідеї найкраще читати разом.
Що таке зворотне поширення?
Зворотне поширення помилки є суттю навчання нейронної мережі. Це метод точного налаштування вагових коефіцієнтів нейронної мережі на основі коефіцієнта помилок, отриманого в попередню епоху (тобто ітерацію). Правильне налаштування вагових коефіцієнтів дозволяє знизити коефіцієнт помилок і зробити модель надійною, збільшуючи її узагальнення.
Зворотне поширення в нейронній мережі є скороченою формою для «зворотного поширення помилок». Це стандартний метод навчання штучних нейронних мереж. Цей метод допомагає обчислити градієнт функції втрат відносно всіх ваг у мережі.
Два терміни часто плутають. Тільки зворотне поширення. обчислює градієнт; оптимізатор, такий як градієнтний спуск, — це те, що насправді зміни ваги, використовуючи цей градієнт. Майже кожен сучасний фреймворк виконує зворотне поширення автоматично через свій механізм автодиффаціі.
Як працює алгоритм зворотного поширення
Алгоритм зворотного поширення в нейронній мережі обчислює градієнт функції втрат для однієї ваги за допомогою ланцюгового правила. Він ефективно обчислює один шар за раз, на відміну від наївного прямого обчислення. Він обчислює градієнт, але не визначає, як градієнт використовується. Він узагальнює обчислення за допомогою дельта-правила.
Правило ланцюга робить це ефективним. Вплив однієї ранньої ваги на кінцеву втрату є добутком локальних похідних вздовж шляху до виходу, тому алгоритм кешує проміжний результат кожного шару на зворотному шляху та повторно використовує його для кожної ваги в нижчому шарі, замість того, щоб переобчислювати всю мережу для кожної ваги.
Розглянемо наступну схему прикладу нейронної мережі зворотного поширення для розуміння. Малюнок tracодин повний прохід: входи надходять ліворуч, активації рухаються вперед через прихований шар до виходу, а виміряна похибка потім повертається назад по тих самих з'єднаннях для корекції вагових коефіцієнтів.
- Вхідні дані X надходять через попередньо підключений шлях
- Вхідні дані моделюються з використанням реальних ваг W. Вагові коефіцієнти зазвичай вибираються випадковим чином.
- Обчисліть вихід для кожного нейрона від вхідного шару до прихованих шарів і до вихідного шару.
- Обчисліть похибку на виходах:
ErrorB= Actual Output – Desired Output
- Поверніться від вихідного шару до прихованого, щоб налаштувати ваги таким чином, щоб зменшити помилку.
- Продовжуйте повторювати процес, доки не буде досягнуто бажаного результату.
У багатьох підручниках пишуть таку ж кількість, як бажаний мінус фактичнийОбидва варіанти працюють, оскільки знак поглинається, коли підпрограма оптимізатораtracградієнт, за умови дотримання однієї конвенції по всій мережі.
На практиці помилка рідко буває простою підпрограмою.tracція. Функція втрат, така як середньоквадратична помилка для регресії або перехресна ентропія для класифікації, перетворює різниці на вихід в одне число, зворотне поширення градієнта якого фактично обчислюється.
Чому нам потрібне зворотне поширення?
Найбільш помітними перевагами зворотного поширення є:
- Зворотне поширення є швидким, простим і легким у програмуванні
- Він не додає жодних власних нових параметрів; налаштування, яке ви виконуєте, належить оптимізатору та мережі, головним чином швидкість навчання та кількість вхідних даних.
- Це гнучкий метод, оскільки він не вимагає попередніх знань про мережу
- Це стандартний метод, який зазвичай добре працює
- Не потребує особливої згадки про особливості функції, яку потрібно вивчити.
Простіше кажучи, без ефективного способу отримання градієнтів, навчання чогось глибшого, ніж один шар, було б обчислювально непрактичним.
Що таке Feed Forward Network?
Нейронна мережа прямого зв’язку – це штучна нейронна мережа, де вузли ніколи не утворюють циклу. Цей вид нейронної мережі має вхідний рівень, приховані шари та вихідний рівень. Це перший і найпростіший тип штучної нейронної мережі.
Ця відмінність тут важлива, оскільки прямий прохід зворотного поширення є саме прямим проходом; тільки корекція помилок відбувається у зворотному напрямку.
Типи мереж зворотного поширення
Два типи мереж зворотного поширення:
- Статичне зворотне поширення
- Повторне зворотне поширення
Статичне зворотне поширення
Це один з видів мережі зворотного поширення, яка створює картуping статичного входу для статичного виходу. Це корисно для вирішення проблем статичної класифікації, таких як оптичне розпізнавання символів.
Повторне зворотне поширення
Рекурентне зворотне поширення в видобуток даних подається вперед, доки не буде досягнуто фіксованого значення. Після цього помилка обчислюється та поширюється назад.
Основна відмінність між цими двома методами полягає в тому, що картаping є швидким при статичному зворотному поширенні, тоді як він нестатичний при рекурентному зворотному поширенні. У таблиці нижче вони розташовані поруч.
| критерій | Статичне зворотне поширення | Рекурентне зворотне поширення |
|---|---|---|
| картаping | Статичний вхід на статичний вихід | Нестатичний; мережа стабілізується до використання помилки |
| швидкість | Швидкий, один прохід на зразок | Повільніше, активація повторюється до стабілізації |
| Форма мережі | Пряма зв'язок, без циклів | Містить з'єднання зворотного зв'язку |
| Типове використання | Оптичне розпізнавання символів, класифікація за фіксованим розміром | Задачі, результат яких залежить від усталеного внутрішнього стану |
Історія зворотного поширення
- У 1961 році основну концепцію неперервного зворотного поширення було виведено в контексті теорії керування Дж. Келлі, Генрі Артуром та Е. Брайсоном.
- У 1969 році Брайсон і Хо запропонували багатоетапний метод оптимізації динамічної системи.
- У 1970 році Сеппо Ліннаймаа опублікував зворотний режим автоматичного диференціювання, обчислювальний метод, на якому побудовано сучасне зворотне поширення.
- У 1974 році Вербос заявив про можливість застосування цього принципу в штучній нейронній мережі.
- У 1982 році Хопфілд представив свою ідею нейронної мережі.
- У 1986 році зусиллями Девіда Е. Румельхарта, Джеффрі Е. Хінтона, Рональда Дж. Вільямса зворотне поширення отримало визнання.
- У 1989 році Янн ЛеКун та його колеги навчили згорткову мережу зі зворотним поширенням помилки для зчитування рукописних цифр, що стало одним із перших масштабних практичних застосувань.
- У 1993 році Ван був першою людиною, яка виграла міжнародний конкурс з розпізнавання образів за допомогою методу зворотного поширення.
- У 2006 році робота Хінтона над глибокими мережами довіри та пошаровим попереднім навчанням відродила інтерес до навчання глибоких мереж, який зупинився через зникаючі градієнти.
- У 2010 році Ксав'є Глорот та Йошуа Бенхіо проаналізували, чому глибокі мережі важко навчати, та запровадили покращену ініціалізацію ваг, що разом з активаціями ReLU зробило глибоке зворотне поширення практичним.
- У 2012 році AlexNet (Крижевський, Суцкевер та Хінтон) виграли конкурс ImageNet, використовуючи зворотне поширення з прискоренням на GPU, що започаткувало сучасний бум глибокого навчання.
- У 2014 році був представлений оптимізатор Adam (Kingma та Ba), який швидко став варіантом градієнтного спуску за замовчуванням, що використовується зі зворотним поширенням.
- У 2015 році пакетна нормалізація та мережі залишків (ResNet) вирішили проблеми градієнтного потоку в дуже глибоких мережах, дозволивши зворотне поширення через сотні шарів.
- У 2015-2017 роках TensorFlow та PyTorch зробив автоматичне диференціювання стандартною програмною функцією, тому градієнти більше не потрібно було виводити вручну.
- У 2017 році була представлена архітектура Transformer, яка навчається від початку до кінця методом зворотного поширення помилок, як і великі мовні моделі, побудовані на ній.
- У 2019 році Бенджіо, Хінтон та ЛеКун отримали премію Тюрінга ACM AM за свою роботу над глибокими нейронними мережами.
- У 2020 році в статті «Зворотне поширення та мозок» (Ліллікрап, Санторо, Марріс, Акерман та Хінтон) стверджувалося, що мозок може наближатися до навчання, подібного до зворотного поширення, що знову відкриває дискусію про біологічну правдоподібність.
- У 2022 році Хінтон запропонував алгоритм «Вперед-Вперед» – метод навчання, який повністю уникає зворотного проходу.
- У 2024 році Джон Гопфілд та Джеффрі Гінтон отримали Нобелівську премію з фізики за фундаментальні відкриття, які зробили можливим машинне навчання за допомогою штучних нейронних мереж.
- У 2025 році методи прямого вперед були поширені на згорткові мережі, що показало, що навчання без зворотного поширення може працювати для завдань класифікації зображень.
- Станом на 2026 рік зворотне поширення залишається стандартним алгоритмом навчання практично для всіх моделей глибокого навчання, тоді як дослідження методів безградієнтного, локального та паралельного навчання, які зменшують витрати пам'яті та обчислювальні витрати, тривають.
Ключові моменти зворотного поширення
- Спрощує структуру мережі, видаляючи зважені зв'язки, які мають найменший вплив на навчену мережу
- Вам потрібно вивчити групу вхідних і активаційних значень, щоб розвинути зв’язок між вхідним і прихованим рівнями одиниць.
- Це допомагає оцінити вплив даної вхідної змінної на вихід мережі. Знання, отримані в результаті цього аналізу, повинні бути представлені в правилах.
- Зворотне поширення особливо корисно для глибоких нейронних мереж, які працюють над схильними до помилок проектами, такими як розпізнавання зображень або мови.
- Зворотне поширення використовує правила ланцюга та степеня, що дозволяє йому функціонувати з будь-якою кількістю виходів.
Найкраща практика зворотного поширення
Зворотне поширення в нейронній мережі можна пояснити за допомогою аналогії зі «шнурками взуття». Оновлення ваги поводяться подібно до натягу на шнурівці: занадто мало — і нічого не тримається разом, занадто багато — і щось ламається.
| Натяг мережива | Що це означає під час тренування |
|---|---|
| Занадто мало напруги | Недостатньо обмежена та дуже вільна — модель не підходить |
| Занадто велика напруга | Занадто багато обмежень (перетренованість); занадто багато часу (відносно повільний процес); вища ймовірність зриву |
| Затягування одного шнурка сильніше, ніж іншого | Дискомфорт (упередженість) — одна частина мережі домінує над підходом |
З аналогії випливають дві практичні звички: масштабувати вхідні дані перед навчанням, щоб жодна окрема функція не працювала сильніше за решту, і стежити за втратою валідації, щоб напруга знялася до того, як почнеться перетренування.
Недоліки використання зворотного поширення
- Фактична продуктивність зворотного поширення для конкретної проблеми залежить від вхідних даних.
- Алгоритм зворотного поширення в інтелектуальному аналізі даних може бути досить чутливим до шумних даних
- У міні-пакеті зворотне поширення слід реалізувати з використанням матричного підходу; looping виконання одного прикладу за раз помітно повільніше.
- У глибоких мережах багаторазове множення малих похідних може зменшувати градієнти до нуля, тому найдавніші шари ледве навчаються — проблема зникнення градієнта, описана в Google Курс машинного навчання Crash.
Жоден з цих факторів не виключає цей метод. Саме вони є причинами, чому фахівці звертаються до активації ReLU, нормалізації та ретельного планування темпів навчання, коли переходять від поверхневої мережі до... глибоке навчання модель.

