Несколько простых вопросов, касающихся обучения CNN

Я читал, что при использовании CNN у нас должно быть примерно одинаковое количество выборок на класс. Я выполняю бинарную классификацию, обнаруживая пешеходов на заднем плане, поэтому 2 класса - это пешеходы и фон (на самом деле все, что не является пешеходом).

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

1) Будет ли это нормально?

2) Если нет, то как мне решить эту проблему?

3) И каковы последствия обучения CNN с большим количеством отрицательных, чем положительных образцов?

4) Если отрицательных образцов больше, чем положительных, существует ли максимальный предел, который я не должен превышать? Как для например. У меня не должно быть в 3 раза больше отрицательных образцов, чем положительных.

5) Я могу увеличить свои положительные сэмплы за счет дрожания, но сколько дополнительных сэмплов на изображение я должен создать? Есть ли «слишком много»? Например, если я начну с 2000 положительных образцов, сколько дополнительных образцов будет слишком много? Генерация в общей сложности 100 000 сэмплов из 2 000 сэмплов с помощью дрожания слишком велика?


person Kong    schedule 04.07.2016    source источник


Ответы (1)


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

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

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

Но если фаза обучения вашего классификатора не длится слишком долго, вы можете найти хороший компромисс между этими двумя методами. Вы можете установить коэффициент умножения (например, если вы увеличите количество выборок в 2, 3 или n раз) в качестве метапараметра и оптимизировать его значение, например. используя схему поиска по сетке.

person Marcin Możejko    schedule 04.07.2016