Я часто слышал, как люди говорили, почему сверточные нейронные сети все еще плохо поняты. Известно ли, почему сверточные нейронные сети всегда заканчивают тем, что изучают все более сложные функции, когда мы поднимаемся по уровням? Что заставило их создать такой набор функций, и будет ли это также верно для других типов глубоких нейронных сетей?
machine-learning
neural-network
deep-learning
convnet
cnn
Слава Богу
источник
источник
Ответы:
На самом деле, я думаю, что вопрос немного широк! Так или иначе.
Понимание сетей свертки
То, что изучено,
ConvNets
пытается минимизировать функцию стоимости, чтобы правильно классифицировать входные данные в задачах классификации. Все изменяемые параметры и усвоенные фильтры предназначены для достижения указанной цели.Изученные особенности в разных слоях
Они пытаются снизить затраты, изучая низкоуровневые, иногда бессмысленные, функции, такие как горизонтальные и вертикальные линии, в своих первых слоях, а затем складывают их, чтобы создать абстрактные формы, которые часто имеют значение, в своих последних слоях. Для иллюстрации этого рис. 1, который был использован отсюда , можно рассмотреть. Ввод - это шина, а группа показывает активацию после прохождения ввода через различные фильтры в первом слое. Как можно видеть, красная рамка, которая является активацией фильтра, параметры которого были изучены, была активирована для относительно горизонтальных ребер. Синяя рамка была активирована для относительно вертикальных краев. Возможно, что
ConvNets
изучите неизвестные фильтры, которые полезны, и мы, например, специалисты по компьютерному зрению, не обнаружили, что они могут быть полезны. Лучшая часть этих сетей состоит в том, что они пытаются найти соответствующие фильтры самостоятельно и не используют наши ограниченные обнаруженные фильтры. Они изучают фильтры, чтобы уменьшить количество функций стоимости. Как уже упоминалось, эти фильтры не обязательно известны.В более глубоких слоях элементы, изученные в предыдущих слоях, объединяются и образуют формы, которые часто имеют значение. В этой статье обсуждалось, что эти уровни могут иметь активации, которые являются значимыми для нас, или концепции, которые имеют значение для нас, людей, могут быть распределены среди других активаций. На рис. 2 зеленая рамка показывает активаты фильтра в пятом слое
ConvNet
, Этот фильтр заботится о лицах. Предположим, что красный заботится о волосах. Это имеет значение. Как можно видеть, есть другие активации, которые были активированы прямо в позиции типичных граней на входе, зеленая рамка - одна из них; Синяя рамка является еще одним примером этого. Соответственно, абстракция форм может быть изучена фильтром или многочисленными фильтрами. Другими словами, каждое понятие, как лицо и его компоненты, может быть распределено по фильтрам. В тех случаях, когда концепции распределены по разным слоям, если кто-то смотрит на каждый из них, они могут быть сложными. Информация распределяется между ними, и для понимания этой информации необходимо рассмотреть все эти фильтры и их активации, хотя они могут показаться очень сложными.CNNs
не следует рассматривать как черные ящики вообще. Цейлер и все в этой удивительной статье обсуждали, что разработка лучших моделей сводится к методу проб и ошибок, если вы не понимаете, что делается внутри этих сетей. Этот документ пытается визуализировать карты объектов вConvNets
.Способность обрабатывать различные преобразования для обобщения
ConvNets
используйтеpooling
слои не только для уменьшения количества параметров, но также для того, чтобы иметь возможность быть нечувствительным к точному положению каждого объекта. Также их использование позволяет слоям изучать различные функции, что означает, что первые слои изучают простые низкоуровневые элементы, такие как края или дуги, а более глубокие слои изучают более сложные функции, такие как глаза или брови.Max Pooling
Например, пытается выяснить, существует ли особая особенность в особом регионе или нет. Идеяpooling
слоев настолько полезна, но она способна справиться с переходом среди других преобразований. Хотя фильтры в разных слоях пытаются найти разные шаблоны, например, повернутое лицо изучают, используя разные слои, чем обычное лицо,CNNs
сами по себе не имеют никакого слоя для обработки других преобразований. Чтобы проиллюстрировать это, предположим, что вы хотите выучить простые лица без поворота с минимальной сеткой. В этом случае ваша модель может сделать это отлично. Предположим, что вас просят выучить все виды лиц с произвольным поворотом лица. В этом случае ваша модель должна быть намного больше, чем предыдущая изученная сеть. Причина в том, что должны быть фильтры для изучения этих вращений на входе. К сожалению, это не все преобразования. Ваш вклад также может быть искажен. Эти дела разозлили Макса Джадерберга и других . Они составили эту статью, чтобы разобраться с этими проблемами, чтобы утвердить наш гнев как свой.Сверточные нейронные сети работают
Наконец, после обращения к этим пунктам они работают, потому что они пытаются найти шаблоны во входных данных. Они складывают их, чтобы создать абстрактные понятия с помощью слоев свертки. Они пытаются выяснить, есть ли во входных данных каждое из этих понятий или нет в плотных слоях, чтобы выяснить, к какому классу относятся входные данные.
Я добавляю несколько ссылок, которые полезны:
ConvNets
источник
ConvNets работают, потому что они используют локальность объектов. Они делают это с разной степенью детализации, что позволяет имитировать иерархически функции более высокого уровня. Они инвариантны для перевода благодаря объединению в пулы. Они не являются инвариантными к вращению сами по себе , но обычно они сходятся к фильтрам, которые являются повернутыми версиями тех же фильтров , следовательно, поддерживают повернутые входы.
Я не знаю другой нейронной архитектуры, которая бы получала выгоду от функциональности в том же смысле, что и ConvNets.
источник
Никогда не следует забывать другие компоненты в типичной ConvNet. Фильтры свертки выбирают пространственно-инвариантные объекты, такие как ребра и окружности. Эти характеристики количественно определены в пуле, который следует за уровнем C. Наконец, они подаются (обычно) в несколько полностью связанных слоев (fc). Надо отдать должное этим полностью связанным слоям, которые являются не чем иным, как тем, что вы найдете в любом обычном MLP.
источник
Сверточные нейронные сети работают, потому что это хорошее расширение стандартного алгоритма глубокого обучения.
Учитывая неограниченные ресурсы и деньги, нет необходимости в сверточном, потому что стандартный алгоритм также будет работать. Тем не менее, сверточный является более эффективным, поскольку он уменьшает количество параметров . Сокращение возможно, потому что оно использует локальность объектов, именно то, что пишет @ncasas.
источник
Известно ли, почему сверточные нейронные сети всегда заканчивают тем, что изучают все более сложные функции, когда мы поднимаемся по уровням?
Это чистая математика. Нейронная сеть, в конце концов, является большой математической функцией. И чем глубже сеть, тем больше ее функция. И под большим, я очевидно имею в виду многомерный. Изученные функции являются более сложными, потому что они являются результатом более сложных функций.
Что заставило их создать такой набор функций
Интересно, что обычные нейронные сети были вдохновлены нашей собственной, фактически кошачьей, биологией. Хьюбел и Визел провели эксперименты на зрительной коре кошек, и они поняли, что свет воспринимается стопками оптических полей. Это то, что вдохновило сверточный слой и более глубокую архитектуру.
источник
Основываясь на ответах ncasas и horaceT , ConvNets очень эффективны, потому что:
Если вы хотите больше узнать о коннетах и различных блоках, их создающих, а также об основах интуиции, вот статья, которую я недавно написал в своем личном блоге и которая содержит подробности.
источник