Біографії Характеристики Аналіз

Функція помилки нейронної мережі. Навчання мережі – зворотне поширення

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

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

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

На наведеному малюнку використані такі умовні позначення:

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

де - Параметр нахилу сигмоїдальної функції. Змінюючи цей параметр, можна побудувати функції з різною крутістю. Обмовимося, що для всіх наступних міркувань використовуватиметься саме логістична функція активації, представлена ​​лише формулою вище.

Сігмоїд звужує діапазон зміни так, що значення лежить між нулем та одиницею. Багатошарові нейронні мережі мають більшу потужність, ніж одношарові, тільки у разі присутності нелінійності. Стискаюча функція забезпечує потрібну нелінійність. Насправді є безліч функцій, які б бути використані. Для алгоритму зворотного поширення помилки потрібно лише, щоб функція всюди диференційована. Сігмоїд задовольняє цю вимогу. Його додаткова перевага полягає у автоматичному контролі посилення. Для слабких сигналів (тобто коли близько нуля) крива вхід-вихід має сильний нахил, дає велике посилення. Коли величина сигналу стає більшою, посилення падає. Таким чином, великі сигнали сприймаються мережею без насичення, а слабкі сигнали проходять по мережі без надмірного послаблення.

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

Наступний:

  1. Ініціалізувати синаптичні ваги невеликими випадковими значеннями.
  2. Вибрати чергову навчальну пару з навчальної множини; подати вхідний вектор на вхід мережі.
  3. Обчислити вихід мережі.
  4. Обчислити різницю між виходом мережі та необхідним виходом (цільовим вектором навчальної пари).
  5. Підкоригувати ваги мережі для мінімізації помилки (див. нижче).
  6. Повторювати кроки з 2 по 5 для кожного вектора навчальної множини до тих пір, поки помилка на всій множині не досягне прийнятного рівня.

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

Кроки 4 і 5 складають «зворотний прохід», тут сигнал помилки, що обчислюється, поширюється назад по мережі і використовується для підстроювання ваг.

Розглянемо докладніше 5 крок – коригування ваги мережі. Тут слід виділити два нижчеописані випадки.

Випадок 1. Коригування синаптичних ваг вихідного шару

Наприклад, моделі нейронної мережі на рис. 1, це будуть ваги, що мають такі позначення: і . Визначимося, що індексом будемо позначати нейрон, з якого виходить синаптична вага, а нейрон в який входить:

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

Тоді, ваги вихідного шару після корекції дорівнюватимуть:

Наведемо приклад обчислень для синаптичної ваги:

Випадок 2. Коригування синаптичних ваг прихованого шару

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

Прудніков Іван Олексійович
МИРЕА(МТУ)

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

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

Теоретична частина

