2016-06-01 3 views
0

Я запускаю MLP, чтобы классифицировать набор значений в 10 разных классов.Когда прекратить обучение - LOOV MLP

Упрощенный, у меня есть сонар, который дает мне 400 «показаний» объекта. Каждое чтение представляет собой список из 1000 значений float.

Я отсканировал 100 объектов и хочу их классифицировать и оценить модель, основанную на перекрестной проверке.

Для каждого объекта я разбиваю данные на обучающий набор из 99 объектов и тестовый набор оставшегося объекта. Я передаю тренировочный комплект (99 объектов, показания 99 * 400 ") в MLP и использую тестовый набор (1 объект, показания 1 * 400) для проверки.

Мой вопрос: Как я узнаю какую эпоху обучения использовать в качестве последней «лучшей» модели? Я googled вокруг, и некоторые люди говорили использовать эпоху, которая имела лучшую точность проверки, но это кажется мошенническим для меня. Разве я не должен выбирать только модель по статистике данных обучения? (Мой мыслительный процесс состоит в том, что случайное перетасовка в тренировке может создать искусственно высокую точность проверки, которая фактически не дает полезной модели для новых объектов, которые можно было бы отсканировать в будущем)

SO Ответ, который говорит, что использовать учебный эпос ч, что дает лучшую точность проверки:

whats is the difference between train, validation and test set, in neural networks?

Бест, Deckwasher

+0

Это выглядит как математическая проблема, а не проблема программирования. Очень правильная, четко определенная и четко сформулированная проблема, но, к сожалению, на неправильном сайте. –

ответ

1

Это называется ранняя остановка.

Что вам нужно, это набор валидаций.

-После каждой эпохи, вычислите желаемую оценочную меру по набору валидации.

-Всегда сохраняются параметры самой эффективной модели с проверкой, установленной в переменной.

-Если для двух или n итераций результаты проверки не улучшены, остановите эпохи и сбросьте MLP с наилучшими параметрами.

-Чтобы вычислить результаты по тестовому набору с наилучшей производительностью по сравнению с набором проверки, который вы сохранили ранее.

0

Вы хотите оптимизировать обобщение/истина, ошибка (насколько хороши мои прогнозы на невидимых данных), которые обычно состоит из (см. here для бумаги, включающей эту концепцию; хотя и в другом контексте -> SGD + SVM):

  • приближение ошибок: насколько хорошо может данные описываются моделью
  • оценка ошибок: эффект минимизации эмпирического риска вместо ожидаемого риск
  • оптимизация ошибок: измеряет воздействие приближенной оптимизации на ожидаемый риск
    • оптимизацияошибка может быть уменьшена путем запуска оптимизатора больше (что переменная здесь)

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

Конечно, очень важно сделать схему перекрестной проверки несколько разумной. k-fold-based схемы с не слишком маленькими k часто используются (по крайней мере, в приложениях, отличных от NN, может быть слишком дорогостоящим для NN).

0

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

Другой способ - рассолить (в python) или сериализовать (на Java) и сохранить в файле или диске набор весов и смещений, если точность текущих весов и смещений лучше, чем текущий макс.