Алгоритм зворотного поширення
Алгоритм зворотного поширення необхідний для швидкого навчання великих нейронних мереж. У цій статті пояснюється, як працює алгоритм.
Прокрутіть униз…
Проста нейронна мережа
Праворуч ви бачите нейронну мережу з одним вхідним, одним вихідним вузлом і двома прихованими шарами, у кожному з яких по два вузли.
Вузли сусідніх шарів з’єднані лініями ваги wij, які є параметрами мережі.
Функція активації
У кожного вузла є загальний вхід x, функція активації f(x)і вихід y=f(x).
f(x) має бути нелінійною функцією, інакше нейронна мережа зможе навчатися лише з лінійними моделями.
Функція активації, що використовується найчастіше, – це сигмоїдна функція: f(x)=11+e−x.
Функція помилок
Мета полягає в тому, щоб автоматично дізнатися значення ваги мережі на основі даних так, щоб прогнозний результат youtputбув близьким до цільового значення ytarget для всіх вхідних даних xinput.
Щоб визначити, наскільки далеко ми від мети, використовуємо функцію помилок E.
Функція помилок, що використовується найчастіше, – це E(youtput,ytarget)=12(youtput−ytarget)2.
Поширення вперед
Спочатку потрібно взяти вхідний приклад (xinput,ytarget) і оновити вхідний шар мережі.
Для узгодженості вважатимемо, що вхід такий самий, як будь-який інший вузол, але не має функції активації, адже його вихідне значення має дорівнювати вхідному, тобто y1=xinput.
Поширення вперед
Тепер оновімо перший прихований шар. Слід врахувати результат y вузлів попереднього шару й використати значення ваги, щоб обчислити вхідні дані x вузлів наступного шару.
Поширення вперед
Потім потрібно оновити вихідні дані вузлів першого прихованого шару.
Для цього використовується функція активації f(x).
Поширення вперед
Скориставшись цими двома формулами, ми поширюємо їх на решту мережі й отримуємо її остаточний результат.
Похідна помилки
Алгоритм зворотного поширення вирішує, наскільки оновити кожне значення ваги мережі після порівняння прогнозного результату з бажаним для конкретного прикладу.
Для цього потрібно обчислити, як змінюється помилка для кожного значення ваги dEdwij.
Отримавши похідні помилки, можна оновити значення ваги за допомогою простого правила:
( α – додатна константа, що називається швидкістю навчання, її потрібно відкоригувати експериментальним шляхом).
[Примітка.] Правило оновлення дуже просте: якщо помилка зменшується при зростанні ваги (dEdwij<0), це значення слід збільшити; і навпаки, якщо вона збільшується при зростанні ваги (dEdwij>0), це значення потрібно зменшити.
Додаткові похідні
Щоб полегшити обчислення dEdwij, ми додатково зберігаємо для кожного вузла ще дві похідні:
Це допомагає з’ясувати, як на помилку впливає зміна:
- суми вхідних даних вузла dEdx ;
- вихідних даних вузла dEdy.
Зворотне поширення
Почнімо зворотне поширення похідних помилки.
Оскільки в нас є прогнозний результат цього конкретного прикладу вхідних даних, можна обчислити, як він впливає на помилку.
Враховуючи нашу функцію помилки E=12(youtput−ytarget)2 , маємо:
Зворотне поширення
Тепер, коли ми маємо dEdy , можна отримати dEdx за ланцюговим правилом.
(де ddxf(x)=f(x)(1−f(x)) , коли f(x) є сигмоїдною функцією активації).
Зворотне поширення
Щойно ми отримаємо похідну помилки відносно суми вхідних даних вузла, можна обчислити таку похідну з урахуванням значень ваги, які надходять до цього вузла.
Зворотне поширення
А використовуючи ланцюгове правило, ми також можемо отримати dEdy з попереднього шару. Ми зробили повне коло.
Зворотне поширення
Залишається застосовувати попередні три формули, доки не буде обчислено всі похідні помилки.