Регулярные всплески потерь при обучении CNN в конце эпохи

Я тренирую CNN в PyTorch с Адамом, и начальная скорость обучения составляет 1e-5. У меня есть 5039 образцов в мою эпоху, а размер партии равен 1. Я заметил, что в конце эпохи у меня есть регулярный скачок потерь при обучении. Вот график потерь при обучении: введите здесь описание изображения

Из сюжета видно четкое чередование спайков, происходящих как раз в конце эпохи. Моя эпоха содержит 5039 образцов. Интересно, что шипы не только стреляют вниз, но иногда и вверх.

Чего я не думаю:

  • Эти всплески можно было бы объяснить, если бы не перемешивать набор данных. Однако я перемешиваю свой набор данных каждую эпоху.

  • Известно, что такое поведение происходит, когда последняя партия эпохи меньше, чем другие партии, что приводит к различной величине потерь (Почему мои тренировочные потери имеют регулярные скачки?). Однако это не мой случай, так как размер моей партии равен 1.

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

  1. Что вы думаете о причинах этого спайкового паттерна?
  2. Насколько плохо иметь такую ​​модель?

person tivan    schedule 29.02.2020    source источник