Вопрос или проблема
Когда я работаю с несбалансированным набором данных, меня учили делать оверсэмплинг только для обучающей выборки, а не для всего набора данных, чтобы избежать переобучения, однако это касалось структурированных текстовых данных в pandas с использованием простых моделей из sklearn. Остаётся ли это актуальным для наборов данных изображений, которые будут обучаться на CNN? Я пытаюсь делать оверсэмплинг только для обучающих данных, применяя аугментации к изображениям. Однако, по какой-то причине, у меня появляется точность обучения 1.0 и точность валидации 0.25 уже на первой эпохе, и эти цифры не сильно изменяются с прогрессом эпох, что для меня кажется странным. Нужно ли применять оверсэмплинг ко всему набору данных и нужно ли применять аугментации изображений только к новым данным или ко всем изображениям?
Мой набор данных состоит из RGB изображений ландшафтов с 7 разными классами, всего около 29 тысяч изображений. Делая разбиение 70-15-15, есть примерно 20 тысяч обучающих примеров до оверсэмплинга.
Маловероятно, что вам следует делать оверсэмплинг в любом из этих случаев. Почти вся мотивация для оверсэмплинга связана с оценкой моделей по точности классификации. Хотя поначалу привлекательность точности классификации кажется очевидной, она оказывается весьма проблематичной и скрывает множество предположений, которые могут быть, и часто являются, ужасно неподходящими. (Метрики как чувствительность, специфичность и $F_1$ страдают от тех же самых проблем.)
Корректные статистические методы, оценивающие непрерывные прогнозы моделей, которые часто интерпретируются как вероятность, обеспечивают гораздо более полную информацию, чем классификации, и такие методы минимально сталкиваются с проблемой дисбаланса классов. (Интересный ответ на связанный вопрос о дисбалансе классов и оверсэмплинге на самом деле является вопросом экспериментального дизайна.) Стандартные примеры таких статистических методов включают оценку кросс-энтропийной потери или счёта Браера.
Оверсэмплинг всё ещё должен применяться только к обучающим данным, даже для наборов данных на основе изображений. Причина этого та же, что и для структурированных данных: вы хотите избежать утечки информации из тестового/валидационного набора в обучающий, что может привести к переобучению.
Проблема, с которой вы сталкиваетесь, когда точность обучения равна 1.0 и точность валидации 0.25 с первой эпохи, может быть связана с несколькими причинами:
-
Переобучение: если вы делаете слишком много оверсэмплинга, ваша модель может переобучаться на обучающие данные. Это объясняет, почему точность обучения идеальна, но точность валидации низкая.
-
Утечка данных: если есть какое-либо совпадение между вашими обучающими и валидационными наборами, ваша модель может запоминать обучающие данные, что приводит к высокой точности обучения и низкой точности валидации.
-
Некорректный валидационный набор: если ваш валидационный набор не представляет ваш обучающий набор, ваша модель может плохо работать на нём, даже если она хорошо работает на обучающих данных.
-
Сложность модели: если ваша модель слишком сложна, она может переобучаться на обучающие данные. Попробуйте использовать более простую модель или добавить регуляризацию, чтобы предотвратить переобучение.
Что касается аугментаций изображений, их следует применять к новым данным, полученным в результате оверсэмплинга. Цель аугментаций — создать новые, слегка отличающиеся версии ваших существующих изображений для увеличения разнообразия ваших обучающих данных и предотвращения переобучения. Применение аугментаций ко всем вашим данным, включая оригинальные изображения, может привести к переобучению, так как ваша модель может научиться распознавать конкретные аугментации вместо основных паттернов в изображениях.
Ответ или решение
Классовый дисбаланс в наборах данных изображений является распространенной проблемой, особенно при использовании глубоких нейросетей, таких как сверточные нейронные сети (CNN). В вашем случае, где вы работаете с RGB изображениями пейзажей, представленными семью классами, важно правильно подходить к обработке данных для обучения модели без переобучения и максимального использования ваших ресурсов данных.
Проблема баланса классов
Наборы данных с неравномерным распределением классов могут привести к тому, что модель будет предвзята в сторону доминирующего класса, что ухудшает точность классификации для меньшинства классов. В таких случаях важно использовать методы обработки данных, которые помогают сбалансировать данные в обучающей выборке.
Применение оверсамплинга и аугментации
-
Оверсамплинг только для обучающих данных:
- Почему только обучающие данные? Применяя техники оверсамплинга и аугментации только к обучающим данным, вы избегаете утечки информации из тестового и валидационного наборов, что может привести к переобучению. Вашей целью должно быть создание модели, которая хорошо обобщается на невидимые данные.
-
Аугментация изображений:
- Что аугментировать? Аугментация должна применяться как к оригинальным, так и к оверсамплированным данным. Это позволит увеличить разнообразие ваших обучающих данных, помогая модели научиться более обобщенным признакам, а не специфическим к определенным трансформациям.
-
Причины школьного разрыва в метриках:
- Переобучение: Высокая точность на обучающих данных и низкая на валидации может указывать на то, что модель слишком сложна либо имеет недостаточную регуляризацию.
- Утечка данных: Перекрытие между обучающим и тестовым наборами может привести к неверной интерпретации результатов. Убедитесь, что наборы данных правильно распределены, без пересечений.
- Неправильная валидация: Валидационная выборка должна быть репрезентативной, чтобы результаты имели практическую пользу.
Стратегии улучшения результатов
- Регуляризация: Применение методов регуляризации, таких как дропаут или L2-регуляризация, может помочь уменьшить переобучение.
- Оптимизация гиперпараметров: Подбор правильных параметров обучения, таких как скорость обучения или архитектура сети, может существенно улучшить общую производительность модели.
- Использование продвинутых метрик: Оценка модели по более сложным метрикам, чем простая точность, например, по кросс-энтропии или метрике F1, часто дает более достоверное представление о ее потенциальных возможностях.
Соблюдение описанных практик и стратегий поможет вашей модели более эффективно справляться с проблемой классового дисбаланса и повысить точность валидации, несмотря на начальное успешное обучение на оверсамплированных данных.