Каким образом полезны выходные данные слоев нейронной сети?

В настоящее время я работаю с keras и хочу визуализировать вывод каждого слоя. При наличии визуализации слоя вывода нейронных сетей, как в приведенном ниже примере, который предназначен для распознавания рукописного номера MNIST.

  1. Какую информацию или понимание исследователь получает из этих изображений?
  2. Как интерпретируются эти изображения
  3. Если бы вы выбрали просмотр вывода слоя, каковы ваши критерии выбора?

Любые комментарии или предложения с благодарностью. Спасибо.

введите здесь описание изображения


person matchifang    schedule 15.02.2017    source источник
comment
Не могли бы вы предоставить более подробную информацию о сети, которую вы используете, и изображениях, которые вы представили?   -  person Marcin Możejko    schedule 03.03.2017
comment
Спасибо за ваш комментарий. Предположим, я пытаюсь классифицировать рукописный ввод чисел с помощью предварительно обученной модели VGG16 и ввожу изображение рукописного числа размером 32x32. Изображение выше — это выходные данные, скажем, для слоя 10. Какую информацию или сведения о слое 10 я получу, увидев выходные данные для этого слоя? Я не уверен, поможет ли это... если нет, дайте мне знать, какую еще информацию я могу предоставить.   -  person matchifang    schedule 04.03.2017


Ответы (1)


Предисловие. Сверточная сеть — это набор фильтров, применяемых к частям изображения (шаги, которые видны на картинке). Они производят метки true/false, если данный подраздел изображения соответствует фильтру.

Шагая CNN

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

Вот лучшее представление о том, как могут выглядеть основные фильтры сети. Некоторые из них будут срабатывать по прямым линиям, другие — по горизонтальным. Это также то, что показывает изображение, которое вы связали, за исключением того, что оно делает это для всего изображения на визуально простом объекте, что немного затрудняет понимание. Когда вы доберетесь до более сложных фильтров, которые строятся поверх этих базовых фильтров, вам может быть лучше визуализировать все изображение.

Простые сверточные фильтры

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

Исследователь сможет лучше интерпретировать, как каждый слой в сети строится на предыдущих слоях и как они способствуют решению поставленной задачи. Это часто основано на интуиции (которую можно упростить с помощью хороших визуализаций, таких как это видео с набором инструментов для глубокой визуализации< /а>)

В качестве примера предположим, что я использую VGG16, так называется общая модель, обученная на image-net. Я хочу изменить его, чтобы классифицировать отдельные категории мебели вместо 1000 классов совершенно разных вещей, для которых он изначально предназначался. Поскольку это такая общая модель, она может распознавать множество разных вещей, от людей до животных, машин и мебели. Но для меня не имеет смысла налагать штраф за производительность за многие из этих вещей, поскольку они на самом деле не помогают мне классифицировать мою мебель.

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

Насколько мне известно, люди визуализируют столько слоев, сколько сочтут полезными, а затем обычно принимают решение, основанное на инстинкте, какие слои оставить после этого, а какие выбросить.

Изображения заимствованы из:

Визуализация того, что узнают ConvNets

Интуитивное объяснение сверточных нейронных сетей

person NegatioN    schedule 04.03.2017
comment
Спасибо за ваш ответ. Сейчас я визуализирую карты объектов. На самом деле, я хотел узнать, какую информацию можно извлечь из визуализации карт объектов — возможно, у вас есть ответ и на этот вопрос? Кроме того, как вы думаете, было бы полезнее визуализировать фильтры, а не карты объектов? Извиняюсь, если вопрос глупый. Я совсем новичок в нейронных сетях. - person matchifang; 04.03.2017
comment
Завтра могу добавить немного информации. Но ваша карта характеристик — это, по сути, готовый результат одного из ваших фильтров. То, что вы визуализируете, немного зависит от того, что вы пытаетесь понять. Я бы сказал, визуализируйте фильтры, если вы пытаетесь понять концепции и то, как работают CNN. Но для практической работы вы должны визуализировать карты функций, которые вы получаете из фильтров/слоев. Я очень рекомендую посмотреть видео, которое я включил. Он довольно хорошо показывает, как эти карты характеристик/фильтры взаимодействуют друг с другом. - person NegatioN; 04.03.2017