Почему кривые потерь для обучения и валидации расходятся?
Задать вопрос
Запрошено 4 года 11 месяцев назад
Изменено сегодня
Просмотрено 1к раз
Запрошено 4 года 11 месяцев назад
Я обучал модель CNN на TensorFlow. Через некоторое время вернулся и увидел такую кривую потерь:
Зелёная линия — это потери при обучении, а серая — потери при валидации. Я знаю, что до эпохи 394 модель сильно переобучена, но не понимаю, что произошло после этого.
Также вот графики точности, если они помогут:
Использую категориальную кросс-энтропию, а вот сама модель:
и ссылка на задачу от PhysioNet, над которой я работаю:
https://physionet.org/content/challenge-2017/1.0.0/
свёрточные нейронные сети обучение переобучение потеря
Поделиться Улучшить этот вопрос Следить Изменён 14 июня 2022 г., в 16:07 Kroshtan 259 1 серебряный знак отличия 10 бронзовых знаков отличия задан 14 дек. 2020 г., в 9:30 Sepehr Golestanian 316 6 бронзовых знаков отличия $\endgroup$
8
Возможно, стоит немного подробнее описать контекст задачи, которую вы решаете с помощью CNN (например, какой набор данных используете), какую функцию потерь применяете, возможно, стоит выполнить plot_model(your_model) и привести архитектуру вашей модели.
— nbro ♦
Комментировано 14 декабря 2020 г., в 10:22
Я пытаюсь классифицировать сигналы ЭКГ из набора данных конкурса PhysioNet 2017. На выходе четыре класса, использую категориальную кросс-энтропию как функцию потерь.
— Sepehr Golestanian
Комментировано 14 декабря 2020 г., в 10:35
Пожалуйста, обновите ваш пост, включив эти детали (возможно, также добавьте ссылку на конкурс).
— nbro ♦
Комментировано 14 декабря 2020 г., в 10:39
Обновил вопрос.
— Sepehr Golestanian
Комментировано 14 декабря 2020 г., в 10:59
Зачем вы используете CNN для классификации сигналов ЭКГ? Ведь сигналы ЭКГ – это просто числовые временные ряды?
— nbro ♦
Комментировано 14 декабря 2020 г., в 11:08
Показать ещё 3 комментария
Ответы
Сортировка по: Сбросить настройки
Наибольшее количество баллов (по умолчанию) Дата изменения (последняя сначала) Дата создания (самая старая сначала)
0
Следуя этому ответу с StackOverflow, полагаю, ваша проблема связана со вторым случаем, когда значение потерь становится неопределённым (NaN). Возможно, вам следует попробовать использовать более крупный тип данных (например, перейти с float16 на float32).
— CuCaRot
Отвечено 14 декабря 2020 г., в 10:17
Поскольку я использую встроенную в Tensorflow категориальную кросс-энтропию, думаю, команда разработчиков Tensorflow позаботилась о предотвращении появления значений NaN. Кстати говоря, может ли регуляризация помочь в данной ситуации или лучше применить ограничения весов?
— Sepehr Golestanian
Комментировано 14 декабря 2020 г., в 10:45
Чтобы сделать окончательный вывод, нужно глубже погрузиться в код Tensorflow. Что касается второго вопроса, то да, регуляризация помогает решить проблему переобучения; судя по графику, до эпохи 394 точность валидации стабильна, следовательно, можно сказать, что у вас наблюдается переобучение.
— CuCaRot
Комментировано 14 декабря 2020 г., в 11:28
Большое спасибо, попробую и сообщу результат!
— Sepehr Golestanian
Комментировано 14 декабря 2020 г., в 12:51
@SepehrGolestanian Почему вы приняли данный ответ? В чём заключалась конечная проблема?
— nbro ♦
Комментировано 15 декабря 2020 г., в 17:51
@nbro Похоже, вы администратор сообщества, замечаю, что вы тщательно редактируете почти все посты и задаёте очень подробные вопросы :smile:
— CuCaRot
Комментировано 16 декабря 2020 г., в 1:35
Показать ещё 6 комментариев
0
Вам необходимо удерживать постоянное значение потерь при обучении. Если это невозможно, значит используемый вами метод обучения или архитектура сети не подходят под поставленную задачу. Рекомендую рассмотреть использование многослойного перцептрона (MLP).
— fkybrd
Отвечено 11 марта 2023 г., в 21:12
← Вернуться к списку
Почему кривые потерь обучения и валидации расходятся?
Краткое содержание
Я обучал CNN модель на TensorFlow. Через некоторое время вернулся и увидел эту кривую потерь: Зеленая кривая – это тренировочная потеря, а серая – валидационная. Я знаю, что до эпохи 394 модель сильно переобучена, но я не представляю, что произошло после этого. Также, это кривые точности, если это поможет: Я использую категориальную кросс-энтропию, и вот какая у меня модель: и вот ссылка на челлендж PhysioNet, над которым я работаю: https://physionet.org/content/challenge-2017/1.0.0/