В большинстве случаев потери при проверке должны быть выше, чем потери при обучении, поскольку метки в наборе обучения доступны для модели.Фактически, одна хорошая привычка обучать новую сеть - использовать небольшое подмножество данных и посмотреть, может ли потеря обучения сходиться к 0 (полностью соответствует обучающему набору).Если нет, это означает, что эта модель как-то некомпетентна для запоминания данных.
Давайте вернемся к вашей проблеме.Я думаю, что наблюдение, что потеря проверки меньше, чем потеря обучения, случается. Но это возможно не из-за вашей модели, а из-за того, как вы разбиваете данные. Учтите, что в наборе данных есть два типа паттернов (A и B).Если вы разделите таким образом, чтобы обучающий набор содержал как шаблон A, так и шаблон B, в то время как небольшой набор проверки содержит только шаблон B. В этом случае, если B легче распознать, вы можете получить более высокую потерю обучения.
В более экстремальном примере шаблон А почти невозможно распознать, но в наборе данных их всего 1%.И модель может распознавать весь шаблон B. Если набор проверки имеет только шаблон B, тогда потери при проверке будут меньше.
Как уже упоминалось alex, использование K-fold является хорошим решением, чтобы убедиться, что каждыйОбразец будет использоваться как для проверки, так и для обучения.Кроме того, распечатка путаницы, чтобы удостовериться, что все этикетки относительно сбалансированы, является еще одним методом, который нужно попробовать.