Как нейросети распознать неизвестный класс? (Обработка исключений)

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


Ответы (1 шт):

Автор решения: CrazyElf

По-хорошему же ваша нейросеть должна выдавать на выходе не просто два значения, например, 1 - это кошка, а 2 - это собака. Нормальный вариант - это когда на выходе у вас вероятности принадлежности к тому или иному классу. Например: "80% вероятности, что это кошка, 40% вероятности, что это собака" и дальше уже какая вероятность больше, такой конечный результат и выбирается.

Соответственно, вы можете смотреть на эти вероятности, и если нейросеть даёт вероятность и для кошки и для собаки меньше какого-то порога, то значит это какой-то другой объект, который нейросеть не смогла опознать, можно его пометить как какую-то отдельную категорию.

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

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

Обучение нейросетей это всё-таки некоторое искусство и исследовательская работа. Есть определённые рецепты на тот или иной случай, но их работоспособность нужно проверять на конкретных данных.

→ Ссылка