Pull to refresh

Comments 15

Не очень понятно как convolution 1x1 уменьшает размерность. Можете пояснить, что понимается по conv 1x1 в этом случае?

Например, некий layer выдает матрицу активаций 14x14x152 и она дается на вход 1x1 convolution. На выходе может быть, например, 14x14x64 — то есть, те же размеры по вертикали и горизонтали, но меньшая глубина. У такого 1x1 conv будем 152*64 параметра, и он просто сделает линейное преобразование для каждого многомерного "пикселя", коих 14x14.

Чем оно тогда отличается от FC слоя 14x14x152 -> 14x14x64? Функцией активации?

FC слой будет не 14х14х152->14x14x64, а 14x14x152->512. 1х1 conv слой явно сохраняет x и y измерения, FC нет. Собственно в этом и принципиальное отличие.

Т. е. чисто терминологическое отличие, спасибо.

Нет, не только. Количество параметров и то, как происходят вычисления, разные. Отличие то же, что и у convolutional vs fully connected layers в принципе

Предыдущий комментарий по делу. Я дополню тем, каждый нейрон FC layer получает на вход все 14x14x152, а conv 1x1 — только 152, но прогоняется для каждого "пикселя" 14x14 независимо

Тут есть неплохое описание CONV слоя и 1X1 CONV слоя в частности.
http://cs231n.github.io/convolutional-networks/

А можно пару вопросов?


  • Откуда вообще была придумана архитектура ineption'а? Из статей о GoogLeNet этот момент не совсем понятен… есть какое-то обоснование того, что вот таки блоки работают лучше, чем сети с последовательными слоями? Или там просто брутфорсом получили такой блок и дальше использовали как есть?
  • Почему замена MLP на GAP на выходе сетки считается практически равнозначной, параметров у модели ведь значительно меньше становится?
1 — Мотивация и правда на особо описана. Как мне кажется, Inception блок извлекает features на разных масштабах — там параллельно 1х1, 3х3, 5х5 convolutions + max pooling. Возможно в этом и была идея. К слову, мотивацию в статьях вообще крайне редко пишут — она скорее мешает пройти ревью на конференцию.

2 — Сеть с много параметров не обязательно будет иметь хорошие результаты. Если взять обычную fc-сеть с 1 скрытым слоем на 1кк нейронов, то будет куча параметров, но работать она будет так себе, если вообще будет. Как вариант объяснения — receptive field каждого пиксела в самом последнем слое уже почти занимает всю картинку. Точного размера не скажу, надо считать. Особой необходимости пропускать это через fc слои нет. Как бонус — значительное уменьшение модели, чего они и добивались.
Я вроде описываю мотивацию — хотелось архитектуру компактнее, мужики исследовали разные идеи как это сделать — делать convolutions меньше, уменьшать размерность, придумать что-то вместо FC layers. А оказалось, оно очень неплохо работает! Я думаю, такой блок получили большим количеством последовательных экспериментов.

Про второе — видимо, потому что большое количество параметров в FC layers избыточны (как показывает работа по Deep Compression, например). Последние inception blocks уже очень толстые и про свертки в них можно думать как применяющиеся ко всей картинке FC layers, только в окрестности каждого пикселя. И вот идея в том, чтобы усреднить такой вход в гриде 7x7 и сказать, что это финальные фичи. Опять же, почему конкретно это работает это нынче сложный в deep learning вопрос. Пока получается только эмпирически
Sign up to leave a comment.

Articles