Почему сверточные нейронные сети работают?


22

Я часто слышал, как люди говорили, почему сверточные нейронные сети все еще плохо поняты. Известно ли, почему сверточные нейронные сети всегда заканчивают тем, что изучают все более сложные функции, когда мы поднимаемся по уровням? Что заставило их создать такой набор функций, и будет ли это также верно для других типов глубоких нейронных сетей?


Отличное объяснение от Джереми Ховарда во второй половине этого видео: youtube.com/watch?v=ACU-T9L4_lI
Дан

2
Я думаю, что вы недоразумение. Мы прекрасно понимаем, почему коннет работает как класс алгоритмов. С другой стороны, часто очень трудно понять, почему конкретная модель сделала конкретный прогноз. Вот почему мы называем их «моделями черного ящика»: процесс их вывода непрозрачен для нас. Это не значит, что мы не понимаем, почему они эффективны.
Дэвид Маркс,

Ответы:


19

На самом деле, я думаю, что вопрос немного широк! Так или иначе.

Понимание сетей свертки

То, что изучено, ConvNetsпытается минимизировать функцию стоимости, чтобы правильно классифицировать входные данные в задачах классификации. Все изменяемые параметры и усвоенные фильтры предназначены для достижения указанной цели.

Изученные особенности в разных слоях

Они пытаются снизить затраты, изучая низкоуровневые, иногда бессмысленные, функции, такие как горизонтальные и вертикальные линии, в своих первых слоях, а затем складывают их, чтобы создать абстрактные формы, которые часто имеют значение, в своих последних слоях. Для иллюстрации этого рис. 1, который был использован отсюда , можно рассмотреть. Ввод - это шина, а группа показывает активацию после прохождения ввода через различные фильтры в первом слое. Как можно видеть, красная рамка, которая является активацией фильтра, параметры которого были изучены, была активирована для относительно горизонтальных ребер. Синяя рамка была активирована для относительно вертикальных краев. Возможно, чтоConvNetsизучите неизвестные фильтры, которые полезны, и мы, например, специалисты по компьютерному зрению, не обнаружили, что они могут быть полезны. Лучшая часть этих сетей состоит в том, что они пытаются найти соответствующие фильтры самостоятельно и не используют наши ограниченные обнаруженные фильтры. Они изучают фильтры, чтобы уменьшить количество функций стоимости. Как уже упоминалось, эти фильтры не обязательно известны.

** Рисунок 1. ** * Активация низкого уровня *

В более глубоких слоях элементы, изученные в предыдущих слоях, объединяются и образуют формы, которые часто имеют значение. В этой статье обсуждалось, что эти уровни могут иметь активации, которые являются значимыми для нас, или концепции, которые имеют значение для нас, людей, могут быть распределены среди других активаций. На рис. 2 зеленая рамка показывает активаты фильтра в пятом слоеConvNet, Этот фильтр заботится о лицах. Предположим, что красный заботится о волосах. Это имеет значение. Как можно видеть, есть другие активации, которые были активированы прямо в позиции типичных граней на входе, зеленая рамка - одна из них; Синяя рамка является еще одним примером этого. Соответственно, абстракция форм может быть изучена фильтром или многочисленными фильтрами. Другими словами, каждое понятие, как лицо и его компоненты, может быть распределено по фильтрам. В тех случаях, когда концепции распределены по разным слоям, если кто-то смотрит на каждый из них, они могут быть сложными. Информация распределяется между ними, и для понимания этой информации необходимо рассмотреть все эти фильтры и их активации, хотя они могут показаться очень сложными.

** Рисунок 2. ** * Активация высокого уровня *

CNNsне следует рассматривать как черные ящики вообще. Цейлер и все в этой удивительной статье обсуждали, что разработка лучших моделей сводится к методу проб и ошибок, если вы не понимаете, что делается внутри этих сетей. Этот документ пытается визуализировать карты объектов в ConvNets.

Способность обрабатывать различные преобразования для обобщения

ConvNetsиспользуйте poolingслои не только для уменьшения количества параметров, но также для того, чтобы иметь возможность быть нечувствительным к точному положению каждого объекта. Также их использование позволяет слоям изучать различные функции, что означает, что первые слои изучают простые низкоуровневые элементы, такие как края или дуги, а более глубокие слои изучают более сложные функции, такие как глаза или брови. Max PoolingНапример, пытается выяснить, существует ли особая особенность в особом регионе или нет. Идея poolingслоев настолько полезна, но она способна справиться с переходом среди других преобразований. Хотя фильтры в разных слоях пытаются найти разные шаблоны, например, повернутое лицо изучают, используя разные слои, чем обычное лицо,CNNsсами по себе не имеют никакого слоя для обработки других преобразований. Чтобы проиллюстрировать это, предположим, что вы хотите выучить простые лица без поворота с минимальной сеткой. В этом случае ваша модель может сделать это отлично. Предположим, что вас просят выучить все виды лиц с произвольным поворотом лица. В этом случае ваша модель должна быть намного больше, чем предыдущая изученная сеть. Причина в том, что должны быть фильтры для изучения этих вращений на входе. К сожалению, это не все преобразования. Ваш вклад также может быть искажен. Эти дела разозлили Макса Джадерберга и других . Они составили эту статью, чтобы разобраться с этими проблемами, чтобы утвердить наш гнев как свой.

