Как правильно использовать раннюю остановку для тренировки глубокой нейронной сети?


20

У меня есть модель глубокой нейронной сети, и мне нужно обучить ее на моем наборе данных, который состоит из около 100 000 примеров, мои данные проверки содержат около 1000 примеров. Поскольку для обучения каждого примера требуется время (около 0,5 с для каждого примера) и во избежание переобучения, я хотел бы применить раннюю остановку для предотвращения ненужных вычислений. Но я не уверен, как правильно тренировать мою нейронную сеть с ранней остановкой, некоторые вещи, которые я сейчас не совсем понимаю:

  • Какова будет хорошая частота проверки? Должен ли я проверить свою модель на данных проверки в конце каждой эпохи? (Мой размер партии 1)

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

  • Как справиться со случаем, когда потеря проверки может идти вверх и вниз? В этом случае ранняя остановка может помешать моей модели учиться дальше, верно?

Заранее спасибо.


Я настоятельно рекомендую размер партии больше единицы. Обычные размеры 32, 64 и 128.
ComputerScientist

Ответы:


20

Какова будет хорошая частота проверки? Должен ли я проверить свою модель на данных проверки в конце каждой эпохи? (Мой размер партии 1)

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

Возможно ли, что первые несколько эпох могут привести к худшему результату, прежде чем он начнет сходиться к лучшему значению?

да

В таком случае, должны ли мы обучить нашу сеть в течение нескольких эпох, прежде чем проверять раннюю остановку?

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

Как справиться со случаем, когда потеря проверки может идти вверх и вниз? В этом случае ранняя остановка может помешать моей модели учиться дальше, верно?

Люди обычно определяют терпение, т. Е. Количество эпох, ожидающих до ранней остановки, если нет прогресса в проверочном наборе. Терпение часто устанавливается где-то между 10 и 100 (10 или 20 чаще), но оно действительно зависит от вашего набора данных и сети.

Пример с терпением = 10:

введите описание изображения здесь


Следует ли использовать модель, когда она рано остановилась, или patienceэпохи модели до остановки («лучшая», без дальнейших улучшений)?
stackunderflow

2
@displayname эпохи терпения, прежде чем остановились
Франк Дернонкур

11

Недавно я натолкнулся на статью «Ранняя остановка - но когда?» Lutz Prechelt, у которого есть много замечательных примеров того, как использовать ранний останов, с ясными объяснениями того, что каждый делает и формулы для них.

Надеюсь, взглянуть на это может помочь.


Статья написана в странном стиле, но информация была полезной.
Иосия

3

Чтобы добавить к другим отличные ответы, вы также можете - не останавливаться. Я обычно:

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

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


1
Я тоже так делаю. Хотя, как и вы, я понимаю, что это роскошь. Когда модели начали занимать много места, я обнаружил, что, используя предыдущие значения потерь и f-показателя, я мог программно определить, когда удалять также и предыдущие модели, - так что в итоге вы получаете окно с лучшими моделями-кандидатами, которые потребляют примерно как много места на жестком диске, поскольку они, вероятно, будут стоить.
QA Коллектив
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.