Задача классификации, результат отличается, когда распределение набора тестов отличается - PullRequest
0 голосов
/ 04 июня 2019

Я использую сеть для классификации изображений. Задача мультикласса (получил 12 класс)

Мой тренировочный набор состоит из 3500 изображений, класс разбалансирован (например, класс A = 1200 изображений, класс B = 50 изображений). Я использую вес класса, чтобы бороться с дисбалансом, и увеличение данных

edit увеличение данных осуществляется с помощью функции keras, выполняющей только вращение и отражение. Я только дополняю тренировочный набор

Так как у некоторых из моих классов действительно очень маленькие данные, я сделал разделенный 60% обучающий / 20% проверочный / 20% тестовый набор (то есть для класса B я получил 30 обучающих данных / 10 проверочных данных / 10 тестовых данных)

Затем я сделал другое разделение, с каждым разом различные данные обучения / проверки и тестирования Результат стабилен => моя метрика (оценка микро F1) не сильно меняется при различном разделении, а матрица путаницы показывает, что эффекта класса нет: разное разделение не означает другого результата для данного класса

Теперь я применяю свою модель к набору без метки. Около 10 000 изображений. и результат очень плохой: когда я набрал 60% оценки точности для класса B на тестовом наборе, моя точность составляет около 5% для набора без метки

Мой вопрос:

это может быть чрезмерным? Когда я прекращаю тренировку модели, потеря тренировки = 0,3 / тренировка F1 = 95%. Валидационные потери = 0,7 / валидация F1 = 80% Я так не думаю, так как потеря проверки не увеличивается (я останавливаю модель до ее увеличения)

Что я мог исследовать, чтобы понять, почему мой результат настолько плох в новом наборе с 10 000 данных (когда я говорю свой результат, я говорю о точности, поскольку это единственная метрика, которую я могу легко вычислить для некоторых классов)

1 Ответ

1 голос
/ 04 июня 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...