Зворотний шар через шари максимального пулу?


62

Це невелике концептуальне питання, яке мене натякає на деякий час: Як ми можемо розповсюджуватися через шар максимального об'єднання в нейронній мережі?

Я натрапив на шари максимального об'єднання, переглядаючи цей підручник для бібліотеки nn Torch 7. Бібліотека резюмує обчислення градієнта і передачі вперед для кожного шару глибокої мережі. Я не розумію, як робиться розрахунок градієнта для шару максимального об'єднання.

Я знаю, що якщо у вас є вхід йде в нейрон шару , то (визначається як ) задається через: zililδilδil=Ezil

δil=θ(zil)jδjl+1wi,jl,l+1

Отже, шар максимального об'єднання отримає наступного шару як завжди; але оскільки функція активації для нейронів максимального об'єднання приймає вектор значень (над яким він максимуме) як вхідний, вже не одне число, а вектор ( треба було б замінити на ). Крім того, , будучи функцією max, не відрізняється щодо вхідних даних.δjl+1δilθ(zjl)θ({zjl})θ

Отже .... як саме це повинно вийти?

Відповіді:


58

Немає градієнта щодо не максимальних значень, оскільки їх незначна зміна не впливає на вихід. Крім того, макс локально лінійний з нахилом 1, щодо входу, який фактично досягає макс. Таким чином, градієнт із наступного шару передається лише тому нейрону, який досяг макс. Всі інші нейрони отримують нульовий градієнт.

Отже, у вашому прикладі був би вектором усіх нулів, за винятком того, що розташування th отримає значення деδili{δjl+1}i=argmaxi(zil)


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

Але вам не потрібно множити на похідну функції активації?
Джейсон

1
@Jason: Функція max локально лінійна для активації, яка отримала max, тому похідна від неї є постійною 1. Для активацій, які не пройшли, це 0. Це концептуально дуже схоже на диференціювання ReLU (x ) = максимальна (0, х) функція активації.
Chrigi

Що таке кроки менше ширини ядра для максимального об'єднання?
Ватсал

1
Чудова відповідь! А як з кращим випадком, коли декілька записів мають однакове максимальне значення (наприклад, у 2 значень є 0 від ReLU, а інші два - негативні)?
DankMasterDan

6

Макс пулу

Отже, припустимо, у вас є шар P, який знаходиться поверх PR-шару. Тоді прямий прохід буде приблизно таким:

Pi=f(jWijPRj) ,

де - активація i-го нейрона шару P, f - функція активації, а W - ваги. Отже, якщо ви отримаєте це, за правилом ланцюга, ви отримаєте, що градієнти протікають так:Pi

grad(PRj)=igrad(Pi)fWij .

Але тепер, якщо у вас є максимальне об'єднання, для максимуму нейрона і для всіх інших нейронів, тож для максимального нейрона в попередньому шарі і для всіх інших нейрони. Тому:f=idf=0f=1f=0

grad(PRmax neuron)=igrad(Pi)Wi max neuron ,

grad(PRothers)=0.


2

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

при здійсненні операції maxpool (обчислювальний вузол в обчислювальному графіку - ваша архітектура NN) нам потрібна функція, що створює маску "маску", яка відстежує, де знаходиться максимум матриці. True (1) вказує позицію максимуму в X, інші записи - False (0). Ми відслідковуємо положення максимуму, оскільки це вхідне значення, яке врешті-решт вплинуло на вихід, а отже, і на вартість. Backprop - це обчислення градієнтів щодо вартості, тому все, що впливає на кінцеву вартість, повинно мати ненульовий градієнт. Таким чином, backprop "поширить" градієнт назад до цього конкретного вхідного значення, яке вплинуло на вартість.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.