Метод зворотного поширення помилки (англ. backpropagation) — метод навчання багатошарового перцептрону. Це ітеративний градієнтний алгоритм, який використовується з метою мінімізації помилки роботи багатошарового перцептрону та отримання бажаного виходу. Основна ідея цього методу полягає в поширенні сигналів помилки від виходів мережі до її входів, в напрямку, зворотному прямому поширенню сигналів у звичайному режимі роботи. Для можливості застосування методу зворотного поширення помилки функція активації нейронів повинна бути диференційовною.
Навчання нейронних мереж можна представити як задачу оптимізації. Оцінити — означає вказати кількісно, добре чи погано мережа вирішує поставлені їй завдання. Для цього будується функція оцінки. Вона, як правило, явно залежить від вихідних сигналів мережі і неявно (через функціонування) — від всіх її параметрів. Найпростіший і найпоширеніший приклад оцінки — сума квадратів відстаней від вихідних сигналів мережі до їх необхідних значень: H = 1 2 ∑ ∑ --> τ τ --> ∈ ∈ --> v o u t ( Z ( τ τ --> ) − − --> Z ∗ ∗ --> ( τ τ --> ) ) 2 {\displaystyle H={\frac {1}{2}}\sum _{\tau \in v_{out}}(Z(\tau )-Z^{*}(\tau ))^{2}} , де Z ∗ ∗ --> ( τ τ --> ) {\displaystyle Z^{*}(\tau )} — необхідне значення вихідного сигналу.
Метод найменших квадратів далеко не завжди є найкращим вибором оцінки. Ретельне конструювання функції оцінки дозволяє на порядок підвищити ефективність навчання мережі, а також одержувати додаткову інформацію — «рівень впевненості» мережі у відповіді [1]
Алгоритм зворотного поширення помилки застосовується для багатошарового перцептрону. У мережі є множина входів x 1 , . . . , x n {\displaystyle x_{1},...,x_{n}} , множина виходів Outputs і безліч внутрішніх вузлів. Перенумеруємо всі вузли (включаючи входи і виходи) числами від 1 до N (наскрізна нумерація, незалежно від топології шарів). Позначимо через w i , j {\displaystyle w_{i,j}} вагу зв'язку, що з'єднує i-й і j-й вузли, а через o i {\displaystyle o_{i}} — вихід i-го вузла. Якщо нам відомий навчальний приклад (правильні відповіді мережі t k {\displaystyle t_{k}} , k ∈ ∈ --> O u t p u t s {\displaystyle k\in Outputs} ), то функція помилки, отримана за методом найменших квадратів, виглядає так:
Як модифікувати ваги? Ми будемо реалізовувати стохастичний градієнтний спуск, тобто будемо підправляти ваги після кожного навчального прикладу і, таким чином, «рухатися» в багатовимірному просторі ваг. Щоб «добратися» до мінімуму помилки, нам потрібно «рухатися» в сторону, протилежну градієнту, тобто, на підставі кожної групи правильних відповідей, додавати до кожної ваги w i , j {\displaystyle w_{i,j}}
де 0 < η η --> < 1 {\displaystyle 0<\eta <1} — множник, що задає швидкість «руху».
Похідна розраховується таким чином. Нехай спочатку j ∈ ∈ --> O u t p u t s {\displaystyle j\in Outputs} , тобто вага, яка нас цікавить, входить в нейрон останнього рівня. Спочатку зазначимо, що w i , j {\displaystyle w_{i,j}} впливає на вихід мережі лише як частина суми S j = ∑ ∑ --> i w i , j x i {\displaystyle S_{j}=\sum _{i}w_{i,j}x_{i}} , де сума береться по входах j-го вузла. Тому
Аналогічно, S j {\displaystyle S_{j}} впливає на загальну помилку тільки в рамках виходу j-го вузла o j {\displaystyle o_{j}} (нагадуємо, що це вихід всієї мережі). Тому
де σ σ --> ( ) {\displaystyle \sigma ()} — це функція активації, у даному випадку (стосовно обчислення похідної) являє собою Експоненційну сигмоїду (функцію Фермі) розглянуту вище
Якщо ж j-й вузол — не на останньому рівні, то у нього є виходи; позначимо їх через Children (j). У цьому випадку
і
А ∂ ∂ --> E ∂ ∂ --> S k {\displaystyle {\cfrac {\partial E}{\partial S_{k}}}} — це аналогічна поправка, але обчислена для вузла наступного рівня (будемо позначати її через δ δ --> k {\displaystyle \delta _{k}} — від Δ Δ --> k {\displaystyle \Delta _{k}} вона відрізняється відсутністю множника ( − − --> η η --> x i , j ) {\displaystyle (-\eta x_{i,j})} . Оскільки ми навчилися обчислювати поправку для вузлів останнього рівня і виражати поправку для вузла нижчого рівня через поправки більш високого, можна вже створювати алгоритм навчання. Саме через цю особливість обчислення поправок цей алгоритм називається алгоритмом зворотного поширення помилки (англ. backpropagation).
Коротке викладення вищесказаного:
δ δ --> j = − − --> o j ( 1 − − --> o j ) ( t j − − --> o j ) {\displaystyle \delta _{j}=-o_{j}(1-o_{j})(t_{j}-o_{j})}
δ δ --> j = o j ( 1 − − --> o j ) ∑ ∑ --> k ∈ ∈ --> O u t p u t s ( j ) δ δ --> k w j , k {\displaystyle \delta _{j}=o_{j}(1-o_{j})\sum _{k\in Outputs(j)}\delta _{k}w_{j,k}}
Δ Δ --> w i , j = − − --> η η --> δ δ --> j x i {\displaystyle \Delta w_{i,j}=-\eta \delta _{j}x_{i}}
Отриманий алгоритм представлений нижче. На вхід алгоритму, крім зазначених параметрів, потрібно також подавати в якому-небудь форматі структуру мережі. На практиці дуже гарні результати показують мережі досить простої структури, що складаються з двох рівнів нейронів — прихованого рівня (hidden units) і нейронів-виходів (output units), кожен вхід мережі з'єднаний з усіма прихованими нейронами, а результат роботи кожного прихованого нейрона подається на вхід кожному з нейронів-виходів. У такому випадку досить подавати на вхід кількість нейронів прихованого рівня.
Алгоритм: BackPropagation ( η η --> , α α --> , { x i d , t d } i = 1 , d = 1 n , m , N U M B E R _ _ --> O F _ _ --> S T E P S ) {\displaystyle (\eta ,\alpha ,\{x_{i}^{d},t^{d}\}_{i=1,d=1}^{n,m},NUMBER\_OF\_STEPS)}
На кожній ітерації алгоритму зворотного поширення вагові коефіцієнти нейронної мережі модифікуються так, щоб поліпшити рішення одного прикладу. Таким чином, у процесі навчання циклічно вирішуються однокритеріальні задачі оптимізації.
Навчання нейронної мережі характеризується чотирма специфічними обмеженнями, що виділяють навчання нейромереж із загальних задач оптимізації: астрономічне число параметрів, необхідність високого паралелізму при навчанні, багато критеріально вирішуваних завдань, необхідність знайти досить широку область, в якій значення всіх функцій, що мінімізуються близькі до мінімальних. Стосовно решти проблему навчання можна, як правило, сформулювати як завдання мінімізації оцінки. Обережність попередньої фрази («як правило») пов'язана з тим, що насправді нам невідомі і ніколи не будуть відомі всі можливі завдання для нейронних мереж, і, може, десь в невідомості є завдання, які не зводяться до мінімізації оцінки. Мінімізація оцінки — складна проблема: параметрів астрономічно багато (для стандартних прикладів, що реалізуються на РС — від 100 до 1000000), адаптивний рельєф (графік оцінки як функції від підлаштовуваних параметрів) складний, може містити багато локальних мінімумів.
Незважаючи на численні успішні застосування алгоритму зворотного поширення помилки, він не є панацеєю. Найбільше неприємностей приносить невизначено довгий процес навчання. У складних завданнях для навчання мережі можуть знадобитися дні або навіть тижні, вона може і взагалі не навчитися. Причиною може бути одна з описаних нижче.
У процесі навчання мережі значення ваг можуть в результаті корекції стати дуже великими величинами. Це може призвести до того, що всі або більшість нейронів будуть функціонувати при дуже великих значеннях OUT, в області, де похідна стискаючої функції дуже мала. Так як помилка, що посилається назад у процесі навчання, пропорційна цій похідній, то процес навчання може практично завмерти. У теоретичному відношенні ця проблема погано вивчена. Зазвичай цього уникають зменшенням розміру кроку η, але це збільшує час навчання. Різні евристики використовувалися для запобігання від паралічу або для відновлення після нього, але поки що вони можуть розглядатися лише як експериментальні.
Зворотне поширення використовує різновид градієнтного спуску, тобто здійснює спуск вниз по поверхні помилки, безперервно підлаштовуючи ваги в напрямку до мінімуму. Поверхня помилки складної мережі сильно порізана і складається з пагорбів, долин, складок і ярів в просторі високої розмірності. Мережа може потрапити в локальний мінімум (неглибоку долину), коли поруч є набагато більш глибоких мінімумів. В точці локального мінімуму всі напрямки ведуть вгору, і мережа нездатна з нього вибратися. Статистичні методи навчання можуть допомогти уникнути цієї пастки, але вони повільні.
Уважний розбір доведення збіжності [2] показує, що корекції ваг передбачаються нескінченно малими. Ясно, що це нездійсненно на практиці, тому що веде до безкінечного часу навчання. Розмір кроку повинен братися скінченним. Якщо розмір кроку фіксований і дуже малий, то збіжність надто повільна, якщо ж він фіксований і занадто великий, то може виникнути параліч або постійна нестійкість. Ефективно збільшувати крок до тих пір, поки не припиниться поліпшення оцінки в даному напрямку антиградієнта і зменшувати, якщо такого покращення не відбувається. П. Д. Вассерман [3] описав адаптивний алгоритм вибору кроку, який автоматично коректує розмір кроку в процесі навчання. В книзі А. Н. Горбаня [4] запропонована розгалужена технологія оптимізації навчання. Слід також відмітити можливість перенавчання мережі, що є скоріше результатом помилкового проектування її топології. При дуже великій кількості нейронів втрачається властивість мережі узагальнювати інформацію. Весь набір образів, наданих до навчання, буде вивчений мережею, але будь-які інші образи, навіть дуже схожі, можуть бути класифіковані невірно.
Вперше метод був описаний в 1974 р. А. І. Галушкіним [5], а також незалежно і одночасно Полом Дж. Вербосом [6]. Далі істотно розвинений в 1986 р. Девідом І. Румельгартом[en], Джефрі Е. Хінтоном і Рональдом Дж. Вільямсом[en] [2] і незалежно й одночасно С. І. Барцом та В. А. Охоніним [7].
Портали: Програмування • Техніка
Lokasi Pengunjung: 3.144.88.85