2017-02-15 5 views
2

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

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

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

enter image description here

+0

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

+0

Спасибо за ваш комментарий. Предположим, я пытаюсь классифицировать почерк цифр с использованием предварительно подготовленной модели VGG16, и я вводил 32x32 изображение рукописного номера. Изображение выше - это выход, например, для слоя 10, какую информацию или представление о слое 10 я получаю от просмотра вывода для этого слоя? Я не уверен, поможет ли это. Если нет, сообщите мне, какую другую информацию я могу предоставить. – matchifang

ответ

3

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

Striding CNN

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

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

Simple convolutional filters

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

Исследователь лучше сможет интерпретировать, как каждый слой сети основывается на предыдущих слоях и как они способствуют решению проблемы. Это часто основывается на кишечнике-чувство (которое может быть упрощено хорошими визуализации, такие как этот deep visualization toolbox video)

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

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

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

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

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks

+0

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

+0

Завтра я могу добавить дополнительную информацию. Но ваша функциональная карта - это, по сути, готовый вывод одного из ваших фильтров. То, что вы визуализируете, немного зависит от того, что вы пытаетесь понять. Я бы сказал, визуализировать фильтры, если вы пытаетесь понять концепции и как работают CNN. Но для практической работы вы визуализировали бы функциональные карты, которые вы получаете из фильтров/слоев. Я очень рекомендую посмотреть видео, которое я включил. Он довольно хорошо показывает, как эти функциональные карты/фильтры взаимодействуют друг с другом. – NegatioN