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

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

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

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

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

  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)
Note
Примітка

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

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

Після отримання dzn\text d z^n обчислюємо градієнти для ваг і зсувів:

dWn=dzn(an1)Tdbn=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_{neurons} \times 1, транспонований вектор має розмір 1×nneurons1 \times n_{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αdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

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

question mark

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

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how the chain rule is applied in backpropagation?

What is the difference between pre-activations and activations?

Can you provide a step-by-step example of backpropagation for a simple network?

Awesome!

Completion rate improved to 4

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

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

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

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

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

  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)
Note
Примітка

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

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

Після отримання dzn\text d z^n обчислюємо градієнти для ваг і зсувів:

dWn=dzn(an1)Tdbn=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_{neurons} \times 1, транспонований вектор має розмір 1×nneurons1 \times n_{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αdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

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

question mark

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

Select the correct answer

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

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

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

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