Як пов’язані фільтри та карти активації в конволюційних нейронних мережах?


11

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

Наприклад, скажіть, що ви хотіли зробити повний зв’язок. У вас є f кількість фільтрів і n кількість карт активації в даному шарі. Ви отримаєте f * n кількість карт активації в наступному шарі, а кількість карт активації збільшуватиметься з кожним новим шаром. Це я вважаю, що це робиться.

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

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

Але тут у нас є архітектура, яка не має для мене сенсу - введіть тут опис зображення Як ви переходите від 6 карт у першому шарі до 16 у другому? Я можу придумати способи отримати 16 карт з 6, але робити це не має сенсу.

Відповіді:


10

Друга архітектура нейронної мережі (CNN), яку ви опублікували, походить з цієї статті . У статті автори дають характеристику того, що відбувається між шарами S2 та C3. Однак їх пояснення не дуже зрозумілі. Я б сказав, що ця архітектура CNN не є «стандартною», і це може бути дуже заплутаним як перший приклад для CNN.

CNN архітектура

28×285×5М×МN×NМN(М-N+1)×(М-N+1)

Що відбувається між шаром S2 та шаром C3, наступне. У шарі С3 створено 16 функціональних карт, виготовлених з 6 карт карт у шарі S2. Кількість фільтрів у шарі С3 дійсно не очевидна. Насправді, лише з діаграми архітектури не можна судити, яка точна кількість фільтрів, які створюють ці 16 карт функцій. Автори статті подають таку таблицю (стор. 8):

з'єднання між шарами S2 і C3

У таблиці вони надають наступне пояснення (внизу сторінки 7):

5×5

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

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

Тепер скільки фільтрів у шарі С3? На жаль, вони цього не пояснюють. Дві найпростіші можливості:

  1. Існує один фільтр на карту характеристик S2 на карті особливостей C3, тобто немає спільного використання фільтрів між картами функцій S2, пов'язаними з тією ж картою функцій C3.
  2. Існує один фільтр на мапі функцій C3, який розділяється на (3 і більше) картах функцій шару S2, які поєднуються.

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

Автори дають деяку додаткову інформацію, яка може допомогти нам розшифрувати архітектуру. Вони кажуть, що "шар C3 має 1516 відслідковуваних параметрів" (стор. 8). Ми можемо використовувати цю інформацію для вирішення між випадками (1) та (2) вище.

(6×3)+(9×4)+(1×6)=60(14-10+1)×(14-10+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Отже, якщо ми знову подивимось на Таблицю I вище, є 10 чітких фільтрів С3, пов'язаних з кожною картою функцій S2 (таким чином, 60 різних фільтрів).

Автори пояснюють такий тип вибору:

Карти різних функцій [у шарі С3] змушені отримувати різні (сподіваємось, додаткові) функції, оскільки вони отримують різні набори входів.

Я сподіваюся, що це прояснює ситуацію.


3

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

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

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


Я думаю, що те, що я зроблю, є орієнтиром обох способів їх порівняння. З не повністю підключеною версією він буде тренуватися та обчислювати класифікацію швидше. Але точність важливіша. У не повністю підключеній версії кожен фільтр локалізується на значно більш конкретну задачу замість більш загальної задачі. У повністю підключеній версії фільтр оновлюється на основі того, що найкраще для всіх попередніх фільтрів, а не лише одного типу функцій. Я роблю свою мережу зі 100% нуля, використовуючи c #. Звичайно, це не простий спосіб робити речі ... але він навчив мене глибоким речам
Frobot

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