Этот Double U-Net переобучается?

Вопрос или проблема

Я работаю над проектом для получения степени бакалавра, используя глубокое обучение. В настоящее время я пытаюсь улучшить модель, модифицируя её. Модель — Double U-Net, а используемый мной набор данных — DRIVE. Он состоит из 20 изображений. Моя проблема в том, что оценка валидации больше не увеличивается. Я думаю, что проблема в переобучении, и также я слышал, что это максимальный потенциал сети, поэтому я должен попробовать другой набор данных или модель. Данные разделены на 80% обучение и 10% валидация. Как я могу улучшить результат?

Что я пробовал:

-Добавил ещё одну сеть U-Net
-Использовал размер фильтров (128, 64, 32, 16)
-Использовал размер фильтров (64, 32, 16, 8)
-Функция потерь BinaryCrossEntropy
-Добавил dropout на выходах энкодеров со значением 0.5
-Добавил симметричное увеличение сверху, слева, справа и снизу для изображений, так что общее количество увеличений составляет 25

Аугментации (вверху слева — оригинальное изображение):
enter image description here

Результаты:

enter image description here
enter image description here
enter image description here
enter image description here
enter image description here
enter image description here

U-Net не переобучается, просто графики обучения не сглажены. Это дрожание на графиках обучения можно устранить, настроив скорость обучения модели.

.

Ответ или решение

Проблема, с которой вы сталкиваетесь в проекте глубокого обучения, заключается в том, что ваши результаты валидации не улучшаются, несмотря на внесенные изменения в модель Double U-Net при использовании датасета DRIVE. Давайте детально рассмотрим, возможна ли проблема переобучения и какие шаги можно предпринять для улучшения результатов.

Теория

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

Пример

Сначала оценим, что уже было сделано:

  1. Модель: Вы использовали Double U-Net — улучшенную архитектуру для сегментации, которая теоретически должна давать более высокие результаты за счет использования двух сетей U-Net.

  2. Параметры сети: Попытка изменения количества фильтров (например, 128, 64, 32, 16 и 64, 32, 16, 8).

  3. Аугментации: Использование симметричных аугментаций для увеличения объема данных с 20 изображений до 25. Это незначительное увеличение, учитывая небольшое исходное количество данных.

  4. Регуляризация: Добавление dropout со значением 0.5, что, в общем случае, снижает переобучение.

  5. Функция потерь: Использование Binary CrossEntropy для задачи бинарной сегментации.

  6. Обучение: Разделение данных на 80% тренировки и 10% теста, что указывает на ограниченное количество данных для обучения.

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

Применение

Советы по улучшению модели и расширению данных:

  1. Увеличение датасета: Поиск или создание дополнительных данных для тренировки. 20 изображений для обучения в глубоких моделях зачастую слишком мало для достижения отличных результатов. Попробуйте использовать другие открытые датасеты с аналогичными характеристиками (например, STARE или CHASE_DB1) или сгенерируйте свои собственные данные, если это возможно.

  2. Дополнительные аугментации: Помимо симметричных, добавьте ротирование, изменение освещенности, контраста, масштабирование, случайное обрезание и другие техники аугментации. Используйте библиотеки, такие как Albumentations, для расширенных возможностей аугментации.

  3. Изменение архитектуры модели: Возможно, Double U-Net излишне сложен для столь малого объёма данных. Попробуйте уменьшить количество уровней или использовать базовый U-Net для сравнения.

  4. Тонкая настройка гиперпараметров:

    • Регулировка скорости обучения. Как вы верно упомянули, неспокойные графики потерь могут указывать на необходимость изменения learning rate.
    • Использование адаптивных методов, таких как Adam или RMSprop.
  5. Раннее завершение обучения (Early Stopping): Позволяет остановить обучение при обнаружении переобучения (когда потери на валидации начинают расти).

  6. Контроль за переобучением: Внедрение L2 регуляризации, увеличение значения dropout, использование batch normalization.

  7. Перепроверка имплементации: Убедитесь, что используемые метрики и потери правильно реализованы и не содержат ошибок.

  8. Энсемблирование моделей: Объединение нескольких моделей, обученных с различными гиперпараметрами, для получения более стабильного и надежного прогноза.

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

Каждый из этих шагов может оказать существенное влияние на результаты вашей модели и исправить потенциальные проблемы с переобучением и недостаточной генерализацией. Ваша настойчивость и желание экспериментировать с различными аспектами моделей и данных уже говорят о правильном походе к научным исследованиям. Удачи в реализации вашего проекта!

Оцените материал
Добавить комментарий

Капча загружается...