Вы когда-нибудь разрабатывали модель нейронной сети, которая дает потрясающие результаты? Настолько, что это невероятно? Если у вас возникли такие сомнения, возможно, вы правы.
Возможно, ваша модель страдает от переобучения. Переобучение - это когда ваша модель «запоминает» ваш набор данных и, следовательно, способна точно предсказать результаты.
Другими словами, если вы запустите свою модель на другом наборе данных, можно с уверенностью сказать, что это даст катастрофические результаты. В этой статье представлены 5 эффективных способов предотвращения переобучения модели прогнозирования запасов.
Явный признак переобученной модели
Ваша модель плохо обобщает невидимые данные
Разделите свои данные на обучающие и тестовые наборы. Если у вас есть модель, которая дает 95% точности по обучающим данным, но только 58% по тестовым данным, это явный признак того, что ваша модель переоснащается.
5 методов предотвращения переобучения
Я воспользуюсь реальным примером, когда я проводил исследование по построению сети с долгосрочной краткосрочной памятью (LSTM) для прогнозирования основного индийского индекса под названием BSE: SENSEX.
Сеть LSTM имела 1 входной, 2 скрытых и 1 выходной слой. Набор данных о ценах за последние 20 лет был разделен на обучающий, тестовый и проверочный наборы. На графике ниже представлены ежедневные прогнозы.
Хм, точность выглядит неплохо, правда? Посмотрим, подходит ли модель больше или меньше. Я использовал следующие методы, чтобы выяснить, не переобучена ли моя модель, и предотвратить переобучение.
1. Степень соответствия
Чтобы проверить, подходит ли наша модель, нам нужно построить график зависимости от потерь при проверке во время обучения на наборе данных. Приведенный ниже обучающий график показывает, что потери для модели LSTM хорошо сходятся после 15–16 эпох.
Судя по конвергенции, это считается« идеальным вариантом». Если бы это было переобучением, потери бы сходились, а затем расходились. С другой стороны, если бы это было не так, потери никогда бы не сойдутся.
2. Отказ от учебы
Dropout - это метод явной регуляризации, при котором определенные узлы в сети отбрасываются в попытке внести шум в данные, чтобы сеть не соответствовала данным.
Исключение можно применить как к входному слою, так и к скрытым слоям. В моем исследовании после экспериментов указанные 50% узлов были намеренно отброшены во время обучения в обоих скрытых слоях нейронной сети (LSTM).
3. Ранний обратный звонок
Была реализована функция раннего обратного вызова, которая динамически останавливала обучение, как только потеря валидации перестала уменьшаться.
Поскольку, если потеря проверки начинает последовательно увеличиваться , это означает, что модель переобучена.
«Уровень терпения» для функции обратного вызова был установлен на 3, что позволяет сети изначально принимать увеличение потерь при проверке (в три раза). Несколько скачков потерь при валидации являются ожидаемым побочным эффектом при использовании метода отсева.
4. Непоследовательное обучение
Для LSTM RNN перед обучением сети данные обучения перетасовывались. Этот метод непоследовательного обучения был применен для улучшения обобщаемости сети.
Это гарантирует, что модель не запомнит последовательности в данных запаса (временных рядов) и получит полностью перемешанный набор данных во время обучения.
5. Тест на обобщаемость
После обучения и тестирования вы можете опробовать свою модель на другом наборе данных и посмотреть, как она работает. В идеале, если модель хорошо подходит, она должна работать достаточно хорошо даже с совершенно новым набором данных.
Например, фондовые индексы менее волатильны и, следовательно, считаются более безопасными для инвестиций по сравнению с отдельными акциями. Чтобы проверить возможность обобщения модели LSTM, она была протестирована на новом наборе данных акций крупной индийской ИТ-компании - Tech Mahindra (NSE: TECHM).
Учитывая более высокую волатильность этой акции, модель относительно хорошо позволяла делать прогнозы. Этот результат подтверждает, что модель не только подходит для ежедневного прогнозирования BSE: SENSEX, но также может хорошо обобщать новые данные.
Вот и все, ребята! Удачных тренировок, надеюсь, это поможет.