Зворотне поширення в нейронній мережі: алгоритм машинного навчання та приклад

⚡ Розумний підсумок

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

  • 🔘 Основна ідея: Ланцюгове правило дає градієнт втрати для кожної ваги, один шар за раз.
  • ☑️ Тренувальний цикл: Прохід вперед, вимірювання похибки, поширення її назад, оновлення вагових коефіцієнтів, повторення.
  • Два варіанти: Статичне зворотне поширення відображає фіксований вхідний сигнал на фіксований вихідний сигнал; рекурентне зворотне поширення спочатку встановлюється, а потім поширюється.
  • 🧪 Чому це важливо: Градієнтний спуск залишається практичним лише для глибоких мереж, оскільки градієнти повторно використовуються шар за шаром.
  • 🛠️ Відомі обмеження: Продуктивність залежить від якості вхідних даних, а зашумлені вибірки спотворюють вивчені ваги.
  • Градієнт здоров'я: Множення багатьох малих похідних призводить до зникнення градієнтів; ReLU та нормалізація зменшують цей ефект.

Зворотне поширення в нейронній мережі: алгоритм машинного навчання

Що таке штучна нейронна мережа?

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

Зворотне поширення — це алгоритм, який визначає, якими мають бути ці ваги, тому ці дві ідеї найкраще читати разом.

Що таке зворотне поширення?

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

Зворотне поширення в нейронній мережі є скороченою формою для «зворотного поширення помилок». Це стандартний метод навчання штучних нейронних мереж. Цей метод допомагає обчислити градієнт функції втрат відносно всіх ваг у мережі.

Два терміни часто плутають. Тільки зворотне поширення. обчислює градієнт; оптимізатор, такий як градієнтний спуск, — це те, що насправді зміни ваги, використовуючи цей градієнт. Майже кожен сучасний фреймворк виконує зворотне поширення автоматично через свій механізм автодиффаціі.

Як працює алгоритм зворотного поширення

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

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

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

Діаграма алгоритму зворотного поширення, що показує прямий прохід через вхідний, прихований та вихідний шари, а також поширення помилки у зворотному напрямку.

  1. Вхідні дані X надходять через попередньо підключений шлях
  2. Вхідні дані моделюються з використанням реальних ваг W. Вагові коефіцієнти зазвичай вибираються випадковим чином.
  3. Обчисліть вихід для кожного нейрона від вхідного шару до прихованих шарів і до вихідного шару.
  4. Обчисліть похибку на виходах:
    ErrorB= Actual Output – Desired Output
    
  5. Поверніться від вихідного шару до прихованого, щоб налаштувати ваги таким чином, щоб зменшити помилку.
  6. Продовжуйте повторювати процес, доки не буде досягнуто бажаного результату.

У багатьох підручниках пишуть таку ж кількість, як бажаний мінус фактичнийОбидва варіанти працюють, оскільки знак поглинається, коли підпрограма оптимізатора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, нормалізації та ретельного планування темпів навчання, коли переходять від поверхневої мережі до... глибоке навчання модель.

Поширені запитання

Зворотне поширення обчислює градієнт втрат відносно кожної ваги. Градієнтний спуск – це оптимізатор, який використовує цей градієнт і переміщує кожну вагу. Один вимірює нахил, інший вимірює крок.

Швидкість навчання визначає, наскільки кожна вага рухається вздовж свого градієнта. Занадто мала – і навчання повзе; занадто велика – і втрати коливаються або розходяться. Розклади, які зменшують швидкість протягом епох, зазвичай збігаються надійніше.

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

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

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

Копілот GitHub створює навчальні цикли, перевірки градієнтів та визначення шарів з короткого коментаря, що скорочує час роботи з шаблонним шаблоном. Перевіряйте отримані похідні за допомогою числової перевірки градієнта, оскільки правдоподібний, але неправильний знак навчається непомітно.

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

Пакет – це група зразків, оброблених перед одним оновленням ваги. Ітерація – це одне таке оновлення. Епоха – це один повний прохід через навчальний набір, що містить стільки ж ітерацій, скільки й пакетів.

Підсумуйте цей пост за допомогою: