Лучший способ преодолеть раннюю конвергенцию для модели машинного обучения - PullRequest
0 голосов
/ 03 мая 2019

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

В наборе данных имеется около 50 входных переменных, и у меня есть 65 000 записей в наборе данных.

В настоящее время я использую RNN с одним скрытым слоем с 35 узлами в скрытом слое.Я использую NLLLoss от PyTorch в качестве функции потерь и Adaboost для функции оптимизации.Я пробовал много разных скоростей обучения, и 0,01, кажется, работает довольно хорошо.

После пробежки в течение 150 эпох, я замечаю, что начинаю сходиться с точностью около 0,80 для моих тестовых данных.Однако я бы хотел, чтобы это было еще выше.Тем не менее, кажется, что модель застревает колеблется вокруг какого-то седла или локального минимума.(График этого ниже)

Каковы наиболее эффективные способы выбраться из этой «долины», в которой модель застряла?

test loss is in red, training loss in blue

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Ваш вопрос немного двусмысленный, поскольку вы упомянули RNN с одним скрытым слоем.Также, не зная всей архитектуры нейронной сети, сложно сказать, как вы можете внести улучшения.Итак, я хотел бы добавить несколько моментов.

  • Вы упомянули, что вы используете «Adaboost» в качестве функции оптимизации, но PyTorch не имеет такого оптимизатора.Вы пробовали использовать оптимизаторы SGD или Adam, которые очень полезны?

  • У вас есть какой-либо член регуляризации в функции потерь?Вы знакомы с отсевом?Вы проверяли эффективность тренировок?Подходит ли ваша модель?

  • У вас есть базовая модель / алгоритм, чтобы вы могли сравнить, хороша ли точность 80% или нет?

150 эпох только для задачи двоичной классификации выглядит слишком много.Почему бы вам не начать с готовой модели классификатора?Вы можете найти несколько примеров регрессии, классификации в этом уроке .

1 голос
/ 03 мая 2019

Не уверен, почему именно вы используете только один скрытый слой и какова форма ваших исторических данных, но вот что вы можете попробовать:

  1. Попробуйте более одного скрытого слоя
  2. Поэкспериментируйте со слоями LSTM и GRU и комбинируйте эти слои вместе с RNN.
  3. Форма ваших данных, то есть история, на которую вы смотрите, чтобы предсказать погоду.
  4. Убедитесь, что ваши функциимасштабируется правильно, так как у вас есть около 50 входных переменных.
...