Вопрос или проблема
Моя задача следующая:
Вводить комбинации лекарств и выводить симптомы, связанные с почечной недостаточностью, из этих комбинаций.
Как комбинации лекарств, так и симптомы, связанные с почечной недостаточностью, представлены в виде кодированного методом one-hot вектора (например, человек, у которого наблюдаются симптомы 1 и 3 из 4 возможных, представлен как [1,0,1,0]
).
На данный момент я пропускал данные через следующие модели, и они произвели этот интересный график. Левый график показывает потери на обучении и валидации моделей по эпохам, а правый график отображает точность на обучении и валидации по эпохам.
Почти ясно из левого графика, что в базовой модели происходит переобучение, так как потери на обучении уменьшаются, а потери на валидации увеличиваются по эпохам. Однако график точности на графике свидетельствует о том, что точность на валидации продолжает улучшаться, несмотря на увеличение потерь на валидации.
После добавления dropout и L2 регуляризации (Baseline Reg), потери на валидации не увеличиваются так сильно, что, кажется, решает проблему переобучения, но точность становится очень нестабильной и в среднем хуже, чем в базовой модели.
Вопрос следующий:
Верна ли моя интуиция, что результаты обеих моделей показывают переобучение и стоит ли продолжать попытки уменьшить этот эффект?
Заранее спасибо!
Архитектура моделей приведена ниже:
Model: "baseline"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_6 (Dense) (884, 800) 603200
_________________________________________________________________
dense_7 (Dense) (884, 800) 640800
_________________________________________________________________
dense_8 (Dense) (884, 4) 3204
=================================================================
Total params: 1,247,204
Trainable params: 1,247,204
Non-trainable params: 0
_________________________________________________________________
Model: "baseline_reg"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_9 (Dense) (884, 800) 603200
_________________________________________________________________
dropout (Dropout) (884, 800) 0
_________________________________________________________________
dense_10 (Dense) (884, 800) 640800
_________________________________________________________________
dense_11 (Dense) (884, 4) 3204
=================================================================
Total params: 1,247,204
Trainable params: 1,247,204
Non-trainable params: 0
_________________________________________________________________
Точность — не самый полезный способ оценки мульти-лейбл классификации, что может приводить к вашим непоследовательным результатам. Учитывая важность области, метрика точного соответствия может быть более подходящей для оценки.
Ответ или решение
Многоэтикеточная классификация и проблема переобучения: анализ и подходы
Задача, описанная вами, заключается в предсказании симптомов, связанных с почечной недостаточностью, на основе комбинаций лекарств, причем и комбинации, и симптомы представлены в виде one-hot кодирования. Главной целью является успешное обучение модели, которая сможет эффективно обрабатывать такие многомерные входные данные и выдавать точные результаты.
В анализируемых вами моделях наблюдаются классические признаки переобучения. На графике слева во время обучения базовой модели видим, как обучающая ошибка уменьшается, а валидационная ошибка возрастает. Это свидетельствует о том, что модель слишком сильно подстраивается под тренировочные данные и теряет способность к обобщению на новых данных. Примечательно, что, несмотря на растущую валидационную ошибку, валидационная точность продолжает расти. Это может быть связано с тем, что метрика точности не всегда точно отражает качество модели в многомерных задачах классификации, где более уместным будет использовать метрику точного совпадения.
С добавлением Dropout и L2-регуляризации в модифицированную модель (Baseline Reg) ситуация с валидационной ошибкой улучшилась, что указывает на снижение переобучения. Тем не менее, точность в целом стала более нестабильной, что может указывать на необходимость дополнительной настройки гиперпараметров регуляризации для нахождения баланса между смещением и разбросом.
Ваши предположения относительно переобучения в обоих моделях обоснованы. Продолжение работы в данном русле может включать следующие шаги:
-
Альтернативные Метрики: Примените метрики, лучше подходящие для многоэтикеточных задач, такие как F1-мера или метрика точного совпадения, чтобы получить более полное представление о качестве модели.
-
Улучшение Архитектуры: Может быть полезно исследовать более усложненные архитектуры, такие как сверточные нейронные сети или рекуррентные сети, которые способны лучше улавливать сложные паттерны в данных.
-
Реализация Дополнительных Техник Регуляризации: Помимо Dropout и L2-регуляризации, рассмотрите использование Batch Normalization или датасетов увеличенного размера для снижения переобучения.
-
Тонкая Настройка Гиперпараметров: Примените методы поиска, такие как сеточный или случайный поиск, для оптимизации гиперпараметров, включая коэффициенты регуляризации и размер слоя Dropout.
-
Аугментация Данных: Если возможно, увеличьте количество данных, что поможет модели в обучении на более обширном наборе ситуаций, уменьшив риск переобучения.
Эти шаги могут помочь вам в достижении более надежной и обобщающей модели для решения вашей задачи. Уделяя внимание каждому аспекту, вы увеличите вероятность успешного развертывания модели в реальных приложениях.