Даний матеріал передбачає знайомство з основами нейронних мереж, проте я вважаю за можливе ввести читача в курс теми без зайвих поневірянь з теорії нейронних мереж. Отже, для тих, хто вперше чує словосполучення «нейронна мережа», пропоную сприймати нейронну мережу як виважений спрямований граф, вузли (нейрони) якого розташовані шарами. Крім того, вузол одного шару має зв'язки з усіма вузлами попереднього шару. У нашому випадку такий граф матиме вхідний і вихідний шари, вузли яких виконують роль входів і виходів відповідно. Кожен вузол (нейрон) має активаційну функцію - функцію, відповідальну за обчислення сигналу на виході вузла (нейрона). Також існує поняття зміщення, що представляє собою вузол, на виході якого завжди з'являється одиниця. У цій статті ми розглядатимемо процес навчання нейронної мережі, що передбачає наявність «вчителя», тобто процес навчання, при якому навчання відбувається шляхом надання мережі послідовності навчальних прикладів з правильними відгуками.
Як і у випадку з більшістю нейронних мереж, наша мета полягає у навчанні мережі таким чином, щоб досягти балансу між здатністю мережі давати правильний відгук на вхідні дані, що використовувалися в процесі навчання (запам'ятовування), і здатністю видавати правильні результати у відповідь на вхідні дані, схожі, але неідентичні тим, що були використані під час навчання (принцип узагальнення). Навчання мережі методом зворотного поширення помилки включає три етапи: подачу на вхід даних, з подальшим поширенням даних у напрямку виходів, обчислення і зворотне поширення відповідної помилки і коригування ваг. Після навчання передбачається лише подача на вхід мережі даних та поширення їх у напрямі виходів. При цьому якщо навчання мережі може бути досить тривалим процесом, то безпосереднє обчислення результатів навченої мережею відбувається дуже швидко. Крім того, існують численні варіації методу зворотного поширення помилки, розроблені з метою збільшення швидкості перебігу процесу навчання.
Також варто відзначити, що одношарова нейронна мережа суттєво обмежена в тому, навчанню яким шаблонам вхідних даних вона підлягає, в той час, як багатошарова мережа (з одним або більше прихованим шаром) не має такого недоліку. Далі буде дано опис стандартної нейронної мережі зі зворотним розповсюдженням помилки.

Архітектура

На малюнку 1 показано багатошарову нейронну мережу з одним шаром прихованих нейронів (елементи Z).

Нейрони, що є виходами мережі (позначені Y), і приховані нейрони можуть мати зміщення (як показано на зображенні). Зсув, відповідний виходу Y k позначений w ok прихованому елементу Z j - V oj . Ці зсуви служать як ваги на зв'язках, що виходять від нейронів, на виході яких завжди з'являється 1 (на малюнку 1 вони показані, але зазвичай явно не відображаються, маючи на увазі). Крім того, на малюнку 1 стрілками показано переміщення інформації у ході фази розповсюдження даних від входів до виходів. У процесі навчання сигнали поширюються у напрямі.

Опис алгоритму

Алгоритм, представлений далі, застосовний до нейронної мережі з одним прихованим шаром, що є допустимою та адекватною ситуацією для більшості додатків. Як вже було сказано раніше, навчання мережі включає три стадії: подача на входи мережі навчальних даних, зворотне поширення помилки і коригування ваг. У ході першого етапу кожен вхідний нейрон X i отримує сигнал і широкомовно транслює його кожному з прихованих нейронів Z 1 Z 2 ... Z p . Кожен прихований нейрон потім обчислює результат активаційної функції (мережевої функції) і розсилає свій сигнал Z j всім вихідним нейронам. Кожен вихідний нейрон Y k , своєю чергою, обчислює результат своєї активаційної функції Y k , який є ніщо інше, як вихідний сигнал даного нейрона для відповідних вхідних даних. У процесі навчання кожен нейрон на виході мережі порівнює обчислене значення Y k з наданим вчителем t k (цільовим значенням), визначаючи відповідне значення помилки для даного вхідного шаблону. З цієї помилки обчислюється σ k (k = 1,2,...m). σ k використовується при поширенні помилки від Y k всіх елементів мережі попереднього шару (прихованих нейронів, пов'язаних з Y k), а також пізніше при зміні ваг зв'язків між вихідними нейронами і прихованими. Аналогічно обчислюється σj (j = 1,2,...p) для кожного прихованого нейрона Z j . Незважаючи на те, що поширювати помилку до вхідного шару необхідності немає, j використовується для зміни ваг зв'язків між нейронами прихованого шару і вхідними нейронами. Після того, як всі σ були визначені, відбувається одночасне коригування ваги всіх зв'язків.

Позначення:

В алгоритмі навчання мережі використовуються такі позначення:

X Вхідний вектор навчальних даних X = (X 1, X 2, ..., X i, ..., X n).
t Вектор цільових вихідних значень, що надаються вчителем t = (t 1 , t 2 ,...,t k ,...,t m)
σ k Складає коригування ваги зв'язків w jk , що відповідає помилці вихідного нейрона Y k ; також, інформація про помилку нейрона Y k , яка поширюється тим нейронам прихованого шару, які пов'язані з Y k .
σ j Складова коригування ваг зв'язків v ij , що відповідає поширеній від вихідного шару до прихованого нейрону Z j інформації про помилку.
a Швидкість навчання.
X i Нейрон на вході з індексом i. Для вхідних нейронів вхідний та вихідний сигнали однакові - X i.
v oj Зміщення прихованого нейрону j.
Z j Прихований нейрон j; Сумарне значення, що подається на вхід прихованого елемента Z j позначається Z_in j: Z_in j = v oj + ∑x i * v ij
Сигнал на виході Z j (результат застосування до активації Z_in j) позначається Z j: Z j = f (Z_in j)
w ok Зміщення нейрона на виході.
Y k Нейрон на виході під індексом k; Сумарне значення подане на вхід вихідного елемента Y k позначається Y_in k: Y_in k = w ok + ∑ Z j * w jk . Сигнал на виході Y k (результат застосування Y_in k активаційної функції) позначається Y k:

Функція активації

Функція активація в алгоритмі зворотного розповсюдження помилки повинна мати кілька важливих характеристик: безперервність, диференційність і бути монотонно незнищувальною. Більше того, заради ефективності обчислень, бажано, щоб її похідна була легкою. Часто активаційна функція також є функцією з насиченням. Однією з найчастіше використовуваних активаційних функцій є бінарна сигмоїдальна функція з областю значень (0, 1) і визначена як:

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


Алгоритм навчання

Алгоритм навчання виглядає так:

Ініціалізація терезів (ваги всіх зв'язків ініціалізуються випадковими невеликими значеннями).

Доки умова припинення роботи алгоритму неправильно, виконуються кроки 2 - 9.

Для кожної пари (дані, цільове значення) виконуються кроки 3 – 8.

Поширення даних від входів до виходів:

Крок 3
Кожен вхідний нейрон (X i , i = 1,2, ..., n) відправляє отриманий сигнал X i всім нейронам у наступному шарі (прихованому).

Кожен прихований нейрон (Z j , j = 1,2,...,p) підсумовує зважені вхідні сигнали: z_in j = v oj + ∑ x i * v ij і застосовує активаційну функцію: z j = f (z_in j) Після чого посилає результат всіх елементів наступного шару (вихідного).

Кожен вихідний нейрон (Y k , k = 1,2,...m) підсумовує зважені вхідні сигнали: Y_in k = w ok + ∑ Z j *w jk і застосовує активаційну функцію, обчислюючи вихідний сигнал: Y k = f (Y_in k).

Зворотне поширення помилки:

Кожен вихідний нейрон (Y k , k = 1,2,...m) отримує цільове значення - вихідне значення, яке є правильним для даного вхідного сигналу, і обчислює помилку: σ k = (t k - y k) * f " ( y_in k), так само обчислює величину, на яку зміниться вага зв'язку w jk: Δw jk = a * σ k * z j. .

Кожен прихований нейрон (z j , j = 1,2, ... p) підсумовує вхідні помилки (від нейронів у наступному шарі) σ_in j = ∑ σ k * w jk і обчислює величину помилки, помножуючи отримане значення на похідну активаційної функції: σ j = σ_in j * f " (z_in j), також обчислює величину, на яку зміниться вага зв'язку vij: Δv ij = a * σ j * x i .

Крок 8. Зміна ваги.

Кожен вихідний нейрон (y k , k = 1,2,...,m) змінює ваги своїх зв'язків з елементом усунення та прихованими нейронами: w jk (new) = w jk (old) + Δw jk
Кожен прихований нейрон (z j , j = 1,2, ... p) змінює ваги своїх зв'язків з елементом усунення та вихідними нейронами: v ij (new) = v ij (old) + Δv ij

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

Для навчання багатошарової мережі в 1986 р. Руммельхартом і Хінтоном (Rummelhart D.E., Hinton G.E., Williams RJ, 1986) було запропоновано алгоритм зворотного розповсюдження помилок (error back propagation). Численні публікації про промислові застосування багатошарових мереж із цим алгоритмом навчання підтвердили його принципову працездатність на практиці.

На початку виникає резонне питання – а чому для навчання багатошарового персептрону не можна застосувати вже відоме -правило Розенблатта (див. Лекцію 4)? Відповідь у тому, що з застосування методу Розенблатта необхідно знати як поточні виходи нейронів y, а й необхідні правильнізначення Y. У разі багатошарової мережі ці правильні значення є лише для нейронів. вихідногошару. Необхідні значення виходів для нейронів прихованих шарів невідомі, що обмежує застосування-правила.

Основна ідея зворотного поширення полягає в тому, як отримати оцінку помилки для прихованих нейронів шарів. Зауважимо, що відоміпомилки, які роблять нейрони вихідного шару, виникають внаслідок невідомихпоки що помилок нейронів прихованих шарів. Чим більше значення синаптичного зв'язку між нейроном прихованого шару і вихідним нейроном, тим більше помилка першого впливає на помилку другого. Отже, оцінку помилки елементів прихованих шарів можна отримати як зважену суму помилок наступних шарів. При навчанні інформація поширюється від нижчих верств ієрархії до вищим, а оцінки помилок, які роблять мережею - у зворотному нарівні, як і відбито у назві методу.

Перейдемо до детального розгляду цього алгоритму. Для спрощення позначень обмежимося ситуацією, коли мережа має лише один прихований шар. Матрицю вагових коефіцієнтів від входів до прихованого шару позначимо W, а матрицю ваг, що з'єднують прихований і вихідний шар - як V. Для індексів приймемо наступні позначення: входи нумеруватимемо тільки індексом i, елементи прихованого шару - індексом j, а виходи, відповідно, індексом k.

Нехай мережа навчається на вибірці (X,Y),=1..p. Активності нейронів позначатимемо малими літерами y з відповідним індексом, а сумарні зважені входи нейронів - малими літерами x.

Загальна структура алгоритму аналогічна до розглянутої в Лекції 4, з ускладненням формул підстроювання ваг.

Таблиця 6.1. Алгоритм зворотного розповсюдження помилки.

Початкові значення ваги всіх нейронів всіх шарів V(t=0) і W(t=0) вважаються випадковими числами.

Мережі пред'являється вхідний образ X, у результаті формується вихідний образ yY. При цьому нейрони послідовно від шару до шару функціонують за такими формулами:

прихований шар

вихідний шар

Тут f(x) - сигмоїдальна функція, яка визначається за формулою (6.1)

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

Цей функціонал підлягає мінімізації. Класичний градієнтний метод оптимізації полягає в ітераційному уточненні аргументу згідно з формулою:

Функція помилки в явному вигляді не містить залежності від ваги Vjk, тому скористаємося формулами неявного диференціювання складної функції:

Тут враховано корисну властивість сигмоїдальної функції f(x): її похідна виражається лише через саме значення функції f'(x)=f(1-f). Таким чином, всі необхідні величини для підстроювання ваги вихідного шару V отримані.

На цьому кроці виконується підстроювання ваги прихованого шару. Градієнтний метод, як і раніше, дає:

Обчислення похідних виконуються за тими самими формулами, крім деякого ускладнення формули для помилки  j .

При обчисленні  j тут і був застосований принцип зворотного розповсюдження помилки: приватні похідні беруться лише за змінними наступногошару. За отриманими формулами модифікуються ваги нейронів прихованого шару. Якщо в нейронній мережі є кілька прихованих шарів, процедура зворотного розповсюдження застосовується послідовно для кожного з них, починаючи з шару, що передує вихідному, і далі шару, що йде за вхідним. При цьому формули зберігають свій вигляд із заміною елементів вихідного шару на елементи відповідного прихованого шару.

Кроки 1-3 повторюються всім навчальних векторів. Навчання завершується після досягнення малої повної помилки чи максимально допустимого числа ітерацій, як й у методі навчання Розенблатта.

Як очевидно з опису кроків 2-3, навчання зводиться до розв'язання завдання оптимізації функціоналу помилки градієнтним методом. Вся “сіль” зворотного поширення помилки у тому, що її оцінки для нейронів прихованих шарів можна прийняти зважену суму помилок наступного шару.

Параметр h має сенс темпу навчання та вибирається досить малим для збіжності методу. Про збіжність потрібно зробити кілька додаткових зауважень. По-перше, практика показує, що збіжність методу зворотного поширення дуже повільна. Невисокий темп збіжності є “генетичною хворобою” всіх градієнтних методів, оскільки локальне напрям градієнта зовсім на збігається з напрямом до мінімуму. По-друге, підстроювання ваг виконується незалежно кожної пари образів навчальної вибірки. При цьому поліпшення функціонування на певній парі може, взагалі кажучи, призводити до погіршення роботи на попередніх образах. У цьому сенсі, нідостовірних (крім дуже великої практики застосування методу) гарантій збіжності.

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

На завершення лекції зробимо зауваження щодо налаштування порогів нейронів. Легко помітити, що поріг нейрона може бути зроблений еквівалентним додатковій вазі, з'єднаній з фіктивним входом, що дорівнює -1. Справді, вибираючи W 0 =, x 0 =-1 і починаючи підсумовування з нуля, можна розглядати нейрон з нульовим порогом та одним додатковим входом:

Додаткові входи нейронів, які відповідають порогам, зображені на Рис. 6.1 чорними квадратиками. З урахуванням цього зауваження всі викладені в алгоритмі зворотного поширення формули підсумовування по входах починаються з нульового індексу.

Алгоритм зворотного розповсюдження помилки (Back propagation algorithm)

Синоніми: Алгоритм BackProp, Алгоритм Back Propagation, BackProp

Loginom: Нейросеть (класифікація) (обробник), Нейросеть (регресія) (обробник)

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

В основі ідеї алгоритму лежить використання вихідної помилки нейронної мережі:

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

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

де - вага i-й зв'язку j-го нейрона, - параметр швидкості навчання, який дозволяє додатково керувати величиною кроку корекції з метою більш точного налаштування на мінімум помилки та підбирається експериментально у процесі навчання (змінюється в інтервалі від 0 до 1).

Враховуючи, що вихідна сума j-го нейрона дорівнює

можна показати, що

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

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

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

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

Навчання «по епохам» є більш стійким до викидів та аномальних значень цільової змінної за рахунок усереднення помилки за багатьма прикладами. Але при цьому підвищується ймовірність "застрягання" алгоритму в локальних мінімумах. Імовірність цього для навчання «по кроках» менша, оскільки використання окремих прикладів створює «шум», який «виштовхує» алгоритм із ям градієнтного рельєфу.

До переваг алгоритму зворотного поширення помилки відносяться простота реалізації та стійкість до аномалій та викидів у даних. До недоліків можна віднести:

  • невизначено тривалий процес навчання:
  • можливість «паралічу мережі», коли при великих значеннях робоча точка активаційної функції виявляється в області насичення сигмоїди та похідна у виразі (1) стає близькою до 0, а корекції ваг практично не відбувається і процес навчання «завмирає»;
  • вразливість алгоритму до потрапляння до локальних мінімумів функції помилки.

Вперше алгоритм було описано 1974 р.

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

Навчання згорткової нейронної мережі

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

Таким чином, навчання нейронної мережі зводиться до мінімізації функції помилки, шляхом коригування вагових коефіцієнтів синаптичних зв'язків між нейронами. Під функцією помилки розуміється різниця між отриманою відповіддю та бажаною. Наприклад, на вхід був поданий образ обличчя, припустимо, що вихід нейромережі був 0.73, а бажаний результат 1 (т.к. образ обличчя), отримаємо помилку мережі різницею, тобто 0.27. Потім ваги вихідного шару нейронів коригуються відповідно до помилки. Для нейронів вихідного шару відомі їх фактичні та бажані значення виходів. Тому налаштування ваги зв'язків для таких нейронів є відносно простим. Однак для нейронів попередніх шарів налаштування не настільки очевидне. Довгий час не було відомо алгоритму поширення помилки по прихованим шарам.

Алгоритм зворотного розповсюдження помилки

Для навчання описаної нейронної мережі використали алгоритм зворотного поширення помилки (backpropagation). Цей метод навчання багатошарової нейронної мережі називається узагальненим дельта-правилом. Метод було запропоновано 1986 р. Румельхартом, Макклеландом і Вільямсом. Це ознаменувало відродження інтересу до нейронних мереж, який став згасати на початку 70-х. Даний алгоритм є першим і основним практично застосовним для навчання багатошарових нейронних мереж.

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

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

Розмір помилки визначається за формулою 2.8 середньоквадратична помилка:

Неактивований стан кожного нейрона j для образу p записується у вигляді виваженої суми за формулою 2.9:

Вихід кожного нейрона j є значенням активаційної функції

Яка переводить нейрон у активований стан. Як функцію активації може використовуватися будь-яка безперервно диференційована монотонна функція. Активований стан нейрона обчислюється за формулою 2.10:

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

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

Похідну функції помилки за конкретним образом можна записати за правилом ланцюжка, формула 2.12:

Помилка нейрона зазвичай записується як символ δ (дельта). Для вихідного шару помилка визначена у явному вигляді, якщо взяти похідну від формули 2.8, то отримаємо tмінус y, тобто різницю між бажаним та отриманим виходом. Але як розрахувати помилку для прихованих шарів? Для вирішення цього завдання, якраз і було придумано алгоритм зворотного поширення помилки. Суть його у послідовному обчисленні помилок прихованих шарів з допомогою значень помилки вихідного шару, тобто. Значення помилки розповсюджуються по мережі у зворотному напрямку від виходу до входу.

Помилка для прихованого шару розраховується за формулою 2.13:

Алгоритм поширення помилки зводиться до наступних етапів:

  • пряме поширення сигналу мережі, обчислення стану нейронів;
  • обчислення значення помилки для вихідного шару;
  • зворотне поширення: послідовно від кінця до початку для всіх прихованих шарів обчислюємо за формулою 2.13;
  • оновлення ваги мережі на обчислену раніше δ помилки.
Алгоритм зворотного розповсюдження помилки в багатошаровому персептроні показаний нижче:


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

Розрахунок помилки на підвибірковому шарі

Розрахунок помилки на подвыборочном шарі представляється кількох варіантах. Перший випадок, коли підвибірковий шар знаходиться перед повнозв'язним, тоді він має нейрони і зв'язки такого ж типу, як у повнозв'язному шарі, відповідно обчислення помилки нічим не відрізняється від обчислення прихованого шару. Другий випадок, коли підвибірковий шар знаходиться перед згортковим, обчислення відбувається шляхом зворотної згортки. Для розуміння назад згортки необхідно спочатку зрозуміти звичайну згортку і те, що ковзне вікно по карті ознак (під час прямого поширення сигналу) можна інтерпретувати, як звичайний прихований шар зі зв'язками між нейронами, але головна відмінність - це те, що ці зв'язки поділяються, тобто один зв'язок із конкретним значенням ваги може бути у кількох пар нейронів, а не лише однієї. Інтерпретація операції згортки у звичному багатошаровому вигляді відповідно до малюнку 2.8.


Малюнок 2.8 - Інтерпретація операції згортки в багатошаровий вигляд, де зв'язки з однаковим кольором мають одну й ту саму вагу. Синім кольором позначена підвибіркова карта, різнокольоровим – синаптичне ядро, помаранчевим – згортка, що вийшла.

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


Малюнок 2.9 - Обчислення δ підвиборчого шару за рахунок δ згорткового шару та ядра

Зворотній пакунок- це той самий спосіб обчислення дельт, тільки трохи хитрим способом, що полягає в повороті ядра на 180 градусів і процесі сканування згорткової карти дельт зі зміненими крайовими ефектами. Простими словами, нам необхідно взяти ядро ​​згорткової карти (наступного за підвибірковим шаром) повернути його на 180 градусів і зробити звичайну згортку за обчисленими раніше дельтами згорткової карти, але так щоб вікно сканування виходило за межі карти. Результат операції зворотного згортки відповідно до рисунка 2.10, цикл проходу зворотного згортки відповідно до рисунка 2.11.


Малюнок 2.10 - Результат операції зворотного згортки


Малюнок 2.11 - Повернене ядро ​​на 180 градусів сканує карту згортки

Розрахунок помилки на згортковому шарі

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

Висновок

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