Як правильно використовувати ранню зупинку для тренування глибокої нейронної мережі?


20

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

  • Яка б була хороша частота перевірки? Чи слід перевірити свою модель на даних валідації в кінці кожної епохи? (Мій розмір партії - 1)

  • Чи буває так, що перші кілька епох можуть дати гірший результат, перш ніж він почне конвергуватися до кращого значення? У такому випадку ми повинні тренувати нашу мережу протягом кількох епох, перш ніж перевіряти швидку зупинку?

  • Як впоратися з випадком, коли втрати перевірки можуть зростати та зменшуватися? У такому випадку рання зупинка може завадити моїй моделі вчитися далі, правда?

Спасибі заздалегідь.


Я настійно рекомендую розмір партії більше одного. Звичайні розміри - 32, 64 та 128.
ComputerScientist

Відповіді:


20

Яка б була хороша частота перевірки? Чи слід перевірити свою модель на даних валідації в кінці кожної епохи? (Мій розмір партії - 1)

Золотого правила немає, обчислення помилок перевірки після кожної епохи є досить поширеним явищем. Оскільки ваш валідаційний набір набагато менший, ніж ваш навчальний набір, він не значно сповільнить навчання.

Чи буває так, що перші кілька епох можуть дати гірший результат, перш ніж він почне конвергуватися до кращого значення?

так

У такому випадку ми повинні тренувати нашу мережу протягом кількох епох, перш ніж перевіряти швидку зупинку?

Можна, але тоді питання полягає в тому, скільки епох слід пропустити. Так що на практиці більшість часу люди не пропускають жодної епохи.

Як впоратися з випадком, коли втрати перевірки можуть зростати та зменшуватися? У такому випадку рання зупинка може завадити моїй моделі вчитися далі, правда?

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

Приклад з терпінням = 10:

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


Чи варто користуватися моделлю при ранній зупинці або patienceепохи моделі перед зупинкою ("найкраща" без подальших вдосконалень)?
стік потоку

2
@displayname терпіння епох до зупинки
Франк Дернонкурт

11

Нещодавно я натрапив на документ під назвою "Раннє припинення - але коли?" Лутца Прешельта, який має безліч чудових прикладів того, як використовувати ранню зупинку з чіткими поясненнями того, що кожен робить, і формули для них.

Сподіваємось, що погляд на це може допомогти.


Стаття написана дивним стилем, але інформація була корисною.
Йосія

3

Щоб додати до інших відмінних відповідей, ви також можете - не зупиняйтесь. Я зазвичай:

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

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


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