Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Зворотне Поширення Помилки | Нейронна Мережа з Нуля
Вступ до нейронних мереж

bookЗворотне Поширення Помилки

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

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

Оскільки кожен шар впливає на фінальний прогноз, градієнти обчислюються крок за кроком:

  1. Виконати пряме поширення для отримання вихідних значень;
  2. Обчислити похідну втрат відносно попередньо активованого виходу;
  3. Поширити цю похідну назад через шари, використовуючи правило ланцюга;
  4. Обчислити та використати градієнти для ваг і зсувів для їх оновлення під час навчання.
Note
Примітка

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

Позначення

Для кращого розуміння скористаємося наступними позначеннями:

  • WlW^l — матриця ваг шару ll;
  • blb^l — вектор зсувів шару ll;
  • zlz^l — вектор попередньо активованих значень шару ll;
  • ala^l — вектор активацій шару ll;

Відповідно, якщо a0a^0 дорівнює xx (вхідні дані), пряме поширення у перцептроні з n шарами можна описати наступною послідовністю операцій:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Щоб математично описати зворотне поширення помилки, вводяться такі позначення:

  • dalda^l: похідна функції втрат за активаціями на шарі ll;
  • dzldz^l: похідна функції втрат за попередніми активаціями на шарі ll (до застосування функції активації);
  • dWldW^l: похідна функції втрат за вагами на шарі ll;
  • dbldb^l: похідна функції втрат за зміщеннями на шарі ll.

Обчислення градієнтів для вихідного шару

На фінальному шарі nn першим кроком є обчислення градієнта функції втрат відносно активацій вихідного шару, що позначається як danda^n.

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

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Тут fn(zn)f'^n(z^n) — це похідна функції активації на шарі nn, а символ \odot позначає покомпонентне множення.

Note
Примітка

Символ \odot позначає покомпонентне множення, тобто кожен елемент одного вектора множиться на відповідний елемент іншого вектора. На відміну від цього, символ \cdot означає скалярний добуток, який використовується для стандартного множення матриць або векторів. Позначення fnf'^n відноситься до похідної функції активації на вихідному шарі.

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

Після обчислення dzndz^n наступним кроком є знаходження градієнтів для ваг і зсувів:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

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

Тут (an1)T(a^{n-1})^T — це транспонований вектор активацій з попереднього шару. Якщо початковий вектор має розмір nneurons×1n_{\text{neurons}} \times 1, його транспонований вигляд має розмір 1×nneurons1 \times n_{\text{neurons}}.

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

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

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

Поширення градієнтів до прихованих шарів

Для кожного прихованого шару ll процедура однакова. Маючи dalda^l:

  1. Обчислити похідну функції втрат за передактиваціями;
  2. Обчислити градієнти для ваг і зсувів;
  3. Обчислити dal1da^{l-1} для подальшого поширення похідної назад.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

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

Оновлення ваг і зміщень

Після обчислення градієнтів для всіх шарів ваги та зміщення оновлюються за допомогою алгоритму градієнтного спуску:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Тут α\alpha позначає швидкість навчання, яка визначає, наскільки сильно параметри коригуються під час кожного кроку навчання.

Тут α\alpha — це швидкість навчання, гіперпараметр, що визначає розмір коригування, яке застосовується до ваг і зміщень під час кожного кроку оновлення.

question mark

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

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 7

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 4

bookЗворотне Поширення Помилки

Свайпніть щоб показати меню

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

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

Оскільки кожен шар впливає на фінальний прогноз, градієнти обчислюються крок за кроком:

  1. Виконати пряме поширення для отримання вихідних значень;
  2. Обчислити похідну втрат відносно попередньо активованого виходу;
  3. Поширити цю похідну назад через шари, використовуючи правило ланцюга;
  4. Обчислити та використати градієнти для ваг і зсувів для їх оновлення під час навчання.
Note
Примітка

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

Позначення

Для кращого розуміння скористаємося наступними позначеннями:

  • WlW^l — матриця ваг шару ll;
  • blb^l — вектор зсувів шару ll;
  • zlz^l — вектор попередньо активованих значень шару ll;
  • ala^l — вектор активацій шару ll;

Відповідно, якщо a0a^0 дорівнює xx (вхідні дані), пряме поширення у перцептроні з n шарами можна описати наступною послідовністю операцій:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Щоб математично описати зворотне поширення помилки, вводяться такі позначення:

  • dalda^l: похідна функції втрат за активаціями на шарі ll;
  • dzldz^l: похідна функції втрат за попередніми активаціями на шарі ll (до застосування функції активації);
  • dWldW^l: похідна функції втрат за вагами на шарі ll;
  • dbldb^l: похідна функції втрат за зміщеннями на шарі ll.

Обчислення градієнтів для вихідного шару

На фінальному шарі nn першим кроком є обчислення градієнта функції втрат відносно активацій вихідного шару, що позначається як danda^n.

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

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Тут fn(zn)f'^n(z^n) — це похідна функції активації на шарі nn, а символ \odot позначає покомпонентне множення.

Note
Примітка

Символ \odot позначає покомпонентне множення, тобто кожен елемент одного вектора множиться на відповідний елемент іншого вектора. На відміну від цього, символ \cdot означає скалярний добуток, який використовується для стандартного множення матриць або векторів. Позначення fnf'^n відноситься до похідної функції активації на вихідному шарі.

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

Після обчислення dzndz^n наступним кроком є знаходження градієнтів для ваг і зсувів:

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

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

Тут (an1)T(a^{n-1})^T — це транспонований вектор активацій з попереднього шару. Якщо початковий вектор має розмір nneurons×1n_{\text{neurons}} \times 1, його транспонований вигляд має розмір 1×nneurons1 \times n_{\text{neurons}}.

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

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

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

Поширення градієнтів до прихованих шарів

Для кожного прихованого шару ll процедура однакова. Маючи dalda^l:

  1. Обчислити похідну функції втрат за передактиваціями;
  2. Обчислити градієнти для ваг і зсувів;
  3. Обчислити dal1da^{l-1} для подальшого поширення похідної назад.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

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

Оновлення ваг і зміщень

Після обчислення градієнтів для всіх шарів ваги та зміщення оновлюються за допомогою алгоритму градієнтного спуску:

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Тут α\alpha позначає швидкість навчання, яка визначає, наскільки сильно параметри коригуються під час кожного кроку навчання.

Тут α\alpha — це швидкість навчання, гіперпараметр, що визначає розмір коригування, яке застосовується до ваг і зміщень під час кожного кроку оновлення.

question mark

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

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 7
some-alt