2016-01-14 1 views
6

если я тренирую глубокую нейронную сеть с (скажем) 10 классами, и я передаю сети совершенно другое изображение, разумно ли ожидать, что выход слои слоя не активируют много, поэтому я буду знать, что нет объектов обученных классов в изображении?Машиноведение: как определить, нет ли объекта обученных классов в изображении

В моей интуиции говорится: «Да», но так ли? И какой был бы лучший подход к этому?

Благодаря

+0

Пороговое значение выходного слоя (класс класса «крыло») является разумным. Если вы делаете этот путь, вы можете настроить порог, измеряя точность и отзыв. –

ответ

6

Во время подконтрольного обучения вы обычно предполагают, что в процессе обучения вы получите полное представление о будущих типов объектов. Как правило - это все помеченные экземпляры. В вашем случае - есть и «шум» экземпляры, таким образом, есть в основном два основных подхода:

  • многоцелевых класса нейронная сеть имеет выходные нейроны K, каждый из которых представляет вероятность того, чтобы быть членом определенного класса, вы можете просто условиться, что этот дистрибутив говорит, что новый объект не принадлежит ни одному из них. Один конкретный подход состоит в том, чтобы проверить, является ли min(p(y|x))<T (где p (y | x) является активацией выходного нейрона) для некоторого порога T. Вы можете либо установить это значение вручную, либо путем анализа ваших «шумовых» экземпляров (у вас есть некоторые для обучения). Просто передайте их через свою сеть и сравните, какое значение T дает вам максимальную скорость распознавания.
  • Добавьте еще один классный классификатор (детектор аномалий) перед вашей сетью - так что вы получите последовательность из двух классификаторов, сначала сможете распознать, если это шум или элемент любых из ваших классов (обратите внимание, что это может быть обучено, не имеющим доступ к образцам шума см один класс классификации или обнаружения аномалий методов.

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

+0

Очень полезно, спасибо. Я склоняюсь к вашему второму подходу! – mathetes

3

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

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

Это текущая область исследований - пожалуйста, просмотрите эту веб-страницу Open Set Recognition для получения большого количества ресурсов на эту тему.