Интерпретация потери достоверности поезда нейронной сети - PullRequest
0 голосов
/ 01 октября 2018

Я обучил LSTM модель для прогнозирования временных рядов.Я использовал метод ранней остановки с терпением в 150 эпох.Я использовал dropout из 0,2, и это график потери поезда и проверки: enter image description here

Метод ранней остановки останавливает тренировку после 650 эпох и сохраняетлучший вес в эпоху 460, где потеря валидации была лучшей.

Мой вопрос: нормально ли, что потеря поезда всегда выше потери валидации?Я знаю, что если бы это было наоборот (потеря проверки над поездом), это было бы признаком переоснащения.Но как насчет этого случая?

РЕДАКТИРОВАТЬ : Мой набор данных - это временной ряд с часовой временной частотой.Он состоит из 35000 экземпляров.Я разделил данные на 80% и 20% проверки, но во временном порядке.Так, например, тренинг будет содержать данные до начала 2017 года и проверку данных с 2017 года до конца.Я создал этот график, усредняя данные за 15 дней, и вот результат: enter image description here

Так что, возможно, причина в том, что вы сказали, что данные проверки имеют более простой шаблон.Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Обычно верно обратное.Но так как вы используете drop out , обычно потери при проверке меньше, чем при обучении. И, как и другие, предложили попробовать перекрестную проверку в k-кратном порядке

0 голосов
/ 01 октября 2018

В большинстве случаев потери при проверке должны быть выше, чем потери при обучении, поскольку метки в наборе обучения доступны для модели.Фактически, одна хорошая привычка обучать новую сеть - использовать небольшое подмножество данных и посмотреть, может ли потеря обучения сходиться к 0 (полностью соответствует обучающему набору).Если нет, это означает, что эта модель как-то некомпетентна для запоминания данных.

Давайте вернемся к вашей проблеме.Я думаю, что наблюдение, что потеря проверки меньше, чем потеря обучения, случается. Но это возможно не из-за вашей модели, а из-за того, как вы разбиваете данные. Учтите, что в наборе данных есть два типа паттернов (A и B).Если вы разделите таким образом, чтобы обучающий набор содержал как шаблон A, так и шаблон B, в то время как небольшой набор проверки содержит только шаблон B. В этом случае, если B легче распознать, вы можете получить более высокую потерю обучения.

В более экстремальном примере шаблон А почти невозможно распознать, но в наборе данных их всего 1%.И модель может распознавать весь шаблон B. Если набор проверки имеет только шаблон B, тогда потери при проверке будут меньше.

Как уже упоминалось alex, использование K-fold является хорошим решением, чтобы убедиться, что каждыйОбразец будет использоваться как для проверки, так и для обучения.Кроме того, распечатка путаницы, чтобы удостовериться, что все этикетки относительно сбалансированы, является еще одним методом, который нужно попробовать.

...