Периодический паттерн на кривой валидационных потерь
Краткое содержание
В данный момент я пытаюсь решить задачу регрессии с помощью нейронных сетей. Моя цель — обнаруживать закономерности движения на изображениях во времени (видео) и выдавать непрерывное значение. Во время процесса обучения я заметил странное поведение кривой потерь для валидационных данных и хотел бы узнать, сталкивался ли кто-нибудь с подобным периодическим паттерном в своей работе. Что может быть причиной этого? Модель выглядит следующим образом: - TimeDistributed(Conv2D(32, (3,3))) - TimeDistributed(Conv2D(16, (3,3))) - TimeDistributed(Flatten()) - GRU(64, stateful=True) - Dropout(0.5) - Dense(64, activation='relu') - Dense(1) Я обучал модель, используя среднеквадратичную ошибку как функцию потерь, размер батча равный 1 и оптимизатор Adam с начальной скоростью обучения $10^{-6}$. Очевидно, что график потерь для тренировочных данных не очень хорош, но сейчас меня больше интересует именно паттерн val_loss. Приведенные ниже графики отображают потери за 65 эпох. Спасибо! Редактировать: Способ решения моей задачи основан на скользящем окне.
Полный текст
Я сейчас пытаюсь решить задачу регрессии с помощью нейронных сетей. Моя цель — обнаруживать закономерности движения на изображениях во времени (видео) и выдавать непрерывное значение.
В процессе обучения я заметил странное поведение кривой потерь для проверочных данных и хотел бы узнать, сталкивался ли кто-нибудь из вас с подобным периодическим паттерном?
Что может быть причиной этого явления?
Модель выглядит следующим образом:
- TimeDistributed(Conv2D(32, (3,3)))
- TimeDistributed(Conv2D(16, (3,3)))
- TimeDistributed(Flatten())
- GRU(64, stateful=True)
- Dropout(0.5)
- Dense(64, activation='relu')
- Dense(1)
Обучение модели проводилось с использованием среднеквадратичной ошибки как функции потерь, размером батча равным 1 и оптимизатором Adam с начальным значением скорости обучения $10^{-6}$. Очевидно, что график потерь для обучающих данных не очень хорош, но меня интересует именно характерный паттерн на графике val_loss. Приведенные ниже графики отображают потери за 65 эпох.
Спасибо!
Редактировать:
Мой подход к решению задачи основан на скользящем окне, где я пытаюсь предсказать непрерывное значение для следующей секунды на основе последних 20 секунд (400 кадров) входных временных рядов. Однако я не думаю, что эта информация необходима для ответа на мой первоначальный вопрос, так как периодические паттерны проявляются на протяжении нескольких эпох (примерно один «пик» каждые 15 эпох), что довольно странно. Хотя используется версия GRU с сохранением состояния (кстати, использую TensorFlow и Keras), внутреннее состояние GRU сбрасывается после каждой эпохи для обеспечения чистого старта. Ключевое слово stateful указывает на зависимость между батчами.
глубокое обучение, обучение, keras