Почему потеря взлетает во время сверточного нейронного net обучения? - PullRequest
0 голосов
/ 23 февраля 2020

Я тренирую простую CNN в Pytorch для сегментации очень маленького набора данных (всего несколько изображений, так как это только для доказательства концептуальных целей). По какой-то причине потери стремительно возрастают до 6, а IoU падает до 0 (пересечение по метрике точности объединения c) случайным образом во время тренировки, прежде чем вернуться наверх. Мне было интересно, почему это может происходить?

IoU graph

Loss curve

1 Ответ

2 голосов
/ 23 февраля 2020

Неустойчивость. Это на самом деле распространено. Посмотрите на опубликованные статьи, и вы увидите то же самое. Во время градиентного спуска могут быть «грубые пятна» в ландшафте градиента, что дает локально плохое решение, что приводит к большим потерям.

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

Шипы на вашем графике выглядят не так уж плохо, я бы об этом не беспокоился.

...