Затухание и взрыв градиентов
Вопрос
Почему в глубоких сетях градиенты затухают или взрываются и какие есть средства против этого?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Градиент первого слоя это произведение множителей по всем слоям
Множители меньше 1 дают затухание, больше 1 взрыв
Средства: ReLU-подобные активации, инициализация He или Xavier
Нормализация и residual-связи
Gradient clipping против взрыва, в RNN гейты LSTM и GRU
Что могут спросить следом
- Как по логам обучения понять, что градиенты затухают?
- Почему в RNN проблема острее, чем в CNN?
Разбор
По цепному правилу градиент по весам ранних слоёв это произведение якобианов всех последующих слоёв. Если типичный множитель меньше единицы (производная сигмоиды не больше 0.25, маленькие веса), произведение экспоненциально стремится к нулю, и ранние слои не учатся. Если больше единицы, градиент взрывается, и появляются NaN. Средства: активации без насыщения вроде ReLU и GELU; инициализация He или Xavier, сохраняющая дисперсию сигнала; нормализация BatchNorm или LayerNorm; residual-связи, по которым градиент идёт напрямую; gradient clipping по норме против взрыва. В рекуррентных сетях одна и та же матрица умножается сотни раз по времени, поэтому проблема острее, её смягчают гейты LSTM и GRU. Диагностирую по нормам градиентов по слоям в логах.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.