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

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