Превышение тренировочных данных, но улучшение тестовых данных - PullRequest
1 голос
/ 07 ноября 2019

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

Проблема хорошо демонстрируется при использовании пространства с архитектурой CNN, в которойЯ получаю следующие результаты

ITER    LOSS      P       R       F      TF  
 0      29.305  0.733   0.342   0.466   0.525
 1      10.410  0.811   0.443   0.573   0.650
 2      4.361   0.722   0.548   0.623   0.757
 3      2.265   0.764   0.563   0.648   0.811
 4      1.449   0.748   0.613   0.674   0.877

TF - это оценка f1 для данных о поезде.

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

Я пробовал число вариантов регуляризации, включая варьирующиеся отсев, снижение веса, L2, но ни один не кажетсячтобы не запоминать части обучающих данных и все хуже работать на тестовом наборе.

Проблема не уникальна для spacy и для подхода, которому я следовал, это также происходит с scikit и моделями с меньшим количеством параметров.

Набор данных в ханd - это небольшой набор данных из менее чем 2000 примеров, который является задачей классификации текста по нескольким меткам. Некоторые метки имеют менее 100 примеров, но при проверке того, где происходит наложение, все метки, кажется, затрагиваются одинаково.

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

1 Ответ

0 голосов
/ 08 ноября 2019

Чтобы уточнить, ваша функция потерь всегда рассчитывается на тренировочном наборе, и, таким образом, на тренировочном наборе может произойти переоснащение. Чтобы наблюдать, есть ли переоснащение, используйте набор DEV (который не должен быть частью обучающего набора). В конце каждой эпохи рассчитывайте потери на тренировочном наборе и дев-наборе отдельно. Функция снижения потерь на dev-set показывает хорошую подгонку модели. В то время как растущие потери показывают переоснащение. (Вы можете использовать раннюю остановку в этот момент, с некоторым терпением. Но всегда можно использовать контрольную точку, чтобы сохранить вес выполнения наилучшего). И количество эпох, необходимое для сближения, зависит от скорости обучения, поэтому для более низкой скорости обучения может потребоваться много эпох для подбора модели.

...