Поширення назад через максимум шарів об'єднання


14

У мене є невелике підпитання до цього питання .

Я розумію, що при розповсюдженні назад через максимальний шар об'єднання градієнт повертається назад таким чином, що нейрон в попередньому шарі, який був обраний як max, отримує весь градієнт. У чому я не впевнений на 100% - це те, як градієнт у наступному шарі повертається до шару об’єднання.

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

приклад1

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

Наприклад, якщо перший нейрон шару ФК має градієнт 2, другий має градієнт 3, а третій - градієнт 6. Які бувають градієнти синього та фіолетового "нейронів" у шарі об'єднання та чому?

І друге питання - коли шар об'єднання з'єднаний з іншим шаром згортання. Як тоді обчислити градієнт? Дивіться приклад нижче.

приклад2

Для самого верхнього правого "нейрона" шару об'єднання (окресленого зеленого) я просто беру градієнт фіолетового нейрона в наступний шар конвеєра і повертаю його назад, правда?

Як щодо заповненого зеленого? Мені потрібно множити разом перший стовпчик нейронів у наступному шарі через правило ланцюга? Або мені потрібно їх додати?

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


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

Так, я це розумію, і це я також сказав у резюме на початку своєї посади. Але я не розумію, як я "комбіную" градієнт нейронів наступного шару, щоб поширюватися назад. Сподіваюся, ви знаєте, що я маю на увазі.
Майстер

Відповіді:


5

Якщо це правильно, то кожен "нейрон" шару об'єднання має однаковий градієнт?

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

Тому зазвичай у вас виникає така ситуація:

FCi=f(jWijPj)

Там, де - i-й нейрон у повністю з'єднаному шарі, - j-й нейрон в об'єднаному шарі, а - функція активації, а - ваги.FCiPjfW

Це означає, що градієнт відносно P_j є

grad(Pj)=igrad(FCi)fWij .

Що відрізняється для j = 0 або j = 1, тому що W відрізняється.

І друге питання - коли шар об'єднання з'єднаний з іншим шаром згортання. Як тоді обчислити градієнт?

Не важливо, до якого типу шару він пов'язаний. Це все те саме рівняння. Сума всіх градієнтів наступного шару, помножена на те, як на вихід цих нейронів впливає нейрон попереднього шару. Різниця між FC і Convolution полягає в тому, що у FC всі нейрони в наступному шарі внесуть внесок (навіть якщо він може бути невеликим), але в Convolution більшість нейронів у наступному шарі зовсім не впливають на нейрон попереднього шару, тому їх внесок рівно нуль.

Для самого верхнього правого "нейрона" шару об'єднання (окресленого зеленого) я просто беру градієнт фіолетового нейрона в наступний шар конвеєра і повертаю його назад, правда?

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

Як щодо заповненого зеленого? Мені потрібно множити разом перший стовпчик нейронів у наступному шарі через правило ланцюга? Або мені потрібно їх додати?

Додайте їх. Через правило ланцюга.

Макс Пул до цього моменту, те, що це був max pool, було абсолютно неважливо, як ви бачите. Максимальне об'єднання - це лише те, що функція активації на цьому шарі є . Отже, це означає, що градієнти попереднього рівня шарів :maxgrad(PRj)

grad(PRj)=igrad(Pi)fWij.

But now f=id for the max neuron and f=0 for all other neurons, so f=1 for the max neuron in the previous layer and f=0 for all other neurons. So:

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

grad(PRothers)=0.

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