Сверточные нейронные сети работают

Наконец, после обращения к этим пунктам они работают, потому что они пытаются найти шаблоны во входных данных. Они складывают их, чтобы создать абстрактные понятия с помощью слоев свертки. Они пытаются выяснить, есть ли во входных данных каждое из этих понятий или нет в плотных слоях, чтобы выяснить, к какому классу относятся входные данные.

Я добавляю несколько ссылок, которые полезны:


12

ConvNets работают, потому что они используют локальность объектов. Они делают это с разной степенью детализации, что позволяет имитировать иерархически функции более высокого уровня. Они инвариантны для перевода благодаря объединению в пулы. Они не являются инвариантными к вращению сами по себе , но обычно они сходятся к фильтрам, которые являются повернутыми версиями тех же фильтров , следовательно, поддерживают повернутые входы.

Я не знаю другой нейронной архитектуры, которая бы получала выгоду от функциональности в том же смысле, что и ConvNets.


1
Я бы сказал, что RNN выигрывают аналогично CNN, повторно используя весовые коэффициенты во временных рядах. CNN также можно считать не обязательно инвариантом перевода, а «инвариантом измерения» (хотя я не уверен, что это правильный или признанный термин)
Нил Слейтер

Спасибо за Ваш ответ. Поправьте меня, если я ошибаюсь в следующих выводах - 1. Кажется, что мы неявно разработали ConvNets для изучения иерархически функций более высокого уровня посредством объединения. Это не случайность, что особенности усложняются вверх по слоям. 2. Включение информации о предметной области в структуру нейронной сети может существенно повлиять на эффективность обучения. ConvNets и RNN пытаются это сделать.
Хвала Господу

Ваши утверждения 1 и 2 кажутся мне правильными.
17

1
Я думаю, что капсульные сети должны использовать локальность функций аналогичным образом
Дэвид Маркс,

3

Никогда не следует забывать другие компоненты в типичной ConvNet. Фильтры свертки выбирают пространственно-инвариантные объекты, такие как ребра и окружности. Эти характеристики количественно определены в пуле, который следует за уровнем C. Наконец, они подаются (обычно) в несколько полностью связанных слоев (fc). Надо отдать должное этим полностью связанным слоям, которые являются не чем иным, как тем, что вы найдете в любом обычном MLP.


3

Сверточные нейронные сети работают, потому что это хорошее расширение стандартного алгоритма глубокого обучения.

Учитывая неограниченные ресурсы и деньги, нет необходимости в сверточном, потому что стандартный алгоритм также будет работать. Тем не менее, сверточный является более эффективным, поскольку он уменьшает количество параметров . Сокращение возможно, потому что оно использует локальность объектов, именно то, что пишет @ncasas.


Это должен быть лучший ответ
Jie.Zhou

1

Известно ли, почему сверточные нейронные сети всегда заканчивают тем, что изучают все более сложные функции, когда мы поднимаемся по уровням?

Это чистая математика. Нейронная сеть, в конце концов, является большой математической функцией. И чем глубже сеть, тем больше ее функция. И под большим, я очевидно имею в виду многомерный. Изученные функции являются более сложными, потому что они являются результатом более сложных функций.

Что заставило их создать такой набор функций

Интересно, что обычные нейронные сети были вдохновлены нашей собственной, фактически кошачьей, биологией. Хьюбел и Визел провели эксперименты на зрительной коре кошек, и они поняли, что свет воспринимается стопками оптических полей. Это то, что вдохновило сверточный слой и более глубокую архитектуру.


0

Основываясь на ответах ncasas и horaceT , ConvNets очень эффективны, потому что:

  1. Они не зависят от геометрических преобразований и изучают особенности, которые становятся все более сложными и детальными, и, следовательно, являются мощными экстракторами иерархических признаков благодаря сверточным слоям.
  2. Они объединяют извлеченные элементы и агрегируют их нелинейным образом для прогнозирования выходных данных и, следовательно, являются надежными классификаторами благодаря полностью соединенным слоям.

Если вы хотите больше узнать о коннетах и ​​различных блоках, их создающих, а также об основах интуиции, вот статья, которую я недавно написал в своем личном блоге и которая содержит подробности.


3
Обратите внимание, что если вы хотите рекламировать свой собственный продукт / блог, вы должны указать свою принадлежность в ответе , в противном случае ваш ответ может быть помечен как спам. Если вы не связаны с сайтом, я рекомендую вам сказать это, чтобы предотвратить это. Пожалуйста, прочитайте Как не быть спамером
AJ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.