Відповіді:
Алгоритм зворотного розповсюдження - це алгоритм спуску градієнта для встановлення моделі нейронної мережі. (як згадував @Dikran) Дозвольте пояснити, як.
Формально: Використання обчислення градієнта в кінці цього посту в рівнянні [1] нижче (тобто визначення градієнтного спуску) дає зворотний алгоритм поширення як окремий випадок використання градієнтного спуску.
Модель нейронної мережі Формально ми фіксуємо ідеї за допомогою простої одношарової моделі:
g : R → R s : R M → R M m = 1 … , M s ( x ) [ m ] = σ ( x [ m ] ) A 1 : R M → R A
Для фіксації ідей береться квадратична функція втрати . Отже , вхідний вектори може бути встановлений на реальний обсяг виробництва з (може бути векторами) шляхом мінімізації емпіричного втрата: стосовно вибору і .R p ( y 1 , … , y n ) R R n ( A 1 , A 2 ) = n ∑ i = 1 ( y i - f ( x i ) ) 2A 1 A 2
Спуск градієнта Градієнтний спуск для мінімізації- це алгоритм, який повторює: для добре вибраних розмірів кроків(також називається швидкістю навчання в рамках розповсюдження спини). Він вимагає обчислення градієнта. У розглянутому випадку.
Градієнт (для простої розглянутої моделі нейронної сітки) Позначимо через градієнт як функцію та градієнт як функція . Стандартний обчислення (з використанням правила для виведення складу функцій) та використання позначення дають для всіх
Тут я використав позначення R: - вектор, що складається з координат від індексу до індексу .x a b
Зворотне пропонування - це спосіб опрацювання похідної функції помилки щодо ваг, щоб модель могла бути навчена методами оптимізації градієнта спуску - це в основному лише застосування «правила ланцюга». Насправді це не набагато більше, тому, якщо вам зручно з числення, це в основному найкращий спосіб поглянути на це.
Якщо вам не комфортно з обчисленням, кращим способом було б сказати, що ми знаємо, наскільки погано працюють вихідні одиниці, оскільки у нас є бажаний вихід, з яким можна порівняти фактичний вихід. Однак у нас немає бажаного виводу для прихованих одиниць, і що ми робимо? Правило зворотного розповсюдження - це, головним чином, спосіб винесення вини за помилку вихідних одиниць на приховані одиниці. Чим більше вплив прихованої одиниці має на певний вихідний блок, тим більше звинувачення він отримує за помилку. Тотальне звинувачення, пов'язане з прихованою одиницею, то вказує на те, наскільки потрібно змінювати вагу вхідного та прихованого шару. Дві речі, які регулюють, скільки провини передається назад, - це вага, що з'єднує ваги прихованого та вихідного шарів (очевидно) та вихід прихованого блоку (якщо він кричить, а не шепоче, це, ймовірно, матиме більший вплив). Решта - це лише математичні тонкощі, які перетворюють цю інтуїцію на похідну від критерію тренувань.
Я також порекомендував бискупську книгу для правильної відповіді! ; o)
Це алгоритм для навчання подачі багатошарових нейронних мереж (багатошарових перцептронів). У Інтернеті є кілька приємних яблучних аплетів, які ілюструють те, що відбувається, як-от цей: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Крім того, книга Бішопа про NN - це стандартна довідка на робочому столі для будь-якого відношення до NN.