Backpropagation Algorithm

Оновлено: 31.07.2023

Пояснення алгоритму зворотного розмноження

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

  • Зворотне поширення - це, по суті, техніка швидкого обчислення похідних.
.

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

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

Переваги алгоритму зворотного розповсюдження

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

Якщо наявна помилка значна, то мережа неправильно навчилася на основі даних. Що саме це означає? Це означає, що поточний набір значень недостатньо точний, щоб зменшити похибку мережі і зробити правильні прогнози. Як наслідок, ваги мережі повинні бути оновлені, щоб зменшити похибку мережі.

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

Реалізувати алгоритм зворотного розповсюдження в Python дуже просто, і ось деякі з його переваг:

  • Розповсюдження є швидким методом, особливо для невеликих мереж. З додаванням додаткових шарів і нейронів обчислення похідних сповільнюється.
  • Метод зворотного поширення не має параметрів, які можна змінювати, отже, має мінімальні накладні витрати. Єдині змінні в методі - це ті, що пов'язані з технікою градієнтного спуску, наприклад, швидкість навчання.
  • Цей метод ефективно використовує пам'ять при обчисленні похідних, оскільки він споживає менше пам'яті, ніж інші методи оптимізації, такі як генетичний алгоритм. Це дуже важлива характеристика, особливо для великих мереж.
  • Цей підхід є достатньо гнучким, щоб працювати з різними мережевими конструкціями, включаючи CNN, GAN і повністю з'єднані мережі.
.

Недоліки алгоритму зворотного розповсюдження

Незважаючи на те, що це найпоширеніший метод навчання нейронних мереж, формула алгоритму зворотного поширення має певні недоліки:

  • Система повинна бути ретельно побудована, щоб уникнути зникнення та розриву градієнтів, які впливають на те, як мережа навчається. Наприклад, градієнти, створені сигмоїдною функцією, можуть бути дуже низькими, близькими до нуля, що заважає мережі оновлювати свої ваги. Як наслідок, навчання не відбувається.
  • При кожному зворотному проході метод зворотного поширення оцінює всі комірки системи однаково і обчислює їхні похідні. Незважаючи на те, що використовуються шари, що відсіваються, залежні нейронів, які були відсіяні, обчислюються, а потім відсіваються.
  • При зворотному поширенні оцінка присвоюється за допомогою нескінченно малих ефектів (часткових похідних). При аналізі більших і більш нелінійних функцій це може стати серйозною проблемою.
  • Шар i+1 прямий прохід повинен дочекатися завершення обчислень шару i. Рівень I повинен чекати на завершення обчислень рівня i+1 під час зворотного проходу. Це блокує всі рівні мережі, запобігаючи їх оновленню, поки решта мережі не виконає прямий прохід і не поширить помилки у зворотному напрямку.
  • Передбачається, що функція помилки буде опуклою. Зворотне поширення може застрягти в локальному розв'язку для неопуклої функції.
  • Щоб алгоритм працював, обидві функції - помилки та активації - повинні бути диференційованими. Він несумісний з недиференційованими функціями.
.